image arp poisoning
Pour nous contacter (+33) 02 90 38 04 42
Numéro non surtaxé

ARP Poisoning.


Comment usurper une identité réseau.
Faire croire qu'on est une autre machine sur un réseau.


Théorie sur ARP

Une requête ARP est un message qu'un ordinateur enverra à la broadcast qui demande "Qui a cette adresse IP ? Si c'est vous, envoyez la réponse à l'adresse MAC suivante". Le message est diffusé à tous les ordinateurs du réseau.

Si cette IP existe sur le réseau, l'entité concernée va répondre en adressant une réponse ARP à l'adresse MAC indiquée dans la requête, disant "Mon adresse MAC est la suivante, et mon IP est ceci". En général, on garde en mémoire temporairement les associations MAC/IP, de façon à ne pas avoir à envoyer une requête ARP pour chaque paquet envoyé au même destinataire.

Exemple

Résumons ceci par l'exemple suivant, où on prend deux ordinateurs A et B d'un réseau,
d'adresses MAC et IP a1:b2:c3:d4:e1:f1/192.168.0.101 et a2:b2:c2:d2:e2:f2/192.168.0.102 respectivement :

Etape 1

L'ordinateur A forge le paquet ARP suivant : Requête ARP - MAC Source : a1:b2:c3:d4:e1:f1 - MAC Destinataire : FF:FF:FF:FF:FF:FF - "Qui est à 192.168.0.102 ?", puis l'envoie.

Etape 2

Après que la broadcast ait diffusé le paquet sur tout le réseau, l'ordinateur B reçoit le paquet écrit précédemment. Reconnaissant son adresse IP, il renvoie le paquet suivant : Réponse ARP - MAC Source : a2:b2:c2:d2:e2:f2 - MAC Destinataire : a1:b2:c3:d4:e1:f - "192.168.0.102 est à a2:b2:c2:d2:e2:f2".

Etape 3

L'ordinateur A garde localement dans son cache la correspondance entre le MAC a2:b2:c2:d2:e2:f2 et l'IP 192.168.0.102.

Théorie sur ARP Poisoning

Le but de l'empoisonnement des caches ARP est simple, c'est d'envoyer des requêtes ARP de façon à ce que le cache d'un système soit réécrit avec les données que l'on veut et ceci est facilité par la flexibilité du protocole ARP. En réalité, l'idée est d'envoyer des paquets reply spoofés non-sollicités (c'est-à-dire qui ne font pas suite à un paquet ARP request).

La conception d'ARP fait qu'une réponse non-sollicitée entraîne la réécriture du cache, comme si celle-ci faisait suite à une requête, tout simplement car il serait très couteux au niveau mémoire de retenir toutes les requêtes en local et parce qu'ARP a été conçu pour être un protocole simple et léger.

Etape 1

Autrement dit, si un PC A envoie à un PC B une réponse ARP avec comme source un PC C, disant qu'il se trouve à a1:b2:c3:d4:e1:f1, le PC B réécrira son cache ARP et associera l'IP du PC C avec l'adresse MAC fournie. Quand il voudra communiquer avec le PC C, il communiquera donc avec cette nouvelle adresse MAC.

Vous comprenez désormais la puissance de ce type d'attaque, puisqu'elle permet de détourner n'importe quel flux réseau à sa guise. Etudions maintenant les 3 utilisations principales des ARP Poisoning

Mac Flooding

C'est une des attaques les plus communes sur les réseaux. Il faut bien comprendre que ce n'est pas une attaque visant une machine sur un réseau mais bel et bien les switches du réseau. Habituellement, les commutateurs maintiennent une structure de table appelée MAC Table. Cette table MAC se compose d'adresses MAC individuelles des ordinateurs hôtes sur le réseau qui sont connectés aux ports du commutateur. Cette table permet aux commutateurs de diriger les données des ports où se trouve le destinataire. Les hubs diffusent les données sur l'ensemble du réseau, ce qui permet aux données d'accéder à tous les hôtes sur le réseau, mais les commutateurs envoient les données à la (les) machine (s) spécifique (s) dont les données sont destinées à être envoyées. Ce but est atteint grâce à l'utilisation de tables MAC.

Le but de l'inondation MAC est de supprimer cette table MAC. Dans une attaque typique de MAC Flooding, l'attaquant envoie des trames Ethernet dans une proportion énorme. Lors de l'envoi de nombreuses trames Ethernet au commutateur, ces trames auront différentes adresses émetteurs. L'intention de l'attaquant est de consommer toute la mémoire du commutateur utilisée pour stocker la table d'adresses MAC. Les adresses MAC des utilisateurs légitimes seront supprimées de la table MAC. Maintenant, le commutateur ne peut pas transmettre les données entrantes au système de destination. Un nombre considérable de trames entrantes sera renvoyée sur tous les ports.

La table d'adresses MAC étant pleine, il est impossible d'enregistrer de nouvelles adresses MAC. Il conduira le commutateur à entrer dans un mode d'ouverture de session et le commutateur se comportera maintenant comme un concentrateur de réseau. Il transmettra les données entrantes à tous les ports comme du broadcasting. Voyons quels sont les avantages de l'attaquant avec l'attaque des MAC Flooding.

Comme l'attaquant fait partie du réseau, il recevra également les paquets de données destinés à la machine victime ainsi qu'aux autres machines sur le réseau. Habituellement, un analyseur de paquets est utilisé pour capturer ces données sensibles.

Après avoir lancé une attaque d'inondation MAC avec succès, l'attaquant peut également suivre une attaque anti-spoofing ARP. Cela permettra à l'attaquant de conserver l'accès aux données privilégiées même après que les commutateurs attaqués reviennent dans un mode de fonctionnement normal.

Denial of Service (DOS)

Isoler un ordinateur sur un réseau paraît plutôt simple à présent. Si on empoisonne ses caches ARP en se faisant passer pour la passerelle du réseau et qu'on cause chez lui une fausse association entre l'IP de la passerelle et une adresse MAC quelconque, dès qu'il voudra par exemple envoyer un paquet sortant du réseau vers Internet, il enverra ce paquet a l'adresse MAC spécifiée. Si le système présent a cette adresse MAC ne reroute pas les paquets (c'est l'option par défaut sous UNIX/linux), l'ordinateur ne peut plus communiquer avec l'extérieur, nous avons bien un Déni de Service. Il est possible de paralliser un réseau entier en reroutant tous les systèmes (c'est à dire en empoisonnant tous les caches de tout les systèmes auquel on envoit une transmission ARP quelconque). Le réseau entier est coupé de l'extérieur. L'étape suivant est plus intéressante.

ARP Spoofing (Man in the middle)

L'ARP Spoofing est une attaque dans laquelle l'attaquant envoie des messages ARP falsifiés (Address Resolution Protocol) afin que l'adresse MAC des attaquants soit liée à l'adresse IP d'un utilisateur légitime dans le réseau. Le protocole de résolution d'adresse est un protocole utilisé par le protocole Internet généralement par IPv4 pour mapper l'adresse IP d'une machine à une adresse physique comme l'adresse MAC, également appelée adresse Ethernet.

Effectivement, si on peut rediriger les flux réseaux, pourquoi ne pas se les envoyer ? Nous voici dans le principe de l'Active Sniffing qui consiste à faire en sorte que des paquets qui ne sont pas destinés au système local à y arriver et ensuite à les capturer. Cette technique s'appelle la redirection ARP. Finalement, la différence essentielle avec une attaque ARP de type DoS revient au reroutage des paquets. Pour cela, selon les systèmes, il faut modifier l'options ip-forward de /etc/network/options à yes, ou ajouter la ligne net.ipv4.conf.default.forwarding=1 à /etc/sysctl.conf (ou du moins mettre l'option à 1 si elle était à 0).

Etape 1

On envoie un paquet spoofé à un système A, contenant pour source un système B en indiquant notre MAC. Le système A nous enverra donc ses paquets dès qu'il s'agira de communiquer avec B.

Etape 2

On envoie un paquet spoofé au système B, contenant pour source A en indiquant notre MAC. Le système B nous enverra donc ses paquets dès qu'il s'agira de communiquer avec A.

Etape 3

Dès qu'un paquet arrive sur notre système, il est rerouté s'il ne s'agit pas de notre IP. Ainsi, aucun des deux systèmes ne va, ni être DoS, ni se rendre compte de la supercherie. Il suffit de sniffer les paquets entrants du périphérique concerné pour lire les paquets que s'envoient ces deux systèmes.

Comment prévenir l'ARP poisoning ?

Bien que cette technique soit efficace à 100% sur une très grande majorité de réseaux, il est possible de l'éviter et cela est assez simple. Il faut demander la staticité des caches ARP : ainsi, dès la connexion d'un système au réseau et après le premier échange ARP, le cache est rempli et ne peut plus être réécrit par la suite. Bien sûr, c'est couteux sur des réseaux importants et présente un gros inconvénient sur un réseau qui a besoin de flexibilité. Il est également possible d''utiliser:

  1. Sécurisation des ports sur les switches
  2. Authentication auprés d'un serveur AAA
  3. Mettre en place de lesures de sécurité pour éviter ARP Spoofing ou IP Spoofing
  4. Implémenter IEEE 802.1X

La sécurisation des ports est souvent utilisée comme mesure de contre-mesure pour l'attaque des inondations MAC (MAC Flooding). Les switches (commutateurs) sont configurés pour limiter le nombre d'adresses MAC pouvant être apprisent sur les ports connectés aux stations finales. De plus, une petite table d'adresses MAC "sécurisées" est maintenue avec la table d'adresses MAC traditionnelle. Cette table sert également de sous-ensemble de la table d'adresses MAC. Les switches (commutateurs) Cisco sont disponibles avec un système de sécurité de port intégré.

Authentification avec serveur AAA, Dans cette méthode, les adresses MAC découvertes sont authentifiées auprés un serveur d'authentification, d'autorisation et de comptabilité (serveur AAA) et ces adresses sont ensuite filtrées. Pour les personnes intéressées par la mise en oeuvre d'un serveur FreeRadius

Mesures de sécurité pour éviter l'ARP Spoofing ou l'IP Spoofing. Comme mesure de sécurité supplémentaire pour prévenir les falsifications ARP ou la falsification d'adresses IP, c'est d'effectuer également un filtrage additionnel sur les adresses MAC des paquets unicast.

Mettre en œuvre les suites IEEE 802.1X, La mise en œuvre des suites IEEE 802.1X permettra aux règles de filtrage des paquets d'être installées explicitement par un serveur AAA basé sur des informations apprisent dynamiquement sur les clients du réseau, y compris l'adresse MAC. Ce sont les méthodes souvent utilisées pour empêcher l'attaque par MAC Flooding