jueves, 2 de marzo de 2017

MitM

Se que hay muchísima información sobre ataques man-in-the-middle en Internet. Sin embargo, tener tantos recursos disponibles puede hacer difícil encontrar lo básico para empezar. Con esta idea en mente, hoy quiero resumir las principales herramientas MitM disponibles para Linux y la forma de hacer con ellas un ARP spoofing, capturando el tráfico de la víctima.

Un ataque man-in-the-middle consiste en situarse en medio de la comunicación de dos partes sin que estas lo detecten. En el caso de redes locales (LAN), donde se suele compartir dominio de broadcast con los objetivos, se suele recurrir al envenenamiento de la caché ARP de la víctima o víctimas y de su puerta de enlace o gateway. Así el atacante puede escuchar todo el tráfico entre la víctima o víctimas e Internet

ARP es un protocolo que permite traducir direcciones IP a MAC, permitiendo a los dispositivos identificarse entre ellos a partir de la dirección IP. Este protocolo no tiene ningún tipo de autenticación, por lo que un atacante puede falsificar mensajes ARP (ARP spoofing), haciendo creer a la víctima que es el servidor o puerta de enlace con la que se quiere comunicar. Para poder capturar la respuesta del servidor, también se debe engañar a este o al router a través del cual se accede, siendo en este caso un MitM full-duplex. En caso contrario se considera half-duplex.

De esta forma el tráfico de la víctima pasa por la máquina del atacante, que lo debe reenviar al destinatario real (evitando que la víctima se quede sin conexión). Cabe destacar que, aunque todo el tráfico pase por la máquina del atacante, si la conexión está cifrada entre el servidor y la víctima, tener acceso a ese contenido es prácticamente imposible. Existen sin embargo métodos para sortear este problema, ya sea obligando al objetivo a establecer la conexión cifrada con la máquina atacante (en cuyo caso necesitaríamos que la víctima aceptase nuestro certificado o que su navegador confiase en nuestra autoridad certificadora) o forzando el uso de conexiones no seguras (e.g. SSLStrip).

La herramienta más extendida para MitM probablemente sea Ettercap, que lleva en funcionamiento desde 2001. Aún así existen otras soluciones, como BetterCAP o MITMf que implementan funcionalidades que me hace tenerlas en cuenta. Por ahora solo voy a comentar como hacer ARP spoofing y captura de tráfico con cada una de las herramientas, sin profundizar en otros aspectos o funcionalidades.

Ettercap

Ettercap lleva disponible bastantes años, por lo que muchas distribuciones Linux permiten instalarlo desde los repositorios del sistema. Además es de código abierto y debido a su amplio uso existe una gran cantidad de plugins disponibles para extender sus funcionalidades. Sin embargo estos se escriben en un lenguaje propio de Ettercap, incrementando la curva de aprendizaje.

Para realizar un ARP spoofing se puede emplear el siguiente comando (10.0.1.18 es dirección IP de la víctima y 10.0.1.1 es la de la puerta de enlace o gateway, aunque en este caso no importa el orden):
ettercap -T -M arp:remote /10.0.1.18// /10.0.1.1//
Por defecto, Ettercap solo captura el tráfico entre las direcciones indicadas. Para que capture también aquellos paquetes que tienen otro destino final (i.e. Internet) se debe de usar el modo remote. También se puede realizar el ataque en modo half-duplex (tráfico solo en un sentido) con la opción one-way, evitando así atacar directamente la puerta de enlace o servidor.


Una cuestión a tener en cuenta al realizar este procedimiento con Ettercap es que no activa automáticamente el reenvío de paquetes IP (IP forwarding), por lo que es necesario hacerlo de forma manual para evitar que la víctima se quede sin conexión.


Por defecto, Ettercap muestra todo el tráfico capturado, lo que en mi opinión no es muy útil, ya 
que hace díficil encontrar lo que se pueda estar buscando

Empleando la opción quiet (-q), Ettercap no muestra cada paquete y podemos consultar las conexiones que se están interceptando (Connections list) pulsando la letra c.


Se puede ver que la salida por pantalla de Ettercap no es del todo idónea. En todo caso, siempre se puede guardar la captura con la opción -w y abrirla luego en Wireshark. O también escuchar el tráfico directamente con este mismo programa.

BetterCAP

