La toile est devenue aujourd'hui, un dépotoir d'outils de piratage, tant redoutés par les entreprises, et à juste titre. Certains de ces outils regroupent à eux seuls toute la panoplie d'un expert réseau. Encore faut-il comprendre le fonctionnement de ceux-ci pour en titrer partie. Au menu du jour, l'Arp cache poisonning, une faille qui brillamment exploitée, peut causer beaucoup de dégâts.

La plupart des outils de piratage sont sur Linux. Ceci s'explique facilement par le fait qu'il s'agit d'un système d'exploitation open-source, regroupant ainsi la majeure partie des spécialistes de la sécurité, aussi bien white hats, que black hats. Néanmoins, un outil a été développé sur la plate-forme de Redmond, et il n'a rien à envier à ceux de Linux. Il permet de presque tout faire. Et nous pesons nos mots. Nous l’avons nommé Cain & Abel.

Les possibilités de Cain & Abel

Cain & Abel est un formidable outil de récupération de mots de passe. Selon l'auteur, cet outil a été inventé pour des spécialistes de la sécurité souhaitant vérifier la robustesse de leur réseau. Grâce à ce logiciel, il est possible d'obtenir toutes sortes de mots de passe dans un réseau commuté. Par un simple sniffing, il recueille et comprend toutes les protocoles suivants :

  • FTP,
  • HTTP,
  • IMAP,
  • POP3,
  • SMTP,
  • ICQ,
  • etc.

Il comprend également le WIFI et permet de casser des clés WEP et de capturer un 4-way handshake sur WPA/WPA2 pour mener une attaque par dictionnaire dans sa nouvelle version. Un véritable arsenal, à lui tout seul (cf figure 1).

figure 1. Lancement de Cain & Abel

Nous allons nous intéresser à l'ARP cache poisoning que Cain sait, bien entendu faire aussi : une technique redoutable permettant de rendre cauchemardesque la vie de la victime.

Explication de l'ARP cache poisoning

Une vague explication de cette technique, histoire de rafraîchir la mémoire, ne fera pas de mal. Un ordinateur, afin d'éviter de trop solliciter le réseau par des requêtes ARP query dans le but d'obtenir l'adresse MAC du destinataire grâce aux paquets ARP reply, possède un cache, appelé le cache ARP. Le cache maintient une correspondance entre l'adresse IP et l'adresse MAC d'un hôte sur le réseau. Mais que se passe t-il si une personne malveillante envoie elle-même des paquets ARP reply associant son adresse MAC à l'adresse IP d'un membre du réseau ? C'est très simple, puisque le cache n'effectue aucune vérification, il associera l'adresse IP de l'hôte avec la nouvelle adresse MAC. Conséquence ? Les communications de ladite victime passeront par le pirate. Ce dernier pourra donc tout savoir. Mais, ne serait-il pas possible de faire mieux comme s'immiscer dans une conversation ? La réponse est oui, et cela s'appelle une attaque Man-in-the-Middle.

Mise en œuvre de l'attaque Man-in-the-Middle

Le principe de l'attaque Man-in-the-Middle est très simple. Ceci consiste à s'introduire entre deux systèmes communiquant entre eux. Par exemple, si Alice communique des informations confidentielles avec Bob, et qu'Oscar se fait passer pour Bob auprès d'Alice et pour Alice auprès de Bob, alors il sera l'homme du milieu et il recevra tous les paquets. Cette attaque est facile à mettre en œuvre grâce à l'ARP cache poisoning. Mettons donc cette technique en pratique.

Structure du réseau

Nous allons tout d'abord commencer par définir un contexte, afin d'être le plus clair possible :

  • Soit un réseau commuté : 192.168.1.0,
  • Routeur : 192.168.1.1,
  • Alice : 192.168.1.2.

Bob est sur un autre réseau. Alice et Bob dialoguent entre eux. Oscar, qui s'est procuré un accès au réseau 192.168.1.1 en WiFi par exemple, décide d'espionner les conversations entre Alice et Bob. Dans toute la suite de l'article, nous nous placerons à la place de l'attaquant Oscar.

Empoisonnement du cache

