Vous êtes sur la page 1sur 3

ARP spoof

Lundi, 10 Août 2009 23:04 - Mis à jour Samedi, 07 Novembre 2009 23:56

2009 23:04 - Mis à jour Samedi, 07 Novembre 2009 23:56 Dans cet article, j'explique le

Dans cet article, j'explique le principe d'une attaque très connues pratiquée souvent par des personnes malveillantes à l'intérieur d'un réseau local pour couper la connexion sur d'autres personnes et s'approprier le maximum du débit de la connexion à internet. Cette attaque est utilisée aussi, comme son nom l'indique (spoof pour vol d'identité), pour écouter les communications d'autres machines sur le réseau lorsque celui-ci est équipé de switch (commutateur) pour multiplexer les communications entre les différentes machines. Je vais essayer, dans la suite, de décrire les deux approches, montrer leurs finalités et donner des astuces pour s'en prémunir.

Je vais commencer, donc, par la coupure de connexion. En fait, le principe est simple, mais il faut avoir une idée sur le modèle OSI (Open System Interconnection) et ses différentes couches pour comprendre exactement comment ça se passe. Bon, moi je vais essayer de survoler les détails pour ne donner qu'une vue globale sur le principe. Vous avez sûrement entendu parler du protocole IP (Internet Protocol). Oui, il s'agit du protocole qui définit comment les machines sont identifiées sur internet ou sur un réseau donné. Il est basé sur des adresses de la forme xxx.xxx.xxx.xxx, où xxx est un entier codé sur un octet, et donc, pouvant prendre des valeurs entre 0 et 255. Il faut savoir aussi que l'adressage IP est un adressage logique très flexible, mais que ce n'est pas réellement lui qui est utilisé pour identifier les machines sur le réseau lorsqu'elles communiquent entre elles. Pour ça, on utilise ce qu'on appelle des adresse physique, ou adresse Mac, qui est un identifiant propre à l'interface réseau donné par son constructeur, et elle est composée de 6 octets à la différence des adresses IP (4 octets). Je sais, tout ça paraît un peu louche surtout quand vous l'entendez de la part de quelqu'un qui ne maîtrise pas parfaitement le principe, mais pour cela je vous invite vivement à découvrir la philisophie de l'adressage IP sur internet et la puissance de ce concept. Si je me rappelle bien, sur ce site http://www.frameip.com/ , vous pouvez trouver beaucoup d'information sur le sujet. Bref, je ne vais pas m'attarder sur les notions théoriques. Je vais par contre, vous montrer comment les machines communiquent dans un réseau local, et où se trouve la faille qui permet de monopoliser le débit.

ARP spoof

Lundi, 10 Août 2009 23:04 - Mis à jour Samedi, 07 Novembre 2009 23:56

Pour commencer, chaque machine sur notre réseau possède une adresse physique, qui est l'adresse de la carte/interface réseau que vous utilisez pour vous connecter (ça peut être la carte réseau local ou la carte réseau sans fil). De plus, chaque machine possède une adresse logique IP, attribuée par un serveur DHCP ou que vous fixez vous-mêmes. On suppose que le réseau est constitué d'un serveur (une passerelle connectée à internet et qui va partager cette connexion au reste du réseau), et de quelques machines connectées. La connexion entre la machine serveur et les autres machines peut se faire avec un concentrateur (Hub) ou un commutateur (switch). Lorsqu'une machine A veut s'adresser à une autre machine B sur le réseau local, elle va s'adresser à B avec son adresse IP, IP(B). Mais comme je l'ai dit précédemment, la communication se fait réellement avec les adresses Mac. Donc, A doit avoir Mac(B) pour communiquer avec elle. Pour cela, A doit commencer par connaitre Mac(B) pour lui adresser la parole. Donc, A commence, d'abord, par envoyer une demande à toutes les machines du réseau pour leur dire, Qui a IP(B). Et dans ce cas, la machine concernée B répond par son adresse Mac(B). En même temps, B va connaître Mac(A) qui a été envoyée dans le paquet de demande. Ainsi, A et B peuvent commencer à communiquer. En fait, ce mécanisme est défini par le protocole ARP (Address Resolution Protocol) ou protocole de résolution d'adresses. Ce mécanisme de résolution ne va pas se répéter à toute transaction, et pour éviter ça, on utilise un cache ARP, c'est à dire qu'une machine ayant résolu l'adresse Mac d'une autre, elle va sauvegarder la correspondance IP-Mac de cette machine pour un certain temps qui dure une vingtaine de secondes. Après ça, elle doit résoudre de nouveau l'adresse de son interlocuteur.

