Tunneling and Port Forwarding
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Suggerimento Nmap
ICMP e SYN scans non possono essere tunnelizzati attraverso proxy socks, quindi dobbiamo disabilitare la scoperta ping (-Pn
) e specificare scansioni TCP (-sT
) affinché questo funzioni.
Bash
Host -> Jump -> InternalA -> InternalB
SSH
Connessione grafica SSH (X)
Local Port2Port
Apri una nuova porta nel server SSH --> Altra porta
Port2Port
Porta locale --> Host compromesso (SSH) --> Terza_scatola:Port
Port2hostnet (proxychains)
Porta locale --> Host compromesso (SSH) --> Ovunque
Reverse Port Forwarding
Questo è utile per ottenere shell inverse da host interni attraverso una DMZ al tuo host:
VPN-Tunnel
Hai bisogno di root in entrambi i dispositivi (poiché stai per creare nuove interfacce) e la configurazione di sshd deve consentire il login come root:
PermitRootLogin yes
PermitTunnel yes
Abilitare l'inoltro sul lato Server
Imposta un nuovo percorso sul lato client
SSHUTTLE
Puoi tunnelare tutto il traffico verso una sottorete attraverso un host. Ad esempio, inoltrando tutto il traffico che va a 10.10.10.0/24
Connettersi con una chiave privata
Meterpreter
Port2Port
Porta locale --> Host compromesso (sessione attiva) --> Terza_scatola:Port
SOCKS
Un altro modo:
Cobalt Strike
SOCKS proxy
Apri una porta nel teamserver in ascolto su tutte le interfacce che possono essere utilizzate per instradare il traffico attraverso il beacon.
rPort2Port
In questo caso, la porta è aperta nell'host beacon, non nel Team Server e il traffico viene inviato al Team Server e da lì all'host:porta indicato.
To note:
Il reverse port forward di Beacon è progettato per tunneling del traffico verso il Team Server, non per il relay tra macchine individuali.
Il traffico è tunneled all'interno del traffico C2 di Beacon, inclusi i link P2P.
I privilegi di amministratore non sono richiesti per creare reverse port forwards su porte alte.
rPort2Port locale
In questo caso, la porta è aperta nell'host beacon, non nel Team Server e il traffico è inviato al client Cobalt Strike (non al Team Server) e da lì all'host:porta indicato.
reGeorg
https://github.com/sensepost/reGeorg
Devi caricare un file web tunnel: ashx|aspx|js|jsp|php|php|jsp
Chisel
Puoi scaricarlo dalla pagina delle release di https://github.com/jpillora/chisel Devi usare la stessa versione per client e server
socks
Port forwarding
Rpivot
https://github.com/klsecservices/rpivot
Tunnel inverso. Il tunnel è avviato dalla vittima. Viene creato un proxy socks4 su 127.0.0.1:1080
Pivotare attraverso NTLM proxy
Socat
https://github.com/andrew-d/static-binaries
Shell di binding
Reverse shell
Port2Port
Port2Port attraverso socks
Meterpreter attraverso SSL Socat
Puoi bypassare un proxy non autenticato eseguendo questa riga invece dell'ultima nella console della vittima:
https://funoverip.net/2011/01/reverse-ssl-backdoor-with-socat-and-metasploit/
Tunnel SSL Socat
/bin/sh console
Crea certificati su entrambi i lati: Client e Server
Remote Port2Port
Collegare la porta SSH locale (22) alla porta 443 dell'host attaccante
Plink.exe
È come una versione console di PuTTY (le opzioni sono molto simili a quelle di un client ssh).
Poiché questo binario verrà eseguito nella vittima ed è un client ssh, dobbiamo aprire il nostro servizio ssh e la porta in modo da poter avere una connessione inversa. Quindi, per inoltrare solo una porta accessibile localmente a una porta nella nostra macchina:
Windows netsh
Port2Port
Devi essere un amministratore locale (per qualsiasi porta)
SocksOverRDP & Proxifier
È necessario avere accesso RDP sul sistema. Scarica:
SocksOverRDP x64 Binaries - Questo strumento utilizza
Dynamic Virtual Channels
(DVC
) dalla funzione Remote Desktop Service di Windows. DVC è responsabile per il tunneling dei pacchetti sulla connessione RDP.
Nel tuo computer client carica SocksOverRDP-Plugin.dll
in questo modo:
Ora possiamo connetterci alla vittima tramite RDP utilizzando mstsc.exe
, e dovremmo ricevere un messaggio che dice che il plugin SocksOverRDP è abilitato, e che ascolterà su 127.0.0.1:1080.
Connetti tramite RDP e carica ed esegui nella macchina della vittima il file binario SocksOverRDP-Server.exe
:
Ora, conferma nella tua macchina (attaccante) che la porta 1080 è in ascolto:
Ora puoi utilizzare Proxifier per proxy il traffico attraverso quella porta.
Proxifica le app GUI di Windows
Puoi far navigare le app GUI di Windows attraverso un proxy utilizzando Proxifier. In Profile -> Proxy Servers aggiungi l'IP e la porta del server SOCKS. In Profile -> Proxification Rules aggiungi il nome del programma da proxificare e le connessioni agli IP che desideri proxificare.
Bypass del proxy NTLM
Lo strumento precedentemente menzionato: Rpivot OpenVPN può anche bypassarlo, impostando queste opzioni nel file di configurazione:
Cntlm
Si autentica contro un proxy e associa una porta localmente che viene inoltrata al servizio esterno specificato. Poi, puoi utilizzare lo strumento di tua scelta attraverso questa porta. Ad esempio, inoltra la porta 443.
Ora, se imposti ad esempio nel bersaglio il servizio SSH per ascoltare sulla porta 443. Puoi connetterti ad esso attraverso la porta 2222 dell'attaccante. Potresti anche utilizzare un meterpreter che si connette a localhost:443 e l'attaccante sta ascoltando sulla porta 2222.
YARP
Un reverse proxy creato da Microsoft. Puoi trovarlo qui: https://github.com/microsoft/reverse-proxy
DNS Tunneling
Iodine
È necessario avere i privilegi di root in entrambi i sistemi per creare adattatori tun e tunnelare dati tra di essi utilizzando query DNS.
Il tunnel sarà molto lento. Puoi creare una connessione SSH compressa attraverso questo tunnel utilizzando:
DNSCat2
Stabilisce un canale C&C attraverso DNS. Non richiede privilegi di root.
In PowerShell
Puoi usare dnscat2-powershell per eseguire un client dnscat2 in powershell:
Port forwarding con dnscat
Cambiare DNS di proxychains
Proxychains intercetta la chiamata gethostbyname
della libc e instrada la richiesta DNS tcp attraverso il proxy socks. Per default il server DNS che proxychains utilizza è 4.2.2.2 (hardcoded). Per cambiarlo, modifica il file: /usr/lib/proxychains3/proxyresolv e cambia l'IP. Se sei in un ambiente Windows puoi impostare l'IP del domain controller.
Tunnel in Go
https://github.com/hotnops/gtunnel
Tunneling ICMP
Hans
https://github.com/friedrich/hans https://github.com/albertzak/hanstunnel
È necessario l'accesso root in entrambi i sistemi per creare adattatori tun e instradare i dati tra di essi utilizzando richieste di echo ICMP.
ptunnel-ng
ngrok
ngrok è uno strumento per esporre soluzioni a Internet con un'unica riga di comando. Le URI di esposizione sono come: UID.ngrok.io
Installazione
Crea un account: https://ngrok.com/signup
Download del client:
Usi di base
Documentazione: https://ngrok.com/docs/getting-started/.
È anche possibile aggiungere autenticazione e TLS, se necessario.
Tunneling TCP
Esporre file con HTTP
Sniffing HTTP calls
Utile per XSS, SSRF, SSTI ... Direttamente da stdout o nell'interfaccia HTTP http://127.0.0.1:4040.
Tunneling internal HTTP service
ngrok.yaml esempio di configurazione semplice
Apre 3 tunnel:
2 TCP
1 HTTP con esposizione di file statici da /tmp/httpbin/
Altri strumenti da controllare
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated