Rédacteur : Heurs
Date de création : 08/03/2007
Imprimer cet article : en noir et blanc ou en couleurs
Le man in the middle est une attaque assez courante en entreprise. Bien qu'elle soit relativement facile à mettre en place, elle n'en reste pas moins redoutable. Nous pouvons aussi ajouter que très peu de moyens existent pour la contrer, et ils sont lourds a mettre en place, donc généralement zapé par les administrateurs.
Le protocole ARP a pour but premier de faire la transition entre adresses MAC et adresses IP. Sa structure est la suivante :
Détaillons quelques champs :
Comme on le voit, c'est un protocole plutôt simple. J'ajoute une petite remarque : quand l'adresse MAC destinataire n'est pas connue (dans le cas d'un broadcast de résolution d'adresse logique) elle se présente sous la forme 00:00:00:00:00:00. Pour les curieux, la RFC d'ARP est la 826.
Les échanges pour connaitre une adresse IP sur un réseau ressemble a ceci :
Nous pouvons ainsi voir comment comment un PC trouve l'adresse MAC d'un autre PC afin de communiquer avec lui.
Pour ne pas demander l'adresse MAC à chaque fois et donc surcharger le réseau, les correspondances Adresses MAC / Adresses IP sont stockées dans ce qui s'appelle une table ARP. On peut voir cette table en utilisant les commandes MS-DOS sous Windows :
Et sous linux :
On voit par exemple que pour joindre 192.168.0.1, on devra s'adresser à l'adresse MAC 00:13:8F:C5:6D:D5. Et ce, sans avoir à demander une confirmation que l'adresse est valide.
Nous allons déjà commencer par l'ajout d'une nouvelle correspondance (invalide) dans la table ARP d'un PC distant. Un PC met cette table à jours quand il recoit un paquet provenant d'une adresse IP inconnue. Nous allons illustrer cela en ajoutant a distant la correspondance entre 192.168.0.123 avec l'adresse MAC 12:34:56:78:90:12. Pour cela on va utiliser le programme "nemesis" qui permet de forger des paquets (je me suis mis sur un cd bootable knoppix std) :
Et sur le PC windows nous avons à présent la table suivante :
Pour le man in the middle, notre but est de se placer entre deux hotes. On va donc modifier le cache ARP des deux machine entre les quels nous voulons nous placer. On appelle cela l'ARP Cache Poisonning. J'ai essayé de montrer ca de manière shématique (en rouge sont les lignes que nous avons injectées) :
Avec cette modification PC1 et PC2 nous enverront toujours les paquets quand ils voudront communiquer. De cette façon, on peut appliquer toutes les règles de filtrage que l'on souhaite. Ci-dessous nous avons ce que voit 192.168.0.37 a travers le logiciel Ethercap. Comme nous le constatons, nous avons la main sur toutes les connexions, et meme les paquets si on le souhaite.
Cette attaque peut aussi etre lancée sous Windows, avec Cain par exemple. Cain propose en plus des filtages par défaut, comme la capture de mots de passes FTP, HTTP, IMAP, POP3, SMB, Telnet, VNC, TDS, SMTP, NNTP, ICQ, IKE / PSK, MySQL, SNTP, etc...
Les conséquences ce ce type d'attaque sont dévastatrices, aussi bien en entreprise que chez un particulier, car avec la venue du wifi on entre chez beaucoup de monde sans difficulté (informatiquement parlant bien sur...).
Pour donner un ordre idée des concéquences, nous pouvons prendre le cas suivant : Quand vous vous connectez à votre banque, par exemple, vous etes sur https, donc un cryptage asymétrique, alors il ne devrait pas y avoir de problèmes... Mais qu'est-ce qui empècherait un hacker de créer une connection https avec votre banque et lui se recréer une connexion https avec votre poste et de faire transiter les données ? Certes la connexion ne serait pas valide... Mais la petite icone du cadenas en bas de votre navigateur serait présente, et franchement, qui vérifie la validité d'une connexion https sur internet ? Avec ce petit montage le hacker verra toute votre communication en clair !
Là il n'y a pas 50 possibilités, il faut mettre des tables ARP statiques sur chaque poste, ce qui est trés contraignent et presque impossible sur de gros réseaux. L'ajout de lignes dans les tables ARP se fait de la façon suivante :
Et sous linux :
Cette attaque est un véritable fléau sur les réseaux, et on est pas prêts de la voir diparaitre... Il faut alors bien etre informé dessus et etre conscient des risques.