Avant de commencer un rapide rappel vulgarisé du fonctionnement du protocole ARP.

Le protocole ARP (Adress Resolution Protocole) sert à connaître l'adresse physique (aussi appelée adresse MAC) d'une carte réseau par rapport à une adresse IP sur un réseau local. Chaque carte réseau dispose d'une adresse MAC unique standardisée sur 48 bits (ex : A5:FE:12:BC:A5:11) qui contient différentes informations (nb : l'adresse MAC d'un périphérique réseau peut être facilement falsifiée).

Quand un terminal doit établir une communication avec un autre, il commence par regarder si la table ARP contient l'adresse MAC par rapport à l'adresse IP avec laquelle il souhaite communiquer. Si oui il utilise l'adresse MAC en référence. Sinon il envoie une trame sur le réseau et attend qu'un terminal s'identifie comme étant le propriétaire de l'adresse IP. Il stocke alors l'adresse MAC et l'adresse IP de référence dans la table ARP pour un usage futur (ce qu'on appelle le cache ARP). 

Qu'est-ce que l'ARP spoofing ?

L'ARP spoofing, comprenez littéralement  "usurpation ARP" est une technique offensive utilisée dans le cadre d'une attaque de l'homme du milieu (MITM man in the middle) réalisé sur un réseau local. L'ARP spoofing vise à écouter, détourner, modifier voir arrêter les flux de données qui transitent entre deux équipements cible/passerelle (ex : téléphone portable et routeur du réseau wifi où est connecté le téléphone). Ce type d'attaque permet des scénarios complexes et particulièrement élaborés lors d'un audit de sécurité.

Qu'elles sont les étapes d'une attaque ARP spoofing ?

  1. Un ordinateur (A) se connecte à internet à l'aide d'une connexion wifi à un routeur (B).
  2. Un attaquant (C) accède au réseau wifi où se trouve l'ordinateur (A).
  3. Une fois, connecter sur le réseau local notre attaquant (C) peut maintenant parfaitement réaliser une attaque ARP spoofing en empoisonnant les caches ARP de l'ordinateur (A).
  4. Quand l'empoisonnement réussi, l'ordinateur (A) se met alors à envoyer l'ensemble de ses paquets de données (requêtes) au système contrôlé par notre attaquant (C).
  5. L'attaquant intercepte et modifie le contenu qui transite entre l'ordinateur A et le routeur dans les deux sens. Fondamentalement, c'est tout.

À quoi sert l'ARP spoofing concrètement lors d'une attaque MITM ?

L'attaque par usurpation ARP permet de rediriger des flux de données en effectuant un spoofing DNS (falsifier les réponses des serveurs qui permettent la résolution des noms de domaines en adresse IP). Il est donc parfaitement possible de rediriger une page https sécurisée vers une copie du site aux mains du hacker pour collecter les données d'identifications qui seront saisies par l'utilisateur. Le spectre de cette attaque offre entre autres la possibilité de remplacer des données. Ainsi supposons un site en http, il est parfaitement envisageable lors de la requête qui génère la page, de remplacer le contenu d'une publication ou d'images pour réaliser une désinformation. Dans le même ordre d'idée, des communications non chiffrées peuvent être interceptées et/ou modifiées. Autre cas : imaginons une connexion à un serveur FTP, aucun protocole de chiffrement n'étant utilisé les identifiants qui permettent l'accès au serveur sont lisible en clair dans les échanges entre le client et le routeur.

Principes généraux pour effectuer une attaque MITM ARP spoofing :

Le concept général d'une attaque MITM par usurpation ARP sans provoquer un déni de service est basique et se limite à quatre étapes.

  1. Être connecté sur le réseau local cible.
  2. Découvrir l'adresse IP du routeur.
  3. Scanner le réseau à la recherche d'un équipement pour connaître son IP.
  4. Passer sa carte réseau en mode promisc (écoute du trafic).
  5. Rediriger les paquets de l'équipement cible vers le routeur.
  6. Rediriger à l'inverse les paquets du routeur vers l'équipement cible.

Plusieurs logiciels de la suite Kali Linux serviront pour réaliser des attaques MITM plus ou moins élaborées .

  • Nmap : Nmap est un outil puissant permettant de scanner les réseaux, nous l'utiliserons ici pour découvrir les adresses IP allouées aux équipements du réseau local.
  • Ettercap : L'incontournable pour réaliser une attaque ARP spoofing. Manipuler les données interceptées ou encore attaquer des connexions SSL ou SSH.
  • Wireshark : pour analyser les packets qui transitent sur le poste de l'attaquant.
  • SET : Pour les attaques par ingénieries sociales (ici, cloner un site et récupérer les informations d'identifications).

Mise en œuvre d'une attaque MITM basique ARP spoofing :

 Imaginons le scénario type : un attaquant réalise une attaque sur un réseau WIFI et réussit à obtenir les identifiants. Il est maintenant connecté sur le réseau local.

ARP spoofing première étape : découvrir l'adresse IP du routeur.

Il va commencer par récupérer l'adresse du routeur, il ouvre donc un prompt et tape la commande

IP route

Il obtient comme réponse :

default via 192.168.1.1 dev wlan0

 Il sait maintenant que l'adresse IP du routeur est 192.168.1.1 pour son interface wlan0.

ARP spoofing deuxième étape : découvrir l'ensemble des équipements et les adresses IP allouées à ces équipements sur le réseau local.

Toujours dans son terminal, il démarre nmap et effectue la commande de scan des adresses IP du routeur jusqu'à la limite de 255 (soit l'intégralité du réseau local).

nmap 192.168.1.1-255

 Après quelques secondes la console lui retourne une liste d'adresse IP, supposons qu'il souhaite cibler 192.168.1.9.

ARP spoofing troisième étape : basculer sa carte en mode promisc.

Une rapide explication théorique avant d'aller plus loin sur les attaques ARP spoofing. Le mode promisc permet à la carte réseau d'écouter l'ensemble des paquets qui circulent sur le réseau. Incluant ceux qui ne lui sont pas adressés. À noter qu'à partir du moment où un équipement réseau se place en mode promiscuité, la charge du processeur de l'équipement va augmenter en conséquence. Et de facto, la vitesse des réponses réseau va chuter, ce qui est un indicateur possible pour des logiciels de surveillance réseau.

À nouveau dans le terminal de commande, une simple ligne, permet d'activer le mode promisc sur la carte réseau.

ifconfig wlan0 promisc

ARP spoofing dernière étape : l'empoisonnement des caches ARP.

L'empoisonnement des caches ARP est l'étape clé dans le processus d'une attaque ARP spoofing. Nous allons nous attarder sur les possibilités offertes nativement par l'outil ettercap.

Pour empoisonner des caches ARP entre le routeur 192.168.1.1 et l'ordinateur cible à l'adresse IP 192.168.1.9 et pouvoir sniffer le trafic entre ces deux équipements :

ettercap -i wlan0 -T -M arp:remote /192.168.1.1/ /192.168.1.9/

À partir de là, notre carte réseau usurpe les adresses MAC respectives dans les deux sens de communications (émissions/réceptions) sur l'interface wifi wlan0. Et l'ensemble des packets envoyés vers ou depuis le routeur et vers ou depuis l'ordinateur cible transiteront par notre carte réseau.

Dans le même ordre d'idée, il est parfaitement possible d'empoisonner les caches ARP entre le routeur et une plage d'équipement (ce qui ralentit terriblement le trafic réseau) ici de l'adresse IP 192.168.1.2 jusqu'à 192.168.1.9.

ettercap -i wlan0 -T -M arp:remote /192.168.1.1/ /192.168.1.2-9/

Explications sur les paramètres employés :

-i : permets de définir l'interface réseau (la carte réseau) à utiliser.

-T : mode texte pour avoir un retour dans le prompt.

-q : (optionnel) sert pour définir si on ne souhaite pas voir les paquets.

-M arp:remote : pour définir la portée de l'attaque routeur/terminal cible.

-w (optionnel) : si on souhaite sauvegarder une trame réseau capturée dans un fichier de sortie au format PCAP.

ARP Spoofing et DNS Spoofing

Avant d'aller plus loin sur les méthodes de DNS Spoofing, il est important de comprendre le fonctionnement du DNS et de savoir ce qu'est un DNS.

Qu'est-ce qu'un DNS ?

Le DNS pour Domaine Name System est un système de serveur qui sert à transformer les noms de domaines en adresse IP en interrogeant un de ces serveurs DNS qui se comporte comme un annuaire (ex : analyse-innovation-solution.fr devient 164.132.235.17). C'est ce qu'on appelle une résolution de nom de domaine.

Pour permettre à ce processus de fonctionner correctement, l'ordinateur (routeur,téléphone, tablette, ou tout autre terminal) doit embarquer l'adresse IP des différents serveurs DNS. Si il ne dispose pas de ces adresses, il commence par interroger le serveur DNS du routeur de l'infrastructure dont il dépend.

Vous commencez à faire le rapprochement avec ce qui est expliqué plus haut ? Sans chiffrement asymétrique entre les deux parties, impossible de définir si la communication s'établit bien avec le bon terminal ou avec un terminal placé en MITM à l'aide d'une attaque ARP Spoofing.

Comment réaliser une attaque MITM - DNS spoofing ?

Dans un premier temps nous allons commencer par modifier le fichier etter.dns qui se trouve dans /ettercap/etter.dns. Ce fichier se structure sur 3 colonnes un hostname, un paramètre, une IP de destination. Le paramètre le plus utile étant A pour signifier une redirection vers une adresse IP. Chaque ligne correspond à une redirection.

Dans notre cas nous allons faire pointer www.analyse-innovation-solution.fr vers un serveur hébergé en local à l'adresse IP 192.168.1.5 qui contient un copie du site avec d'autres contenues on sera donc simplement sur une opération de désinformation.

 Notre enregistrement dans le fichier etter.dns correspondra donc à ça :

www.analyse-innovation-solution.fr     A      192.168.1.5

 

Pour commencer l'attaque, on lance simplement la ligne de commande suivante qui reprend les mêmes paramètres que dans les dernières attaques en précisant un nouvel argument -P avec pour paramètre dns_spoof :

ettercap -i wlan0 -T -q -P dns_spoof -M arp:remote /192.168.1.1/ /192.168.1.9/

Si tout à fonctionner le prompt vous renvoi : dns_spoof: [www.analyse-innovation-solution.fr] spoofed to [192.168.1.5] lors d'une tentative de connexion du PC 192.168.1.9 vers ce site.

Comment collecter des mots de passes à l'aide d'une attaque MITM et le DNS spoofing ?

Dans un premier temps on utilisera l'outil de pentest SET créé par David Kennedy disponible sous Kali pour réaliser un clone du site cible.

Pour démarrer cet outil :

setoolkit

Puis pour le basculer en attaque d'ingénierie sociale avec duplication de site avec collecte des informations d'identifications :

  1. Social Engineering Attacks > 1
  2. Website Attack Vectors > 2
  3. Credential Harvester Attack Method > 3
  4. Site cloner > 2
  5. Fournir l'adresse IP du serveur qui recevra les packets POST envoyé par notre le clone du site web (ici 192.168.1.5)
  6. Fournir l'url de la page à cloner : https://site-cible.fr/login

Une fois ces étapes complétées, il suffit de reproduire l'attaque DNS spoofing expliquée plus haut en modifiant les informations du fichier etter.dns pour coller aux besoins de l'attaque.

Le fichier correspondra donc à :

www.site-cible.fr/login  A 192.168.1.5

 À partir de là, toute saisie d'informations avec validation dans le formulaire hébergé sur notre serveur qui usurpe www.site-cible.fr/login sera retournée dans le prompt.