El protocolo Secure Sockets Layer (SSL) y su sucesor el Transport Layer Security (TLS) son dos de los co­m­po­ne­n­tes más im­po­r­ta­n­tes para la seguridad de un proyecto web. Ambos cifran los datos que el servidor y el navegador in­te­r­ca­m­bian por HTTP antes de que se envíen, incluso al cambiar de una web cifrada con HTTPS a una de­s­pro­te­gi­da. Esto no solo impide la tra­n­s­fe­re­n­cia de datos estándar en texto sin formato, sino que también evita que un conjunto de cookies en SSL se envíe con una conexión no cifrada. Estos ce­r­ti­fi­ca­dos también ga­ra­n­ti­zan al cliente so­li­ci­ta­n­te la au­te­n­ti­ci­dad del nombre de host del servidor. De esta forma, el protocolo TLS ofrece seguridad de varias maneras, co­n­vi­r­tié­n­do­lo en in­di­s­pe­n­sa­ble do­n­de­quie­ra que se tra­n­s­mi­tan datos co­n­fi­de­n­cia­les.

En general, el TLS es uno de los pro­to­co­los más seguros y, hasta ahora, ha sabido mantener su repu­tación superando los intentos de ataque. Sin embargo, bajo ciertas co­n­di­cio­nes, algunas he­rra­mie­n­tas es­pe­cia­les (como sslstrip, la he­rra­mie­n­ta pro­gra­ma­da con fines de de­mo­s­tra­ción) son capaces de obtener acceso a la tra­n­s­fe­re­n­cia de datos antes de que se haya comenzado con el cifrado. Estos accesos no au­to­ri­za­dos de terceros se denominan SSL Stripping.

Protégete y compra un ce­r­ti­fi­ca­do SSL

Evita aparecer en la barra del navegador como "página no segura" y consigue la confianza de tus clientes con una página web con en­cri­p­ta­ción SSL.

¿Qué es el SSL Stripping?

En 2002, el de­sa­rro­lla­dor Moxie Ma­r­li­n­s­pi­ke programó una he­rra­mie­n­ta capaz de eliminar el cifrado SSL: el sslsniff. Este software proxy permite infiltrar flujos de datos SSL e in­te­r­ca­m­biar el ce­r­ti­fi­ca­do del servidor con otro ce­r­ti­fi­ca­do cua­l­quie­ra. Con su programa Ma­r­li­n­s­pi­ke quería señalar la debilidad del navegador Internet Explorer que, para ese entonces, era muy vu­l­ne­ra­ble a los ataques Man in the Middle. Microsoft fue capaz de reparar esta brecha de seguridad y, ac­tua­l­me­n­te, otros clientes populares cuentan con las he­rra­mie­n­tas su­fi­cie­n­tes para prevenir y combatir dichos ataques.

El me­n­cio­na­do programa sslstrip fue pre­se­n­ta­do por Ma­r­li­n­s­pi­ke en 2009 en la co­n­fe­re­n­cia de seguridad Black Hat DC. Al igual que su he­rra­mie­n­ta pre­de­ce­so­ra, sslstrip es un proxy que se sitúa entre el cliente y el servidor e intenta evitar la ce­r­ti­fi­ca­ción en las páginas del navegador. Para ello, la he­rra­mie­n­ta busca aquellos enlaces en las páginas web arrojadas por el servidor que re­di­re­c­cio­nan a una página de inicio de sesión protegida por SSL, como por ejemplo:

<a href="https://example.com/login.php">

Cuando el proxy encuentra este tipo de enlace, lo convierte en un enlace HTTP equi­va­le­n­te, con lo que, con su navegador, el usuario envía un texto sin formato en lugar de los datos or­di­na­rios su­pue­s­ta­me­n­te cifrados. Gracias al sslstrip, el atacante potencial puede leerlo fá­ci­l­me­n­te como una estación in­te­r­me­dia y, en algunos casos, logra obtener in­fo­r­ma­ción co­n­fi­de­n­cial. Dado que el SSL Stripping no crea una conexión inválida, no se muestra ningún tipo de mensaje de ad­ve­r­te­n­cia. Por lo general, el usuario no se entera de que está tra­n­s­mi­tie­n­do sus datos sin cifrar.

