Bettercap: Una katana para realizar ataques de red
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 que ayuda a implementar los Ataques en redes de datos IPv4& IPv6. Vamos a verlo.
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? y los propios desarrolladores explican este hecho porque Bettercap es completo, actualizado, modular, portable y fácil de extender por cualquier usuario. Si alguien argumenta que Bettercap es un Ettercap le contestan lo siguiente:
La instalación de Bettercap es realmente sencilla. Tiene dependencias, pero ejecutando gem install bettercap el proceso se lleva a cabo completamente. 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:
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 “parsée” 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:
El ataque de suplantación 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 SSLStrip+ o SSLStrip2 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 SSLStrip 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 “parsée” 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 tal y como se hacía con el trabajo de "Owning bad guys {and mafia} using Javascript botnets". 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:
En la imagen se puede ver cómo Bettercap muestra “Found stripped HTTPS link”. El módulo de SSLStrip 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 servidor 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, SSLStrip+ nos ha funcionado y vemos como el usuario introdujo su dirección de e-mail 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.
Conclusión final
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.
Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking" y “Pentesting con Powershell”
Figura 1: Bettercap, una katana para realizar ataques de red |
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? y los propios desarrolladores explican este hecho porque Bettercap es completo, actualizado, modular, portable y fácil de extender por cualquier usuario. Si alguien argumenta que Bettercap es un Ettercap le contestan lo siguiente:
Figura 2: Explicación de por qué utilizar Bettercap |
La instalación de Bettercap es realmente sencilla. Tiene dependencias, pero ejecutando gem install bettercap el proceso se lleva a cabo completamente. 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.
Figura 3: Instalacion de Bettercap en un Kali Linux 2.0 |
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.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.
• Discovery.
• Sniffer.
• TCP-Proxy.
• HTTP-Proxy.
• HTTPS-Proxy.
• SSLStrip.
• HTTP-Server.
• DNS-Server.
Figura 4: Protocolos que pueden analizarse con Bettercap |
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 “parsée” 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.
Figura 5: Bettercap en modo sniffer |
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.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 suplantar, por ejemplo –T 192.168.1.35 y con –G 192.168.1.1 indicamos la dirección IP del router.
• 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.
Figura 6: Ataque de ARP Spoofing con Bettercap |
El ataque de suplantación 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 SSLStrip+ o SSLStrip2 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 SSLStrip 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 “parsée” las peticiones POST.
Figura 7: Ejecución de bettercap en modo proxy |
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 tal y como se hacía con el trabajo de "Owning bad guys {and mafia} using Javascript botnets". 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.
Figura 8: Ataque de HSTS bypass cambiando el dominio de la víctima |
En la imagen se puede ver cómo Bettercap muestra “Found stripped HTTPS link”. El módulo de SSLStrip 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 servidor DNS que está devolviendo la dirección IP del mismo Facebook en este caso.
Figura 9: Ataque ejecutado con éxito saltándose el sistema HSTS |
Si analizamos las peticiones POST nos encontramos con información jugosa. Por ejemplo, SSLStrip+ nos ha funcionado y vemos como el usuario introdujo su dirección de e-mail 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.
Figura 10: Captura de credenciales en texto plano |
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.
Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking" y “Pentesting con Powershell”
6 comentarios:
Gracias por la Infor super buena!!!
Al momento de ejecutarlo me da este error:
/var/lib/gems/2.1.0/gems/bettercap-1.5.6b/lib/bettercap/spoofers/icmp.rb:24:in `': uninitialized constant PacketFu::EthHeaderMixin (NameError)
from /var/lib/gems/2.1.0/gems/bettercap-1.5.6b/lib/bettercap/spoofers/icmp.rb:17:in `'
from /var/lib/gems/2.1.0/gems/bettercap-1.5.6b/lib/bettercap/spoofers/icmp.rb:15:in `'
from /var/lib/gems/2.1.0/gems/bettercap-1.5.6b/lib/bettercap/spoofers/icmp.rb:14:in `'
from /usr/local/lib/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/lib/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /var/lib/gems/2.1.0/gems/bettercap-1.5.6b/lib/bettercap.rb:66:in `block in bettercap_autoload'
from /var/lib/gems/2.1.0/gems/bettercap-1.5.6b/lib/bettercap.rb:65:in `each'
from /var/lib/gems/2.1.0/gems/bettercap-1.5.6b/lib/bettercap.rb:65:in `bettercap_autoload'
from /var/lib/gems/2.1.0/gems/bettercap-1.5.6b/lib/bettercap.rb:70:in `'
from /usr/local/lib/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:68:in `require'
from /usr/local/lib/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:68:in `require'
from /var/lib/gems/2.1.0/gems/bettercap-1.5.6b/bin/bettercap:16:in `'
from /usr/local/bin/bettercap:22:in `load'
from /usr/local/bin/bettercap:22:in `'
Qué puedo hacer?
debes actualizar la version a kali linux 2016.2.
hola. que podemos hacer si el HSTS esta incrustado en chrome y al tener bettercap andando y en la victima abrir chrome solo no nos abre la pagina https???? los demas navegadores se puede hacer pero siempre se usa chrome, se pueden crear estos certificados y crear estas paginas y correrlas con mmm no se un proxy transparente???
gracias de ante mano
como puedo hacer mas segura mi red ?
para que sea mas dificil que entren al trafico de mi red?
al ejecutarlo me sale esto
como los soluciono
Modules..
any.proxy > not running
api.rest > not running
arp.spoof > not running
ble.recon > not running
caplets > not running
dhcp6.spoof > not running
dns.spoof > not running
events.stream > running
gps > not running
http.proxy > not running
http.server > not running
https.proxy > not running
mac.changer > not running
mysql.server > not running
net.probe > not running
net.recon > running
net.sniff > not running
packet.proxy > not running
syn.scan > not running
tcp.proxy > not running
ticker > not running
update > not running
wifi > not running
wol > not running
Publicar un comentario