En alguna ocasión os
he hablado de MITMf, un framework que implementa diversos ataques basados
en interceptar una comunicación y colocarse en medio de ésta. Últimamente están
saliendo herramientas que nos ayudan a automatizar y simplificar las pruebas de
auditoria de red. Hoy hablaré sobre Bettercap,
una evolución de la famosa navaja suiza de red Ettercap. Bettercap está escrito en código Ruby y se
aprovecha de la flexibilidad y potencial de dicho lenguaje.
En la propia página de Bettercap
se preguntan, ¿Por qué otra herramienta de MiTM? Los desarrolladores indican
que Bettercap es completo, actualizado, modular, portable y fácil de extender por cualquier usuario. La instalación de
Bettercap es realmente sencilla. Tiene dependencias, pero ejecutando gem install bettercap el proceso se
lleva a cabo. En caso de necesitar alguna librería se puede utilizar apt-get para completar el proceso. Una
vez instalado, dispondremos de un binario, el cual podremos ejecutar.
Una vez instalado,
lo mejor es comprobar todas las opciones que la herramienta proporciona. A
continuación se pueden ver las opciones por módulos:
·
Spoofing.
·
Discovery.
·
Sniffer.
·
TCP-Proxy.
·
HTTP-Proxy.
·
HTTPS-Proxy.
·
SSLStrip
·
HTTP-Server.
·
DNS-Server.
Cada módulo dispone
de diversas opciones parametrizables, lo cual hace que la herramienta sea
flexible y muy potente. Como primer ejemplo, vamos a ver cómo realizar un sniffing básico, almacenando lo que pasa
por la interfaz de red en un fichero PCAP. Además, vamos a aplicar un filtro al
Sniffer mediante el uso del parámetro
–P. Los protocolos “filtrables” se
pueden consultar en la documentación del sitio web de Bettercap. A continuación
se muestran los protocolos que serán tratados por la herramienta:
PoC: Sniffando con Bettercap y aplicando filtros
En esta prueba de
concepto se configura Bettercap como sniffer.
Se debe indicar al framework que no se quiere realizar spoofing mediante el parámetro –no-spoofing,
tal y como se puede ver en la imagen. Si analizamos el tráfico que genera
Bettercap, el módulo de Discovery
está habilitado por defecto, por lo que veremos cómo se está realizando un ARP Scan de forma constante. Es decir,
enviando ARP Request a todas las
direcciones IP de la red. En la imagen se puede ver como la herramienta nos
indica rápidamente las máquinas con las que tenemos conectividad, esto es
debido al módulo de Discovery.
Con el parámetro –L
indicamos a Bettercap que “parsee”
los paquetes que llegan al equipo, e implícitamente habilita el modo Sniffer, el cual se activa con el
parámetro –X. Por otro lado, el parámetro –sniffer-output
hace que todo lo que llega a la interfaz se almacene en el fichero, en este
caso better.pcap.
En la propia
pantalla se puede visualizar las peticiones que se han realizado, aunque todo
queda almacenado en el fichero PCAP. El código de colores ayuda a visualizar la
información de manera sencilla y útil.
PoC: ARP Spoofing by default
En esta prueba de
concepto configuraremos a Bettercap con el módulo de ARP Spoofing y aplicaremos
un filtro para poder visualizar el tráfico que sea solo HTTP o al puerto 80
TCP. El escenario propuesto para esta prueba de concepto es el siguiente:
·
Una máquina Windows será la
víctima.
·
Un router con el que la máquina
Windows se comunica para enviar peticiones y tráfico hacia a Internet.
·
Una máquina con Kali Linux con
Bettercap instalado.
Desde Bettercap ejecutamos la instrucción bettercap –sniffer-filter “tcp port 80”.
Esto por defecto activa los módulos de Spoofing,
Discovery y Sniffer. Hay que recordar que para no habilitar el módulo de Spoofing habría que indicarlo con el
parámetro –no-spoofing. El filtro nos
permite filtrar la información no deseada y centrarnos en lo deseado, en este
caso, tráfico HTTP.
Si quisiéramos
realizar un ARP Spoofing contra dos máquinas concretas, podríamos utilizar con
el parámetro –T la dirección IP a spoofear,
por ejemplo –T 192.168.1.35 y con –G 192.168.1.1 indicamos la dirección IP
del router.
El ataque de Spoofing se puede realizar a través de ARP Spoofing o con ICMP Redirect. Con el parámetro –spoofer
se puede indicar ARP, ICMP o NONE. Por defecto, si no se indica se lanzará ARP Spoofing. Además, si no se indican
direcciones IP a las que spoofear, el
ataque se llevará a cabo contra toda la red de ámbito local y todos los equipos
que se encuentren disponibles en la red.
PoC: SSL Strip 2 con Bettercap
En esta prueba de
concepto vamos a configurar un SSL Strip+ o SSL Strip 2 de Leonardo Nve, el
cual viene implementado con Bettercap y se puede utilizar de forma muy
sencilla, como ya se vio con MITMf en el artículo de “Ataques man in the middle a HSTS: SSLStrip 2
& Delorean”. Bettercap es
compatible con el SSL Strip de Moxie Marlinspike,
por lo que también se puede utilizar. Configuramos
el módulo de Proxy para reenviar todo
el tráfico dirigido al puerto 80 a Bettercap, le indicamos el target con el parámetro –T y con el parámetro –P le indicamos que “parsee” las peticiones POST.
El parámetro –proxy-module permite inyectar código
HTML, CSS o Javascript. Esto es
interesante si se quiere modificar el contenido de un recurso, e intentar
ejecutar código del lado del navegador. Un posible objetivo podría ser la inyección
de código HTML con intención de lograr un phishing
en la página o conseguir que el navegador realizara peticiones a un recurso
externo el cual devolviera un exploit.
En la documentación
de Bettercap viene un ejemplo de lo que se verá cuando el Bypass de HSTS funcione.
Sabemos que el bypass de HSTS es parcial y que depende de una
serie de condiciones, pero si las cumplimos, la eliminación de la cabecera HSTS
por parte de Bettercap es fundamental para que nos funcione el ataque.
Recordando las condiciones nos encontramos con:
·
El navegador Firefox o Chrome no
debe tener cacheado el dominio en su caché HSTS, es decir, el Max-Age no debe estar insertado en el
navegador. En caso de que esté cacheado durante N segundos, lo que se indique
en Max-Age, las peticiones a ese
dominio no se realizarán nunca por HTTP, y serán siempre por HTTPS.
·
En el caso de tener cacheado dicho
dominio o esté en una lista precargada, podríamos realizar un ataque
de tipo Delorean, creado por José Selvi. Con este ataque se busca provocar
la caducidad de dichas entradas en la caché del navegador. Este ataque se logra
interceptando peticiones NTP de las máquinas y llevándolas hacia el futuro.
En la imagen se
puede ver cómo Bettercap muestra “Found
stripped HTTPS link”. El SSL Strip
está funcionando y podemos ver cómo todo pasa por nuestro Proxy, el cual hemos arrancado con el parámetro –proxy. Es fundamental el cambio de las
“www” a las “wwww”. Estamos apoyándonos en un DNS que está devolviendo la
dirección IP del mismo Facebook en
este caso.
Si analizamos las
peticiones POST nos encontramos con información jugosa. Por ejemplo, SSL Strip+ nos ha funcionado y vemos
como el usuario introdujo su email y su contraseña “dadada”. Las peticiones pueden verse en texto plano, cuando en un
uso normal estarían protegidas bajo HTTPS, pero de esta forma tenemos acceso al
contenido.
Bettercap es una
herramienta llena de posibilidades con la que podemos realizar gran parte de
los ataques de red modernos y que permite ser ampliada de forma sencilla
gracias al lenguaje sobre el que está programada. Sin duda, Bettercap es una de
las herramientas que debemos llevar en la mochila en una auditoria interna y/o
de red.