Descifra el tráfico HTTPS con Bettercap 2 en Linux fácilmente

Descifra el tráfico HTTPS con Bettercap 2 en Linux fácilmente

Sergio De Luz

El protocolo HTTPS (Hypertext Transfer Protocol Secure) nos permite navegar por Internet con seguridad, ya que el navegador web establece una comunicación segura que está cifrada y autenticada punto a punto, desde nuestro navegador web hasta el servidor web donde nos estemos conectando. HTTPS es la versión segura de HTTP, ya que, en HTTP toda la información se envía sin ningún tipo de cifrado, por lo que, si cualquiera intercepta las comunicaciones, podrá ver absolutamente todo lo que se está enviando y/o recibiendo, incluido las contraseñas. Hoy en RedesZone os vamos a enseñar cómo hacer un ataque Man in the Middle para capturar tráfico de red, y descifrar el tráfico HTTPS configurando un proxy HTTP/HTTPS haciendo uso de la popular herramienta bettercap para Linux.

¿Qué es HTTPS y para qué sirve?

Actualmente, la gran mayoría de páginas web como RedesZone, webs de bancos, comercio electrónico en general y un largo etcétera, disponen del protocolo HTTPS para proporcionar seguridad a los clientes. HTTPS es la versión segura de HTTP, donde todas las comunicaciones van cifradas y autenticadas punto a punto, además, también se comprueba la integridad de todos los datos. Debemos recordar que el cifrado nos proporciona confidencialidad, es decir, aunque alguien capture el tráfico de datos, no podrán descifrarlo porque todo está encriptado punto a punto, aunque hay técnicas para colocarnos en el «medio» de la comunicación y proceder a descifrar dicho tráfico. La autenticación significa que nosotros somos quienes decimos ser, es decir, nosotros establecemos una comunicación con el servidor web, y un tercero no podrá hacerse pasar por nosotros para que también se le envíe la información. Por último, la integridad es una característica de la criptografía muy importante, esto nos permite comprobar que todos los datos que salen desde un origen, llegan hasta un destino sin ningún tipo de modificación. Si alguien es capaz de interponerse en la comunicación de los datos, y los modifica, automáticamente el protocolo HTTPS (y todos los protocolos que participan) lo detectarán y no aceptarán dichos datos.

HTTPS hace uso del protocolo TLS para dotar de seguridad a sus comunicaciones, la gran mayoría de conexiones HTTPS hacen uso de TLSv1.2 y TLSv1.3, este último protocolo es mucho más rápido y también más seguro que TLSv1.2, ya que solamente admite ciertas suites de cifrado seguras, no permite la incorporación de suites de cifrados menos seguras como sí ocurre con TLSv1.2. Por supuesto, al utilizar TLS, por debajo hacemos uso del popular protocolo de la capa de transporte TCP en su puerto 443 por defecto. En el caso de HTTP, se hace uso directamente de TCP en su puerto 80 por defecto, esto es muy importante que lo sepáis para lo que os explicaremos próximamente.

Características de Bettercap e instalación

Bettercap es una herramienta muy potente que es compatible con las principales distribuciones basadas en Linux, algunas de sus principales características son las siguientes:

  • Escáner de redes WiFi, permite hacer ataques de desautenticación, también permite realizar ataques sin clientes a asociaciones PMKID, permite capturar handshakes de clientes que usan protocolo WPA y WPA2.
  • Escáner de dispositivos BLE (Bluetooth Low Energía) para leer y escribir información.
  • Escáner de dispositivos inalámbricos que usen la banda de 2.4GHz, como los ratones inalámbricos, también permite realizar ataques MouseJacking con inyección de datos.
  • Permite hacer ataques pasivos y activos a redes IP
  • Permite realizar ataques MitM basados en ARP, DNS y también DHCPv6, con el objetivo de capturar toda la información.
  • Permite crear un proxy HTTP/HTTPS para levantar el tráfico seguro HTTPS, y facilita enormemente el uso de scripts.
  • Sniffer de red muy potente para recolección de credenciales de usuario.
  • Escáner de puertos muy rápido, aunque para esto, mejor usar Nmap que el rey de los escáneres de puertos.
  • Tiene una potente API REST para realizar ataques fácilmente.
  • Incorpora una interfaz gráfica de usuario para facilitar los ataques, aunque el terminal de comandos es muy potente.
  • Tenemos una gran cantidad de módulos de diferentes categorías para ampliar funcionalidades.

En las distribuciones de Linux orientadas a la seguridad informática es posible que bettercap venga instalada por defecto. De lo contrario, tendremos que instalarla nosotros mismos con todas las dependencias. Lo más fácil para usar Bettercap es hacer uso de Docker (versión 17.05 o superior), ya que está en los repositorios de software de Docker, y basta con hacer:

docker pull bettercap/bettercap docker pull bettercap/dev

Y lo ejecutamos con:

docker run -it --privileged --net=host bettercap/bettercap -h

