Como hacer un Man In The Middle con SSLStrip (Así se roban las contraseñas)

Es uno de los ataques más míticos, el ponernos entre un cliente y un servidor sin que ninguno de los dos se entere y así poder espiar toda la conversación. Para entendernos un poco mejor, alguien abre su navegador, se conecta a cualquier página WEB y nosotros estamos en medio, vemos todo lo que se envía, y todo lo que recibe!

De la misma forma que suena bien, tambien suena muy mal, depende de si eres el atacante o el atacado. Es verdad que puede sonar muy apetecible, pero al mismo tiempo es muy chungo que te lo hagan. ¿Verdad? Bueno, pues por este motivo este tipo de ataque ha ido jugando al gato y al ratón, lo que funcionaba ya no funciona y lo que funciona ahora no funcionará en un futuro.

Vamos a ver un poco de historia del SSLStrip.

¿Pero no hablábamos de Man In The Middle? ¿Que narices es el SSLtrip? Muy fácil, no vamos a empezar desde el principio, vamos a empezar cuando el SSL (la comunicación cifrada) ya estaba inventado.

En un principio cuando un navegador se conecta con un servidor que admite comunicación cifrada se usa el protocolo HTTPS, y toda la comunicación que se realiza esta cifrada, es decir, aunque alguien capture el tráfico no podrá entender nada.

Bien, en este punto parece que los ataques MiM ya no tenían sentido ¿verdad? Como no podía ser de otra forma apareció una herramienta que permite saltarse esta protección: el SSLStrip.

Lo que HACE EL SSLStrip es capturar las capturas HTTPS del browser y pasarlas al servidor como una petición HTTP. Es decir… Sin la S. Vale, en el navegador la URL aparece como HTTP…. pero siendo realistas, ¿quién se fija?

¿Que qué pasa si me quitan la S? Pues que el tráfico ya no está cifrado… es en claro. Es decir, si alguien te escucha, se entera de todo.

Pero como todo en este mundo una vez inventado el ataque se inventó el remedio, que ha durado lo que ha durado. Este remedio se llama: HSTS.

¿Qué narices es el HSTS?

Lo implementan los navegadores, lo que hacen es mantener una lista de todos los sitios WEB que aceptan HTTPS y no aceptan peticiones HTTP para ellos. SSLStrip todavía puede funcionar, pero tan solo, si el usuario visita por primera vez una web mientras le estamos escuchando… que puede pasa ehh!

Pero da lo mismo, ya tenemos el SSLStrip2, que se salta el HSTS, pero, no todo es tan bonito, el creador de SSLStrip2 ha retirado el código de GitHub, pero no pasa nada. El mismo nos da dos posibilidades, dos herramientas nuevas basadas en un fork de su propio código, entre ellas la herramienta MITMF, que es una de las más usadas y de la que hablaremos en futuros post, una vez ya hayamos realizado un ataque con SSLStrip.

Vamos a probar con SSLStrip

¿Porque? Pues porque todavía funciona! Funciona porque hay mucha, mucha gente que no ha actualizado su navegador. ¿Porque? Si las actualizaciones solo sirven para que tu ordenador vaya mas lento 🙂 Todos hemos escuchado esta frase alguna vez.

Las actualizaciones solo sirven para que tu ordenador vaya mas lento.

Cuñao dixit.

Lo primero que tenemos que tener es una Víctima! y tenemos que estar en la misma red que nuestra víctima. Para esto podemos usar los conocimientos que ya hemos adquirido en las entregas anteriores del tutorial de hacking básico, o si alguien, creyéndose muy listo ha decidido usar nuestra WiFi es una víctima posible. Altoooooo!!!!!!! No!!! Ahora en serio, nuestras victimas somos nosotros mismos, yo uso dos maquinas virtuales, una con Kali (El ciberlaboratorio que hemos configurado en el primer post del tutorial) y otra con Windows que la uso como receptora de los ataques, es decir como victima.

Como ya he dicho, para que funcione el ataque las dos máquinas, atacante y víctima, tienen que estar en la misma red.

Yo para simularlo abro dos máquinas virtuales:

Para conocer la ip de la máquina a atacar usaremos el comando ipconfig, no hace falta decir que un hacker usaría una técnica parecida a la que ya hemos visto en el post: Aprendiendo a escanear puertos. ¿Quien esta conectado a tu wi-fi?, de este mismo tutorial de Hacking, para obtener todas las IP’s conectadas a la red.
Ahora que ya tenemos las dos máquinas virtuales abiertas vamos a empezar con los comandos para tratar de eliminar la S del protocolo HTTPS.

Empecemos configurando el ordenador, o en este caso la máquina virtual, desde la que vamos a lanzar el ataque:

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

Con esto lo único que hacemos es incorporar un 1 en el fichero ip_forward, lo que nos permitirá tener una redirección. Recordemos que lo que vamos a hacer es desviar el tráfico que la máquina víctima envía hacia el router para que antes pase por la máquina atacante.

Ahora que nuestra máquina ya acepta la redirección, le tenemos que indicar qué redirección queremos:

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

El puerto 80 es hacia el que van las peticiones HTTP y el 8080 es un puerto cualquiera que tengo abierto, podría poner el 10000, o cualquiera que no este en uso.

Una vez ya tenemos la redireccion creada podemos arrancar el sistema de SSLStrip.

sslstrip -l 8080