¿Cómo se im­ple­me­n­ta el sslstrip?

In­de­pe­n­die­n­te­me­n­te de si se utiliza el sslstrip o una apli­ca­ción pro­gra­ma­da de forma similar, primero es necesario que el atacante active su proxy entre el navegador y el servidor web. El software solo tiene la po­si­bi­li­dad de codificar di­re­c­cio­nes URL mo­di­fi­ca­das mediante el SSL Stripping cuando puede in­te­r­ce­p­tar o reenviar flujos de datos. Los tres si­guie­n­tes métodos son am­plia­me­n­te uti­li­za­dos en su im­ple­me­n­ta­ción:

  1. Entrada des­ape­r­ci­bi­da del proxy en las opciones del navegador: a menudo y si tu sistema ha sido víctima de ci­be­r­cri­mi­na­les, el objetivo no es tu equipo, sino solo tu navegador. El malware se asegura entonces de que un servidor proxy externo se integre au­to­má­ti­ca­me­n­te en los ajustes sin que el usuario lo note.

  2. ARP o NDP spoofing: dentro de una subred, un atacante puede recurrir al llamado ARP spoofing (IPv4) o NDP Spoofing (IPv6) para mantener activo su proxy. Ambos pro­to­co­los sirven para resolver di­re­c­cio­nes IP en sus di­re­c­cio­nes de hardware (también conocidas como di­re­c­cio­nes MAC). Va­lié­n­do­se de los mensajes ma­ni­pu­la­dos de estos pro­to­co­los, el atacante puede re­em­pla­zar las di­re­c­cio­nes de hardware so­li­ci­ta­das con la de su propio sistema e in­te­r­ce­p­tar los paquetes de datos tra­n­s­mi­ti­dos.

  3. Facilitar un punto de acceso propio: la tercera po­si­bi­li­dad solo es posible si el di­s­po­si­ti­vo en el que se ejecuta el servidor proxy también puede actuar como un router. Como puerto estándar y servidor DHCPm este di­s­po­si­ti­vo puede entonces asignar di­re­c­cio­nes IP a los usuarios, pero también leer y reenviar paquetes que se envían más allá de los límites de la subred. Esto pro­po­r­cio­na la base perfecta para el SSL Stripping.

Después de que ha colocado su proxy, el atacante no tiene que preo­cu­par­se por mucho más: solo ha de dejar que la he­rra­mie­n­ta se ejecute, la cual emite enlaces mo­di­fi­ca­dos cuando conviene, y si tiene éxito entrega in­fo­r­ma­ción sin cifrar como datos bancarios de los usuarios o de inicio de sesión.

¿Puede un usuario ide­n­ti­fi­car un ataque sslstrip?

Los se­r­vi­do­res y los na­ve­ga­do­res no están en situación de detectar un sslstrip. Ambas apli­ca­cio­nes suponen que se están co­mu­ni­ca­n­do con el cliente real, por lo que no dudan en ningún momento de la in­te­gri­dad de los datos tra­n­s­mi­ti­dos. Para los usuarios, la situación es bastante similar ya que, a primera vista, la visita a la página web deseada parece ser co­m­ple­ta­me­n­te normal. En algunos casos ex­ce­p­cio­na­les las páginas ma­ni­pu­la­das por SSL Stripping pueden re­co­no­ce­r­se debido a pequeños detalles técnicos o de diseño. Por lo tanto, si no se presenta un diseño es­pe­cia­l­me­n­te de­fe­c­tuo­so o no se producen retrasos co­n­si­de­ra­bles al cargar la página, no hay muchas pistas que dejen intuir que se ha burlado el cifrado por SSL.

