Address Resolution Protocol
| 7 - couche application | HTTP, SMTP, FTP, SSH, IRC, SNMP, SIP ... |
| 4 - couche de transport | TCP, UDP, SCTP, RTP, DCCP ... |
| 3 - couche réseau | IPv4, IPv6, ARP, IPX ... |
| 2 - couche de liaison | Ethernet, 802.11 WiFi, Token ring, FDDI, ... |
| 1 - couche physique | RS-232, RS-449, ... |
L'Address resolution protocol, également connu sous le nom d'ARP, est un terme anglais désignant un protocole effectuant la traduction d'une adresse de protocole de couche réseau (typiquement une adresse IP) en une adresse ethernet (typiquement une adresse MAC), ou même de tout matériel de couche de transport.
Il a été défini dans la RFC 826 : An Ethernet Address Resolution Protocol.
| Sommaire |
Scénario typique de l'utilisation d'ARP
- Un ordinateur connecté à un réseau informatique souhaite émettre une trame ethernet à destination d'un autre ordinateur dont il connait l'adresse IP.
- Il interroge son cache ARP à la recherche d'une entrée correspondant à l'adresse IP de la machine cible. Deux cas peuvent se présenter :
- L'adresse IP est présente dans le cache de l'émetteur, il suffit de lire l'adresse MAC correspondante pour envoyer la trame ethernet. L'utilisation d'ARP s'arrête ici dans ce cas ;
- L'adresse IP est absente du cache de l'émetteur. Dans ce cas, cet ordinateur va placer son émission en attente et effectuer une requête ARP en broadcast. Cette requête est de type « quelle est l'adresse MAC correspondant à l'adresse IPadresseIP ? Répondez à adresseMAC ».
- Puisqu'il s'agit d'un broadcast, tous les ordinateurs connectés au support physique vont recevoir la requête. En observant son contenu, ils pourront déterminer quelle est l'adresse IP sur laquelle porte la recherche. La machine qui possède cette adresse IP, sera la seule (du moins si elle est la seule, ce qui est censé être le cas dans tout réseau, mais...) à répondre en envoyant à la machine émettrice une réponse ARP du type « je suis adresseIP, mon adresse MAC est adresseMAC ». Pour émettre cette réponse au bon ordinateur, il crée une entrée dans son cache ARP à partir des données contenues dans la requête ARP qu'il vient de recevoir.
- La machine à l'origine de la requête ARP reçoit la réponse, met à jour son cache ARP et peut donc envoyer le message qu'elle avait mis en attente jusqu'à l'ordinateur concerné.
Il suffit donc d'un broadcast et d'un unicast pour créer une entrée dans le cache ARP de deux ordinateurs.
Sécurité du protocole ARP
Le protocole ARP est vulnérable à des attaques locales reposant principalement sur l'envoi de messages ARP erronés à un ou plusieurs ordinateurs. Elles sont regroupées sous l'appellation « Pollution de cache ARP » (« ARP cache poisoning » en anglais). La vulnérabilité d'un ordinateur à la Pollution de cache ARP dépend de l'implémentation du protocole ARP par son système d'exploitation.
Typiquement une attaque de ce genre consiste à envoyer un paquet « arp who as » à une machine A. Ce paquet spécialement forgé contiendra, en adresse IP source, l'adresse IP du poste dont nous voulons usurper l'identité (B) (spoofing IP) et l'adresse MAC de notre carte réseaux. Le destinataire (C) va ainsi créer une entrée associant notre adresse MAC à l'adresse IP du poste B. En effet, si nous demandons l'adresse MAC d'un poste, il y a de forte chance que ce soit pour communiquer avec ce dernier, et donc, qu'il ait à nous répondre dans le futur. Le destinataire de l'"arp who as" utilise notre paquet pour créer une entrée dans sa table MAC. Ceci est une faiblesse connue de l'implémentation d'ARP et permet de corrompre facilement un cache ARP distant.
Ces attaques peuvent provoquer une écoute des communications entre deux machines (MIM ou Man in the Middle), le vol de connexion, une surcharge des commutateurs servant de structure au réseau informatique ou un déni de service (il suffit de faire une attaque de type MIM puis de refuser les packets).
Pour lutter contre ce type d'attaques, il est possible :
- De mettre en place des entrées statiques dans le cache ARP de chaque machine du réseau (commande arp -s). Ceci n'est applicable qu'à un faible nombre de machines (privilégier les plus critiques, comme les serveurs et les passerelles) à moins de souhaiter y passer ses jours et ses nuits (Attention cependant au fait que sur les Sytèmes d'Exploitation Microsoft Windows antérieurs à la version XP, une entrée statique peut être mise à jour, la seule différence est qu'elle n'expire pas.);
- De limiter les adresses MAC sur chaque port (renseignement statique) des commutateurs s'ils le permettent (fonction Port Security). Les commutateurs de niveau 3 par exemple offrent la possibilité de paramétrer des associations port/MAC/IP statiques. Mais cela rend évidemment plus difficile la maintenance du parc.
- De surveiller les messages ARP circulant sur réseau informatique, à l'aide d'outils de surveillance tels qu'ARPwatch (outil du Network Research Group (NRG), the Information and Computing Sciences Division (ICSD), Lawrence Berkeley National Laboratory (LBNL) : http://www-nrg.ee.lbl.gov/ ) ou d'IDS (Systèmes de Détection d'Intrusion)
- Il faut savoir que chaque entrée a une durée de vie (cela oblige d'ailleurs l'attaquant à corrompre régulièrement le cache de la victime) . Certains Systèmes d'exploitation comme Solaris permettent de modifier la valeur de ce temps d'expiration (commande ndd) - Une valeur courte rendra la corruption plus facilement visible.
Un cas d'école à la limite du bizutage
Deux PC sont connectés à un réseau. L'un fonctionne très bien, l'autre ne peut communiquer avec aucun domaine malgré un paramétrage réseau sans défaut. Premier diagnostic imaginable : panne du DNS.
Toutefois, une vérification de l'adresse MAC du DNS dans le cache ne donne pas les même résultat sur ces deux PC ! Second diagnostic imaginable : un pirate vient de prendre l'adresse IP du DNS (pratique courante, accompagnée en général d'un denial of service simultané sur l'adresse MAC du vrai serveur DNS). Pourquoi le premier PC n'en est-il pas affecté ? Parce que l'adresse MAC de l'ancien DNS est toujours dans son cache et que lui ne voit donc pas le faux DNS pirate.
Un examen de l'adresse MAC montre que l'adaptateur du pirate est fabriqué par un constructeur qui ne fait que des adaptateurs PCMCIA pour portables. L'hypothèse du pirate semble se confirmer et la certitude qu'il a un portable réduit le nombre de coupables possibles.
Des essais de ping du DNS depuis différents endroits du bâtiment suggèrent que le pirate se trouve dans l'aile Nord. En effet, le serveur DNS est au centre et des pings effectués depuis les trois autres ailes donnent, eux, l'adresse du bon DNS.
Un nouveau venu équipé en effet d'un portable est rapidement localisé à l'étage. Vérification d'identité et de paramétrage faites, il s'agit simplement d'un jeune commercial qui s'est trompé en paramétrant son réseau et a rentré l'adresse IP du DNS qui lui avait été fournie... dans le champ qui était réservé à sa propre adresse IP ! Davantage de peur que de mal, donc; et une journée comme les autres dans la vie d'un responsable réseau (qui rédigera plus clairement sa documentation la prochaine fois).
Liens externes
- Jouer avec le protocole ARP excellent article sur le fonctionnement d'ARP, sur les attaques possibles et leurs parades (article également paru dans la revue MISC N°3 de Frédéric Raynal....)
