Páginas

26 mayo, 2012

Ataques MITM: ARP Spoofing/Poisoning sobre IPv4 - Parte 2 de 2

¿Cómo prevenir o evitar ataques MITM - ARP Spoofing/Poisoning?

Una de las maneras para prevenir el ARP Spoofing de manera manual, es el uso de tablas de caché ARP de forma estáticas, de forma que no existe caché dinámica, cada entrada de la tabla mapea una dirección MAC con su correspondiente dirección IP.

Para añadir rutas estáticas ARP a la tabla caché se pueden realizar de diferentes formas, dependiendo el OS que utilicemos. Abrimos una consola con privilegios administrativos.

Windows o Linux:
arp -s [IP Address] [MAC Address]
arp -s 192.168.1.1 00:11:22:33:44:55
Windows (usando netsh):
netsh > interface > ipv4 > add neighbords "[NombreDeLaConexiónDeRed]" [IP Address] [MAC Address]
netsh > interface netsh interface> ipv4
netsh interface ipv4> add neighbords "Conexión de área local" 192.168.1.1 00:11:22:33:44:55
El inconveniente de añadir rutas estáticas a la caché de la tabla ARP es que al reiniciar el PC las direcciones estáticas se eliminan. Para mantener esta tabla podríamos generar un script .vbs o .bat (el cual le daríamos privilegios administrativos) y que este se ejecute en el inicio del sistema, ya bien podemos incluirlo en la carpeta "Inicio" o hacer uso del editor de directivas de grupo local.

gpedit.msc > Configuración de Windows > Scripts (inicio o apagado) > Inicio > Agregar... > buscamos la ruta del fichero .vbs o .bat. Esto lo añade por defecto en la ruta: C:\Windows\System32\GroupPolicy\Machine\Scripts\Startup

¿Cómo detectar ataques MITM - ARP Spoofing/Poisoning?

Si empezamos a notar alguna anomalía mientras navegamos.
  • Que un página que debería llevar un protocolo HTTPS está como HTTP.
  • Que aún siendo HTTPS se nos caiga la conexión con el servidor de dicha página o nos deniege el acceso ya que detecta que la entidad certificadora CA que emite el certificado para la conexión no es el original o un entidad emisora legítima.
  • Que una dirección DNS que sabemos a donde nos lleva y como es la página web de esta, se nos muestra una página web similar o nos encamina a otra página web distinta.
En cualquiera de los casos anteriores sería entonces donde podría consultar la tabla ARP con el comando arp -a y comprobar la existencia de direcciones MAC clonadas correspondientes a distintas direcciones IP.

Como prueba sobre dos Windows 7 Ultimate x64 instalados en máquinas virtuales. Aunque como ya dijera en la primera entrega el OS no influye para este tipo de ataques ya que se tratan a nivel de red local en la Capa 2 (enlace de datos o acceso) del modelo OSI.

Para que se pueda ver de una manera más clara hice uso del sniffer de red Wireshark. Que hace uso de WinPcap que son librerías necesarias para capturar el tráfico de transmisión de datos en una red, y que trabaja a nivel de núcleo.

En las capturas de pantalla que muestro a continuación se ocultan parte de lo que forman las direcciones, esto lo hago por seguridad. Pero un detalle que quiero aclarar es que en una dirección MAC lo normal sería ocultar los últimos tres bloques hexadecimales ya que estos identifican la dirección con relación a los tres primeros que identifican el proveedor o fabricante del adaptador de red. 
En este caso yo oculte los 4 primeros bloques hexadecimales manteniendo visibles los 2 últimos, la razón es por que al estar trabajando en máquinas virtuales las direcciones que identifican al fabricante eran las mismas y entonces no se podría ver la diferencia. Igualmente oculto el cuarto bloque de la dirección MAC completa que correspondería el primero que identifica dicha dirección MAC.

El escenario para este ejemplo sería.

Atacante:
  • IP Address: 10.0.0.15
  • MAC Address: xx:xx:xx:xx:09:27
  • Gateway: 10.0.0.1 (MAC xx:xx:xx:xx:66:00)
Víctima:
  • IP Address: 10.0.0.14
  • MAC Address: xx:xx:xx:xx:A6:38
  • Gateway: 10.0.0.1 (MAC xx:xx:xx:xx:66:00)

Usando Wireshark

La víctima es la que detectará el ARP Spoofing del atacante, capturando tráfico y así ver modificaciones de falseos/clonados/suplantaciones de direcciones MAC en las tramas ARP Request y ARP Reply.

Figura 1: Detectando trama MAC duplicada filtrando por el protocolo ARP en Wireshark.

Vemos como un host anuncia su dirección MAC sin que nadie se lo pida. Después un host solicita la dirección MAC y hay dos respuestas con la misma dirección IP pero diferente dirección MAC.

Finalmente, Wireshark detecta el ARP Spoofing, que lo describe como: "duplicate use of 10.0.0.1 detected" "Detectado el duplicado del uso de la 10.0.0.1" es decir, la puerta de enlace o gateway.

Pero sería muy tedioso, tener que abrir y poner a capturar tráfico de tramas ARP cada vez que encendemos nuestro PC y nos ponemos a navegar por internet, y que por encima al final del día paremos la captura y analicemos la .pcap para detectar si fuimos víctimas de un ataque Man In The Middle.

Por lo que para esto ya existen muchas y diversas aplicaciones, tanto para OS Windows como para OS Linux y compatibles con sus distribuciones, que de manera automática y transparente para el usuario, sin necesidad de que este realice ninguna acción, estas detectan si están ocurriendo modificaciones de la caché de la tabla ARP y que monitorean el tráfico de tramas ARP Request y ARP Reply.

Usando DecaffeinatID (Windows)

Para Windows podremos encontrar DecaffeinatID, es una pequeña aplicación desarrollada por IronGeek.com y que después de instalarla se carga en la taskbar de Windows ejecutándose de manera background y automatizada. Nos avisa de cambios producidos a tiempo real en la caché de la tabla ARP del PC.

Nos dice que la dirección IP de la gateway a cambiado mostrándonos la dirección MAC original por la falseada.

Figura 2: Detectando suplantación de direcciónes MAC con DecaffeinatID.

Usando ArpWatch (Linux)

Para Linux podremos encontrar ArpWatch, que usa libpcap (es igual que Winpcap, pero de código abierto y que son las librerías que son usadas por sistemas Linux) y monitorea los cambios de direcciones IP y direcciones MAC. Estos avisos podemos modificarlos para que nos alerte a nuestra dirección de correo, y lógicamente ver mensajes de logs.

Después de descargar el .gz e instalarlo. Escribimos los siguientes comandos y parámetros para su uso.
sudo arpwatch -i eth0
Este comando ejecuta Arpwatch, así cuando detecte un cambio de direcciones IP-MAC nos mostrará un mensaje de log en el directorio /var/log/syslog.

Saludos!

2 comentarios

  1. Muy buenas entradas Adrián, felicitaciones! :-)

    ResponderEliminar
  2. @Anónimo
    Gracias. Comentarios así son los que me animan a seguir escribiendo.

    Saludos! ;)

    ResponderEliminar

Entradas Populares