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

Dejo referencia hacía una entrada con más detalle: http://www.zonasystem.com/2017/08/como-protegerse-de-ataques-arp-spoofing.html

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.

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

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.

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

# 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!

14 mayo, 2012

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



En que consiste un atanque "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:

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


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 addres 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 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.


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


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


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


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

 
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 mediantes técnicas y tools de este tipo de ataques Man in the middle y/o la suplantación de direcciones MAC.


Saludos!
Entradas Relacionadas