Nous désirons donc espionner Alice. Un simple sniffing du réseau ne suffirait pas puisque le routeur ne nous transmettra pas les communications d'Alice. C'est à ce moment, que l'empoisonnement du cache rentre en jeu. Imaginons le scénario suivant : nous envoyons des paquets arp reply contenant l'adresse IP du routeur et notre propre adresse MAC. Conséquence ? Le cache de l'ordinateur d'Alice va se mettre à jour. Par la suite, dès qu'Alice dialoguera, nous entendrons sa conversation. Il ne nous reste plus qu'à remettre les paquets au routeur pour n'éveiller aucun soupçon. En effet, si on ne le fait pas, Alice ne pourra plus dialoguer et nous aurons réalisé un déni de service, chose que nous ne voulons pas faire. Nous ne sommes pas encore tout à fait satisfaits, nous pouvons faire encore mieux. En effet, pour le moment, nous recevons les dialogues d'Alice vers le routeur, mais pas l'inverse. Ce problème est vite résolu en envoyant au routeur des paquets ARP reply contenant l'adresse IP d'Alice avec ma propre adresse MAC. Il en résulte que toute conversation avec Alice, aussi importante soit-elle, passera désormais entre nos mains. Nous pourrons alors connaître les mots de passe des messageries, des logiciels, même les numéros des cartes bancaires. Une horreur pour Alice.

Comment empoisonner le cache ARP avec Cain & Abel

Cette fois encore, on se rend compte que Cain est vraiment un formidable outil. Non seulement, il va réaliser l'attaque facilement, mais en plus, il va comprendre la plupart des conversations, comme nous allons le voir. Tout d'abord, il suffit de scanner le réseau afin de voir les hôtes disponibles. Pour cela, il suffit de cliquer sur la deuxième petite icône pour activer le sniffing et ensuite de cliquer sur l'icône représentant le signe plus. Après un certain temps de recherche par le logiciel, vous aurez tous les hôtes du réseau disponibles comme vous pouvez le voir sur la Figure 2. Nous allons maintenant empoisonner le cache du routeur d'une part et celui d'Alice d'autre part. Pour cela, rien de plus facile, il suffit de cliquer sur l'onglet APR qui se trouve en bas de la fenêtre. Maintenant, nous allons dire à Cain de réaliser l'attaque Man-in-the-Middle entre le routeur et Alice. Nous allons encore cliquer sur l'icône plus, ce qui nous emmène à la fenêtre de la Figure 3. Pour commencer l'empoisonnement, il ne reste plus qu'à cliquer sur l'icône jaune dans la barre du haut. Vous pouvez vérifier par vous-même que l'attaque a bien marché en consultant le cache d'Alice (arp -a sur Windows, arp -n sur Linux) et le cache du routeur. Et maintenant, nous allons tenter de récupérer les mots de passe d'Alice lorsqu'elle tente de se connecter à sa messagerie par exemple.

figure 2. Hôtes visible sur le réseau

figure 3. Empoisonnement du cache

figure 3. Récupération des mots de passe

Récupération des mots de passe

Imaginons qu'Alice veuille aller lire ses mails sur yahoo. Cain va nous permettre de récupérer l'identifiant et le mot de passe comme le montre la Figure 4. Ce logiciel peut également récupérer sur des mots de passe sur d'autres protocoles comme telnet, etc.

Application : capture des conversations MSN

Toutes les communications passent par notre ordinateur. C'est un fait, mais pour l'instant, nous avons seulement réussi à obtenir les mots de passe. N'y aurait-il pas un moyen pour voir les conversations d'Alice sur MSN ? Bien sûr que si. Mais, cette fois, ce sera sans Cain. Il faut donc utiliser un logiciel spécifique, capable de comprendre le protocole MSNMS. Msn Sniffer comme son nom l'indique, répond exactement à nos besoins. En appuyant sur le bouton Capture, toutes les conversations d'Alice apparaîtront sur le logiciel puisque ces dernières passent par notre ordinateur avant d'aller vers le routeur.

Et sur Linux ?

Sur Linux, l'attaque est à peine plus compliquée. Tout d'abord, commençons par activer le forward des paquets sous peine de réaliser un déni de service plutôt qu'un Man-in-the-Middle. Ensuite, nous allons réaliser l'arp spoofing en utilisant la commande arpspoof, que vous devrez installer si cela n'est déjà fait. Et enfin, nous utiliserons msnsniff, pour sniffer le contenu des conversations MSN qui passent par notre ordinateur. Dans le Listing 1, vous verrez les commandes à taper dans pour réaliser l'attaque sur Alice.

# echo 1 > /proc/sys/net/ipv4/ip_forward
# arpspoof -i ath0 -t 192.168.1.1 192.168.1.2
# arpspoof -i ath0 -t 192.168.1.2 192.168.1.1
# msnsniff -d ath0 192.168.1.2

N'oubliez pas de remplacer ath0 par votre interface.

Ce que dit la loi à ce sujet

L'ARP cache poisoning tout comme Man-in-the-Middle, modifie intentionnellement les transmissions de données. Ceci est un délit qui est sanctionné par :

  • trois mois à trois ans de prison,
  • trois cents à soixante-quinze mille euros d'amende.

