Les techniques d'attaque : comprendre l'ARP poisoning

Les techniques d'attaque : comprendre l'ARP poisoning
Photo by Zachary Spears / Unsplash

Avertissement

Comme souvent sur ce genre de billet, je tiens à rappeler que le contenu que vous trouverez ici l'est uniquement à des fins pédagogiques.

L'intrusion non autorisée dans un système d'information est passible d'amende et/ou d'emprisonnement.

Comprendre les attaques, c'est savoir comment les éviter. Dans ce billet, je vous propose de voir un modèle d'attaque réseau courant : l'ARP poisoning.

L'ARP, c'est quoi ?

Pour comprendre l'attaque, il faut déjà comprendre sur quoi elle repose.

Pour l'ARP, nous repartirons donc du modèle OSI, décrivant les différentes couches du réseau.

Schéma des différentes couches du modèle OSI
Source : Wikipédia

L'ARP est le lien entre la couche 2 et 3, c'est ce qui va permettre à un ordinateur ou serveur de convertir une adresse IP en adresse matérielle (MAC).

Pour fonctionner, l'ARP utilise un système de broadcast. Chaque périphérique sur le réseau envoie globalement à l'ensemble dudit réseau son adresse IP associée à son adresse matérielle.

Vous pouvez facilement accéder et modifier cette table avec la commande arp -a (que ce soit sous Linux ou Windows).

Table ARP affichée dans la console depuis un ordinateur Windows
Exemple d'affichage de la table ARP

La faiblesse de ce protocole

Je pense que vous avez déjà localisé le point faible : chaque nœud envoie l'information, et rien ne permet de contrôler la véracité de celle-ci.

Ainsi, je peux très bien annoncer mon adresse MAC comme correspondant à l'IP du routeur.

Chaque nœud (ou les nœuds ciblés) sur mon réseau recevra donc cette information et mettre à jour sa table ARP avec la correspondance.

Comment se passe l'attaque?

Il y a un prérequis, être sur le même réseau que sa cible.

Ensuite l'idée consiste à se mettre entre la cible et le routeur. Cela permettra donc de lancer une attaque de type "Man in the middle" pour capturer tout le trafic réseau entre ma cible et le routeur.

Pour l'exemple que je vais prendre ci-dessous, je vais partir de mon propre réseau, et je vais me mettre entre mon PC et ma Livebox.

Pour ce faire, je vais donc envoyer deux informations différentes.

Depuis mon PC attaquant, je vais indiquer à ma livebox que je suis le PC de la victime.

À ma victime, je vais dire que je suis la livebox. De cette manière, cela me permet d'avoir les deux flux d'informations qui transit au travers de mon PC d'attaque, en me positionnant de la même manière qu'un proxy.

Avant/Après l'attaque en deux schémas
Un avant/après de l'attaque

L'attaque en détail

Prérequis

Comme je l'ai décrit plus haut, je vais donc avoir besoin de plusieurs choses pour procéder à mon attaque :

  • Un accès au même réseau que ma cible
  • Un PC avec différents outils (que je décrirais plus bas)
  • L'IP de ma cible, même si je peux m'en passer, comme nous le verrons

Dans le cas de ce billet, je vais utiliser deux machines virtuelles "Lab" :

  • Mon attaquant sera une VM utilisant Kali Linux
  • Ma cible sera un VM sous Windows 10

Détecter le PC Windows

Pour effectuer mon attaque, je vais utiliser le populaire bettercap.

Ce dernier va me fournir l'ensemble des outils dont j'ai besoin pour détecter les périphériques sur mon réseau et procéder à l'ARP poisoning.

Je vais donc le démarrer avec la commande ci-dessous :

bettercap -iface eth0

Bettercap fonctionne avec des modules, configurables et exécutables. Je ne rentrerais pas dans les détails des modules ici, et je vous invite à consulter la documentation associée pour plus de détails.

Si nécessaire vous pouvez utiliser la commande help pour voir les commandes et modules disponibles ainsi que leurs statuts.

