Navega por internet usando solo pings.
Autor: @3diklab en YouTube e Instagram
ICMP Tunneling permite encapsular tráfico TCP/IP dentro de paquetes ICMP (ping).
Escenario real:
- WiFi del hotel/aeropuerto bloquea todo
- VPN bloqueada
- Pero el ping funciona (siempre lo dejan para "diagnóstico")
- Solución: Navegar por internet usando solo pings
Ping normal:
[Cabecera ICMP][Datos de relleno]
Ping "tuneado":
[Cabecera ICMP][TU TRÁFICO HTTP ENCAPSULADO]
↑
El firewall no ve esto
- Docker instalado
- Linux o WSL2
# 1. Clonar repo
git clone https://github.com/ediklab/icmp-tunneling-lab.git
cd icmp-tunneling-lab
# 2. Dar permisos
chmod +x *.sh
# 3. Montar el lab
./setup_lab.sh
# 4. Ejecutar demo automática
./run_demo.sh
# 5. Limpiar cuando termines
./cleanup.shSi quieres trastear y ver cómo funciona por dentro:
./setup_lab.sh # Monta el labLuego abre dos terminales y sigue (MANUAL.md) para:
- Ver el tráfico ICMP en tiempo real
- Entender qué hace cada componente
- Experimentar tú mismo
┌─────────────────────────────────────────────────┐
│ Red Docker (172.20.0.0/24) │
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ CLIENTE │ │ SERVIDOR │ │
│ │ 172.20.0.20 │◄─ICMP──►│ 172.20.0.10 │──►Internet
│ │ │ │ │ │
│ │ TCP/UDP ❌ │ │ hans -s │ │
│ │ ICMP ✅ │ │ │ │
│ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────┘
El cliente tiene bloqueado TCP y UDP. Solo puede hacer ping.
El servidor tiene acceso a internet y ejecuta hans en modo servidor.
./setup_lab.sh# En el cliente, TCP no funciona
docker exec cliente curl google.com
# → Timeout
# Pero el ping sí
docker exec cliente ping 172.20.0.10
# → Funcionadocker exec -it servidor hans -s 10.0.0.1 -p secretodocker exec -it cliente hans -c 172.20.0.10 -p secretodocker exec cliente ip route add default via 10.0.0.1docker exec cliente curl example.com
# → FUNCIONA (a través de pings)- hans crea una interfaz virtual
tun0 - Todo el tráfico que va por
tun0se encapsula en paquetes ICMP - El servidor recibe los pings, extrae el tráfico y lo reenvía a internet
- Las respuestas vuelven por el mismo camino
[Cliente] → curl google.com
↓
[tun0] → encapsula en ICMP
↓
[Firewall] → "solo veo pings, pasa"
↓
[Servidor] → desencapsula → google.com
↓
[Respuesta] → mismo camino inverso
Ver (docs/DEFENSA.md) para:
- Cómo detectar ICMP tunneling
- Reglas de iptables para bloquearlo
- Configuración de IDS/Snort
Señales de alerta:
- Pings >64 bytes
- Muchos pings al mismo destino
- Pings bidireccionales constantes
| Herramienta | Descripción |
|---|---|
| hans | VPN sobre ICMP |
| Docker | Contenedores para el lab |
Alternativas:
- ptunnel-ng - TCP sobre ICMP
- icmptunnel - Simple y moderno
Para usar esto fuera del lab necesitas:
- Un VPS con IP pública ($5/mes en DigitalOcean, Vultr, etc.) o que lo montes en casa
- Instalar
hansen el VPS - Conectarte desde donde estés bloqueado
# En tu VPS
sudo hans -s 10.0.0.1 -p tupassword
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
# En tu máquina
sudo hans -c IP_DEL_VPS -p tupassword
sudo ip route add default via 10.0.0.1Este lab es para uso educativo. Aprende cómo funciona para:
- Entender vectores de ataque en redes
- Mejorar la seguridad de tu infraestructura
- Prepararte para certificaciones de seguridad
No uses esto para evadir políticas de red sin autorización.
- Autor: @3diklab
- hans: Friedrich Weber
Sígueme para más labs y contenido de ciberseguridad: