SSL Strip

 

La definición de  SSL Strip es variada, intentemos acercarnos a la realidad práctica que es lo que más nos puede interesar. SSL Strip consiste en hacer creer al usuario que está bajo una conexión segura, ya sea porque el usuario ve un candadito que indica seguridad, sslstrip puede falsificarlo, o por que el usuario no se fija si está bajo tráfico cifrado o no.

Cuando un atacante lanza SSL Strip sobre una víctima, ésta sigue navegando felizmente por la red. El problema viene cuando se conecta a una página bajo HTTPS, la víctima puede observar como el HTTPS ha desaparecido de su navegador, si no se fija en ese pequeño detalle y se autentifique en algún sitio, sus credenciales irán en texto plano hacia la víctima.

Para que se vea lo que ocurre realmente se explica a continuación, el recuadro con SSL Strip es el atacante realizando un MiTM. El browser de la víctima realizará una petición que el atacante interceptará, entonces SSL Strip realizará la petición correcta al web server, y la respuesta al navegador de la víctima se envía bajo HTTP y no bajo HTTPS. Se observa que SSL Strip aprovecha el paso de HTTP a HTTPS para realizar sus fechorías.

¡Manos a la obra! Vamos a preparar la PoC y demostrar el funcionamiento de este tipo de MiTM para llegar a la conclusión que no estamos seguros bajo el protocolo SSL. Antes de nada, citar al gran Moxie Marlinspike como el creador de SSL Strip.

PoC

Lo primero que vamos a elegir es el sistema operativo sobre el que realizaremos el ataque, utilizaremos BackTrack, pero cualquier distro de Linux podrá realizarlo sin problemas, recomendamos Blackbuntu y sus distintas posibilidades.

En primer lugar debemos hacer que nuestra máquina enrute el tráfico que llegue a ella, ya que si no dejaríamos sin Internet a la víctima. Para ello, en Linux es bastante sencillo, en la ruta /proc/sys/net/ipv4/ se encuentra el fichero ip_forward que almacena un booleano (0 o distinto) que especifica si nuestro equipo funciona como router o no.

echo 1 > /proc/sys/net/ipv4/ip_forward

Recordad tener permisos de administrador para escribir en ese fichero.

A continuación, vamos a realizar el MiTM básico con la aplicación arpspoof. Para ello debemos especificar la interfaz de red que se usará para realizar el ataque y el objetivo.

arpspoof –i {interfaz de red} –t {obj1} {router}

Ejemplo: arpspoof –i wlan0 –t 192.168.1.67 192.168.1.250

En otra pestaña u otra shell, ya que no debemos dejar de realizar el proceso de envenenamiento, ejecutaremos la redirección de las peticiones al puerto 80 al puerto 10000, por defecto el puerto de la aplicación ssl strip. Para la redirección utilizaremos, el grandioso, iptables.

iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 10000

Una vez realizado todo esto, es el momento de ejecutar ssl strip, aplicación realizada en python. La ejecución es sencilla:

sslstrip –w {nombre fichero}

El nombre del fichero especifica dónde se almacenarán todas las peticiones que pasan por nuestro equipo.

Ejemplo: sslstrip –w cazado.txt

Una vez realizado todo este proceso queda lo peor ¡esperar!

Los resultados por ejemplo son…

Se puede observar como en la petición se puede observar en el recuadro en amarillo y en verde el usuario, y la contraseña en el recuadro naranja y amarillo. No penséis que ese usuario y contraseña existe, solo es una prueba para ver que aunque la página funciona bajo SSL, con SSL Strip se engaña al usuario, que pensará que seguirá bajo SSL pero en realidad todo va en texto plano entre la víctima y el atacante.