martes, 2 de enero de 2018

Bettercap parte I: Uso de parsers custom


y.. todo aquel que me conoce sabe bien que no soy muy partidaria de las herramientas, que siempre hago a mano lo más que se pueda, incluso aquello que todos odian hacer a mano :-) que si uso herramientas son muy puntuales para algo y que NetCat siempre será my favorite tool ;-).
Entre ese acotado y selecto arsenal de herramientas que tengo se encuentra Bettercap, que como su nombre quiere expresar, es una versión mejorada del famoso ettercap. Hoy en día, si tengo que hacer un Sniffing/MITM desde Linux, utilizo bettercap para ello.

En esta nota no solo contaré los parámetros básicos como para que cualquiera que nunca haya usado esta herramienta pueda hacerlo, sino también, haré foco sobre las características avanzadas que tiene, como los módulos de inyección de código en el tráfico interceptado y la “customización” de parsers.

DESCARGA E INSTALACIÓN
Bettercap es una herramienta open source, la cual podemos descargar desde el github de mi amigo @evilsocket, el desarrollador de la misma -> https://github.com/evilsocket/bettercap.
En la documentación del propio github podemos ver los pasos de instalación para cada sistema operativo. Si queremos hacerlo desde el source, los comandos son los siguientes:

git clone https://github.com/evilsocket/bettercap
cd bettercap
gem build bettercap.gemspec
sudo gem install bettercap*.gem


USO BÁSICO
Si ejecutamos “bettercap”, sin parámetros, la herramienta realizará un escaneo continuo para identificar equipos en la red LAN. Si no tenemos las máquinas previamente enumeradas, este modo de ejecución puede ser muy útil para comenzar.


Hay tres parámetros básicos, son los siguientes:
-T <Targets>
-G <Gateway>
-I <Interface>

El único de ellos que es 100% necesario es -T para especificar el target o los targets (separados con coma). El gateway no es necesario especificar a menos que veamos que bettercap está detectando automáticamente como gateway un dispositivo que no lo es. La interfaz la especificaremos si tenemos más de una en nuestro equipo y la que se toma por defecto no es la que queremos utilizar.

El MITM más rápido y sencillo para ejecutar es simplemente: bettercap -P ‘*’ -T <ip_del_target>


Como podemos ver en la imagen, se muestra la información de autenticación de una conexión FTP, así como diversos resquests HTTP y HTTPS.
Notamos que hemos usado el parámetro -P ‘*’.  El mismo es para la selección de parsers, esto nos permite jugar con lo que queremos ver en pantalla y así filtrar lo que realmente nos interesa. A continuación, veremos el tema de los parsers en profundidad.

SELECCIÓN DE PARSERS Y PARSERS CUSTOMIZADOS
Si ejecutamos "bettercap --help" podemos ver bajo la opción -P los parsers disponibles.


Con esta lista es fácil filtrar por lo que nos interesa ver, podemos utilizar varios parsers separándolos por coma, por ejemplo: -P FTP,MAIL,POST.
El parser POST es especialmente interesante ya que nos muestra en un formato muy agradable la información de las peticiones POST del usuario vía HTTP. Esto suele incluir información de formularios de autenticación. Para utilizarlo haremos uso del proxy HTTP que configura bettercap localmente, para ello añadiremos el parámetro --proxy al comando.


Al autenticarnos en una web vía HTTP, las credenciales enviadas por POST serán mostradas en la consola del atacante.


Ahora bien, bettercap no solo nos permite jugar con los parsers predefinidos sino también armar uno a nuestra medida!. El parámetro para ello es “--custom-parser EXPRESSION” donde como valor podemos utilizar inclusive expresiones regulares. La customización de parsers puede ser sumamente útil en múltiples ocasiones, por ejemplo, si lo que nos interesa de la máquina objetivo es el contenido de un tipo de archivo en particular, que se pudiera estar transfiriendo. En ese caso podemos utilizar como valor para --custom-parser la cabecera que define el tipo de archivo. Por otro lado, si nos interesara capturar los datos de un formulario HTML en particular, podemos pasar al --custom-parser el nombre de alguno de los campos de ese formulario, de manera que cuando el usuario interactúe con el mismo lo veamos claramente en la consola.

Veamos este último ejemplo. Para este caso me interesa capturar las credenciales de un formulario donde uno de sus campos tiene como nombre “código”, así que ese será el valor para mi --custom-parser.


Veamos que ocurre cuando el valor del parser custom es detectado:


Notemos que no se nos ha mostrado el contenido de todas las peticiones HTTP tal como ocurre si utilizamos el parser POST, sino que sólo se nos ha mostrado bajo "[DATA]" aquella petición POST que contiene el parser custom que hemos utilizado. En definitiva, nos está mostrando la información únicamente del formulario que nos interesa ver, ahorrándonos el mirar muchísimas líneas con contenido que no nos sirve.

Tal como ya mencioné anteriormente, este es tan solo un simple ejemplo de lo útil que pueden ser los parsers customizados. La cantidad de información capturada en un MITM suele ser demasiada como para encontrar fácilmente lo que buscamos, aunque desde luego que podemos mandar todo a un .pcap y luego utilizar otras herramientas para su análisis. De hecho bettercap tiene el parámetro --sniffer-output  al cual podemos pasar como valor dónde guardar el pcap. Por ejemplo: --sniffer-output /home/shei/micaptura.pcap.

Bueno, voy a parar aquí para que la nota no se haga muy larga. En la parte II veremos los módulos para inyección de código a través del MITM y algunas otras características de bettercap que pueden ser muy útiles.

Buen comienzo de 2018! Hasta la próxima!.

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

4 comentarios: