PROJET AUTOBLOG


IT-Connect

Site original : IT-Connect

⇐ retour index

Attaque Man in the middle et DOS via ARP spoofing

lundi 14 avril 2014 à 09:00

I. Présentation

L’ARP est un protocole qui, de part sa conception, expose les réseaux informatiques et leurs composants à des vulnérabilités et des dangers qui sont faciles à mettre en place une fois que l’on connait bien son fonctionnement. Pour rappel, nous avons déjà étudié dans un précédent article le fonctionnement et le rôle d’ARP au sein des réseaux informatiques. Nous allons ici voir en quoi l’ARP est exploitable au niveau de l’attaque informatique afin d’effectuer des attaques de type MITM  (“Man in the Middle“) ainsi que des attaques DOS (“Denial Of Service“).

II. Le point faible du fonctionnement d’ARP et d’Ethernet

Comme nous l’avons vu lorsque nous avons étudié le fonctionnement d’ARP et son rôle dans les trames Ethernet (couche 2 du modèle OSI et TCP/IP), nous avons vu que les adresses MAC étaient utilisées pour la formation des trames ethernet et le rôle de l’ARP était donc de fournir, à partir d’une adresse IP, l’adresse MAC correspondante. Une carte réseau refusant par défaut les paquets reçus n’ayant pas son adresse MAC comme adresse MAC source, une trame Ethernet doit forcément avoir un couple IP-MAC correcte pour transiter correctement d’un hôte A à un hôte B.

Cependant, le fonctionnement d’ARP sur les ordinateurs est qu’à chaque réception d’un paquet, la carte réseaux va vérifier le couple IP-MAC et mettre à jour sa table ARP (aussi appelée cache ARP) si le couple trouvé n’est pas enregistré, ceci dans le but de ne pas faire de requête ARP à chaque échange. Partant de ce principe, on peut très bien imaginer que si l’on a trois hôtes, un hôte pourrait très bien informer un deuxième hôte via une requête ARP qu’il dispose d’une certaine adresse MAC sans que cela soit vrai.

Le principe de l’ARP ou du MAC spoofing (spoofing voulant dire “parodier”, “usurper”) est d’envoyer des informations à un systèmes afin de lui faire enregistrer des informations qui ne sont pas les bonnes et qui usurpent l’identité (la relation IP-MAC) d’un autre système. Partons du schéma suivant :

ARP spoofing

Schéma de base sur lequel nous allons baser nos attaques

Ici, le Pirate a l’adresse MAC 00:0C:19:AC:44:CA et le serveur l’adresse MAC 00:0C:29:4A:A4:41, la table adresse MAC chez le client ressemble donc à cela :

Arp spoofing, table ARP

Table ARP du client avant attaque

On voit donc ici les correspondances IP – MAC qui correspondent à notre schéma. Si le pirate envoie des paquets au client avec l’adresse IP du source du serveur mais en laissant son adresse MAC (ce qui est faisable si on construit nos paquets nous même plutôt que si on laisse notre carte réseau le faire), la table ARP de notre client va donc enregistrer le couple suivant :

192.168.19.132 – 00:0C:19:AC:44:CA

La table ARP de notre client va donc ressembler à cela :

ARP spoofing, table ARP

Table ARP après attaque

Cela vient du fait que l’enregistrement est marqué comme dynamique, donc volatile, et qu’il peut être mis à jour à chaque réception de paquet présentant des couples IP – MAC différents. Les paquets que le client va générer à destination du serveur vont donc à présent se former avec l’adresse IP destination du serveur mais l’adresse MAC destination du pirate étant donné qu’il se base pour cela sur sa table ARP et que celle-ci est falsifiée.

Pour ceux qui ont du mal à comprendre, il faut se pencher sur le fonctionnement des switchs de niveau 2 qui est assez basique. Quand il reçoit un paquet, il va observer l’adresse MAC destination (une trame Ethernet contenant un champ adresse destination et un champ adresse source, toutes deux des adresses MAC), comparer cette adresse avec sa table CAM (Content Adressable Memory) qui contient la correspondance MAC – port sur lequel elle est affectée. Si la MAC a été enregistrée précédemment sur une de ses interfaces, il envoie le paquet sur cette interface, sinon il émet une requête ARP afin de voir sur quelle interface est l’adresse MAC renseignée.

On voit donc que si la table ARP de notre cible est falsifiée, il va former ces trames avec l’adresse IP du serveur mais va en fin de compte les envoyer au pirate car il formera ses requêtes avec comme adresse MAC de destination celle du pirate.

III. Mise en oeuvre de l’attaque avec arpspoof

Passons à la pratique, si vous avez encore du mal  à saisir le principe, la mise en pratique d’une attaque ARP va vous aider à mieux comprendre son fonctionnement et ses possibilités. On parle d’ARP spoofing ou de MAC spoofing quand il s’agit de falsifier la table ou le cache ARP d’un système. Pour information, l’anglais “spoof” ou “spoofing”  se traduit “parodier” ou “usurper” en français.

Attaque Man in the Middle

L’objectif est ici de se faire discret en faisant tout pour ne pas soupçonner une attaque, l’attaquant va donc rediriger les paquets détournés afin que les utilisateurs naviguent et utilisent le réseau sans perturbation. On obtient ce genre de comportement lorsque l’on cherche à capturer des informations transitant entre deux systèmes par exemple, l’ARP spoof va alors être une étape de l’attaque MITM (elle ne constitue pas l’intégralité de l’attaque).

Dans notre attaque, nous suivons le même schéma qu’exposé un peu plus haut. Nous allons ici essayer de capturer une session FTP via ARP spoofing. Plus clairement, nous allons faire en sorte d’intercepter les communications du client destinées au serveur (sur lequel nous avons installé un service FTP) afin de capturer les paquets et les informations mais nous allons également avoir pour soucis de faire suivre les paquets afin que le client ne se doute de rien et accède bien au serveur.

Sur notre poste pirate (KaliLinux), on active dans un premier temps le forwarding  de paquet :

echo 1 > /proc/sys/net/ipv4/ip_forward

Sans cette commande, les paquets ne pourront pas transiter à travers le système de notre pirate et ainsi atteindre leur cible originelle. Dans un deuxième temps, nous allons utiliser “arpspoof” pour envoyer continuellement des paquets ARP qui vont falsifier la table ARP de notre client. On va donc indiquer l’IP du serveur a notre adresse MAC :

arpspoof -t 192.168.19.131 192.168.19.132

 On peut traduire cette ligne de commande par “fait moi passer pour 192.168.19.132 auprès de 192.168.19.131“. Pour information, on va envoyer des paquets de façon constante car si une communication est effectuée du serveur vers le client, ce dernier va à nouveau mettre à jour sa table ARP et cette fois-ci avec les informations correctes. Il faut donc remettre continuellement à jour la table ARP de notre client pour quelle reste falsifiée. Voici la sortie que nous aurons une fois la commande lancée :

ARP spoofing

Sortie aprés l’exécution de l’outil arpspoof. On remarque l’envoi de paquet ARP reply indiquant que l’IP du server (192.168.19.132) a maintenant l’adresse MAC du pirate (00:c:29:ac:44:ca)

On voit donc clairement que l’outil envoie des paquets ARP reply (je vous renvoie vers le tutoriel sur l’ARP pour plus de précision), ce qui va avoir pour effet de falsifier la table ARP de la cible. Il faut savoir que dans une utilisation normale d’ARP, les ARP reply interviennent en réponse à une requête ARP diffusée le plus souvent en broadcast par un autre hôte ou alors lorsqu’un hôte arrive sur un nouveau réseau. Si on observe ces paquets avec Wireshark  :

ARP spoof

On voit ici très clairement les paquets successivement envoyés par notre pirate. On voit que ce sont des reply ARP et chose intéressante, on remarque que le Sender MAC address est bien l’adresse MAC de notre pirate (conformément à notre schéma) mais que le Sender IP address est celle de notre serveur, ce qui montre bien le fonctionnement de l’ARP spoofing. Pendant l’envoi de ces informations, voici à quoi va ressembler la table ARP de notre cible :

ARP spoofing, table ARP

Table ARP après attaque

 Nous allons maintenant poursuivre notre attaque MITM en simulant une requête FTP de la part de notre client vers notre serveur. En toute logique, les paquets vont donc atterir chez notre pirate car le client va utiliser sa table ARP (falsifiée), pirate qui va faire suivre les paquets car il a l’ip forwarding d’activée. On procède donc  à une écoute réseau sur notre Pirate avec Wireshark durant la requête :

ARP spoof

Capture des identifiants FTP via ARP Spoofing

On voit donc les identifiants FTP passés par notre pirate alors que normalement ils ne doivent pas y transiter mais si on observe l’entête Ethernet de ces paquets FTP :

ARP spoof

Entête Ethernet des paquets FTP

On voit donc que la destination des paquets FTP est bien l’IP du serveur mais qu’elle est également la MAC de notre pirate, ce qui fait qu’un switch de niveau 2 va diriger les paquets vers notre pirate plutôt que vers le serveur.

ARPSPOOF08

Attaque DOS

L’objectif est ici de mettre à mal un service informatique ou une partie de celui-ci, que ce soit une plage IP, un ou plusieurs hôtes ciblés. Pour ce faire, il faut suivre également le même principe de l’attaque MITM sauf que nous allons désactiver l’ip forwarding. Ainsi, les paquets ne seront pas retransmis à leur cible originelle et tomberont donc dans le vide, rendant ainsi la connectivité de notre ou nos cibles à mal car aucun paquet n’arrivera à destination. Pour ce faire, on va par exemple se faire passer pour la passerelle auprès du client, dès qu’il voudra aller sur Internet ou sur un autre réseau, les paquets destinés à la passerelle arriveront sur le pirate qui ne les fera pas suivre.

Principe d’une attaque à plus grande échelle (plusieurs hôtes affectés)

Nous avons dans notre exemple ciblé qu’un seul hôte, cependant, nous pouvons également opter pour la diffusion des messages ARP falsifiant les tables ARP des cibles en broadcast, ce qui aura pour effet d’affecter toutes les machines se situant sur la même plage IP que nous. On appelle ce mode de fonctionnement de l’attaque ARP spoofing le gratuitous ARP.  Par exemple :

aprspoof -t 192.168.19.255 192.168.19.2

 Cette commande, en suivant notre schéma d’origine, va nous faire passer pour la passerelle sur tous le réseau et va donc rediriger l’intégralité du trafic du réseau vers notre poste pirate. On pourra alors au choix en activant l’ip forwarding capturer le trafic et le faire suive pour que les postes ne se doutent de rien ou alors désactiver l’ip forwarding pour causer une attaque par déni de service