Con este comando lo que le indicamos es que todo lo que llegue al puerto 8080 sea pasado por sslstrip, que recordemo lo único que hace es eliminar la S de la llamada cambiando una llamada https, por otra http. El tráfico que pasa por el lo guarda en un fichero llamado sslstrip.log

Vale, ahora ya tenemos la redireccion dentro de iptables y a sslstrip funcionando, podemos empezar con el spoofing (no es una práctica sexual), es como se le llama al proceso de hacerse pasar por otro, que es mas o menos lo que vamos a hacer, la víctima se piensa que habla con el router, cuando realmente está hablando con nosotros.

Para poder lanzar el spoofing lo mejor es que abramos una ventana nueva del terminal del sistema, ya que la del sslstrip está ocupada con nuestro comando. Vamos a necesitar nuestra IP, y la IP de la víctima. En esta caso es muy sencillo, la víctima es una máquina virtual de Windows, solo tengo que abrir un command prompt y poner ipconfig. Pero claro, si este fuera un ataque de verdad tendriamos que averiguar que ip’s hay conectadas a nuestra red, para ello tendriamos que seguir lo explicado en el post del tutorial de hacking básico titulado: Aprendiendo a escanear puertos. ¿Quien esta conectado a tu wi-fi?.

arpspoof -i wlan0 -t 192.168.1.108 192.168.1.1

Esta claro, el primer parametro el nombre del interface de red que vamos a usar, la primera ip es la de la víctima y la segunda ip la del router.

Con esto ya tendriamos que tenerlo todo funcionando, solo nos queda poner la guinda al pastel, y es ver en directo todo lo que está pasando. Para ello abrimos una tercera sesion de terminal de sistema en la máquina Kali, y mostramos el contenido del fichero sslstrip.log.

tail -f sslstrip.log

Ya podemos empezar a curiosear, seguro que no os costará nada identificar el password y la contraseña de cualquier web en la que el usuario se logue.

¿Que podemos ver con sslstrip?

Bueno, podemos ver muchas cosas, sslstrip es un poco antiguo y los navegadores más nuevos ya se han protegido contra este ataque, ya no se conectan por http en los sites donde previamente se han conectado por https. Pero incluso así es muy útil, por varias razones:

  • Muchos usuarios tienen navegadores antiguos, muchos!!!! Es verdad que con Windows 10 se ha modernizado el parque de software, pero todavía hay mucho windows 7 y mucho XP con IE8 o incluso 6.
  • Veremos el tráfico http. Es decir si alguien se conecta a una web que le pide un password y no tiene el protocolo https veremos su password en claro. ¿Cuánta gente usa el mismo password o alguno parecido en todas las webs?

¿Qué aprendemos de esto?

¿Os acordáis que en una de las entradas anteriores del tutorial de hacking básico se explicaba cómo reventar un router? Supongo que alguien podía pensar: ahhhh buena idea, le puedo pillar la WiFi al vecino. ¿Seguro que es buena idea? Desde el preciso momento en el que usas la WiFi de tu vecino este puede espiar todo tu tráfico, todo!. Un router con el WPS activo puede ser de un despistado, o no, puede ser de alguien que realmente esté interesado en que te aproveches de su WiFi.

Por favor, usa contraseñas diferentes entre las webs con http y las de https. Lo ideal es que sean diferentes en cada WEB, pero es muy complicado. Seamos más realistas, tienes que tener como mínimo tres contraseñas:

  1. Contraseñas para webs no seguras: Para esas Webs que te piden un usuario pero no disponen de https tienes que tener una contraseña que da lo mismo lo larga que sea, no va a estar segura. Una contraseña que si te roban no pueden hacer nada, o casi nada con ella.
  2. Contraseñas para webs seguras: Si la Web ya dispone del protocolo https es que mueve algo. Esta contraseña tiene que ser complicada, todo lo que quieras, no te cortes, pero tienes que poder recordarla.
  3. La contraseña de tu cuenta de correo: Única, no la compartas con ningún otro sistema, tiene que ser indescifrable, no la compartas ni con otros sistemas de correos. ¿Sabes esa cuenta de correo que usas para recuperar los usuarios? Pues si alguien se hace con ella se hace con toda tu identidad on line. Puede empezar a pedir el reinicio de todas las contraseñas de los sistemas en los que estés dado de alta… total le van a enviar un correo.

Don’t be evil! Aquí lo dejamos, y nos falta mucho para controlar los MiM. Al principio ya explicaba que sslstrip está un poco desfasado, pero ya hay herramientas mas avanzadas. Las veremos un poco más adelante. Por ahora lo mejor es que nos quedemos con la idea de que se puede hacer, y te lo pueden hacer. Cuidado con las WiFis públicas, cuidado con usar una WiFi que no sea tuya, cuidado con las contraseñas.

Bonus track

Sin que sirva de precedente he decidido hacer un vídeo de apoyo, porque la explicación es un poco complicada y larga…. y porqué narices, ver al SSLstrip funcionando en directo da miedo.

Vamos a ver como reviento la contraseña de facebook!!!! Si, la de facebook!!! jajajajajajaja (Risa maléfica de dibujos animados), de mi víctima que soy yo mismo usando un software antiguo, así que tampoco tiene demasiado mérito.

Atención a las tomas falsas 🙂

Recordad que este post forma parte del tutorial de Hacking / Pen Testing Básico

Comentarios.