Jul192013

Envenenamiento de las tablas ARP (ARP spoofing)

  ARP Linux gnu blog

El ARP Spoofing o envenenamiento de tablas ARP, es una técnica de hacking usada para infiltrarse en una red, con el objetivo de que un atacante pueda husmear los paquetes de datos que pasan por la LAN (red de área local), modificar el tráfico, o incluso detenerlo.

Mediante este tipo de ataques, se puede obtener información sensible de una víctima que esté en la misma red que el atacante, como nombres de usuario, contraseñas, coockies, mensajes de correo y mensajería instantánea, conversaciones VoIP, etc.

Antes de nada es importante conocer algunos conceptos básicos.

A la hora de enviar un paquete de un host a otro hay que indicar en su cabecera cual es la dirección física (MAC), que es un identificador fijo y único asignado a cada tarjeta de red. Cuando una aplicación se quiere comunicar con otra a través de una red usará el protocolo IP para identificar la máquina de destino (la dirección IP asignada a una tarjeta de red puede variar), por lo que se hace imprescindible asociar las direcciones de red (direcciones IP) y las direcciones físicas (direcciones MAC). Para ello existe un protocolo llamado “Address Resolution Protocol” o Protocolo de Resolución de Direcciones (desde ahora ARP).

Cuando un paquete llega a una máquina, esta comprueba que en la cabecera se indique su MAC y si esta no coincide con la suya, ignorará el paquete.

Cada máquina tiene una tabla donde almacena las direcciones IP de las cuales conoce su MAC, por ejemplo:

IP MAC
192.168.1.1 d0:92:54:67:1d:ae
192.168.1.12 00:72:50:a4:b1:e3

De este modo, cuando necesita enviar un paquete a 192.168.1.1 añadirá a la cabecera que va dirigido a la MAC d0:92:54:67:1d:ae y así podrá ser aceptado en su destino.

El problema es que se puede dar el caso de que una aplicación quiera enviar un paquete a una IP que no se encuentra en dicha tabla (cada vez que se inicia el PC, esa tabla está vacía). En ese caso se hace necesario preguntar quien tiene la IP deseada, y para ello se usa el ARP. Para realizar dicha pregunta, la máquina enviará un paquete especial dirigido a la MAC ff:ff:ff:ff:ff:ff (broadcast), cuyo contenido será del estilo “¿quien tiene la ip x.x.x.x?”, cuando las máquinas de la red vean este paquete dirigido a esa dirección MAC especial, leeran el mensaje y únicamente la máquina que tenga la dirección IP por la que se pregunta responderá con otro paquete diciendo algo como “Yo, x:x:x:x:x:x, tengo la dirección IP x.x.x.x”. Ahora todas las máquinas de la red recibirán ese paquete, lo leerán y actualizarán sus tablas de IP y MAC con la nueva información, no solo la que hizo la pregunta.

El envenenamiento de las tablas ARP consiste básicamente en inundar la red con paquetes ARP indicando que la nuestra es la MAC asociada a la IP de nuestra víctima y que nuestra MAC está también asociada a la IP del router (puerta de enlace) de nuestra red. De este modo, todas las máquinas actualizaran sus tablas con esta nueva información maliciosa. Así cada vez que alguien quiera enviar un paquete a través del router, ese paquete no será recogido por el router, sino por nuestra máquina, pues se dirige a nuestra dirección MAC, y cada vez que el router u otra máquina envíe un paquete a nuestra víctima sucederá lo mismo. Como nuestra máquina sabe que “está haciendo trampas” no se auto envenenará y sí conocerá las MACs reales de todas sus víctimas, por lo que la podremos configurar para que reenvíe esos paquetes a su verdadero destinatario, así nadie notará que nos hemos metido en medio (Man-in-the-middle)

Ahora que todos los paquetes que nos interesan pasan por nuestra máquina podremos usar una aplicación analizadora de paquetes (sniffer) como Wireshark para ver su contenido y usarlo con buenos o malos propósitos.

Vamos a ver un ejemplo de como hacer esto en Linux mediante la herramienta arpspoof:

La aplicación arpspoof está diseñada para realizar envenenamientos de tablas ARP dirigidos a hosts concretos, por lo que no realiza un envenenamiento global, o por lo menos eso me ha parecido al examinar los paquetes, pero es muy fácil de manejar y funciona a la perfección.

