7 | Application |
---|---|
6 | Présentation |
5 | Session |
4 | Transport |
3 | Réseau |
2 | Liaison de données |
1 | Physique |
Modèle OSI |
L'Address resolution protocol (ARP, protocole de résolution d'adresse) est un protocole effectuant la traduction d'une adresse de protocole de couche réseau (typiquement une adresse IPv4) en une adresse ethernet (typiquement une adresse MAC), ou même de tout matériel de couche de liaison.
Il a été défini dans la RFC 826 : An Ethernet Address Resolution Protocol.
Il est nécessaire au fonctionnement d'IPv4, mais semble inutile au fonctionnement d'IPv6. En IPv6, ARP devient obsolète et est remplacé par Internet Control Message Protocol V6.
Dans la suite de l'article, le terme adresse IP est utilisé pour parler d' adresse IPv4.
Un ordinateur connecté à un réseau informatique souhaite émettre une trame ethernet à destination d'un autre ordinateur dont il connaît 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 :
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.
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 la mise en œuvre du protocole ARP par son système d'exploitation.
Typiquement une attaque de ce genre consiste à envoyer un paquet " arp who-has " à la machine d'Alice. Ce paquet spécialement forgé contiendra, en adresse IP source, l'adresse IP de la machine de Bob dont nous voulons usurper l'identité (Usurpation d'adresse IP) et l'adresse MAC de la carte réseau de notre machine Mallory. La machine d'Alice va ainsi créer une entrée associant notre adresse MAC à l'adresse IP de la machine de Bob. Alice, destinataire de l'" arp who-has ", utilise notre paquet pour créer une entrée dans sa table MAC. Si Alice veut communiquer avec Bob au niveau IP, c'est notre poste qui recevra les trames de Alice puisque notre adresse MAC est enregistré dans le cache empoisonné de Alice comme équivalence pour l'IP du poste Bob. Ceci est une faiblesse connue de la mise en œuvre 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 paquets).
Pour lutter contre ce type d'attaque, il est possible :
|
avec :
Ce champ indique quel est le type de protocole couche 3 (OSI) qui utilise Arp.
Ce champ correspond à la longueur de l’adresse physique. La longueur doit être prise en octets.
Ce champ correspond à la longueur de l’adresse réseau. La longueur doit être prise en octets.
Ce champ permet de connaître la fonction du message et donc son objectif.
Adresse Mac source dans le cadre d'Ethernet.
Adresse Ip de source dans le cadre de TCP/IP
Adresse Mac destination dans le cadre d'Ethernet . Si c’est une demande Arp, alors, ne connaissant justement pas cette adresse, le champ sera mis à 1 (c'est un broadcast de niveau 2)
Adresse Ip de destination dans le cadre de TCP/IP