Con la intención de suplir las carencias de Ettercapevilsocket comenzó el desarrollo de esta herramienta de código abierto. En ciertas distribuciones como Kali Linux esta herramienta puede ser instalada directamente desde los repositorios. En el resto de distribuciones solo necesitamos el entorno RubyGems y seguir los pasos que se indican en la web oficial (en inglés).

Una vez instalada, para capturar el tráfico entre 10.0.1.18 y la puerta de enlace (detectada automáticamente por BetterCAP), solo hay que ejecutar el siguiente comando:
bettercap -T 10.0.1.18 --full-duplex

Por defecto, BetterCAP trabaja en modo half-duplex, para que capture tráfico en ambos sentidos hay que usar la opción --full-duplex. Con esta herramienta no es neceario activar IP forwading ya que lo hace automáticamente por nosotros.

Captura con BetterCAP

En comparación con Ettercap, BetterCAP muestra la información de una manera más resumida y organizada. Es mucho más cómodo que bucear entre toda la información que aparece con Ettercap, y en caso de querer hacer un análisis más exhaustivo del contenido siempre se puede guardar la captura (opción --sniffer-output) y analizarla luego con Wireshark.

Además, BetterCAP también resuelve las direcciones IP, obteniendo así el nombre del dominio junto con el recurso solicitado dentro de este, lo que facilita averiguar que páginas visitó la víctima de un vistazo. Para peticiones HTTPS (cifradas), solo obtenemos el nombre del dominio, pero no el recurso, ya que esa información no se transmite en claro. 

En este caso concreto, no obtenemos el dominio que introdujo la víctima (google.es) sino https://arn09s11-in-f163.1e100.net, que es el resultado de hacer una consulta DNS inversa (e.g. dig -x 172.217.22.163) de la dirección IP de destino. De todas formas, me sigue pareciendo más útil y claro que lo que muestra Ettercap.


MITMf

Lo primero que hay que tener en cuenta con esta herramienta es que, aun usando Kali Linux, la instalación es un poco más compleja en los casos anteriores. Sin embargo, tampoco es difícil, y los pasos a seguir están recogidos aquí (en inglés). Eso sí, la ruta que emplean para el comando source /usr/bin/virtualenvwrapper.sh no es correcta para Kali Linux. Para cualquier distribución, podéis comprobar la ruta del script con el siguiente comando:
find / | grep virtualenvwrapper.sh
Una vez instalado, para realizar un ataque análogo a los anteriores, podemos usar el siguiente comando (10.0.1.23 es dirección de la víctima y 10.0.1.1 es la puerta de enlace o gateway):
./mitmf.py -i eth0 --spoof --arp --target 10.0.1.23 --gateway 10.0.1.1
La información mostrada por MITMf es similar a la de BetterCAP, aunque, al contrario que esta, también trata de identificar el navegador y el sistema operativo de la víctima
Sin embargo, BetterCAP tiene como punto positivo que también muestra conexiones HTTPs y el marcado por colores hace más fácil la lectura de los datos.

Caputura de MITMf que muestra las conexiones de la víctima y realiza fingerprinting básico del navegador y del sistema operativo de la víctima.

Conclusiones

En general, para realizar un ataque MitM simple, cualquiera de las herramientas realiza la tarea correctamente. En cuanto a la información que muestra por defecto, la de BetterCAP es más clara, y MITMf realiza fingerprinting básico del navegador y del sistema operativo de la víctima. Sin embargo, en cualquier caso las capturas se pueden guardar en formato PCAP y ser analizadas más adelante, por lo que tampoco decanta claramente la balanza.

En cuanto a las herramientas que incluye cada una de ellas, Ettercap, posiblemente por su antigüedad, tiene una gran cantidad de plugins disponibles, escritos en un lenguaje específico. Para BetterCAP, los plugins se pueden realizar en cualquier lenguaje, ya que los paquetes se reenvían a ellos, actuando como un proxy. Además, incluye por defecto utilidades para crear conexiones HTTPS suplantando al servidor o para realizar ataques de tipo SSLStrip. Finalmente, MITMf incluye una gran cantidad de plugins: inyección/modificación de tráfico, SSLStrip+, secuestro de sesiones, JavaScript Keylogger...

Por tanto, todas las herramientas proporcionan características básicas similares, y la elección de una u otra debería venir dada por las características avanzadas que se necesiten en cada situación concreta. Para ver una comparativa más extensa entre BetterCAP y MITMf, con comentarios de los creadores de ambas herramientas, podéis consultar este hilo de Reddit (en inglés) 



No hay comentarios:

Publicar un comentario