Le point faible dans le mécanisme de résolution d'adresse est qu'une machine peut envoyer un paquet ARP de réponse, c'est à dire un paquet où elle dit "c'est moi qui a l'IP recherchée et voilà mon adresse Mac" sans qu'il y ait, au préalable, un paquet de demande qui a été envoyé. En fait, ceci permet à une machine de se déclarer lorsqu'elle se connecte au réseau et qu'elle a une IP fixe, pour voir s'il y a une autre machine ayant la même adresse (ceci est derrière le message "il y a un conflit d'adresse IP" qu'on voit parfois sur Windows). D'autre part, cette "faille" (ce n'est pas vraiment une), peut être utilisée par des personnes malveillantes. En effet, lorsqu'une machine communique avec le serveur (la passerelle) pour se connecter à internet, un attaquant peut construire lui même les trames réseau et envoyer des paquets réponses ARP à toutes les machines du réseau, dans lesquels il déclare une fausse adresse Mac pour l'adresse IP du serveur. Ca se passe comme si le serveur se déclarait avec une fausse adresse Mac, et dans ce cas les machines victimes vont perdre la connexion. L'attaquant doit envoyer les faux paquets à des intervalles de temps réguliers en tenant compte de la fréquence du rafraichissement du cache ARP.

Cette même attaque peut être utilisée pour espionner les communications entre machines. Il s'agit, ici, de l'attaque de l'homme au milieu. L'attaquant se fait passer pour l'une des deux parties. Pour cela, il envoie à l'autre des paquets réponse ARP qui disent que l'adresse IP du

ARP spoof

Lundi, 10 Août 2009 23:04 - Mis à jour Samedi, 07 Novembre 2009 23:56

vrai interlocuteur est associée à l'adresse Mac de l'attaquant. Donc, l'attaquant va intercepter les messages du premier et il les transmet au deuxième. Les deux machines victimes vont communiquer sans savoir qu'il y a une tierce partie les espionnant. Chacune des deux machines voit l'autre avec l'adresse Mac de l'attaquant sans se rendre compte et va lui envoyer ses paquets. Et l'attaquant va faire la corresondance entre les deux en faisant les modifications nécessaires (au niveau des adresses Mac transcrites dans les paquets transmis). La puissance de cette attaque réside dans le fait qu'elle permet de contourner l'isolation que font les switchs. En fait, un switch est un boitier sur lequel sont connectées plusieurs machines. Le rôle du switch est de diriger les paquets qui sont destinés à une machine, à la machine en question sans l'envoyer aux autres. Les Hubs fonctionnent différemment. Lorsqu'ils reçoivent un paquet, ils le transmettent à toutes les machines qui y sont connectées, et dans ce cas, tout le monde peut écouter les communication. Avec l'attaque du ARP spoof, un espion pourra toujours écouter deux machines parce qu'il va se mettre au milieu.

Enfin, il faut savoir se défendre contre ce genre d'attaques, et ceci n'est pas très difficile (sauf peut être sur Windows Vista). Il suffit de fixer l'entrée de correspondance IP-MAC dans le cache ARP avec la vraie adresse MAC de la machine à laquelle vous vous intéressez. Pour visualiser le cache ARP, il suffit de taper la commande arp -a. Et pour fixer une autre, utilisez la

commande

de nouveau le cache, vous allez remarquer que l'entrée a été marquée comme permanante ou statique. Vous pouvez écrire un script qui fait ça à chaque démarrage de votre machine, ou si vous êtes sur Linux, vous pouvez fixer certaines entrées lors de la compilation du noyau.

arp -s IP MAC. En visualisant

Ici j'ai mis un petit programme en C que vous pouvez compiler sur Linux. Il permet de forger des paquets ARP et les envoyer en direction d'une machine du réseau pour la tromper. Si vous voulez l'envoyer à toutes les machines, il faut utiliser l'adresse de Broadcast (normalement l'adresse MAC FF:FF:FF:FF:FF:FF). Faites en bon usage ;)