En caso de no tener Docker, lo tendremos que compilar desde el código fuente y necesitaremos las siguientes dependencias:

  • build-essential
  • libpcap-dev
  • libusb-1.0-0-dev
  • libnetfilter-queue-dev

Por ejemplo, en sistemas operativos basados en Debian, se instala de la siguiente forma:

sudo apt update

sudo apt install golang git build-essential libpcap-dev libusb-1.0-0-dev libnetfilter-queue-dev

Posteriormente, tendremos que descargarnos el código fuente y compilarlo:

git clone https://github.com/bettercap/bettercap

cd bettercap

make build

Una vez que tengamos instalada esta herramienta Bettercap, ya podremos empezar a utilizarla, ejecutamos vía consola «bettercap» veremos la versión.

Antes de empezar, también podríamos ejecutar Bettercap con la interfaz gráfica de usuario web UI, para hacerlo debemos ejecutar la siguiente orden:

bettercap -eval "caplets.update; ui.update; q"

Y para lanzar el entorno gráfico, hacemos lo siguiente:

sudo bettercap -caplet http-ui

Si abrimos el navegador web y ponemos http://127.0.0.1 podremos acceder a la interfaz gráfica de usuario:

El nombre de usuario de bettercap web UI es «user», y la contraseña es «pass», tal y como aparece en el fichero de configuración:

Una vez que accedamos al menú de administración de bettercap a través del navegador, podremos ver los siguientes menús:

Hay muchos ataques que se pueden ejecutar directamente desde la interfaz gráfica de usuario, pero nosotros os lo vamos a poner por comandos porque es casi igual de sencillo, no obstante, también os vamos a enseñar a hacer ciertos ataques a través de la interfaz gráfica de usuario.

Así puedes descifrar las comunicaciones HTTPS

El escenario de pruebas donde hemos realizado todas las pruebas, son dos VM en VMware en un entorno NAT, con la subred 192.168.248.0/24, y puerta de enlace predeterminada 192.168.248.2.

  • Equipo atacante: Kali Linux con IP 192.168.248.131
  • Equipo víctima: Debian con IP 192.168.248.129

Lo primero que vamos a hacer, es ejecutar el típico ataque de ARP Spoofing para capturar todo el tráfico, el tráfico HTTPS estará cifrado y no podremos descifrarlo. También capturaremos el tráfico ICMP, tráfico TCP y UDP, y tráfico HTTP. Para poder hacer esto, simplemente debemos ejecutar los siguientes comandos:

sudo bettercap

Una vez dentro de bettercap, debemos ejecutar varias órdenes para configurar el software. Lo primero que debemos hacer es definir el objetivo, en nuestro caso la máquina Debian con IP 192.168.248.129. No es necesario poner también la puerta de enlace predeterminada.

set arp.spoof.targets 192.168.248.129

arp.spoof on

Si ejecutamos el comando «help», bettercap nos indicará todo lo que está funcionando:

Una parte interesante es si ejecutamos «help arp.spoof», ya que nos aparecerán todas las opciones disponibles en este módulo. Una de las opciones más interesantes es «arp.spoof.fullduplex», esta opción permite hacer un ARP Spoofing tanto al objetivo como a la puerta de enlace predeterminada (gateway), pero si el router tiene protección frente a ataques ARP Spoofing fallará el ataque. Nuestra recomendación es que lo activéis siempre, por tanto, el listado de comandos sería el siguiente:

set arp.spoof.targets 192.168.248.129
arp.spoof.fullduplex true
arp.spoof on

Una vez hecho esto, si en Kali Linux ejecutamos el Wireshark para capturar todos los paquetes de la interfaz eth0, podremos ver todo el tráfico que va y viene hacia y desde la víctima. Si os fijáis, tenemos el tráfico ICMP de 192.168.248.129, es decir, el equipo con Debian que estamos atacando.

También capturaremos todo el tráfico de DNS, TCP, UDP y todos los protocolos, incluyendo el tráfico cifrado, pero no lo podremos descifrar solamente con el ARP Spoofing.

Si nos metemos en bettercap a través del entorno gráfico, podremos hacer esto mismo, e incluso podremos seleccionar hacer un ARP Spoofing a la puerta de enlace predeterminada.

Para hacer este ataque a través de la interfaz gráfica, nos vamos a LAN, seleccionamos el objetivo o los objetivos, los añadimos a «arp.spoof.targets» y pinchamos en «Full-Duplex spoofing». Nos aparecerá el listado de equipos disponibles en la red local, si no nos aparecen, pinchamos en el icono de «Play» en recon module.

Una vez que ya sabemos hacer el típico ataque ARP Spoofing, ahora vamos a hacer lo mismo, pero habilitando el proxy HTTP con ssltrip activado, para levantar todas las comunicaciones HTTPS.

Ejecutamos en Kali Linux el bettercap como siempre:

bettercap

Una vez dentro, debemos configurar bettercap de la siguiente forma:

set http.proxy.sslstrip true
set net.sniff.verbose false
set arp.spoof.targets 192.168.248.129
arp.spoof.fullduplex true
arp.spoof on
http.proxy on
net.sniff on