Antes de nada, para poder hacer este ataque tendremos que tener instaladas algunas aplicaciones que podemos encontrar en el paquete dsniff, por lo que si no lo tenemos instalados procedemos a ello.

Supongamos las siguientes condiciones:

  • La IP de nuestro router es la 192.168.1.1
  • Nuestra IP es la 192.168.1.35
  • La IP de nuestra víctima es la 192.168.1.38

Configuraremos nuestro sistema para que reenvíe todos los paquetes a sus verdaderos destinatarios mediante el comando:

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

Ahora procedemos a envenenar las tablas:

Ponemos cada uno de estos comandos en una consola diferente para indicar que nuestra MAC es la MAC asociada  a la IP del router y que también es la MAC asociada a la IP de nuestra víctima:

# arpspoof -i wlan0 -t 192.168.1.1 192.168.1.38
# arpspoof -i wlan0 -t 192.168.1.38 192.168.1.1

Nota: Yo he puesto wlan0 despues del -i porque esa es la interfaz con la que me conecto a mi red.

Por último ejecutaremos el Wireshark y ya podremos husmear en los paquetes de nuestra víctima sin que se de cuenta.

Mas adelante publicaré otro artículo explicando como detectar si alguien está envenenando nuestras tablas ARP.

Política de comentarios

Dada la importancia de los comentarios como espacio de participación, te pedimos por favor que leas detenidamente y cumplas con las siguientes normas de participación.

15 respuestas para “Envenenamiento de las tablas ARP (ARP spoofing)

Oscar

Gracias por la información, quiero leer el de como detectar si alguien está envenenando nuestras tablas ARP.


Elías R.M.

Muchas gracias por comentar. Ahora mismo estamos trabajando en algunas mejoras para el blog, en cuanto terminemos con esas tareas me pondré manos a la obra con el post que comentas.

Saludos.


newb1ezer0

Es mas simple que contar hasta 6, revisa los logs de tu arp las asociaciones que existen, si ves dos ips con una misma MAC es lógico que estas envenenado.


Gaudy

ojo que el titulo dice enveNAmiento, por si las moscas


José Miguel

Uff…. un fallo.

Muchas gracias por la información, paso a corregirlo.

Saludos. 🙂


javier

Se podrían envenenar todas las ip, para poder sniffear toda la red completa?


Cracolo

Eres muy bueno explicando cosas que son dificiles de entender a la primera !, buen post !


Elías R.M.

Muchas gracias Cracolo.

Saludos.


pablo

Haciendo esos pasos no quitamos el cifrado de las paginas que tienen https por lo cual mucha informacion se nos resistiria… Alguna solucion?


Cesar

Usa ssl strip para quitar el protocolo https


Elías R.M.

Hola Pablo,

Como comenta Cesar, se puede usar ssl strip para intentar forzar a que las conexiones no se realicen mediante ssl, no todas las web admiten conexiones no seguras, por lo que esta técnica no funcionará siempre…

Otra forma es montar un proxy transparente mediante Squid3 y usarlo para interceptar las comunicaciones cifradas, pero de ese modo el usuario obtendrá el típico aviso de que la web no es segura porque su certificado es desconocido… Si logras tener acceso al equipo de la “víctima”, podrías instalarle los certificados de tu proxy y lograr que el navegador no emita aviso alguno…

Hasta ahí puedo llegar por ahora, pues no dispongo de mucha mas información, he oído que es posible interceptar las comunicaciones https y falsificar los certificados para que el navegador no lo detecte, pero no lo he podido comprobar…

Saludos


Cesar

Tambien se puede hacer un dns spoof, pero el problema es que algunos navegadores no abren la pagina.


zeuz_kaos

muy buena publicación.


Gustavo Garcia

Buenas tardes Elías R. M. siempre que intento hacer un arpspoof con el tipico MITM en una red local la victima se desconecta, hay alguna solución? probablemente es posible la tarjeta de red pero no creo porque al hacer el mismo ARP SPOOF en ETTERCAP me funciona de maravilla, alguna sugerencia?


luis

como puedo envenear varias pcs a la vez


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *