sábado, 13 de enero de 2018

Bettercap parte II: Inyección de código en requerimientos HTTP y DNS Spoofing


Hace unos días publiqué la parte I de esta nota, donde expliqué la descarga e instalación de bettercap y cómo utilizar parsers custom para visualizar fácilmente lo que nos interesa en un ataque de MITM. Si se la perdieron pueden comenzar leyendo por allí.

En esta segunda y última parte veremos los módulos para inyectar código en el cuerpo de los requerimientos HTTP interceptados. Además, aprenderemos a hacer un DNS spoofing con esta herramienta.

INYECCIÓN DE CÓDIGO EN PETICIONES HTTP INTERCEPTADAS
Si consultamos la ayuda de bettercap, ejecutando bettercap --help, podemos ver una característica muy interesante bajo el parámetro --proxy-module.



Los módulos disponibles son: redirect, injectjs, injectcss e injecthtml.
Cuando utilizamos alguno de estos módulos, las respuestas de requerimientos HTTP realizados por el usuario se ven alteradas, al estar el atacante en medio (MITM) inyectando código en ellas. El código inyectado dependerá del módulo que utilicemos, por ejemplo, si utilizamos redirect, simplemente se inyectará una redirección hacia otro sitio. Si utilizamos injectcss u injecthtml podremos alterar el contenido visual del sitio, y si utilizamos injectjs (inyección de JavaScript) el abanico de ataques se amplifica bastante.

Haremos foco en este último: injectjs.

Como se mencionó, nos permite inyectar código JavaScript. El mismo lo pondremos en un archivo .js y le pasaremos la ruta como valor al parámetro --js-file, que va acompañado de --proxy-module injectjs.

El comando completo quedará de la siguiente forma:

sudo bettercap --proxy --proxy-module injectjs --js-file /home/shei/inyectar.js -T <ip_del_target>

Hagamos una simple prueba, creando el archivo inyectar.js con el siguiente contenido:
<script>alert(“Texto inyectado a través de un MITM”);</script>
Lo guardamos y ejecutamos bettercap:



Cuando el usuario ingrese a un sitio HTTP, se inyectará el código JavaScript



Y será lo primero que verá



¿Qué usos prácticos podemos darle a este módulo? A través de JavaScript podemos hacer redirecciones, robo de cookies, denegación de servicio y un largo etcétera. Incluso podemos usar el conocido framework BeEF e inyectar el hook.js a través de este MITM.

En mi caso, utilice esté módulo cuando programé el pequeño JavaScript que ayuda a sobreescribir la base de datos HSTS de Firefox.




Si gustan más información sobre este ataque pueden ver los slides de la presentación en Black Hat:
https://www.blackhat.com/docs/eu-17/materials/eu-17-Berta-Breaking-Out-HSTS-And-HPKP-On-Firefox-IE-Edge-And-Possibly-Chrome.pdf.

DNS SPOOFING
En sencillas palabras, la idea tras esta técnica es, que cuando el usuario consulte por la IP de un dominio, el atacante le responda con otra IP (diferente a la real) perteneciente a un equipo bajo su control. De esta manera, si el usuario ingresa -por ejemplo- a www.instagram.com y se realiza la resolución DNS para obtener la IP del sitio, el atacante será quien le dé la repuesta, logrando que el usuario finalmente ingrese a un servidor bajo su control.

Habitualmente está técnica se utiliza para hostear una página exactamente igual a la que el usuario intenta ingresar originalmente, con el pequeño detalle de que las credenciales o la información que el usuario provea allí, será capturado por el atacante.

El principal inconveniente de esta técnica es el caché, ya que, si el usuario tiene en su cache DNS la IP del sitio al cual está tratando de ingresar, la consulta no saldrá del entorno local y el atacante no será capaz de interceptarla a través del MITM y alterar la respuesta.
Veámoslo en la práctica.

En primer lugar, crearemos un archivo llamado fakedns con el siguiente contenido:

Ip_lan_atacante    instagram.com

Por ejemplo:

192.168.43.109        instagram.com

En este caso, hay un servidor web Apache en la máquina del atacante, el cual está accesible a través de la dirección IP del equipo.
Guardamos el archivo como “fakedns” y lo utilizaremos en bettercap de la siguiente manera:

sudo bettercap -T <ip_del_target> --dns /home/shei/fakedns


Cuando el usuario ingrese a instagram.com a través de su navegador, si el sitio no está cacheado, el usuario terminará accediendo al servidor web en la máquina del atacante, donde puede haber lo que sea.



En la máquina del usuario:



Si en lugar del index de Apache, se encontrara una copia de instagram.com (algo que podemos hacer muy fácilmente con SET o cualquier otra herramienta) y en tal copia se encontrara alterado el formulario de autenticación, de manera que los datos queden almacenados para el atacante, el usuario finalmente perdería la confidencialidad de los datos de su cuenta.

Hasta aquí con Bettercap, espero que puedan sacarle provecho a la herramienta! 😊
Nos leemos en la próxima!.

Author: Sheila A. Berta
Tw: @UnaPibaGeek.
Web: www.semecayounexploit.com.

No hay comentarios.:

Publicar un comentario