Cuando lo hayamos hecho, si la víctima visita un sitio con HTTPS, automáticamente se convertirá a HTTP, y podremos capturar las credenciales de usuario. A continuación, se puede ver perfectamente cómo he intentado iniciar sesión en pccomponentes, y ha capturado tanto el usuario (email) como también la contraseña. Lógicamente, hemos introducido credenciales falsas para no mostrar los nuestros reales, por este motivo nos devuelve un error 401.

Si navegamos por otras webs, también podremos ver todo el tráfico.

Si la web tiene habilitado HSTS (HTTP Strict Transport Security) no podremos «levantar» el tráfico HTTPS, por tanto, todo el tráfico estará cifrado.

¿Qué es HSTS y para qué sirve?

Tal y como habéis visto, descifrar las comunicaciones HTTPS es muy sencillo, pero no siempre es posible. Actualmente muchas webs hacen uso del protocolo HSTS para proteger aún más las comunicaciones de sus usuarios. HSTS, o también conocido como HTTP Strict Transport Security, es una política de seguridad web que evita este mismo ataque que os acabamos de enseñar, gracias al uso de cookies, el servidor web le «dice» al navegador web, que siempre que vuelva a acceder a su página web, haga uso del protocolo HTTPS, por lo que la comunicación estará cifrada punto a punto, y aunque interceptemos la comunicación sniffeando el tráfico, no podremos ver el tráfico intercambiado porque no podemos usar bettercap para «levantar» el cifrado TLS. Estas cookies tienen una caducidad, pero una buena política de configuración (de cara al servidor web) es poner un valor muy alto, por ejemplo, un año (max-age=31536000).

El funcionamiento de HSTS es muy sencillo, hay algunos navegadores web que incorporan ciertas cookies HSTS por defecto, sobre todo los «grandes» de Internet como Google y muchos otros tienen en la lista «preload» de HSTS sus dominios, por tanto, nunca podremos acceder a estos dominios a través del protocolo HTTP. Si el navegador detectar que no se puede acceder vía HTTPS a ese dominio, rechaza la conexión y no podremos conectarnos. Si el navegador detecta que el certificado digital del servidor es autofirmado, también denegará la conexión y no podremos conectarnos. De hecho, ni siquiera si accedemos en modo incógnito podremos conectarnos. Todos los navegadores actuales suelen incorporar esta lista para proteger a los usuarios.

En el caso de «el resto de Internet» como webs de comercio electrónico, bancos, medios de comunicación y muchos otros, nos tendremos que meter como mínimo una vez, para que la cookie de HSTS se descargue en nuestro navegador web y obtengamos esta protección. En este caso, si a partir de la segunda vez, el navegador detecta que no se puede acceder vía HTTPS a ese dominio, rechazará la conexión y nos dará un error al conectarnos. Además, si el navegador detecta que el certificado digital del servidor es autofirmado, también se denegará la conexión y no podremos conectarnos. En caso de querer acceder a esta web (por el motivo que sea), deberás usar otro navegador web con el que nunca hayas accedido antes, pero esto no es recomendable porque podrían estar atacándote, es mejor no conectarte a la web.

Si queremos realizar un ataque a un usuario y se mete en una web con HSTS, el único momento en el que se podría descifrar la conexión es antes de la primera conexión histórica del usuario (porque sea un navegador nuevo, ordenador recién formateado, nunca se ha metido en esa web etc.) Imaginemos que el usuario víctima se ha comprado un ordenador portátil nuevo, se va a un hotel y se conecta por primera vez al banco con su navegador recién instalado, en este caso sí podríamos atacarle porque aún no tiene la cookie HSTS en su navegador web. Para evitar esto, tenemos la directiva «preload» en los servidores web, pero hay que usarla con cuidado porque tenemos que darnos de alta en la lista de HSTS Preload, de lo contrario los usuarios tendrán problemas para conectarse.

Tal y como habéis visto, la política de HSTS ayuda a proteger a los usuarios de webs de los ataques pasivos y activos, esta medida de seguridad es una de las más importantes que se deben configurar en un servidor web, porque un atacante MitM tendrá una capacidad mínima para interceptar las peticiones y respuestas entre la víctima y el servidor web.

Bettercap incorpora un «caplet» que nos permite hacer un ataque HSTS Hijack y eludir esta protección, se basa en hacer un DNS Spoofing y reenviar a la víctima a otro dominio bajo nuestro control, para posteriormente capturarle toda la información. Los caplets son scripts en Bettercap que vienen preconfigurados, pero que nosotros podemos modificar fácilmente, para descargarlos tenemos que ejecutar las siguientes órdenes en el terminal Linux:

git clone https://github.com/bettercap/caplets.git

cd caplets

sudo make install

Una vez hecho, lo ejecutamos poniendo:

bettercap -caplet RUTA

En la siguiente captura se puede ver la ejecución del caplet por defecto:

Y aquí el registro del ataque realizado:

Os recomendamos visitar la web oficial de Bettercap donde encontraréis toda la información sobre esta gran herramienta.