Attaque de l'homme du milieu : imposture ARP ============= Votre travail ------------- Le présent document constitue les bases d'un tutoriel pour réaliser une attaque "Man In The Middle" de type ARP Poisoning. Votre travail consiste à l'étayer en rajoutant ici des définitions, là des captures écrans de ce que vous observez et là encore des commentaires pour expliquer ce que vous observez... Pré-requis ----------- * Un réseau local via une box Internet * Un "pirate", une machine avec un linux où vous êtes root (installation et exécution) connecté au réseau local de la victime * Une "victime cible", un smartphone (au début du tutoriel, non connecté au réseau local) * Les connexions pourront être filaires ou via wifi Les commandes ci-dessous sont décrites pour un système "pirate" tournant sous Linux. Des commande similaires existent sous Windows. Indiquez quelles machines/OS vous allez utiliser pour les différents rôles (pirate, victime) et comment vous les interconnectez (e.g. wifi pour les deux via la box routeur ou un pirate/routeur en filaire et victime en wifi, ou bien routeur et victime interconnecté en filaire sur la box routeur via un switch...). Introduction ------------- Répondre aux questions : Une Attaque "Man In the Middle" c'est quoi ? Et le Spoofing ? Et en particluer l'ARP Spoofing ? [https://en.wikipedia.org/wiki/Man-in-the-middle_attack](https://en.wikipedia.org/wiki/Man-in-the-middle_attack) Et l'ARP Poisoning dans tout cela ? Outils -------------- Pour ce tutoriel, nous aurons besoins des outils suivants (Donner la fonctionnalité principale de chaque outil) *NE PAS LIRE LES QUESTIONS SUIVANTES AVANT D'AVOIR REPONDU A CELLE-CI* - netdiscover - dsniff - urlsnarf - driftnet - ettercap - arpspoof Démarche de l'attaque ========= Sont distinguées ci-dessous les actions du Pirate de celles de la victime. Dans un premier temps lire la totalité pour avoir une vue d'ensemble puis réaliser les actions dans votre environnement. Pirate: identifier votre adresse IP, votre adresse réseau avec masque, l'interface pour accéder au réseau ------------- ip a L'IP du pirate est... L'IP du réseau et son masque sont ... L'interface d'accès au réseau local est ... Pirate: trouver la passerelle/routeur -------------------- ip route L'IP du routeur est ... Je constate que je lis aussi l'adresse du réseau et l'interface par laquelle je le rejoins. Victime: Se connecter au réseau local ------------------ Différer de quelques minutes cette action. L'étape suivante vise à capturer la MAC et l'IP de la victime. Vous pourrez ainsi en live voir apparaître ses informations. Pirate: Scanner le réseau pour savoir qui utilise votre réseau ---------- Installation sous debian-like sudo apt-get install netdiscover netdiscover est un "active/passive network address scanner using ARP requests" Usage: netdiscover -r [IP_RESEAU_LOCAL/MASQUE] Dans un premier temps, vous voyez l'IP et la MAC de votre routeur. La victime se connecte au réseau local et vous voyez son IP et MAC apparaître : ... Victime: trouver sur votre téléphone votre MAC et IP lorsque vous êtes connecté à votre réseau local. ------------- Cette action vous permet de vérifier que vous avez bien identifier la bonne cible... Exemple : Sur mon Saamsung, je cliquouille "A propos du téléphone > Etat > Adresse MAC-WiFi et Adresse IP" et j'obtiens : Pirate: Ecouter "sniffer" les trames à l'aide de wireshark ----------------------- Installation sous debian-like sudo apt-get install wireshark Usage: sudo wireshark Utiliser un filtre pour capturer les paquets en provenance et à l'attention de votre cible (éventuellement avec une contrainte sur un protocole applicatif). Par exemple: ip.addr == 192.168.1.19 and http ip.addr == 192.168.1.19 and http.request.method Pirate: Ecouter les urls à partir des requêtes HTTP exprimés en CLF (Common Log Format, utilisé par la plupart des serveurs) ---------------------- Installation sous debian-like sudo apt-get install dsniff Usage: urlsnarf -i [Network Interface Name] Par exemple : sudo urlsnarf -i eth0 Pirate: Ecouter "sniffer" les images des sites web visités par la victime (images récupérés des flux TCP) ---------------------- Installation sous debian-like sudo apt-get install driftnet Usage: driftnet -i [Network Interface Name] Par exemple : sudo driftnet -i eth0 Pirate: Lancer l'attaque ARP Poisoning à proprement parlé à l'aide d'ettercap ---------------- L'objectif de cette attaque Man In The Middle est de se faire passer pour le routeur aux yeux de la victime. Pour cela, on va empoisonner la victime en lui faisant croire que notre adresse MAC est celle qui correspond à l'adresse IP du routeur... De cette manière là, la victime nous adressera les trames qu'elle pense envoyer au routeur. Ettercap propose deux techniques pour faire suivre les paquets (principe du Man in the Middle) : `UNIFIED` et `BRIDGED`. Consulter la section description du man(uel) d'ettercap (`man ettercap`) pour comprendre le principe de ces techniques. La technique `UNIFIED` signifie ... Installation sous debian-like sudo apt-get install ettercap-graphical Usage: sudo ettercap -G Pour identifer la victime dans le réseau local et lancer une attaque par ARP Poisoning faire : - Demander à ettercap de faire suivre les paquets selon le mode "Unified" : Faire `Sniff > Unified sniffing`, puis saisir l'interface que vous voulez sniffer. - Scanner les hôtes connectés au réseau et vérifier que votre victime est bien connectée. Faire: `Hosts > Scan for hosts`, puis `Hosts > Hosts list` pour les voir. - A partir de cette "Hosts list", cliquer sur l'adresse de votre routeur et ajouter là comme cible 1 avec `Add to target 1`, puis cliquer sur l'adresse de votre victime, ajouter là comme cible 2 avec `Add to target 2` - Consuter vos targets (cibles) avec `Target > Current Targets` - Lancer l'attaque : `Mitm > ARP Poisoning > Sniff remote connections` - Puis `Start > Start sniffing`. Victime: ------------------- Via votre application navigateur web (éprouvé avec "firefox"), connectez-vous au choix sur un site en HTTP. Exemples de sites au choix : * http://www.topito.com/ * http://blog.top250.fr/ * http://webtv.80s.free.fr/ * http://www.shinobi.fr (vous pouvez entrer un faux login/pass) Pirate: observer les sorties consoles d'ettercap, driftnet, url snarf... ------------ Que voyez-vous ? wireshark montre les signatures des différentes phases de l'attaque, urlsnarf fait un focus sur des urls (pas toujours en temps réel), driftnet n'affiche pas toujours des choses... Testez aussi une consultation de site en HTTPS depuis la victime... arpspoof une alternative à ettercap (pour aller plus loin) ================================= Vous pouvez essayer d'utiliser arpspoof pour faire une attaque ARP Poisoning. Personnellement à part observer un blocage de mon accès Internet depuis ma machine cible, je n'ai rien observé d'autres... Mais je n'ai pas fait de captures de trames pour essayer de comprendre d'où venez le problème ? Trouverez-vous pourquoi ? Comment arpspoof fait-il suivre les paquets comparativement à ettercap ? Pirate: Histoire de laisser passer les paquets de la victime au routeur et du routeur à la victime... ------------------------------- "If your machine isn't forwarding the packets, the internet connection of the user will freeze and therefore the attack will be useless." echo 1 > /proc/sys/net/ipv4/ip_forward # ou bien sysctl -w net.ipv4.ip_forward=1 Pirate: Lancer une attaque "arpspoof" ------------------------------- On va utiliser ici l'outil arpspoof du paquet dsniff. man arpspoof # NAME # arpspoof - intercept packets on a switched LAN # SYNOPSIS # arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host # DESCRIPTION # arpspoof redirects packets from a target host (or all hosts) on the LAN intended for another host on the LAN by forging ARP replies. This is an extremely effective way of sniffing traffic on a switch. Installation sous debian-like sudo apt-get install dsniff # Divers outils pour écouter le trafic réseau Exemple : sudo arpspoof -i wlo1 -t [IP de la VICTIME] -r [IP du ROUTEUR] Avec * -i pour spécifier l'interface de votre machine Pirate * -t pour spécifier l'IP de la victime * -r pour empoisonner à la fois la victime et la machine à laquelle elle se connecte et ainsi capturer le traffic dans les deux sens * host IP de la machine à qui la victime destine ses paquets (en général la passerelle locale) Arrêter le processus (et "ré-arper" les cibles) avec CTRL+C Cleaning up and re-arping targets... Pirate: Attention à bien penser à remettre en état sa machine ======================== * `echo 0 > /proc/sys/net/ipv4/ip_forward` si utilisé * arpspoof et ettercap "ré-arp" leurs cibles Webographie ==================== Ce tuto s'inspire des tutoriels en ligne suivant : * https://www.kali-linux.fr/hacking/arp-poisoning-avec-ettercap * https://ourcodeworld.com/articles/read/422/how-to-perform-a-man-in-the-middle-mitm-attack-with-kali-linux * ...