Dans un premier temps, nous allons utiliser le module "net.probe".

Comme son nom l'indique, ce dernier va nous permettre de détecter les périphériques sur le réseau.

net.probe on
net.show

On retrouve bien ma cible ci-dessous, qui n'est autre que l'IP 192.168.109.130

Commençons à s'amuser

Maintenant nous allons lancer l'attaque sur la table ARP de la cible.

Avant de commencer, je vais juste capturer la table de ma cible.

Une capture d'écran de la console windows indiquant le contenu de la table ARP
Table ARP de ma cible

Le plus important ici est l'IP 192.168.109.2 qui correspond à l'IP de mon routeur virtuel.

Depuis ma VM Kali, toujours dans bettercap, je vais donc passer à l'offensive!

set arp.spoof.fullduplex true          #Indique de lancer l'attaque sur la cible et sur le routeur
set arp.spoof.targets 192.168.109.130  #Indique l'IP de la cible
arp.spoof on                           #Lance l'attaque

La première ligne est importante, car elle va permettre de lancer directement l'attaque des deux côtés.

À noter que certains routeurs sont protégés contre les attaques ARP. Dans ce cas, nous ne verrons que les trames sortir de la cible, mais pas le retour, ce qui limite les attaques.

Si je regarde la table ARP de ma cible maintenant, nous verrons que l'IP du routeur n'est plus la même!

Au passage, on notera qu'elle a maintenant la même adresse MAC que ma VM Kali 192.168.109.129.

Maintenant je suis capable de voir le trafic entrant et sortant de ce PC avec un simple net.sniff on

Qu'est-ce que ça m'apporte à ce point ?

Arrivé là, je suis capable de capturer l'ensemble du trafic non chiffré sortant du PC de ma victime.

Cela signifie que je peux voir :

  • Les appels en HTTP
  • Les requêtes DNS non chiffrées
  • Les requêtes SNI

C'est tout naze, on voit que le HTTP

Beaucoup diront que cela correspond à une faible partie du réseau. C'est vrai et faux à la fois.

Si je suis dans une entreprise, beaucoup considèrent qu'il n'est pas nécessaire de mettre du chiffrement pour les endpoints internes par exemple, cela permet donc de potentiellement capturer beaucoup de trafic.

De même savoir sur quel site un utilisateur va me permet potentiellement de cibler une attaque, que ce soit du phishing ou du social engineering.

Enfin, il faut voir cette partie comme une première étape, en effet, une fois que je suis positionné en man in the middle cela me permet aussi d'altérer le trafic pour modifier ce que voit ma victime, mais nous verrons ce point dans un autre billet!

En conclusion, méfiez-vous de TOUS les réseaux

Le but de ce billet est de rappeler qu'un attaquant n'est pas forcément externe, même dans votre réseau d'entreprise il est possible de faire pas mal de dégâts.

L'ARP spoofing fait partie des points qui sont normalement couverts par la plupart des routeurs d'entreprise, mais pas tous. Il est important de s'en protéger.

La plupart des routeurs grand public ne proposent pas de protections particulières à ce sujet, par exemple, je peux faire cette attaque sur ma Livebox.

Cela rappelle aussi l'importance de tout chiffrer sur le trafic sortant de votre PC, via un VPN par exemple, il existe aujourd'hui encore de très (trop) nombreux services communiquant en HTTP.

En entreprise, n'hésitez pas non plus à imposer le TLS partout, y compris en interne.

Si vous souhaitez en savoir plus sur ce qu'apporte un VPN, rendez-vous sur mon billet associé!

Un VPN protège-t-il réellement votre vie privée ?
Dernièrement, je vois de plus en plus de publicité indiquant que tel ou tel VPN protège votre vie privée. On m’a aussi posé plusieurs fois la question afin de comprendre si c’était vraiment le cas ou non. Aujourd’hui, j’ai donc décidé de vous parler de VPN.