Protocole:ICMP
Le protocole ICMP
Définition
Le protocole ICMP (Internet Control Message Protocol) permet de gérer les informations relatives aux erreurs du protocole IP. Il ne permet pas de corriger ces erreurs, mais d'en informer les différents émetteurs des datagrammes en erreurs. Chaque pile IP, que ce soit des routeurs ou des stations de travail, gèrent ICMP par défaut.
Ce protocole est considéré comme faisant partie de l'ensemble des protocoles TCP/IP. Cependant, contrairement à TCP et UDP, il se situe en couche 3 et donc, il est encapsulé dans IP. Le mot "Encapsulation" relate clairement la confusion du placement d'ICMP dans les 7 couches OSI.
Les messages d'erreur ICMP sont transportés sur le réseau sous forme de datagrammes, comme n'importe quelle donnée. Ainsi, les messages d'erreurs peuvent eux-mêmes être sujet aux erreurs. Toutefois, en cas d'erreur sur un message ICMP, aucune trame d'erreur n'est délivrée pour éviter un effet "boule de neige".
Structure de l'en-tête ICMP
Les paquets ICMP présentent la caractéristique d'être encapsulés dans des datagrammes IP.
En-tête IP |
|
Avec le détail suivant :
Champ (abréviation) | Description |
---|---|
Type (type=) | Type de message ICMP |
Code (code=) | Code de l'erreur |
Checksum (chksum=) | Somme de contrôle (16 bits), calculée sur la partie spécifique à ICMP (sans l'en-tête IP) |
Types de messages ICMP
Type | Message | Commentaires | Code |
---|---|---|---|
0 | Echo Reply (Réponse d'ECHO) |
Réponse au message de type 8 |
|
3 | Destination Unreachable (Destinataire inaccessible) |
Le code dépend de la cause du problème |
|
4 | Source Quench (Extinction de la source) |
| |
5 | Redirect (Redirection) |
| |
8 | Echo Request (Requête d'ECHO) |
demande de renvoi d'informations, avec la commande ping par exemple |
|
11 | Time Exceeded (Temps dépassé) |
ce message est envoyé lorsque le temps de vie d'un datagramme ou le temps de réassemblage des parties d'un datagramme est dépassé. L'en-tête du datagramme est renvoyé pour que l'utilisateur sache quel datagramme a été détruit |
|
12 | Paraméter Problem : Bad IP header (En-tête erroné) |
ce message est envoyé lorsqu'un champ d'un en-tête est erroné. La position de l'erreur est retournée |
|
13 | Timestamp request (Demande d'heure) |
une machine demande à une autre son heure et sa date système (universelle) |
|
14 | Timestamp reply (Réponse d'heure) |
la machine réceptrice donne son heure et sa date système afin que la machine émettrice puisse déterminer le temps de transfert des données |
|
15 | Information Request (Demande adresse IP) |
ce message permet de demander au réseau une adresse IP |
|
16 | Information Reply (Réponse adresse IP) |
ce message répond au message précédent |
|
17 | Address Mask Request (Demande masque sous réseau) |
ce message permet de demander au réseau un masque de sous réseau |
|
18 | Address Mask Reply (Réponse masque sous réseau) |
ce message répond au message précédent |
|
Failles d'ICMP
Types 3 et 4
L'argentin Fernando Gont, professeur, administrateur système et chercheur en réseau, a découvert en août 2004 plusieurs failles de sécurité dans le protocole ICMP :
Les messages ICMP de type 3 pour les codes 2 ou 3 (voire 4) peuvent clore une connexion TCP
Un envoi répété de message ICMP de type 4 (code 0) ralentit grandement le débit d'une connexion.
Le message ICMP de type 3 pour le code 4 ralentit une connexion en passant le MTU au minimum (68 octets) puis en l'augmentant progressivement
Type 5
Les messages ICMP de type 5 (redirection) peuvent être utilisés de manière malhonnête pour traverser un pare-feu. L'attaque consiste à faire passer un ordinateur par un chemin détourné qui va éviter le pare-feu. La solution consiste à configurer l'ordinateur pour ignorer ce genre de message.
Outils
- Icmp-quench : permet d'envoyer des messages ICMP divers à un hôte distant
- Icmp-reset : permet d'envoyer des messages d'erreur ICMP dans le but de fermer des sessions distantes
- Packetforge-ng : permet de forger des paquets ARP, UDP, ICMP ou personnalisés
- Scapy : permet de forger des paquets personnalisés, dot ICMP