Sin embargo, desde hace algún tiempo, las barras de di­re­c­cio­nes de los na­ve­ga­do­res tratan de pro­po­r­cio­nar in­fo­r­ma­ción relevante en este sentido de maneras muy di­fe­re­n­tes. Por ejemplo, para marcar páginas web como co­ne­xio­nes seguras, las versiones an­te­rio­res de Internet Explorer mostraban la barra de di­re­c­cio­nes co­m­ple­ta­me­n­te verde. Otros na­ve­ga­do­res re­sa­l­ta­ban el nombre de la empresa hasta que, con la aparición de los primeros di­s­po­si­ti­vos web móviles ha­bi­li­ta­dos para la web, fueron re­em­pla­za­dos por algunos de los símbolos comunes actuales, como el típico candado de seguridad. No obstante, estas pistas visuales no siempre ga­ra­n­ti­zan que la página visitada no ha sido ma­ni­pu­la­da por he­rra­mie­n­tas como sslstrip. Debido a que el atacante controla la totalidad de la tra­n­s­fe­re­n­cia de datos, también tiene la po­si­bi­li­dad de presentar un símbolo similar como favicon y engañar así co­m­ple­ta­me­n­te al usuario. 

¿Qué me­ca­ni­s­mos de pro­te­c­ción existen?

La di­fi­cu­l­tad de detectar páginas ma­li­cio­sas hace que el SSL Stripping sea muy peligroso para los usuarios. La razón de ser de los ce­r­ti­fi­ca­dos de cifrado uti­li­za­dos por los ad­mi­ni­s­tra­do­res web es ga­ra­n­ti­zar la seguridad y la fiablidad, eli­mi­na­n­do las dudas de los usuarios a la hora de pro­po­r­cio­nar sus datos privados. En principio, SSL también pro­po­r­cio­na la pro­te­c­ción necesaria, pues el hecho de que sea posible in­te­r­ce­p­tar y leer paquetes de datos no es co­n­se­cue­n­cia de una brecha de seguridad en el protocolo, sino de la ob­s­ta­cu­li­za­ción del protocolo en sí mismo. Para pro­te­ge­r­se del sslstrip es re­co­me­n­da­ble que cada usuario refuerce las co­ne­xio­nes HTTPS cifradas mediante:

  1. Entrada manual del URL: una medida ex­tre­ma­da­me­n­te tediosa pero eficaz es in­tro­du­cir ma­nua­l­me­n­te la dirección URL HTTPS completa.

  2. Extensión para el navegador: existen di­fe­re­n­tes ex­te­n­sio­nes del navegador que pueden ayudarte a acceder a las versiones cifradas, siempre y cuando las haya. La extensión HTTPS Eve­r­y­wehe­re utiliza listas de dominios y reglas para generar una conexión HTTPS para cada solicitud de una página web. En la página de la Ele­c­tro­nic Frontier Fou­n­da­tion, que de­sa­rro­lla y gestiona la extensión HTTPS Eve­r­y­whe­re junto con el proyecto Tor pro­po­r­cio­na versiones para Firefox, Firefox para Android, Chrome y Opera.

  3. Guardar di­re­c­cio­nes URL seguras como favoritos: si utilizas un servicio web protegido con SSL (banca online, al­ma­ce­na­mie­n­to en la nube, etc.) fre­cue­n­te­me­n­te, es re­co­me­n­da­ble que guardes su versión HTTPS como marcador y accedas a dicho servicio siempre a través de esta. El requisito previo es que te en­cue­n­tres en una red segura cuando la marques como favorita. De lo contrario, correrás el riesgo de incluir un URL ya ma­ni­pu­la­do en la lista de favoritos.

