25 abr 2011

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.

11 comentarios:

  1. me gusta este app, lo usaba antes para unas pruebas y es bastante bueno!salu2

    ResponderEliminar
  2. y otra cose que se me olvido,no se si aqui funciona iptables asi como pone en este articulo pero me ne funcionaba en backtracky tenia que agregar una para mas antes de –destination-port 80 y otra antes de –to-ports 10000que sale asi:iptables -t nat -A PREROUTING -p tcp -–destination-port 80 -j REDIRECT -–to-ports 10000

    ResponderEliminar
  3. Si Andriy son 2 -- lo que pasa que salen muy juntas tienes razón, para que no haya dudas es --destination-port y --to-ports.El editor hizo sus trikiñuelas ;)Salu2

    ResponderEliminar
  4. Muy bueno! muy bien explicado... solo tengo una preguntasi por ejemplo una persona ya hace login sobre un pagina http, también lo capturaria? o solamente captura lo que ha redirigido desde ssl?uun saludo!

    ResponderEliminar
  5. tal como yo lo uso, la linea logica de comandos a introducir en la distintas shell son (como root logicamente)cd /proc/sys/net/ipv4echo "1" > ip_forwardiptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000cd /escritorio/sslstrip-0.7/python sslstrip.py -f -w sslstrip.txten otra shell:arpspoof -i wlan0 -t 192.168.1.129(dirección suya) 192.168.1.1 (dirección del router)con el archivo sslstrip.txt podemos ir viendo a cada momento lo que nos vaya interesando :D

    ResponderEliminar
  6. Bien Luis, es correcto si señor... mañana sale secunia! ;)

    ResponderEliminar
  7. [...] traía una introducción al concepto SSL Strip y recordaba que SSL es vulnerable a este tipo de [...]

    ResponderEliminar
  8. No os olvidéis de correr con -f el ssltrip xDHará magia cambiando el favicon por un candadito...

    ResponderEliminar
  9. hola osy nuevo en esto de seuridad informatica... me podrian explicar con un ejemplo mas claro paso a paso si se pudiere decir... ejemplo una ip que ustedes usen o etc. y la del router en el router habria que ingresar la mac??? o me equivoco???

    ResponderEliminar
  10. [...] como utilizar la herramienta SSLStrip de la que ya hablamos hace varios meses en Flu Project con éste artículo, para hacer creer al usuario que está bajo una conexión segura, ya sea porque el usuario ve un [...]

    ResponderEliminar
  11. hola he estado mirando sslstrip pero ara android y cuando lo pongo me quedo sin internet en el ordenador de pruebas. como lo podria solucionargracias

    ResponderEliminar