Blog

Ataque MITM por ARP Spoofing + Sniffing

Hola a todos, antes de comenzar me gustaría agradecer a Highsec la oportunidad que me dan de participar en su página para compartir conocimiento entre todos los que estamos interesados en esta rama de la informática. Este es mi primer post, y espero que lo disfruteis.
En este post de hoy os voy a mostrar los fundamentos de arp spoofing, ataque Man in the Midle por arp spoofing y sniffing de trafico con driftnet, urlsnarf y sslstrip.

Arp Spoofing:
Antes de explicar como realizar arp spoofing, ¿Qué es arp?
Arp es el protocolo de resolución de direcciones (Address Resolution Protocol) mediante el cual en una red interna se obtiene una dirección física a partir de una dirección IP. La importancia de este protocolo es que la gran mayoría de redes domésticas y corporativas utilizan asignación dinámica de Ips, por lo que la dirección IP de un equipo puede variar, esto hace que la dirección IP no sirva como identificador inequívoco del equipo. Sin embargo, la dirección de la tarjeta de red si que es única. Y es lo que se utiliza para mandar un paquete a un equipo.
Arp proporciona el servicio de otorgar una dirección física a partir de una dirección IP.
El envío de paquetes de el equipo A(IP=192.168.1.AA, MAC=AA:AA:AA:AA:AA:AA) al equipo B(192.168.1.BB,MAC=BB:BB:BB:BB:BB:BB) funcionaría de la siguiente forma.
1) A pregunta: ¿Qué dirección física tiene la dirección IP 192.168.1.BB?
2) B responde: A la dirección IP 192.168.1.BB le corresponde la dirección MAC BB:BB:BB:BB:BB:BB
3) A registra en su tabla ARP, todo paquete que se tenga que enviar a la dirección IP 192.168.1.BB, envíese a la dirección MAC BB:BB:BB:BB:BB:BB
arpexample1
En una conexión legítima, cabe esperar que la respuesta recibida después de lanzar la consulta ARP “1)” sea la correcta, pero si alguien generase una respuesta ilegítima correctamente generada, se podría interceptar la comunicación saliente del equipo A al equipo B.


MITM:

Esta técnica de arp spoofing, si se hace de manera bidireccional obtenemos el resultado de un ataque man in the middle. El tráfico de A→B pasaría por el equipo H(Hacker) de la misma forma que lo haría el tráfico B→A
spoof1

spoof2

spoof3

spoof4

spoof5

spoof6
Sniffing:
Una vez sabemos que todo el tráfico de A y B pasa por H, interesaría esnifar este tráfico entre las víctimas para explotarlo. Para este propósito se pueden utilizar sniffers de propósito general como Wireshark, o sniffers específicos, como:
Sslstrip: Redirige el tráfico https a tráfico http para sacar cuentas y contraseñas en texto plano
Driftnet: Sniffing de imágenes
Urlsnarf: Sniffing de URLs

Manos a la obra:

Para esta demostración, voy a utilizar una máquina atacante Debian Wheezy, y una máquina víctima virtualizada Kali Linux.

Antes de comenzar queremos preparar nuestro equipo para el ataque man in the middle, y una de las cosas que necesitamos es la redirección de tráfico. Por lo que tenemos que comprobar el contenido del fichero binario que se encuentra en /proc/sys/net/ipv4/ip_forward
$ cat /proc/sys/net/ipv4/ip_forward
0 es el contenido por default.
Para habilitar el tráfico solo tenemos que volcar un 1 en dicho fichero.
$ echo ‘1’ > /proc/sys/net/ipv4/ip_forward

Una vez hecho esto queremos redirigir todo el tráfico http al puerto 8080 para poder realizar correctamente el sniffing. Esto lo haremos con el comando iptables
$ iptables -t nat -A PREROUTING -p tcp –destination-port 80 -j REDIRECT –to-port 8080
preparacionOK
Una vez hecho esto nuestro equipo esta preparado para el ataque. Ahora necesitamos abrir 2 terminales para realizar el arp spoofing en las 2 direcciones.
Para ello utilizaremos los siguientes comandos
$ arpspoof -i #interfaz# -t #IP equipo A# #IP equipo B#
$ arpspoof -i #interfaz# -t #IP equipo B# #IP equipo A#