Los ad­mi­ni­s­tra­do­res web también tienen la po­si­bi­li­dad de combatir ac­ti­va­me­n­te el SSL Stripping. Un paso básico podría consistir en habilitar el cifrado para todas las páginas de un proyecto web y forzar el reenvío de las co­ne­xio­nes HTTP entrantes a páginas seguras. Lo mismo se aplica a las cookies: si no quieres pre­s­ci­n­dir de este práctico registro de datos por motivos de analítica web, debes ase­gu­rar­te de que estas no se devuelvan a través de co­ne­xio­nes HTTP no seguras. Para ello, si­m­ple­me­n­te asigna el atributo “Secure” a las cookies y asegúrate de que tu servidor solo reciba so­li­ci­tu­des vía HTTPS. Otra medida de seguridad es la norma IETF HSTS, la cual de­s­cri­bi­re­mos con más detalle en el siguiente apartado.

HSTS: la ayuda contra el SSL Stripping

Tres años después de que el software de Ma­r­li­n­s­pi­ke atrajera la atención sobre la vu­l­ne­ra­bi­li­dad del ce­r­ti­fi­ca­do SSL, con el RFC 6797 el IETF (Internet En­gi­nee­ri­ng Task Force) lanzó ofi­cia­l­me­n­te el mecanismo de seguridad HSTS (HTTP Strict Transport Security), que permite a los se­r­vi­do­res web notificar a los clientes so­li­ci­ta­n­tes que pueden acceder a la web a través de una conexión HTTPS durante un periodo de tiempo es­pe­cí­fi­co. Para ello, el servidor utiliza el campo “Strict Transport Security” junto con la directiva “max-age”, de­fi­nie­n­do así el periodo de validez en segundos de la in­s­tru­c­ción. Para que un dominio esté di­s­po­ni­ble por un año ex­clu­si­va­me­n­te a través de una conexión cifrada, la respuesta HTTP del servidor web tiene que contener la siguiente línea de código:

Strict-Transport-Security: max-age=31536000

El parámetro “in­clu­de­Su­b­Do­mai­ns” también se puede utilizar para extender el comando a todos los su­b­do­mi­nios de la página web. Si un navegador recibe un mensaje desde el servidor web con la in­s­tru­c­ción “Strict Transport Security”, todas las so­li­ci­tu­des no cifradas del dominio co­rre­s­po­n­die­n­te se co­n­vie­r­ten au­to­má­ti­ca­me­n­te en so­li­ci­tu­des cifradas. Si la conexión no es segura, se muestra un mensaje de error y se deniega el acceso a la página so­li­ci­ta­da.

El HSTS es una solución pe­r­ma­ne­n­te para proteger a un proyecto web y a sus visitas del sslstrip y de otros ataques similares. Sin embargo, el requisito para que el mecanismo de seguridad pueda actuar es una conexión, la cual es igua­l­me­n­te fácil de manipular, como ya se ha de­mo­s­tra­do en este artículo. Para hacer frente a este problema, Google ha in­tro­du­ci­do una lista de precarga para su navegador Chrome, que contiene proyectos web que solo están di­s­po­ni­bles a través de HTTPS. Otros pro­vee­do­res de na­ve­ga­do­res web han optado por el mismo principio, im­ple­me­n­ta­n­do listas de precarga HSTS basadas en la lista de Chrome. Para añadir tu proyecto web al listado, solo tienes que enviar una solicitud a la página web oficial del proyecto de Google.

Hecho

Las páginas web deben cumplir con ciertos re­qui­si­tos para incluirse en la lista de precarga. Ló­gi­ca­me­n­te tienen que tener un ce­r­ti­fi­ca­do válido y ejecutar todos sus su­b­do­mi­nios a través de HTTPS. Además, el campo HSTS en las re­s­pue­s­tas del servidor web al dominio principal debe co­n­si­de­rar los si­guie­n­tes aspectos:

  • La directriz “max-age” debe tener un periodo mínimo de validez de 18 semanas (10886400 segundos).
  • Se debe es­pe­ci­fi­car la directiva “in­clu­de­Su­b­Do­mai­ns”.
  • También se debe es­ta­ble­cer la directriz “preload”.
  • En caso de que haya una re­di­re­c­ción, esta también debe contener el en­ca­be­za­do HSTS
Ir al menú principal