jueves, agosto 17, 2006

Ataques MITM

En este artículo describo qué es un ataque de "Hombre en el Medio", las técnicas más comunes y muy someramente las formas de prevenirlos y/o detectarlos.
De Wikipedia:
En criptografía, un ataque man-in-the-middle (MitM, u hombre en el medio, en castellano) es un ataque en el que el enemigo adquiere la capacidad de leer, insertar y modificar a voluntad, los mensajes entre dos partes sin que ninguna de ellas conozca que el enlace entre ellos ha sido violado.
Ataques más comunes o conocidos

- ARP Poisoning (o ARP Spoofing)
Es un ataque de MITM para redes ethernet, que permite al atacante capturar el tráfico que pasa por la LAN y también detenerlo (una denegación de servicio o DoS).
El ataque consiste en enviar algunos mensajes ARP falsos ('spoofed'). Estos frames ethernet contienen las direcciones MAC manipuladas según la conveniencia del atacante. Estos mensajes confunden a los dispositivos de red (principalmente a los switchs). Como resultado los frames de las víctimas son enviados al atacante o a un destino no válido en el caso de una "DoS".
Este ataque puede ser prevenido/limitado utilizando entradas estáticas en las tablas ARP de los Hosts, usar Secure ARP, o usando tecnologías de seguridad en capa de acceso como "port security", 802.1x, NAC "Network Admission Control" o NAP "Network Access Protection".
Hay algunas herramientas que permiten detectar este tipo de ataque (por ejemplo el arpwatch), estas escuchan el tráfico ARP que transita por la red LAN y alertan ante cambios sospechosos. Hay muchos programas para realizar este tipo de ataques, los más conocidos son el Ettercap, Dsniff (ambos en Linux) y cain en Windows.

- DNS spoofing
El protocolo DNS "Domain Name System" convierte nombres en direcciones IP (por ej.: www.google.com a 64.233.161.147) y también la resolución inversa. Este ataque utiliza respuestas falsas a las peticiones de resolución DNS (los request) enviadas por una "víctima". Hay dos métodos en los que puede basarse el atacante: DNS "ID Spoofing" y "Cache poisoning" (envenenamiento de la cache).
El método ID Spoofing se basa en obtener el ID de las peticiones de resolución, el atacante puede lograr esto a través de algún ataque de sniffing, como por ejemplo desbordar la tabla ARP "MAC Flooding" de los switchs para ponerlos en un modo conocido como "failopen" (esto los transforma en un HUB). Siendo capaz de escuchar los ID de las peticiones, el atacante intenta responder a estas antes que el servidor real, logrando de esta forma engañar a la víctima y llevarla así al destino que desee. El método "Cache poisoning" es similar al anterior, salvo que se dirige a los servidores de cache de DNS, redirigiendo así a todos sus clientes al host que indique el atacante.
Herramientas conocidas que realizan este ataque son: ettercap, dsniff y zodiac.
Dado que existe este ataque se vuelve muy importante que los servidores de caché de DNS hagan sus consultas utilizando ID aleatorios. Los IDS son capaces de detectar este tipo de ataque y una medida de prevención podría ser cargar el archivo lmhost (en windows) y /etc/hosts (en linux), para los dominios corporativos. Las extensiones DNSSEC también son capaces de detener este tipo de ataques (estas extensiones se encuentran disponibles para BIND9).

- Port Stealing (robo de puerto)
En este ataque el atacante envía muchos frames ethernet (paquetes de capa 2), con la dirección MAC de la víctima como origen, y como destino su propia dirección MAC. Esto hace que el switch crea que la víctima está conectada en el puerto del atacante (de ahí el nombre de esta técnica).
Cuando el atacante recibe un paquete destinado a la víctima, este genera un ARP request preguntando por la MAC asociada a la IP de la víctima. Cuando la víctima responde el switch vuelve a conocer en donde está ubicada realmente la víctima, es entonces cuando el atacante reenvía el paquete recibido (intacto o modificado, dependiendo de los intereses del atacante). Luego vuelve a robar el puerto y espera por el próximo paquete con destino a la víctima. Esta técnica degrada la conectividad de la víctima notablemente y es fácilmente detectable por los IDS.
El uso de entradas ARP estáticas en las PC no resuelve el problema. Las alternativas de resolución son un mapeo estático en los switch, port security, 802.1x, NAP o NAC.
Una herramienta capaz de realizar este ataque es el Ettercap con el plugin confusion.

- DHCP Spoofing
Las requerimientos de DHCP son hechos con frames de tipo broadcast, ya que deben ser escuchados por todos los dispositivos dentro de la red local. Si un atacante responde antes que el verdadero servidor, este puede pasarle información errónea a la víctima, como por ejemplo puede decirle que la puerta de enlace es él.
Para algunos servidores de DHCP suele ser bastante sencillo responder antes que él, debido a que muchos verifican si no hay otro dispositivo en la red con la dirección que van a entregar; mientras el servidor real comprueba, el atacante tiene tiempo valioso en el que puede responder antes.
Los IDS detectan este ataque debido a que se producen múltiples respuestas para una única solicitud.
Así como las anteriores, ettercap también es capaz de realizar este ataque.

- Otros ataques de tipo MITM:
  • STP Mangling
  • Port stealing
  • ICMP redirection
  • IRDP spoofing
  • Route mangling
802.1x/NAC/NAP
En general el uso de tecnologías de control de acceso como 802.1x/NAC/NAP sería suficiente para impedir o mitigar todos los ataques MITM de tipo local. Lamentablemente no todas las empresas u organizaciones pueden costear estas tecnologías.

Protocolos seguros
Una forma de protegernos de estos ataques es reemplazar todos los protocolos inseguros por protocolos seguros, que si bien no impiden estos ataques los hacen inútiles para el atacante, debido a que se ve imposibilitado de descifrar o alterar la comunicación.
Esto sería reemplazar http por https, telnet por ssh (version 2), pop3 por secure pop, etc.

Saludos y hasta la próxima.

Referencias: