1. À propos du protocole ARP
ARP, pour Address Resolution Protocol, est un protocole réseau utilisé dans les réseaux IPv4 pour déterminer l'adresse MAC correspondant à une adresse IPv4 connue sur le réseau local.
Lorsqu'une machine souhaite transmettre une trame Ethernet à une autre machine située sur son réseau local, elle doit connaître son adresse MAC. L'adresse IP permet d'identifier logiquement la destination, tandis que l'adresse MAC est utilisée pour l'acheminement de la trame sur le réseau local Ethernet.
Adresse IP
Une adresse IP est une adresse logique utilisée pour identifier une interface réseau et permettre l'acheminement des paquets entre différents réseaux.
Une adresse IPv4 peut par exemple être :
192.168.1.20
Adresse MAC
Une adresse MAC, pour Media Access Control address, identifie une interface au niveau de la liaison de données. Elle est généralement représentée sous forme de six octets en notation hexadécimale.
Exemple :
00:1A:2B:3C:4D:5E
Rôle d'ARP
ARP permet donc essentiellement de répondre à la question suivante :
Quelle adresse MAC dois-je utiliser pour joindre cette adresse IPv4 sur mon réseau local ?
| Information connue | Information recherchée |
|---|---|
| Adresse IPv4 | Adresse MAC |
| 192.168.1.20 | 00:1A:2B:3C:4D:5E |
ARP et modèle OSI
ARP assure une fonction d'interaction entre l'adressage IPv4 et la couche liaison. Il permet à une machine utilisant une adresse IPv4 de déterminer l'adresse de liaison nécessaire à la transmission locale.
Dans un réseau Ethernet, ARP travaille donc en relation étroite avec :
- IPv4 pour l'adressage logique ;
- Ethernet pour la transmission locale ;
- les adresses MAC pour identifier les interfaces sur le segment local.
ARP concerne principalement IPv4
ARP est associé à IPv4. En IPv6, la résolution des adresses de voisinage est assurée par le Neighbor Discovery Protocol, ou NDP, basé sur ICMPv6.
2. Fonctionnement du protocole ARP
Pour comprendre ARP, considérons deux ordinateurs appartenant au même réseau local.
| Machine | Adresse IP | Adresse MAC |
|---|---|---|
| PC-A | 192.168.1.10 | 00:11:22:33:44:55 |
| PC-B | 192.168.1.20 | 00:AA:BB:CC:DD:EE |
PC-A souhaite envoyer des données à 192.168.1.20. Il connaît l'adresse IP de PC-B mais ne connaît pas encore son adresse MAC.
Étape 1 : consultation du cache ARP
PC-A commence généralement par consulter son cache ARP afin de vérifier si une association correspondant à l'adresse 192.168.1.20 est déjà connue.
Si l'association existe encore dans le cache, elle peut être utilisée directement. Dans le cas contraire, une résolution ARP doit être effectuée.
Étape 2 : ARP Request
PC-A diffuse alors une ARP Request sur le réseau local. Cette requête demande quelle machine possède l'adresse IPv4 recherchée.
Le principe du message peut être formulé ainsi :
Qui possède l'adresse IPv4 192.168.1.20 ?
La requête ARP est envoyée dans une trame Ethernet utilisant l'adresse MAC de diffusion :
FF:FF:FF:FF:FF:FF
Les machines du domaine de broadcast peuvent donc recevoir la requête.
Étape 3 : ARP Reply
La machine qui possède l'adresse IPv4 recherchée répond avec une ARP Reply.
PC-B indique alors à PC-A que l'adresse IPv4 192.168.1.20 correspond à l'adresse MAC 00:AA:BB:CC:DD:EE.
Étape 4 : mise à jour du cache
PC-A peut mémoriser temporairement cette association dans son cache ARP :
| Adresse IPv4 | Adresse MAC |
|---|---|
| 192.168.1.20 | 00:AA:BB:CC:DD:EE |
Étape 5 : transmission de la trame
PC-A dispose maintenant de l'adresse MAC nécessaire pour construire la trame Ethernet destinée à PC-B.
- PC-A connaît l'adresse IPv4 de PC-B.
- PC-A consulte son cache ARP.
- Si nécessaire, PC-A diffuse une ARP Request.
- PC-B répond avec une ARP Reply.
- PC-A mémorise temporairement l'association IP/MAC.
- PC-A utilise l'adresse MAC obtenue pour transmettre la trame.
Communication avec un réseau distant
ARP ne permet pas de rechercher directement l'adresse MAC d'une machine située derrière un routeur sur un réseau distant.
Lorsque la destination IPv4 se trouve sur un autre réseau, la machine doit généralement transmettre le paquet à sa passerelle par défaut. Elle utilise alors ARP pour déterminer l'adresse MAC de l'interface locale du routeur servant de prochain saut.
Il est donc important de retenir qu'une adresse MAC est utilisée sur le segment local et n'est pas transportée de bout en bout à travers Internet comme l'adresse IP de destination.
3. Table ARP et cache ARP
Pour éviter d'effectuer une nouvelle requête ARP avant chaque communication, les systèmes d'exploitation conservent temporairement les associations entre adresses IPv4 et adresses MAC.
Ces informations constituent le cache ARP, souvent consulté sous la forme d'une table ARP ou table de voisins.
Exemple de table ARP
| Adresse IPv4 | Adresse MAC | Type |
|---|---|---|
| 192.168.1.1 | 10:20:30:40:50:60 | Dynamique |
| 192.168.1.20 | 00:AA:BB:CC:DD:EE | Dynamique |
| 192.168.1.50 | 11:22:33:44:55:66 | Dynamique |
Entrées dynamiques
Les entrées dynamiques sont apprises automatiquement grâce aux échanges ARP. Elles sont généralement temporaires et peuvent être supprimées ou renouvelées selon le fonctionnement du système d'exploitation.
Entrées statiques
Une entrée statique peut être configurée manuellement afin d'associer une adresse IPv4 à une adresse MAC déterminée. Sa gestion dépend du système d'exploitation et de la configuration utilisée.
Consulter le cache ARP sous Windows
Sous Windows, la commande arp -a permet notamment d'afficher les informations ARP actuellement connues par la machine. La commande suivante est exécutée dans l'invite de commandes Windows et non dans Python.
Commande : arp -a
Une sortie peut contenir des informations similaires aux suivantes :
| Adresse Internet | Adresse physique | Type |
|---|---|---|
| 192.168.1.1 | 10-20-30-40-50-60 | dynamique |
| 192.168.1.20 | 00-aa-bb-cc-dd-ee | dynamique |
Les valeurs réellement affichées dépendent naturellement du réseau et des communications récentes de la machine.
Commande ip neigh sous Linux
Sous de nombreux systèmes Linux, la commande ip neigh permet de consulter la table des voisins, qui contient notamment les informations utilisées pour la résolution de voisinage.
Commande : ip neigh
Une sortie IPv4 peut par exemple indiquer une adresse IP, l'interface utilisée, l'adresse MAC correspondante et l'état de l'entrée.
Durée de vie des entrées
Les associations dynamiques ne sont pas nécessairement conservées indéfiniment. Le système peut les renouveler ou les supprimer lorsqu'elles deviennent obsolètes.
Ce fonctionnement permet notamment de prendre en compte les changements intervenant sur le réseau.
4. Observer et manipuler ARP avec Python
Python peut être utilisé dans un laboratoire réseau pour analyser des informations liées à ARP. Les exemples suivants sont volontairement simples et ne nécessitent pas l'envoi de paquets ARP sur le réseau.
Représenter une table ARP
Le programme suivant utilise un dictionnaire Python pour représenter plusieurs associations entre des adresses IPv4 et des adresses MAC. Il illustre simplement le principe d'une table ARP.
1 2 3 4 5 6 7 | table_arp = { "192.168.1.1": "10:20:30:40:50:60", "192.168.1.20": "00:AA:BB:CC:DD:EE", "192.168.1.50": "11:22:33:44:55:66" } for adresse_ip, adresse_mac in table_arp.items(): print(adresse_ip, "->", adresse_mac) |
Sortie :
1 2 3 | 192.168.1.1 -> 10:20:30:40:50:60 192.168.1.20 -> 00:AA:BB:CC:DD:EE 192.168.1.50 -> 11:22:33:44:55:66 |
Rechercher une adresse MAC
Le programme suivant recherche l'adresse MAC associée à une adresse IPv4 donnée dans une table pédagogique. Il reproduit de manière simplifiée l'idée d'une consultation du cache avant d'effectuer une résolution ARP.
1 2 3 4 5 6 7 8 9 | table_arp = { "192.168.1.1": "10:20:30:40:50:60", "192.168.1.20": "00:AA:BB:CC:DD:EE" } adresse_ip = "192.168.1.20" if adresse_ip in table_arp: print("Adresse MAC :", table_arp[adresse_ip]) else: print("Adresse inconnue dans la table") |
Sortie :
1 | Adresse MAC : 00:AA:BB:CC:DD:EE |
Ajouter une association
Le programme suivant montre comment une nouvelle association IP/MAC peut être ajoutée à notre table pédagogique après une résolution supposée. Il ne modifie pas le véritable cache ARP du système.
1 2 3 4 5 6 | table_arp = {} adresse_ip = "192.168.1.30" adresse_mac = "AA:BB:CC:DD:EE:FF" table_arp[adresse_ip] = adresse_mac print("Association mémorisée :") print(adresse_ip, "->", table_arp[adresse_ip]) |
Sortie :
1 2 | Association mémorisée : 192.168.1.30 -> AA:BB:CC:DD:EE:FF |
Détecter un changement d'adresse MAC
Le programme suivant illustre un principe utile pour la surveillance défensive. Il compare une association IP/MAC précédemment connue avec une nouvelle observation. Un changement peut avoir une explication légitime, mais il peut également justifier une vérification.
1 2 3 4 5 6 | ancienne_mac = "00:AA:BB:CC:DD:EE" nouvelle_mac = "00:AA:BB:CC:DD:99" if ancienne_mac != nouvelle_mac: print("Alerte : changement d'adresse MAC détecté") else: print("Association inchangée") |
Sortie :
1 | Alerte : changement d'adresse MAC détecté |
Un changement d'adresse MAC ne constitue pas à lui seul la preuve d'une attaque. Une nouvelle interface, une modification de configuration, un équipement remplacé ou certaines fonctions de virtualisation peuvent également modifier une association observée.
5. Sécurité ARP et ARP Spoofing
Le protocole ARP a été conçu pour permettre la résolution d'adresses sur un réseau local. Dans son fonctionnement traditionnel, il ne fournit pas à lui seul un mécanisme robuste permettant d'authentifier l'origine de chaque association annoncée.
Cette caractéristique peut être exploitée lors d'une attaque appelée ARP Spoofing ou ARP Poisoning.
Principe de l'ARP Spoofing
Lors d'un ARP Spoofing, un attaquant présent sur le réseau local cherche à faire accepter de fausses associations entre des adresses IPv4 et des adresses MAC.
Une victime peut alors enregistrer une association incorrecte dans son cache ARP.
Par exemple, si l'adresse IPv4 de la passerelle est 192.168.1.1, une association falsifiée peut tenter de faire croire à une machine que cette adresse correspond à une adresse MAC qui n'est pas celle de la véritable passerelle.
Conséquences possibles
Selon la configuration du réseau et le comportement de l'attaquant, une manipulation ARP peut contribuer à :
- intercepter certaines communications locales ;
- rediriger du trafic ;
- perturber des communications ;
- faciliter certaines attaques de type Man-in-the-Middle ;
- provoquer un déni de service local.
ARP Spoofing et Man-in-the-Middle
Une attaque Man-in-the-Middle, ou MITM, consiste à positionner un système entre plusieurs participants à une communication afin d'intercepter ou éventuellement de modifier certains échanges.
L'ARP Spoofing est l'une des techniques qui peuvent contribuer à ce type d'attaque sur certains réseaux locaux IPv4. L'utilisation de protocoles applicatifs chiffrés comme HTTPS reste essentielle pour protéger le contenu des communications.
Détecter des anomalies ARP
La surveillance des associations entre les adresses IPv4 et MAC peut aider à identifier certaines anomalies. Un changement inattendu de l'adresse MAC associée à une passerelle importante mérite notamment une investigation.
Les administrateurs peuvent également analyser les journaux et les trames réseau à l'aide d'outils comme Wireshark afin de comprendre les échanges ARP observés sur un réseau qu'ils sont autorisés à administrer.
Dynamic ARP Inspection
Sur certains commutateurs administrables, la fonction Dynamic ARP Inspection, souvent abrégée DAI, peut contribuer à protéger le réseau contre certaines falsifications ARP.
Selon l'équipement et sa configuration, DAI peut vérifier les messages ARP à partir d'informations considérées comme fiables et rejeter certaines associations invalides.
Mesures de protection
- segmenter correctement le réseau ;
- éviter les réseaux locaux non fiables pour les ressources sensibles ;
- utiliser HTTPS et d'autres protocoles chiffrés ;
- surveiller les changements inhabituels dans les associations ARP ;
- utiliser les mécanismes de sécurité disponibles sur les commutateurs administrables ;
- activer Dynamic ARP Inspection lorsque l'infrastructure le permet et que sa configuration est maîtrisée ;
- contrôler l'accès physique et logique au réseau local ;
- investiguer les alertes concernant des changements inattendus de l'adresse MAC de la passerelle.
ARP dans un laboratoire de cybersécurité
ARP constitue un protocole particulièrement intéressant à observer dans un laboratoire réseau isolé. Avec des machines virtuelles et un outil comme Wireshark, il est possible d'étudier les ARP Request, les ARP Reply et le cache ARP sans intervenir sur un réseau de production.
Cette approche permet de comprendre concrètement la relation entre IPv4, Ethernet et les adresses MAC avant d'aborder les mécanismes de sécurité réseau plus avancés.
6. À retenir
ARP, ou Address Resolution Protocol, est un protocole utilisé avec IPv4 pour déterminer l'adresse MAC correspondant à une adresse IPv4 sur le réseau local.
Lorsqu'une machine connaît l'adresse IPv4 d'un équipement local mais ignore son adresse MAC, elle peut diffuser une ARP Request. La machine possédant l'adresse recherchée peut répondre par une ARP Reply.
Les associations obtenues sont généralement conservées temporairement dans un cache ARP. Cette mémorisation évite de répéter inutilement la résolution avant chaque transmission.
Lorsque la destination se trouve sur un réseau distant, l'ordinateur ne recherche généralement pas l'adresse MAC de cette destination distante. Il utilise ARP pour obtenir l'adresse MAC de son prochain saut, souvent la passerelle par défaut.
ARP ne fournit pas à lui seul une authentification forte des associations annoncées. Cette caractéristique explique l'existence d'attaques comme l'ARP Spoofing, dans lesquelles de fausses associations IP/MAC peuvent être introduites sur un réseau local.
La surveillance des associations ARP, la segmentation du réseau, le chiffrement des communications et des mécanismes tels que Dynamic ARP Inspection peuvent contribuer à réduire les risques.
Enfin, ARP est un protocole fondamental pour comprendre le fonctionnement d'un réseau local IPv4 et constitue une excellente introduction à l'étude d'Ethernet, des commutateurs, du routage, de Wireshark et de la sécurité des réseaux.
Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/