Aqui vemos la salida del último de estos dos.
arpspoofinggoingOK
Donde el equipo A será la dirección IP de nuestra víctima, y B será otro equipo, en este caso la dirección IP del router.
Veamos las tablas arp de nuestra víctima antes del envenenamiento

arpokmejorOK

Y después del envenenamiento

arppoisonedOK
Como vemos, todo el tráfico saliente de nuestra víctima pasa por nosotros, y de la misma forma el tráfico del router a la víctima también.
Ahora nuestro equipo está en la posición de MITM entre nuestra víctima y el router, llega el momento de colocar los sniffers
Para comenzar utilizaremos sslstrip, que esnife el puerto 8080, reinicie las conexiones de nuestra víctima a sus pàginas actuales y escriba la salida del resultado en un fichero determinado
$ sslstrip -k -l 8080 -w fichero

Después el sniffer de las urls, urlsnarf, al cual especificaremos la interfaz la cual esnifar, y puesto que no tiene opción de sacar el resultado a un fichero utilizaremos el comando tee
$ urlsnarf -i interfaz | tee fichero

Y por último el sniffer de imágenes driftnet que las almacenará en una carpeta
$ driftnet -a -d directorio -p -i wlan0

Después de un rato podremos ver como los ficheros se van llenando de información, aquí vemos un ejemplo de salida de uno de los ficheros obtenidos, el fichero obtenido por sslstrip, el cual me parece el resultado más interesante de los 3. En el que podemos apreciar cuentas de paginas como facebook, dropbox, y bank of america.

ssloutputOK

Tácticas de defensa:

Una táctica de defensa posible contra este ataque es la de utilizar tablas arp estáticas, sin caché arp, no hay nada que envenenar por lo que este ataque sería inviable, el problema es la carga de trabajo de esta solución sobre todo para redes corporativas medianamente grandes, ya que cada vez que se cambie la dirección ip de un equipo, o se añadan más equipos, hay que actualizar las tablas de todos los equipos de la red.

Otra solución es comprobar periódicamente el estado de las tablas arp, hay una herramienta UNIX que nos ayuda a automatizar esta tarea, esta herramienta es Arpwatch, la cual nos manda un correo electrónico cada vez que haya un cambio en la tabla arp.

Y como tercera solución al arp spoofing. es el utilizar RARP en vez de ARP, esto es Reverse Address Resolution Protocol, en el que a partir de una dirección MAC nos devuelve una dirección IP, si nos devuelve más de una dirección IP esque esta MAC ha sido clonada.

Por último, como costumbre es conveniente navegar en tráfico https en vez de http, ya que el tráfico https está cifrado.

Espero que os haya gustado.
Un saludo, Gonzalo.
Email: gonzalo.abad.perez@gmail.com
Twitter: @gonabad94

About Author

Gonzalo Abad PerezEstudiante de Doble Grado en Ingeniería Informática y Matemáticas por la UAM. Apasionado de la seguridad informática y la criptografía twitter: @gonabad94 mail: gonzalo.abad.perez@gmail.comView all posts by Gonzalo Abad Perez →

  1. Saira Isaac Hernandez
    Saira Isaac Hernandez08-25-2014

    Muy buen post felicidades y espero seguir leyendo mas .

  2. Zack
    Zack09-01-2014

    Hola:

    Muy buenos e instructivos los posts que subís. Espero que mantengáis este nivel porque se aprende y se refrescan muchos conocimientos. Solo os aconsejaría una cosa, y es que si no os cuesta mucho trabajo, las imágenes de los enlaces las pongáis en un tamaño mayor en la imagen que se despliega cuando se hace click en dichos enlaces, ya que algunas se ven en un tamaño muy reducido.

    Saludos.

Leave a Reply to Zack Click here to cancel reply.

*

    No Twitter Messages