Man In The Middle (MITM): Capturando credenciales con SSLStrip2 y Delorean
Introducción y objetivos
Este ataque, como su propio nombre indica, consiste en colocarse en medio de la transmisión de datos entre las máquinas que conforman la red y el router. Tiene por objetivo principal el espionaje, la captura de datos confidenciales que corren por la red, conseguir credenciales de acceso a dispositivos y cuentas de usuarios con las que realizar una posible escalada de privilegios, posteriores ataques de phishing conociendo los sitios web que los usuarios de la organización visitan frecuentemente, a través de un ataque “remote browser”, entre otras muchas cosas fascinantes.
En un principio, vamos a emplear las herramientas básicas de auditoría para realizar un ataque de este tipo. Éstas son “ettercap” y “wireshark”. Con “ettercap” lanzaremos primeramente un ataque de “ARP Spoofing” con el que hacer un envenenamiento de las “tablas ARP” y posicionarnos en medio de las comunicaciones que se establezcan entre las máquinas de la organización y el router.
Este ataque con el que capturar credenciales, lo complementaremos a través de plugins como “remote browser”, con el que averiguar las páginas web visitadas por las máquinas víctimas, o “DNS Spoofing” con el que redireccionar a las víctimas a webs preparadas por el atacante, para el robo de información a través de phishing o descarga automática de malware, como ya vimos en el artículo dedicado a “Evilgrade”. En este punto también veremos un ataque de carácter más avanzado hacia HTTPs a través de SSLstrip2, utilizando directamente el “framework” MITMf (Man In The Middle Framework).
Ejecutando MITM con Ettercap
a) Configurando “Ettercap”
Antes de lanzar “Ettercap” debemos configurar adecuadamente el archivo “etter.conf” como se muestra a continuación.
b) Iniciando “Ettercap”
Una vez realizada los cambios anteriores, ya podemos proceder a iniciar “ettercap”. Seleccionamos nuestra interfaz de red inalámbrica y hacemos un escaneo de los hosts que tenemos bajo la red. Introducimos la puerta de enlace en el “target 1” y los hosts víctimas en el “target 2”; vamos a la pestaña de “Mitm” y seleccionamos “arp Spoofing” con el parámetro “Sniff remote connections”; aceptamos y arrancamos el ataque con “Start sniffing”. En este momento ya ha comenzado el ataque de MITM con el envenenamiento de la red. Paralelamente lanzamos “wireshark” para esnifar tráfico de red, y tener una mayor SA (Situational Awareness) a tiempo real de lo que está sucediendo en el entorno.
Una vez haya comenzado el ataque de MITM, podemos inyectar el plugin “autoadd” mediante el que se añadirán, de manera automática, las nuevas máquinas que se conecten a la red.
c) Ejecutando “Wireshark”
Como bien hemos dicho antes, una vez dejado bien configurado “ettercap” para la captura de datos en la red, procedemos a ejecutar “wireshark” paralelamente, con la finalidad de observar todo el entorno que nos rodea y tener una mayor visión del mismo.
d) Capturando credenciales
El tiempo de espera para la captura de credenciales será bastante relativo, pues dependerá de muchos condicionantes. No obstante, en una red como la de una organización, donde los trabajadores están continuamente conectados, no se hará mucho de esperar el comienzo de la captura de datos sensibles.
Como podemos observar, en cuestión de tiempo hemos obtenido credenciales de acceso a cuentas de correo “Gmail”,”Hotmail”, correo interno de la propia organización, credenciales de acceso a la cámara de vigilancia a través de un enlace “NoIp”, etc.
También debemos tener en cuenta que muchas de esas credenciales serán las mismas para el acceso a cuentas en redes sociales, tales como “Facebook” o “Twitter”.
Con todos estos nuevos hallazgos, un atacante ya podría hacerse un diccionario para posibles ataques a servicios que corren en los sistemas de la organización. De la misma manera, también podría programar ataques de “phishing” a través de correos electrónicos, solicitando renovación de claves para algún servicio en particular de la organización, enviando dicho “email” desde una dirección de correo, de la cual tenga sus credenciales capturadas y que constituya un elemento de confianza.
En breves palabras, con este simple ataque un atacante ya estaría en la capacidad de crear distintos tipos de vectores de ataque con los que causar un serio daño a la organización.
e) Capturando información sensible para crear vectores de ataque
Además, como bien hemos mencionado anteriormente, si hacemos uso del plugin “remote browser”, podemos ver qué páginas web visitan las máquinas de la empresa, y con ello ya podemos programar un vector de ataque “phishing” de ingeniería social mediante “SET”, o de “autodescarga” por actualización del sistema a través de “Evilgrade”, por ejemplo.
f) Consideraciones a tener en cuenta
Hasta aquí hemos visto cómo realizar el ataque más básico de MITM. De esta manera hemos capturado información muy valiosa, con la que poder crear nuevos vectores de ataque en fases posteriores de explotación. Sin embargo, cualquiera que haya tenido la experiencia de haber sufrido un ataque como el anteriormente descrito, sabe muy bien que su efectividad depende mucho del sistema a auditar.
Por ejemplo, si el ataque se refleja en un sistema Windows actualizado y bien parcheado, veremos que al intentar acceder a sitios como “Hotmail”, “Gmail” o “Facebook”, que presentan seguridad “https”, se nos envía una advertencia de seguridad avisándonos de que hay problemas con los certificados “https”, advirtiéndonos de la presencia de un posible atacante que está esnifando el tráfico de red.
Estas advertencias constituyen un grave problema a la hora de realizar este tipo de ataques en “Operaciones Red Team”, ya que con que el usuario “víctima” tenga unos conocimientos básicos de seguridad en la red, dará la voz de alarma en la organización, y nuestro trabajo habrá finalizado al ser detectados. No obstante, no ocurre lo mismo con servicios que corren únicamente bajo protocolo “http”, pues la transmisión de la información viaja en texto claro y puede ser capturada por el “sniffer” sin problema alguno, al igual que sucede con el empleo de “Netcat”.
Sin embargo, existe una manera de evadir la seguridad “HTTPS” impuesta de manera automática por el protocolo “HSTS” (HTTP Strict Transport Security), el cual consiste básicamente en forzar desde el servidor web a los navegadores, a establecer una conexión segura vía “https” con la que asegurar una adecuada trasmisión de datos entre cliente-servidor y viceversa. A continuación vamos a tratar de realizar una práctica con la que evadir el “HSTS” y poder capturar el tráfico de red en texto claro.
Ejecutando MITM con SSLStrip2 y Delorean
a) Presentación y lanzamiento de MITMf
El “framework” que vamos a emplear en esta demostración para realizar este “bypass HTTPS”, es el denominado “MITMf” (Man In The Middle Framework), el cual consta de un kit de herramientas que permiten realizar varios ataques compenetrados entre los que destacan “ARP Spoofing”, “DNS Spoofing” y “SSLstrip2”, con el que evadir las conexiones cifradas vía HTTPS.
Para proceder a la realización del ataque lanzamos “mitmf.py” con la siguiente configuración:
- “Mitmf.py -i <interfaz> – -spoof – -hsts – -arp – -dns – -gateway <puertaenlace> – -target <IP>”
Una vez lanzado el comando anterior, ya estamos colocados en medio de las transmisiones de datos de la red de la organización, capturando las credenciales que corran en claro y en seguro.
b) Lanzando “Delorean” para caducar certificados
También es conveniente lanzar la herramienta “delorean.py”, escrita por “José Selvi”, y la cual tiene la función de modificar la fecha del sistema a través de la manipulación del protocolo NTP (Network Time Protocol), haciendo caducar así los certificados HTTPS vigentes. El objetivo de esta herramienta es hacer que el sistema no use el protocolo HTTPS, sino directamente HTTP, realizando de esta manera todas las trasmisiones de datos en claro, bajo protocolo no seguro.
Tenemos que tener en cuenta que para que se lleve a cabo la correcta modificación de la fecha del sistema, éste debe realizar la petición de sincronización a la red, y es aquí donde encontramos algunos problemas.
En los sistemas tipo UNIX, como Linux Ubuntu o Fedora, no hay gran problema ya que estos sistemas realizan la petición, bien cuando entran en la red o cuando se reinician, como es el caso de Linux Ubuntu, o bien cada minuto, como es el caso de Linux Fedora. Sin embargo, si hablamos de sistemas Windows nos encontramos con ciertas dificultades, pues no sólo tarda días en realizar peticiones de sincronización, sino que además, si las peticiones que reciben tienen un desfase muy grande, el sistema las rechaza no dando oportunidad alguna a grandes cambios en los tiempos y dejando, de esta manera, un margen de ataque muy estrecho.
Aunque no es el caso que nos atañe en este trabajo, decir que en los sistemas tipo OS X no se presentan grandes complicaciones ya que las peticiones se realizan cada pocos minutos, dependiendo de lo saturado que esté el sistema en cuestión.
Básicamente, y para sintetizar, podríamos decir que en un cierto margen, que dependerá del tipo de sistema operativo, si una máquina se conecta a una red donde está corriendo “delorean.py”, su fecha del sistema puede ser modificada con finalidades maliciosas para perpetrar un ataque al protocolo HSTS, como bien hemos explicado anteriormente.
Aquí podemos observar cómo al lanzar la herramienta se interceptan las peticiones NTP (Network Time Protocol) de las máquinas conectadas en la red, modificando así las fechas de sus sistemas.
A modo de curiosidad, decir que si al ejecutar “delorean.py” obtenemos el siguiente error, esto es debido a que para que se ejecute la herramienta correctamente antes debemos de matar el proceso “ntpd” (Network Time Protocol Daemon), encargado de realizar la sincronización de tiempo en la red. Debemos hacer esto antes de poder arrancar “delorean.py”, porque lo que va a hacer “delorean.py” es lanzar sus alteraciones hacia ese protocolo, tratando de modificar las fechas de los sistemas a través de las sincronizaciones de red.
Una vez aparecido el error no tenemos más que ir a nuestros procesos a través del comando “ps –A” y buscar el PID del proceso “ntpd”. Una vez encontrado nos lo cargamos mediante el comando “kill PID”, y ya podremos ejecutar “delorean.py” sin problemas.
c) Capturando credenciales HTTPS
Llegado este momento en el que tenemos lanzados “MITMf” y “delorean.py” la víctima ya estará expuesta al robo de sus credenciales, pues como podemos ver a continuación, al llamar a la web de ingreso de credenciales de “Gmail”, la seguridad que proporciona el protocolo “HSTS” ha sido evadida, y en lugar de conectarse con “HTTPS” lo hace directamente con “HTTP”.
Por tanto, ahora podremos observar cómo al conectarse a “Gmail” o “facebook” o cualquier web que requiera HTTPS, ésta seguridad es evadida y las credenciales interceptadas:
De esta manera, hemos conseguido credenciales de “Gmail” y “facebook”, entre otras, de miembros de la organización, las cuales podrán ser empleadas para lanzar vectores de ataque de ingeniería social con un alto nivel de confianza.