SSL Stripping es un ataque que consiste en «levantar» el cifrado TLS de la comunicación y que un ciberdelincuente pueda ver todas las comunicaciones en texto plano usando HTTP.
¿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.
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.
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 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.