Aussi, je décline toute responsabilité quant à la mauvaise utilisation du contenu du présent article. Il a été fait dans l'optique de vous montrer les faiblesses du protocole ARP. La suite est donc très importante afin de vous prémunir contre toute attaque de ce genre.

Les moyens de protections

Nous avons vu que l'attaque se base sur l'empoisonnement du cache. Vous ne pouvez pas empêcher une mauvaise intention d'un attaquant. Cependant, il y a bien sûr des points à respecter afin d'être victime.

Détection de la modification des entrées ARP

Le seul moyen de détecter si le cache ARP a été modifié est bien sûr de le regarder. Donc un simple :

> arp -a (Windows)
$ arp -n (Linux)

et une comparaison méticuleuse des entrées permettent de s'assurer de la validité du cache. Aussi est-il important de bien connaître la topologie de son réseau pour discerner toute bizarrerie.

Prévention informatique

Le problème de l'ARP cache poisoning est le protocole en lui-même. En effet, l'authentification forte des extrémités n'a pas été implantée lors de la conception du protocole. Cette faille ne peut être résolue qu'au niveau des couches supérieures, c'est-à-dire couche réseau ou applicative.

Sécurité passive

Par défaut, les entrées dans le cache sont dynamiques, c'est-à-dire qu'ils s'actualisent en fonction des requêtes ARP reply reçues. Une entrée statique définit lors de sa création la correspondance entre une adresse IP et l'adresse MAC une bonne fois pour toute, rendant impossible tout empoisonnement futur du cache. Vous pouvez donc définir une entrée statique pour chacun des destinataires, et surtout pour le routeur. Nous vous présenterons une petite astuce, plus particulièrement comment lancer un script au démarrage de l'ordinateur, mettant dans le cache toutes les adresses en statique avec lequel le système communiquera, par exemple un petit bach sur Windows ou un shell sur linux.

arp -s 192.168.1.1 01:02:03:04:05:06 

pour mettre une entrée statique dans le cache. Attention, sur Windows, le commutateur s, permet de rentrer une entrée permanente dans le cache, elle n'empêchera donc pas l'attaque. Néanmoins, il est possible de résoudre ce petit bogue au niveau applicatif. Certains firewalls peuvent contrôler l'association adresses IP/MAC (iptables sur Linux par exemple). Cette technique, bien qu'elle soit la meilleure, n'est valable que pour les petites infrastructures. Dès que le réseau devient grand, le nombre d'hôtes empêche toute possibilité d'entrer toutes les adresses dans le cache en statique. Une autre méthode possible est l'utilisation d'un commutateur intelligent. Certains commutateurs ont la possibilité de contrôler l'association port/IP/MAC, rendant impossible l'empoisonnement du cache.

Sécurité active

Il est également possible, et recommandé, d'utiliser un logiciel de supervision de attaques (monitoring en anglais) de ce genre. Cet outil permettra la centralisation des associations IP/MAC et le contrôle des paquets ARP susceptibles de provoquer un empoisonnement du cache. Ainsi, tout paquet douteux sera intercepté par le logiciel et vous pourrez donc prendre les mesures adéquates. WinARPWatch pour Windows et ARPWatch pour Linux sont des exemples de logiciel de ce type.

Prévention physique

L'ARP cache poisoning est une attaque qui ne peut avoir lieu que si le pirate est dans le réseau. Il s'agit donc d'une attaque locale. Aussi faut-il s'assurer qu'il ne puisse pas obtenir un accès au réseau. Il est donc primordial de protéger l'accès aux routeurs, commutateurs. La non-sécurisation des réseaux Wi-Fi, comme l'utilisation de cryptages WEP, est également à proscrire puisqu'elle permet l'accès au réseau facilement.

Conclusion

Cain & Abel est un outil diabolique sur Windows, et il est nécessaire d'en connaître ses possibilités afin de se protéger efficacement. D'autant plus que le protocole ARP est incontournable, et il est malheureusement non-sécurisé. Il est donc impératif de se protéger de cette attaque sous peine d'être victime d'un Man-in-the-Middle qui peut être, ravageur. Attention également à ne pas utiliser de messageries instantanées qui ne cryptent pas les conversations si vous souhaitez une confidentialité des messages.

Référence

  • http://msnsniff.sourceforge.net/ - Source de msnsniff
  • http://www.effetech.com/msn-sniffer/ - Lien pour télécharger Msn Sniffer
  • http://www.oxid.it/cain.html - Site officiel de Cain & Abel