Hoy en día la mayoría de webs utilizan el protocolo seguro HTTPS para las comunicaciones entre los clientes y el servidor web, gracias a este protocolo que utiliza TLS y a los algoritmos criptográficos incorporados en este último, las comunicaciones van cifradas punto a punto, además, también se comprueba la autenticidad de la conexión e incluso la integridad de los datos, para que ciberdelincuentes no puedan modificar al vuelo los paquetes. Sin embargo, existe un ataque al protocolo HTTPS llamado SSL Stripping, este ataque consiste en «levantar» el cifrado TLS de la comunicación y que un ciberdelincuente pueda ver todas las comunicaciones en texto plano usando HTTP. ¿Quieres saber todo sobre el ataque SSL Stripping y cómo puedes protegerte para evitar que un ciberdelincuente vulnere tus comunicaciones?
¿Cómo funciona el protocolo HTTPS?
El protocolo HTTPS (Hypertext Transfer Protocol Secure) es la versión segura del popular protocolo HTTP (Hypertext Transfer Protocol). Este protocolo se encuentra en la capa de aplicación y está basado en HTTP, pero se le añade la seguridad del protocolo TLS (a nivel de capa de transporte) con el objetivo de proporcionar seguridad punto a punto en todas las conexiones, desde los clientes hasta el servidor web. El protocolo TLS es uno de los más utilizados para proporcionar seguridad a las comunicaciones, además, no solamente se utiliza en las conexiones HTTPS sino también en otros protocolos como FTPES (la versión de FTP, pero con la capa de seguridad usando TLS) e incluso protocolos de redes privadas virtuales como OpenVPN. El protocolo TLS (y, por tanto, también el protocolo HTTPS a nivel de capa de aplicación) hace uso de diferentes algoritmos criptográficos que nos proporcionan las siguientes características:
- Confidencialidad: la confidencialidad en criptografía significa que todos los datos van cifrados punto a punto, y que solamente el origen y el destino podrán «leer» esos datos. Si un ciberdelincuente se coloca en el medio de la comunicación (ataque Man in the Middle) podrá capturar la información sin problemas, pero nunca podrá leerla si no tiene la clave privada de descifrado.
- Autenticidad: esta característica de la criptografía nos garantiza que los datos son auténticos del origen, y que no ha habido una suplantación por parte de un tercero.
- Integridad: esta característica nos garantiza que todos los datos desde el origen hasta el destino no han sido modificados, en caso de que se hubieran modificado debido a un tercero malicioso, se podría detectar y descartar esa información.
Actualmente el protocolo HTTPS para la versión de HTTP/2 hace uso del protocolo TLS en su versión TLSv1.2 y también TLSv1.3, estos dos protocolos actualmente son considerados como seguros, y no se han descubierto vulnerabilidades que los hagan peligrosos de utilizar. La versión TLSv1.3 es mucho más rápido que la versión anterior, además, solamente admite suites de cifrado seguras, y no permite la configuración de suites de cifrado menos seguras como pasa con TLSv1.2.
Respecto a los puertos, mientras que el protocolo HTTP utiliza el protocolo TCP en la capa de transporte y el puerto 80, el protocolo HTTPS utiliza el puerto TCP 443. En los últimos meses se ha estandarizado el protocolo QUIC para las conexiones web, un protocolo para HTTPS cuando se usa HTTP/2 y/o HTTP/3 y que utiliza el protocolo UDP para realizar las conexiones punto a punto, este protocolo QUIC ya incorpora por sí mismo criptografía segura con los últimos algoritmos criptográficos seguros como Chacha20-Poly1305 o AES-GCM.
Una vez que sabemos el funcionamiento de HTTPS y qué protocolos tenemos por debajo en las diferentes capas TCP/IP, vamos a ver en qué consiste el ataque SSL Stripping para descifrar todas las comunicaciones de HTTPS.
¿En qué consiste el ataque SSL Stripping?
Cuando realizamos un ataque ARP Spooping y ponemos un sniffer a capturar todo el tráfico, lo que hacemos es capacidad todo el tráfico de red que genera un determinado equipo (la víctima). En el caso de que utilice protocolos no seguros como HTTP o FTP, podremos ver fácilmente todas sus comunicaciones, credenciales de autenticación e incluso las cookies de sesión. Por este motivo es tan peligroso conectarnos a redes WiFi públicas o redes no confiables, porque cualquier ciberdelincuente puede hacernos este ataque de tipo Man in the Middle y capturarnos toda la información.
Si hacemos uso de un protocolo seguro como es HTTPS, el atacante podrá capturar toda la información sin problemas, sin embargo, no podrá leer nada de su contenido, es decir, no podrá ver credenciales de autenticación, cookies de sesión ni absolutamente nada, porque todo el tráfico va cifrado punto a punto (desde los clientes hasta el servidor web). Gracias al protocolo TLS y los algoritmos criptográficos como AES, nuestra información tendrá confidencialidad, es decir, estará encriptada punto a punto.
Los ataques SSL Strippping consisten en montar un proxy HTTP/HTTPS con el objetivo de que se pueda «levantar» este protocolo HTTPS que va cifrado, y la víctima haga uso del protocolo HTTP para poder capturar toda la información y ver los datos de su interior. El proceso que se tendría que llevar a cabo para poder vulnerar una conexión HTTPS sería la siguiente:
- Realizar un ataque ARP Spoofing a la víctima, para reenviar todo el tráfico de red a nosotros antes de pasárselo al router, de esta forma, capturaremos toda la información que envía y recibe esta víctima.
- Ponemos en funcionamiento el sniffer, por ejemplo, WireShark es una muy buena opción, es uno de los software más completos y fáciles de utilizar, además, es completamente gratis.
- Comprobar si estamos capturando todo el tráfico de la víctima, de esta forma, nos aseguraremos que el ARP Spoofing y el sniffer está funcionando correctamente. En este caso, seguramente solo podamos ver en texto claro el tráfico de DNS, ICMP y otros, pero no el de HTTPS porque va cifrado punto a punto.
Una vez que hayamos realizado estos tres pasos, lo que tenemos que hacer es configurar un proxy HTTP/HTTPS haciendo uso de herramientas gratuitas, por ejemplo, Bettercap es la mejor herramienta que podemos utilizar para realizar este tipo de ataques. Una vez que hayamos configurado este proxy HTTP/HTTPS, lo que ocurrirá será lo siguiente:
- La víctima intentará conectarse a las webs a través del protocolo HTTPS, sin embargo, el proxy HTTP/HTTPS que hemos configurado le dirá a la víctima que la conexión debe ser HTTP, posteriormente, nuestro Proxy HTTP/HTTPS podría reenviar la información a la web real (Google, PayPal, Amazon etc.) a través de HTTPS. De esta forma, el atacante tendrá todos los datos en texto claro que van y vienen desde la víctima y desde el servidor web real, transformando continuamente entre HTTP y HTTPS y viceversa.
- El sniffer de red que teníamos activado anteriormente, capturará todo el tráfico HTTP y nos mostrará en texto claro las credenciales de usuario, cookies de sesión y todo lo que esté realizando la víctima.
Tal y como podéis ver, la posibilidad de realizar un ataque SSL Stripping está al alcance de todos haciendo uso de herramientas gratuitas como Bettercap para Linux, de hecho, en RedesZone tenéis un completo tutorial para que hagáis auditorías de seguridad y comprobar si un determinado objetivo podría usarlo en nuestra contra, o si estamos protegidos frente a este tipo de ataques.
¿Cómo de efectivos son?
Ahora que ya conocemos más sobre los ataques SSL Stripping, es momento de ver cuál es la efectividad de estos ataques. Y lo cierto es que no estamos ante nada fijo, sino que depende de varios factores que van a marcar mucho el punto a donde el ataque llegue. Desde el propio atacante, hasta la víctima. Toda cuenta para medir su efectividad, empezando por la naturaleza del ataque. Estos trabajan realizando una interceptación de la comunicación entre el cliente y el servidor, por lo general mediante la modalidad Man-in-the-Middle. Cuando el usuario trata de acceder a la web, el atacante hace que la conexión no se muestre como segura. A pesar de que el atacante se comunica con ese servidor mediante HTTPS, el usuario lo hace mediante HTTP. Esto es algo que permite al atacante ver, y de forma potencial, modificar el tráfico entre el usuario y el servidor.
La efectividad inicial era muy alta cuando fue descubierto, ya que una gran cantidad de sitios web utilizaban HTTP y solo HTTPS en páginas muy concretas. Como pueden ser las páginas de inicio de sesión o pagos online. Incluso los usuarios no llegaban a notar la diferencia entre HTTP y HTTPS. Por lo cual, en ese momento era un ataque muy peligroso. Pero hoy en día esto ha cambiado. Tenemos medidas de protección modernas, y su eficacia ha disminuido en gran parte. HSTS obliga a los navegadores a dar uso de HTTPS, evitando así que se lleguen a establecer sesiones no seguras. Esto quiere decir, que, si los sitios han implementado HSTS de forma correcta y un usuario lo ha visitado al menos una vez, el ataque no será efectivo contra ese usuario y con esa página en particular.
La efectividad también depende de la conciencia de los usuarios. Si estos están atentos a los indicadores de seguridad en el navegador, y están familiarizados con HTTPS, pueden darse cuenta de que algo no está bien muy rápido. Tomando así las medidas oportunas para que no llegue a pasar nada que no deba. Con el paso del tiempo y gracias a nuevas tecnologías de encriptación los sitios web han adoptado en su mayoría el HTTPS. Por lo cual disminuyen mucho las posibilidades de ser atacados por este tipo de ataques.
¿Cómo puedo protegerme de este ataque?
Este tipo de ataques es ampliamente utilizado por ciberdelincuentes para obtener todo el tráfico de sus víctimas, sobre todo en redes públicas, ya sean redes cableadas o redes WiFi públicas, por este motivo, se desaconseja conectarnos a este tipo de redes que no administramos nosotros. Sin embargo, si alguien es capaz de hackearnos nuestra red WiFi, estaríamos exactamente en el mismo escenario: estamos en la misma red local que el ciberdelincuente, podría hacernos un ataque ARP Spoofing y también un ataque SSL Stripping. Por este motivo es tan importante mantener un listado de dispositivos cableados o WiFi conectados a nuestra red local, y comprobar de vez en cuando que no hay intrusos, además, también debemos asegurarnos de que nadie pueda entrar en nuestra red WiFi, poniendo un cifrado WPA2-AES y desactivando el WPS (Wi-Fi Protected Setup).
Este ataque SSL Stripping no podemos evitar que nos lo hagan si estamos en la misma red local que al atacante, pero lo que sí podemos hacer es evitar que sea efectivo, es decir, que sea capaz de «levantar» la conexión HTTPS, por lo que la confidencialidad seguiría manteniéndose y podremos navegar de manera segura. Actualmente existen varios métodos que podemos utilizar para protegernos frente a estos ataques, algunos dependen del administrador de la web, y otros dependen exclusivamente de nosotros.
Que la web tenga habilitado HSTS
HSTS o también conocido como HTTP Strict Transport Security, es una política que está en los servidores web que nos obliga sí o sí a utilizar HTTPS en nuestro navegador web para comunicarnos con el servidor. Anteriormente hemos explicado que el servidor proxy HTTP/HTTPS se puede comunicar vía HTTPS sin problemas con el servidor web, sin embargo, si una web tiene activado HSTS se guardará una cookie en el navegador indicándole que ese navegador no puede utilizar nunca el protocolo HTTP para comunicarse con el servidor web, de esta forma, tendremos seguridad punto a punto, aunque alguien se entrometa poniendo un proxy HTTP/HTTPS para «levantar» el HTTPS de nuestra comunicación con la web.
Hoy en día muchos servidores web de diferentes páginas web están configurados correctamente con esta política de seguridad, con el objetivo de proteger a sus usuarios. Estas cookies que se almacenan en los navegadores web de los clientes caducan, sin embargo, lo que se hace es poner que la duración es la máxima (un año), con el objetivo de proteger el máximo tiempo posible a los clientes.
La parte negativa de HSTS es que, si es la primera vez que accedemos a una web y nos hacen un SSL Stripping, esta característica no podrá protegernos. La protección es a partir de la segunda visita porque la cookie ya se habrá descargado, a no ser que tengamos una lista de webs precargadas en nuestro navegador web, tal y como ocurre con los «grandes» como Google y otros servicios. Nosotros mismos podríamos dar de alta una lista de webs para la precarga de HSTS que es proporcionado por Google como parte del proyecto Chromium.
En el servidor web de Apache tendríamos que incorporar la siguiente directiva:
- Header always set Strict-Transport-Security «max-age=31536000; includeSubDomains»
En el servidor web de Nginx tendríamos que incorporar la siguiente directiva:
- add_header Strict-Transport-Security «max-age=31536000; includeSubDomains»
También podríamos indicar a estas directivas el «preload» al final, para indicar que está precargado en el navegador web y poder entrar sin problemas a la web.
Para comprobar si una determinada web tiene HSTS habilitado, siempre podéis acceder a la web oficial de Qualys SSL Labs donde analizar todas las webs que queráis. Antes de terminar, debemos indicar que también se puede eludir esta protección de HSTS, basándonos en un DNS Spoofing para reenviar a la víctima a otro dominio bajo nuestro control que sea igual que el original, con el objetivo de «engañarle», Bettercap también incluye esta característica.
Utilizar una VPN
Otro método para evitar este tipo de ataques a las conexiones HTTPS es hacer uso de un servicio de VPN. Una red privada virtual o VPN se encarga de cifrar todas las comunicaciones punto a punto dentro de un túnel, por tanto, un atacante que nos haga un ataque ARP Spoofing y que pusiera un sniffer, solamente vería todo el tráfico cifrado, no podría ver ningún protocolo adicional, porque las resoluciones DNS también van dentro del túnel de VPN. Es posible que el ciberdelincuente intente «tirar» este túnel VPN, de hecho, lo podría conseguir inyectando paquetes y hacer que el servicio VPN deje de funcionar por seguridad, sin embargo, debemos recordar que las VPN disponen de la característica llamada Kill-Switch. La funcionalidad Kill-switch permite bloquear el tráfico de Internet por completo en caso de que el túnel VPN se caiga o tenga algún tipo de problema, de esta forma, tendremos la seguridad de que nuestros datos no se ven filtrados ni nos pueden hacer otro tipo de ataques. Siempre es mejor quedarnos sin conexión a Internet que nos roben la información.
Actualmente existen varios protocolos de VPN como WireGuard, OpenVPN o IPSec IKEv2, todos ellos son seguros y podremos utilizarlos para evitar que alguien intercepte las comunicaciones y levante el cifrado del protocolo HTTPS. Por este motivo, si te vas a conectar a redes cableadas o redes WiFi públicas o que no sean seguras, es muy recomendable que siempre hagas uso de este tipo de VPN. Los servidores VPN los podemos configurar nosotros mismos en nuestra red local doméstica, si tenemos un servidor NAS tendrá aplicaciones de VPN, e incluso algunos routers domésticos como los ASUS, AVM FRITZ!Box e incluso los D-Link o NETGEAR disponen de este tipo de servidores para conectarnos a Internet de forma segura, porque hacen redirección de tráfico.
En el caso de que no tengas posibilidad o conocimientos de instalar y configurar un servidor VPN en tu hogar, nuestra recomendación es que utilices unos servicios VPN como el de WARP de Cloudflare, el cual es completamente gratuito y funciona realmente bien, podrás obtener altas velocidades de descarga y subida y una latencia muy baja. Otras alternativas que puedes utilizar son los servicios VPN de pago, porque disponen de aplicaciones para todos los sistemas operativos, múltiples servidores repartidos por todo el mundo y funcionalidades importantes como el Kill-switch entre otras muchas.
Realizar un SSH Tunneling
Otra forma de protegerte contra los ataques SSL Stripping es realizando un túnel SSH con redirección de tráfico. Esta técnica consiste en conectarnos a un servidor SSH remoto que sea de confianza, y levantar un proxy SOCKS para posteriormente configurarlo en el navegador web. De esta forma, estaremos realizando una redirección de tráfico del navegador web a través del servidor SSH donde nos hemos conectado. Para hacerlo, deberemos seguir los siguientes pasos:
- Configurar un servidor SSH de forma segura, cambiando puertos, buena autenticación y buena suite de cifrados.
- Activar en el servidor SSH el forwarding TCP, de lo contrario, aunque nos conectemos no podremos reenviar el tráfico de Internet.
- Configurar en programas como PuTTY este servidor SSH y habilitar el forwarding o reenvío, en un determinado proxy SOCKS5.
- Configurar en el navegador web este proxy local que acabamos de crear, para que todo el tráfico fluya por el servidor SSH hacia Internet.
Este método es exactamente igual que el del servidor VPN, utilizar un «servidor» para conectarnos a él de forma segura, y posteriormente salir a Internet vía HTTPS sin que nadie pueda levantar este cifrado.
Conclusiones
Aunque las conexiones HTTPS son seguras, en determinadas circunstancias un atacante podría «levantar» esa seguridad para obtener credenciales de usuario y también cookies de sesión, haciendo que las conexiones HTTPS ya no sean nada seguras. Sin embargo, este tipo de ataques solamente se pueden realizar en determinadas circunstancias, como que el atacante y la víctima estén en la misma red local, ya sea cableada o inalámbrica, y que las webs que visita el usuario no tengan habilitado el protocolo HSTS. Es muy importante saber en qué webs tenemos disponible el protocolo HSTS, para estar tranquilos cuando naveguemos a través de esa web, porque si alguien nos está realizando un ataque, automáticamente la web nos indicará que no se ha podido establecer una conexión segura, y que no se va a realizar la conexión, protegiéndonos de intercambiar más datos.
Si nos conectamos a Internet en redes públicas a través de una VPN o haciendo un SSH Tunneling, podremos estar tranquilos porque no podrán interceptar las comunicaciones y vulnerarlas, por este motivo es tan importante el uso de estas técnicas cuando estamos fuera de nuestras redes de confianza. No importa si el servidor VPN o SSH está en nuestro hogar, en un servidor VPS contratado por nosotros, e incluso si utilizamos servicios VPN de pago como los que todos conocemos, lo importante es protegernos frente a un atacante que esté en nuestra red local y evitar este tipo de ataque SSL Stripping.