Man-in-the-middle con arpspoof, sslstrip, Wireshark y mucho tiempo libre

HOLA HOLA.

Hoy, queridos amigos, vamos a aprender a hacer un man-in-the-middle (de aquí en adelante, MITM) usando arpspoof, sslstrip, Wireshark, y algunas otras cositas más. Las instrucciones las haré a la medida de Arch Linux, pero como sois más listos que la mar, no os costará nada de nada hacer lo mismito en otras distros o incluso en otros sistemas operativos. Sí señor.

El objetivo: cazar la sesión y, posteriormente, la cookie del perfil en Tuenti de nuestra hermanita, la cual nos cae mal porque… no sé, eso ya es cosa vuestra.

Antes de nada, reuniremos los ingredientes:

  1. arpspoof. Esto está en el paquete dsniff.
  2. sslstrip. Hay un PKGBUILD en el AUR.
  3. Wireshark. Instala wireshark-gtk, luego añádete al grupo wireshark usando usermod -a -G wireshark usuario, y cierra todas las sesiones que tengas abiertas para que los cambios tengan efecto.
  4. Firefox con su complemento Cookies Manager+.
  5. iptables.
  6. nmap. Si nos sabemos la IP de la ingenua víctima no nos va a hacer ni falta, pero supongamos que la tenemos que adivinar.

Bueno, ya está bien de instalar tonterías. Al meollo.

Nuestra inquieta hermanita es un dolor de huevos importante, y hemos decidido gastarle una bromita inocente: le vamos a cambiar el estado del Tuenti. Podríamos ir a su ordenador y cambiárselo directamente, pero como es una yonki, no hay quien la separe de ahí, por lo que lo habremos de hacer remotamente.

Son las tres y media; ya ha vuelto de clase, ya ha comido. Se ha sentado frente a su ordenador. Ay, qué nervios. Lo que nos vamos a reír. ¿A que sí?

Supondremos que no sabemos la IP que tiene el PC de nuestra hermanita. Si fuimos nosotros los que lo configuramos en su día, o tenemos acceso al router y dicho PC usa DHCP (¿quién no es admin de su propia red?), ya tenemos la IP. Pero vamos a imaginar que no. En esta vida hay que ponerse en lo peor.

Abrimos una terminal, nos hacemos root y, suponiendo que nuestra red de área local (ay, qué pedante) esté en 192.168.0.*, ponemos:

# nmap 192.168.0.0/24 -sP

Vale. ¿Y ahora? Pues aquí están los resultados:

Starting Nmap 5.51 ( http://nmap.org ) at 2012-03-02 12:29 CET
Nmap scan report for 192.168.0.1
Host is up (0.0014s latency).
MAC Address: 00:03:6F:CA:03:A1 (Telsey SPA)
Nmap scan report for 192.168.0.2
Host is up.
Nmap scan report for 192.168.0.3
Host is up (0.0018s latency).
MAC Address: E4:7C:F9:DE:81:1F (Samsung Electronics Co.)
Nmap done: 256 IP addresses (3 hosts up) scanned in 6.91 seconds

Ahí, ahí, bien. Vemos tres direcciones IP despiertas:

  1. 192.168.0.1, que obviamente es el router.
  2. 192.168.0.2, que somos nosotros (en este caso, prueba de ello es que no nos sale la MAC, pero esto depende de otros factores).
  3. 192.168.0.3, que es nuestra hermanita.

Bueno, y ahora qué hacemos, diréis.

Cuando nuestra terrible hermanita genera tráfico, éste va directamente desde su ordenador al router y, de ahí, a la WAN Internet. Nuestro objetivo es colocarnos en medio de ella y del router para poder controlar lo que hace: no sólo podremos verlo todo, sino que además ¡podremos modificarlo!

Sacaremos el arpspoof. Ésta es una herramienta sencilla: sólo requiere la IP de la víctima (nuestra hermanita) y la IP del router (…el router). Antes necesitamos ciertos preparativos. Para hacer que el tráfico fluya por nuestro ordenador, debemos explicárselo al kernel educadamente:

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

Vale. Por otro lado, ¿tienes reglas de iptables puestas? De ser así, quítalas; nos pueden dar problemas.

Ahora sí, arpspoof al ataque.

ESPERA ESPERA ESPERA. Antes, abre Wireshark.

Pincha en la interfaz que vayas a usar (en mi caso, wlan0). Ya estás capturando, pero aún no hemos hecho el arpspoof, por lo que sólo ves lo que haces tú. Si miras en la parte superior de Wireshark, una de las barras de herramientas reza «Filter». Ahí escribiremos un filtro para no liarnos con lo que hace nuestro ordenador; sólo queremos ver lo que hace el de nuestra hermanita. Además, sólo nos interesan las peticiones HTTP. He aquí lo que habremos de poner:

(ip.src == 192.168.0.3 || ip.dst == 192.168.0.3) && http.request

O sea:

Hacemos clic en «Apply» y ya no deberíamos ver nada. Hasta ahora, todo bien. Ahora es cuando podemos empezar con el arpspoof. Escribimos en una terminal de root:

# arpspoof -i wlan0 -t 192.168.0.3 192.168.0.1

Obviamente, la primera es la IP de nuestra hermanita y la segunda es la del router.

YA, YA. Ahora nos vamos a Wireshark. Buf, buf. Ya empezamos a ver cositas, eh. Nos vamos a una petición de Tuenti (la que sea, de éstas que empiezan con GET o POST), hacemos clic y, en el panel de abajo, abrimos «Hypertext Transfer Protocol».

Nos sale la lista de parámetros de la petición, entre ellos Cookie. Bingo, esto es lo que queremos. Hacemos clic derecho en Cookie, Copy, Bytes, Printable Text Only.

Tenemos la cookie, tíos. LA TENEMOS. Nos falta ver qué hacemos con ella. Bueno, lo primero va a ser abrir un editor de texto y pegarla ahí.

Cookie: sid=lQBJBAAAAADo2zzghWuEuoXvA4Ro2eckJSrcOOuuUE8; lang=es_ES; pid=0b3c7aff; co16sx3p=1; __utma=81029266.1859165469.1330689298.1330689298.1330689298.1; __utmb=81029266.1.10.1330689298; __utmc=81029266; __utmz=81029266.1330689298.1.1.utmcsr=tuenti.com|utmccn=(referral)|utmcmd=referral|utmcct=/

Como ves, es una lista de parámetros. El único que realmente queremos es sid. Cópialo al portapapeles.

Ahora vete al Firefox y abre Tuenti. Si tenías tu sesión abierta, ciérrala. Abre el Cookies Manager+ y, en el cuadro de búsqueda, pones tuenti. Te dará unos cuantos resultados que, sin duda alguna, diferirán de éstos:

Ahora haz doble clic en, por ejemplo, pid:

Cambia pid por sid y el contenido de la cookie por el contenido de sid que ya cogimos antes:

Pincha en «Save as new» y cierra el Cookies Manager+. Sigues en la página de inicio de sesión de Tuenti, ¿no? Pues pulsa F5.

Ay, ay, ay que me da.

Lo hemos conseguido. Podemos oír esto de fondo. Qué ilusión, joder. Somos dioses.

Espera, que no. ¿Y si cierra sesión? Pues ya no podremos usar esa cookie más, queda invalidada. ¿Qué hacemos?

Pues para eso un señor muy amable y muy bueno inventó sslstrip. Hagámoslo funcionar. Nos vamos a una terminal de root y arrancamos sslstrip:

# sslstrip

sslstrip 0.9 by Moxie Marlinspike running…

Muy bien. Y ahora tenemos que poner una regla de iptables para redirigir todo lo que va por el puerto 80 hacia el 10000, que es donde sslstrip escucha:

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

Ya está. Así de primeras no hemos notado nada, pero mira, vámonos a Tuenti (al de nuestra hermanita, que no lo hemos cerrado aún) y le cerramos la sesión.

Como es natural, si se le cierra la sesión de repente lo va a notar, pero bueno, a nosotros no es que nos importe mucho. Volvemos a la pantalla de inicio de sesión. Tierra cero.

Nuestra hermanita hará clic en cualquier enlace de dentro de Tuenti y también volverá al inicio de sesión. Y entonces mirará extrañada y procederá a iniciar sesión metiendo sus datos. El resto ya os lo imagináis.

sslstrip modifica al vuelo la página que nuestra hermanita ve; normalmente ella iniciaría sesión usando HTTPS, pero sslstrip cambia, en el formulario de inicio de sesión:

<form id=”form_login” action=”https://secure.tuenti.com/?m=Login&amp;func=do_login&#8221; method=”post” …

Por:

<form id=”form_login” action=”http://secure.tuenti.com/?m=Login&amp;func=do_login&#8221; method=”post” …

Ni el mejor detective descubriría el trabajito.

Para simplificar las cosas, vamos a cambiar el filtro de Wireshark por:

(ip.src == 192.168.0.3 || ip.dst == 192.168.0.3) && http.request.method == “POST”

Así sólo veremos las peticiones POST (como la que hay que hacer para iniciar sesión), y, voilà:

Y el resto ya es cosa vuestra. Don’t be evil…

Atención: hay una segunda parte de este post con más información.

Anuncios

8 Responses to “Man-in-the-middle con arpspoof, sslstrip, Wireshark y mucho tiempo libre”


  1. 1 TuMalaCon100cia 02/03/2012 en 16:27

    Buff, estoy en ello, ya lo he leido una vez, ahora queda releerlo y ponerlo en marcha. Te agradezco mucho este pedazo de articulo, si tengo algun problema con algun comando te lo haré saber. Gracias.

  2. 2 susaniita 26/03/2012 en 22:59

    enhorabuena, muy educativo a la vez de ameno pues la historia de tu hermanita me tenia intrigadisimaaaa, sabrias tambien decirme cual es la cookie que hay que captar en el facebook or gmail o hotmail de tu queridisima hermanita¿ gracias

  3. 4 simonmarley1 03/06/2012 en 18:35

    perdona no me va este comando y lo he puesto por lo menos 20 veces..haber si me puedes ayudar..gracias

  4. 5 Daniel 10/07/2012 en 5:51

    Muy bueno funciona al 100

  5. 6 Alvaro 22/01/2014 en 17:09

    Buen tuto amigo, lo acabo de probar y funciona perfectamente.

  6. 7 Kremlin 19/08/2017 en 13:23

    Muy bueno. Uno de los mejores tutoriales que he leído sobre MITM. Gracias y un saludo.


  1. 1 Man-in-the-middle con arpspoof, sslstrip, Wireshark y mucho tiempo libre (epílogo) « Thacid Trackback en 03/03/2012 en 12:06

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s





A %d blogueros les gusta esto: