26 mayo, 2012

Ataques "Man in the middle [MITM]" (ARP Spoofing/Poisoning) sobre IPv4 - Parte II de II

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 XP o Linux:
arp -s [IP Address] [MAC Address]
Un ejemplo sería:
arp -s 192.168.1.1 00:11:22:33:44:55
Windows Vista o 7:
netsh > interface > ipv4 > add neighbords "[NombreDeLaConexiónDeRed]" [IP Address] [MAC Address]
Un ejemplo sería:
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 en el Editor de directivas de grupo local (Ejecutar > gpedit.msc) > Configuración de Windows > Scripts (inicio o apagado) > Inicio > Agregar... > y 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 mientra navegamos por internet, como por ejemplo:
- 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 certifacadora 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 (enre otros) 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, concretamente en la Capa 2 (enlace de datos o acceso) del modelo OSI).

Para que se puediera ver de una manera más clara, utilizé Wireshark, una herramienta sniffer gratuíta que nos permite captura tráfico de red. Que hace uso de Winpcap (en el caso de usarlo en Windows) que son librerías necesarias para capturar el tráfico de transmisión de datos en una red, y que trabaja a nivel de nucleo.

En las screenshots 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 úlimos, la razón es por que al estar trabanjando en máquinas virtuales las direcciones que indentifican 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 se presenta de la siguiente manera:

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.



En lo que se muestra en la screenshot de arriba, filtrando por el protocolo ARP y siguiendo el orden de tiempo.
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
Y 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 (para 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.


# Usando ArpWatch (para 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 <Interface>
Por ejemplo: 

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 direcctorio: /var/log/syslog.

Saludos!

2 Comentarios :

Anónimo dijo...

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

Adrián Lois - ZonaSystem.com dijo...

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

Saludos! ;)

Publicar un comentario

Entradas Relacionadas