Protección contra ARP poisoning

por | mayo 4, 2014

Ya he escrito en varias ocasiones acerca de problemas que permiten insertar un equipo entre nosotros y nuestros objetivos (Ataque Man In The Middle): aquí y aquí. En esta entrada, que amplía el «primer aquí», el objetivo es explicar en qué consiste y cómo podemos abordarlo.

¿Qué es ARP Poisoning?

Consiste en conseguir indicarle a un nodo que la MAC asociada a una IP (por ejemplo la de nuestro router por defecto) es la otra diferente a la que tiene realmente el equipo objetivo. Conseguirlo es bastante fácil y, además, simplemente hay que usar el propio protocolo ARP. Una imagen vale más que mil palabras y, creo, la de la Wikipedia refleja bastante bien en qué consiste el envenamiento de ARP (también llamado, por el efecto, ARP Spoofing):

466px-ARP_Spoofing.svg

http://en.wikipedia.org/wiki/File:ARP_Spoofing.svg

La idea del atacante es que cuando a nivel de enlace, se vaya a mandar los paquetes a nuestro router, estos pasen primero por él (funcionando como un Proxy ARP). ¿Qué puede hacer con ello? Lo que quiera. Si ciframos nuestras comunicaciones y estamos atentos a posibles mensajes de aviso, le complicamos «su labor». Si no…

Al margen del cifrado, ¿podemos hacer algo más? Podemos considerar 2 caminos (no excluyentes) para intentar protegernos de esta amenaza:

  1. Introducir entradas estáticas MAC-IP en las tablas de ARP de los equipos. En principio, en todos los equipos de nuestra red ejecutaríamos el comando arp -s para «fijar» la MAC del/de los routers de nuestra red. En redes de tamaño medio-grande puede llegar a ser inmanejable, aunque podemos aprovecharnos de Ansible o Puppet para suavizar el trabajo.
  2. Monitorización de ARP, como ya escribí en esta entrada donde propuse una solución personal. En este punto, quería añadir que la mayoría de las distros de GNU/Linux disponen del software arpwatch que, una vez instalado (apt-get install arpwatch) y configurado (en /etc/arpwatch.conf le indicamos la interfaz de red y el usuario), analizará la red y registrará en /var/log/syslog las nuevas MACs que aparezcan en la red y nos avisará de cualquier intento de ataque, sin necesidad de programarnos nuestros guiones.

Referencias

  1. http://tools.ietf.org/html/rfc826
  2. http://es.wikipedia.org/wiki/Address_Resolution_Protocol
  3. http://en.wikipedia.org/wiki/ARP_spoofing