Páginas

14 mayo, 2012

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

En que consiste un ataque MITM ARP "Man in the middle"?

Los tipos de ataque "Man in the middle" (MITM) o también conocidos como "Hombre en el medio", consisten en realizar una técnica de ataque pasivo, denominada: ARP Spoofing, ARP Poisoning o ARP Poison Routing (APR), y se lleva a cabo en redes LAN (Local Area Network) y WLAN (Wireless Local Area Network).
 
Estando conectados en la misma red, este ataque nos permite capturar todo el tráfico dirigido de uno o varios hosts de la red a la puerta de enlace configurada (Gateway) y viceversa.

Consiste en "engañar" o más bien envenenar la caché de la tabla ARP de la víctima (lo que se conoce como: ARP Cache Poison - APR).
 
De modo que la dirección MAC Address (Media Access Control Address) de la puerta de enlace de la víctima no sea la verdadera, si no que sea la dirección MAC del atacante. Así cuando la víctima realice consultas hacía internet que serán requests para su gateway antes pasaran por el host del atacante, este lo dejará pasar al router el router devolverá la respuesta al atacante de nuevo y este a la víctima. De esta manera que la víctima no se dará de cuenta de lo que está pasando.
Para que quede más claro:

Figura 1: Esquema de ataque MITM.

Un detalle a tener en cuenta es que si en vez de envenenar la caché de la tabla ARP de la víctima con la MAC del atacante se envenenara con otra MAC falsa (por ejemplo: 00:11:22:33:44:55) a la victima le provocaremos una de denegación de servicio DOS (Denial Of Service).

Diferencias entre Modo Promiscuo (Promiscuous Mode) y Modo Monitor (Monitor Mode)

Ya que este ataque es utilizado en redes cableadas que se encaminan mediante dispositivos switch, el tráfico no se transmite por un medio abierto (como pueden ser las transmisiones inalámbricas), por lo que para capturar este tipo de tráfico en uno o varios hosts es necesario realizar este tipo de técnicas como los ARP Spoofing.

Con la tarjeta en modo promiscuo (Promiscuous Mode - termino utilizado para redes cableadas) ya que modo monitor (Monitor Mode) sería el término apropiado para redes inalámbricas y poder capturar todo los IVs (Initialization Vectors). Estos modos tanto promiscuo como monitor se refieren a lo mismo (pero cada uno aplicándolo en su término adecuado, dependiendo el área en el que se esté utilizando o tratando) y en lo que consisten es poder capturar TODOS los paquetes que circulan por la red, aunque no vayan dirigidos al host que solicito la petición.

¿Cómo se modifica la trama Ethernet para realizar un ARP Cache Poison?

Toda trama MAC se compone en su header (o cabezera) de una dirección MAC origen y una dirección MAC destino (al final de la cabezera también muestra el tipo de Ethernet), el payload (o cuerpo) compuesto por datos y el trailer (o cola) que muestra un CRC (Cyclic Redundancy Check, comprobación de errores) o cheksum (Suma de verificación) o FCS (Frame Check Sequence), este verifíca si la trama a llegado correctamente a su destino o no.

La forma más habitual de crear un ARP Spoofing es creando una "condición de carrera" (Race Condition) que consiste en la distribución de respuestas ARP no solicitadas (por las víctimas), las cuales son almacenadas en la cache ARP de las víctimas o clientes.

¿Por qué es posible este ataque MITM-Man in the middle?

Tanto los paquetes “ARP request” como los “ARP reply” no proporcionan ninguna validación de identificación en la transacción. Por este motivo este ataque se hace transparente al usuario ya que la trama no se verifica en ninguno de los sentidos con alguna marca identificativa (ID) de integridad.

Un caso práctico y secillo de realizar el ataque con Windows.
El escenario para esta práctica es el siguiente:
Gateway:
IP: 10.0.0.1
MAC: xx:xx:xx:xx:66:00

Víctima:
IP: 10.0.0.4
MAC: xx:xx:xx:xx:96:0E - GW: 10.0.0.1
O.S.: Windows XP Professional SP3 (x86)

Atacante:
IP: 10.0.0.3
MAC: xx:xx:xx:xx:1F:71
GW: 10.0.0.1
O.S.: Windows 7 Ultimate SP1 (x64)

En esta técnica no influye el tipo de sistema operativo ni la arquitectura que se utilice ya que esto es a nivel de comunicación de redes. 

[1] - Antes de realizar el ataque consultaremos como está el escenario de los equipos de la red. Primero vamos consultar la dirección MAC del atacante con el comando en Windows ipconfig /all o simplemente getmac y veremos que la MAC del atacante es: xx:xx:xx:xx:1F:71, si realizamos un ping a la dirección IP de la víctima (10.0.0.4) y después consultamos la caché de la tabla ARP del atacante, con el comando arp -a así obtendremos la MAC de la víctima (xx:xx:xx:xx:96:0E) y la MAC del gateway o puerta de enlace (en este caso un dispositivo Router: xx:xx:xx:xx:66:00) como se puede ver en la siguiente screenshot.

Figura 2: Consultando tabla ARP del equipo atacante comprobando las direcciones MAC reales.

[2] - Ahora consultamos como están las cosas por la parte de la víctima, tanto su IP address como su MAC Address, y la caché de la tabla ARP.


Figura 3: Comprobando dirección IP y dirección MAC de la víctima.
Figura 4: Consultando la tabla ARP de la víctima con las direcciones MAC originales.

Podemos ver como en la caché de la tabla ARP de la Víctima figura la dirección IP del atacante con su correspondiente MAC y lo mismo pasa con los datos de la gateway.

Ahora empezaremos el ataque, para ello utilizaremos una tool para Windows: Cain & Abel.

Una vez instalemos y ejecutemos Cain en el PC del atacante (deshabilitar antes el antimalware que tengamos ejecutándose en el PC), veremos que con esta herramienta podremos hacer casi de todo tipo de ataques. Pero me centraré especialmente en el ataque mencionado APR (ARP Poison Routing).

[3] - Nos dirigimos a la pestaña "Sniffer" y dentro de esta en el apartado "Hosts", activamos el icono de la tarjeta de red (configurada previamente para "modo promiscuo" y así poder capturar tráfico que obtendremos aunque los paquetes request y reply no vayan dirigidos al ordenador del atacante) (1), activamos el icono que se muestra con una imagen "+" (en azul) para definir el rango a escanear, en este caso voy a tiro fijo definiendo un rango de clase C (mascara de red de una longitud de 24 bits) comprendido de los hosts 10.0.0.1 hasta 10.0.0.20, pulsamos en OK (3).

Vemos que la IP y MAC de la gateway y el atacante coinciden con los datos anteriores consultados.

Figura 5: Escaneando un rango de red con Cain.

[4] - Dentro de la pestaña "Sniffer", nos dirigimos en al apartado APR (1), y seleccionamos APR en el panel izquierdo (2), para que se nos habilite la opción de poder añadir los host para realizar APR pinchamos en la la zona vacía o "blanca" del panel superior-derecho y pulsamos en el icono con una imagen "+" (en azul) (3), Se nos abrirá una ventana (4) en la que diremos que todo e tráfico de 10.0.0.4 (víctima) (5) que vaya dirigido a la 10.0.0.1 (gateway) (6) pase antes por la máquina en la que se ejecuta Cain, que es la máquina del atacante 10.0.0.3 y finalmente pulsamos OK (7).

Figura 6: Enrutando el tráfico del equipo de la víctima hacía la dirección MAC del equipo atacante con Cain.

[5] - Para finalizar el ataque, simplemente pulsamos en el botón con la imagen de icono amarillo y veremos como la víctima (10.0.0.4) está siendo poisoning (evenenada) por un tráfico ARP reply no proveniente del gateway con la MAC de este (xx:xx:xx:xx:6600), si no con la MAC del atacante (xx:xx:xx:xx:1F:71), suplantando así esta dirección en la caché de la tabla ARP de la víctima.

Figura 7: Iniciando el evenenamiento ARP de suplantación MAC con Cain.

[6] - Si ahora, con la APR ya en ejecución y la caché de la tabla ARP de la víctima ya envenenada realizamos una consulta arp -a podremos ver en el PC de la víctima que la dirección IP de la gateway (10.0.0.1) y la dirección IP del atacante (10.0.0.3) se mapea o redirige a una única misma dirección MAC, que es la del atacante (xx:xx:xx:xx:1F:71).
 
Figura 8: Consultando la tabla ARP de la víctima una vez suplantada.

Una vez realizado el ataque Man in the middle utilizaremos un sniffer de paquetes de red como puede ser Wireshark.

[7] - Con Wireshark a la escucha de la transmisión de paquetes de la red, y filtrando solo tráfico HTTP con consultas a métodos POST (de envio) en su URL. Para así caputar inicios de sesión y obtener en texto plano (Plain Text) el nombre de usuario y contraseña de páginas NO cifradas HTTP. En este ejemplo muestro un user y password del login de la página web oficial de "es.Wikipedia.org" como ejemplo.
http.request.method == "POST". 
Podemos ver que el user es "AdrianLois" y la password es "zonasystem123".

Figura 9: Filtrando tráfico con Wireshark desde el equipo atacante para interceptar las credenciales.

[8] - Filtrando el tráfico capturado por el protocolo MSNMS (MSN Messenger Service) podremos ver la dirección de correo de la víctima como también la dirección email del usuario que establece la conexión con la víctima.
  • La dirección de email de la víctima es la dirección destino 10.0.0.4, que se muestra como "xxxx...5[at]hotmail[dot]com".
  • La dirección de email del usuario/a con la que establece comunicación la víctima es la dirección destino que figura como 64.4.44.26 y que vemos como "xxxx...a[at]hotmail[dot]com".
Figura 10: Filtrando por el protocolo MSNMS para capturar la dirección e-mail de la víctima.

[9] - Las conversaciones que se establecen mediante el protocolo MSNMS utilizado para las conversaciones a tiempo real por medio de mensajería instantánea (IM - Instant Menssaging) con MSN Messenger. Estas conversaciones pueden ser capturadas en texto claro, ya que este protocolo NO cifra las comunicaciones.
Así podemos observar como la dirección IP de la víctima (10.0.0.4) envió un mensaje instantáneo con el escrito "ola q tal".
 
Figura 11: Interceptando conversación de MSN messenger.

En la segunda entrega de esta entrada, explicaré un poco: usos no adecuados o con malos fines, usos legítimos y como prevenirse de técnicas y tools de este tipo de ataques Man in the middle y la suplantación de direcciones MAC.

Saludos!

1 comentario

Entradas Populares