14 mayo, 2012

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


En que consiste el atanque "Ataque Man in the middle" [MITM]?

Los tipos de ataque "Man n 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ícitma. De esta manera que la víctima no se dará de cuenta de lo que está pasando.
Para que quede más claro:


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 dipositivos 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 targeta 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 propmiscuo 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.


Como 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)

Nota: 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 aver 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 para Windows: 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.



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



Podemos ver como en la caché de la tabla ARP de la Víctima figura la direció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 que podemos descargar en su website oficial del proyecto: http://www.oxid.it/cain.html.

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 imágen "+" (en azul) para definir el rago 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.


[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 imágen "+" (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).


[5] - Para finalizar el ataque, simplemente pulsamos en el botón con la imágen de icono amarillo representada por un símbolo "Tóxico" y veremos como la víctima (10.0.0.4) está siendo poisoning (evenedada) 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.


[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).


Una vez realizado el ataque Man in the middle, utilizaremos un caturador de paquetes de red, existen multitud de tools para esto, pero por excelencía Wireshark que podemos descargarlo en la página web oficial del proyecto: http://www.wireshark.org.

[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. Filter: http.request.method == "POST"
Podemos ver que el user es "AdrianLois" y la password es "zonasystem123".


[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".


[9] - Y como sabemos, las conversaciones que se establecen mediante el protocolo MSNMS utilizado para las conversaciones a tiempo real por medio de mensajería instantanea (IM - Instant Menssaging) con MSN Messenger. Estas conversaciones pueden ser capturadas en plain text, 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 instantaneo con el escrito "ola q tal".


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


Saludos!

1 Comentarios :

AdriaN Olvera dijo...

muy buen tutorial grax.. :D

Publicar un comentario en la entrada

Entradas Relacionadas