En la capa de Red (ISO/OSI) los sistemas origen y destino quedan bien definidos por sus direcciones IP, pero a nivel de la capa de Enlace, es necesario determinar las direcciones MAC de cada host.
ARP (RFC 826) es un protocolo de traducción de direcciones entre dos esquemas de direccionamiento diferentes, tal y como ocurre entre el protocolo IP y el protocolo MAC. Básicamente su función en una red Ethernet consiste en determinar la dirección MAC de una estación dada su dirección IP. La traducción se lleva a cabo mediante un intercambio de mensajes de consulta y respuestas ARP.
El mecanismo básico funciona enviando un mensaje de 28 octetos a la dirección de difusión y sólo el host correcto responde directamente al emisor de la consulta.
Para que la consulta ARP llegue a todos los dispositivos, se especifica la dirección MAC de destino FF:FF:FF:FF:FF:FF (A.K.A. Dirección MAC de difusión o Broadcast). Cuando un Switch recibe una trama con destino FF:FF:FF:FF:FF:FF procede a reenviar dicha trama a través de todos los demás puertos (la intención es que todos los hosts “escuchen” la pregunta).
La respuesta obtenida es utilizada para determinar la dirección MAC de destino y así la transmisión puede comenzar.
La relación IP-MAC obtenida será almacenada temporalmente en una tabla de entradas ARP (cache ARP) de modo tal que si Bob en un futuro intenta nuevamente enviar datos a Alice, bastará con que consulte la tabla de caché ARP para determinar la MAC de Alice sin necesidad de “volver a preguntar”.
Dependiendo de la implementación del sistema operativo, estas entradas de caché ARP podrán ser actualizadas en función de su último uso, última vez que se “observó” la dirección MAC, etc. También podrán ser fijadas estáticamente, mediante configuración manual.
En todos los casos, el protocolo ARP no valida los datos obtenidos en la respuesta ARP, es decir, si Bob recibe una respuesta ARP que indica que cierta MAC está vinculada a la IP de Alice, Bob aceptará la información “sin dudarlo”. Está permitido enviar respuestas ARP sin una pregunta previa, y se denominan mensajes “gratuitous ARP”. Estos mensajes serán utilizados por los sistemas que lo reciban para actualizar la información de la tabla de cache ARP.
Un atacante puede enviar deliberadamente respuestas ARP sin una pregunta previa (“gratuitous arp”), indicando que su propia MAC se corresponde con la IP de Alice, y Bob aceptará estas respuestas como “información de último momento”, y procederá a actualizar la entrada en la tabla de caché ARP para la IP de Alice con la MAC del atacante.
La técnica ARP Spoofing consiste en enviar información incorrecta respecto a la traducción MAC-IP; cuando Bob utiliza esta información falsa para actualizar su caché ARP, se produce una situación de envenenamiento ARP (ARP Poisoning).
Esta situación provocará que las tramas que envíe Bob a la IP de Alice, sean entregadas por el Switch al puerto del Atacante (recordar que el Switch mira MACs).
Ahora bien, si el atacante aplica la misma técnica hacia Alice, convenciendo a Alice de que la dirección MAC del Atacante se corresponde con la dirección IP de Bob, entonces el atacante ha convencido a Bob de que él es Alice y a Alice de que el es Bob, logrando una situación de intermediario (Man in the Middle).
Será responsabilidad del Atacante realizar el reenvío de las tramas a cada sistema para mantener el tráfico activo y evitar problemas de comunicación en capa superior. Adicionalmente el Atacante podrá inspeccionar el tráfico, obtener datos sensibles, manipular información, etc.
Sistemas involucrados
Alice AA:BB:CC:22:33:44 (192.168.0.2/24)
Atacante AA:BB:CC:88:88:88 (192.168.0.3/24)
Para el sistema atacante se utilizará GNU/Linux Ubuntu y para las víctimas utilizaré Windows XP SP3 pero realmente da igual el sistema operativo víctima. En primer lugar, deberá utilizarse alguna herramienta que permita realizar el envío de mensajes con ARP Spoofing hacia las víctimas para probar el ARP Poisoning. Para este tutorial utilizaré “dsniff”, que es básicamente un set de herramientas para sniffing de passwords.
Entre las herramientas incluidas en el paquete dsniff, se encuentra “arpspoof”, que básicamente realiza el ARP Spoofing sobre la víctima señalada.
Para instalar dsniff tipear en un terminal:
$ sudo apt-get install dsniffCon ello lo instalas.
Análisis previo al ataque
En el instante inicial, Bob tiene una entrada en su caché ARP que indica que la dirección IP de Alice corresponde a la MAC AA:BB:CC:22:33:44.
Para visualizar la tabla de cache ARP, ir a:
- Inicio
- Ejecutar
- cmd
En la terminal de windows, escribir:
C:\ arp -aSe obtendrá el contenido actual de la tabla de cache ARP de Bob:
Del mismo modo en el PC de Alice:
Ataque
En primer instancia deberá activarse el bit de forwarding en el sistema Atacante:
# echo 1 > /proc/sys/net/ipv4/ip_forwardDe este modo se evita la pérdida de paquetes, Bob y Alice podrán interactuar como si nada sucediera.
El comando arpspoof se utiliza del siguiente modo:
# arpspoof -i INTERFAZ_LAN -t IP_VICTIMA_POISONING IP_VICTIMA_SPOOFEDDe donde:
Para convencer a Alice, de que Bob tiene la MAC AA:BB:CC:88:88:88, en la terminal del sistema Atacante ejecutar arpspoof del siguiente modo:
# arpspoof -i eth0 -t 192.168.0.2 192.168.0.1Se enviarán mensajes de respuesta ARP a Alice con información manipulada:
Iniciar OTRA terminal (no debe interrumpirse la anterior) y ejecutar el ataque en el sentido inverso, para convencer a Bob, de que Alice tiene la MAC AA:BB:CC:88:88:88, en la terminal del sistema Atacante ejecutar arpspoof del siguiente modo:
# arpspoof -i eth0 -t 192.168.0.1 192.168.0.2Se enviarán mensajes de respuesta ARP a Bob con información manipulada:
A partir de este punto, el Atacante mantiene la situación de intermediario (MitM) mediante el envío de mensjaes ARP manipulados:
Repitiendo los primero pasos, es posible comprobar como las entradas de cache ARP de Bob y Alice han sido actualizadas con la MAC del Atacante:
Cache ARP de Bob:
Cache ARP de Alice:
Las tramas que Bob envía a Alice son entregadas al Atacante y éste las reenvía a Alice. Del mismo modo las tramas enviadas por Alice son entregadas al Atacante y éste las reenvía a Bob.
El atacante podría capturar tráfico con su placa de red en modo promiscuo y obtener por ejemplo credenciales de acceso a un portal web que no utilice SSL.
Por ejemplo, en la captura de tráfico siguiente, un atacante ha conseguido las credenciales de acceso a un portal de PHPMyAdmin: (Usuario “root”, password “ad00”)
Finalmente, para cerrar el ataque sin interrumpir las comunicaciones, el atacante detiene la terminal de “arpspoof” presionando teclas:
Ctrl + C
Y la herramienta automáticamente enviará consultas ARP a cada víctima para que se actualice la información de caché ARP con los datos correctos.
Para este entonces, el Atacante libera las comunicaciones y puede desconectarse de la red para analizar el tráfico ya obtenido.
Algunos sistemas antivirus monitorean los cambios de entradas en la tabla de caché ARP, incluso para GNU/Linux existe una herramienta llamada “ARPWatch” que alerta ante un cambio de relación ARP-IP en las tablas de caché ARP del sistema.
En otro artículo se analizarán las técnicas posibles para prevenir ataques MitM basados en ARP Spoofing y ARP Poisoning.
Espectacular tutorial explicando perfectamente el ataque Mitm, enhorabuena Silvestre, genial aporte