Qu’est-ce que l’ICMP?
ICMP (Internet Control Message Protocol) est un protocole que les périphériques réseau (par exemple les routeurs) utilisent pour générer des messages d’erreur lorsque des problèmes de réseau empêchent les paquets IP de passer..
L’Internet Control Message Protocol est l’un des systèmes fondamentaux qui font fonctionner Internet. Bien que vous n’ayez peut-être pas entendu parler d’ICMP, vous avez probablement entendu parler de l’une de ses fonctionnalités: Ping. Dans ce guide, vous en apprendrez plus sur ce protocole essentiel.
L’histoire d’ICMP
ICMP fait partie du Pile de protocoles TCP / IP. Il est stationné au Couche Internet et c’est une norme de message d’erreur qui prend en charge le protocole Internet de base. La définition originale de ICMP a été écrite par Jon Postel, l’un des fondateurs d’Internet. La première norme a été publiée en avril 1981 dans la RFC 777. Elle a depuis été mise à jour plusieurs fois. La définition stable du protocole est contenue dans la RFC 792, qui a également été écrite par Postel et publiée par le Groupe de travail sur l’ingénierie Internet en septembre 1981.
Le but de l’ICMP
Bien que la couche Internet de niveau inférieur ne soit pas censée être concernée par l’assurance de la connexion, ICMP donne un peu de rétroaction sur les communications en cas de problème. Donc, même si vous utilisez UDP, qui a un sans connexion modèle de communication, il est toujours possible de savoir pourquoi une transmission a échoué. Tous les appareils connectés au réseau peuvent traiter les messages ICMP, ce qui inclut les routeurs ainsi que les appareils d’extrémité. ICMP a été adapté pour pouvoir fonctionner avec IPv6 tout aussi bien qu’il a servi IPv4.
Comme ce protocole réside sur la couche Internet, ses messages sont véhiculés par des paquets IP et existent donc à un niveau plus élevé que les structures de fonctionnement des commutateurs. Bien que l’ICMP soit transporté dans le paquet IP, il n’existe pas dans les paquets porteurs de données. Un paquet ICMP est généré uniquement en réponse à un paquet de données entrant lorsque la transmission de ce message entrant échoue. Les conditions d’erreur qui provoquent un paquet ICMP sont souvent le résultat de données contenues dans l’en-tête IP du paquet défaillant.
Structure des paquets ICMP
Lorsqu’un routeur ricoche un paquet ICMP pour signaler une erreur, il recrée tous les champs de l’en-tête IP d’origine du paquet sur lequel il fait rapport. Ainsi, un programme de collecte des erreurs sur l’ordinateur d’envoi d’origine pourrait analyser l’en-tête et déterminer exactement lequel des paquets IP qu’il a envoyés a échoué.
Après l’en-tête IP, vient l’en-tête ICMP à trois champs. Ceux-ci contiennent un code qui classe l’erreur, un champ de sous-code, qui affine la description du code d’erreur, puis une somme de contrôle. Après le champ ICMP viennent les huit premiers octets de la charge utile, qui sont en fait l’en-tête Transport Layer (TCP ou UDP).
Codes de message ICMP
Le premier champ de code du bloc ICMP contient des informations très utiles. Le code est numérique et voici quelques-unes des valeurs les plus intéressantes que le champ peut avoir:
0: réponse d’écho – utilisée pour le ping
3: destination inaccessible
4: extinction de la source – le routeur est surchargé
5: rediriger – utiliser un routeur différent
8: demande d’écho – utilisée pour le ping
9: réponse de la publicité du routeur
10: sollicitation de routeur
11: temps dépassé – utilisé pour traceroute
Temps de vivre
L’un des champs d’en-tête IP les plus connus pour provoquer une erreur générant ICMP est le Temps de vivre champ (TTL). Ce champ contient un nombre, qui exprime le nombre maximal de routeurs que le paquet peut traverser. Ce nombre est diminué d’une unité, par chaque routeur qui traite le paquet. Si un routeur reçoit un paquet avec un TTL de zéro, il abandonne ce paquet et renvoie un message ICMP à l’expéditeur de la transmission qui a échoué.
Dans le cas de l’épuisement TTL, la raison pour laquelle un paquet n’atteint pas sa destination n’a rien à voir avec des problèmes de routeur ou des données mal formées dans l’en-tête de paquet. Le TTL est une construction qui a été créée pour empêcher les paquets escrocs de boucher Internet lorsque les erreurs de table de routeur ont entraîné des chemins circulaires. Cependant, un sous-produit de ce champ est un outil d’administration réseau très utile: Traceroute.
Voir également: Revue des outils SolarWinds Traceroute
Traceroute avec ICMP
Traceroute est un outil d’administration réseau bien connu qui montre le chemin typique depuis l’ordinateur de lancement jusqu’à une adresse IP de destination donnée. L’utilitaire envoie une série de paquets IP vides. La caractéristique importante de chacune de ces transmissions est la valeur TTL dans l’en-tête IP.
Le programme Traceroute commence par envoyer un paquet avec un TTL de 0. Celui-ci sera supprimé par le premier routeur qui le reçoit, qui est généralement la passerelle réseau. Ce routeur renvoie un paquet ICMP. Les seules informations que Traceroute souhaite obtenir de cette réponse sont le temps qu’il faut pour revenir et l’adresse source du paquet. Cela indique à Traceroute l’adresse du premier routeur sur le chemin vers la destination. Le programme envoie ensuite un paquet avec un TTL de 1. Cela passe par la passerelle, ce qui diminue le TTL de 1. Le routeur qui obtient le paquet voit ensuite que le TTL est nul, supprime le paquet et renvoie un paquet ICMP. Ainsi, le deuxième routeur du chemin est révélé et Traceroute note le temps qu’il a fallu pour que cette réponse arrive. En augmentant le TTL de 1 à chaque transmission, Traceroute construit finalement une carte de tous les liens sur Internet vers l’adresse donnée.
Problèmes de Traceroute
Traceroute est un outil très simple qui tire parti d’une fonction administrative préexistante et permet un utilitaire efficace et informatif en dehors de ça. Il y a quelques points faibles avec Traceroute.
Un administrateur réseau utilisera probablement l’utilitaire pour voir pourquoi une connexion récente s’est si mal passée – lentement ou a échoué. pourtant, Traceroute ne peut pas vous dire ce qui s’est passé dans le passé. Il ne peut que vous donner des informations sur la progression de l’itinéraire actuel.
Les routeurs prennent chacun leur propre décision sur lequel de leurs voisins offre le chemin le plus court vers l’adresse IP de destination sur un paquet. Cependant, cette décision pourrait ne pas toujours être exactement la même à chaque fois. Si un routeur est congestionné ou éteint, les routeurs voisins découvrent rapidement le problème et ajuster leurs tables de routage pour contourner le problème. Ces informations de routage modifiées sont répercutées sur tous les routeurs sur Internet, mais le problème peut être résolu avant que tous les routeurs ne le découvrent. Ensuite, la route réajustée se multiplie à travers le monde.
Une option avec la commande “-j»Vous permet de spécifier les adresses des routeurs que vous souhaitez que Traceroute suive comme chemin. Cependant, pour utiliser cette fonction, vous devrez connaissent déjà le chemin emprunté par une transmission défectueuse et vous ne pouvez dériver ces informations qu’avec une exécution Traceroute exactement du même chemin.
Donc, si vous rencontrez une connexion lente, la commande Traceroute que vous émettez par la suite peut ne pas révéler ce qui s’est passé parce qu’à ce moment-là. Le problème à l’origine du retard a peut-être été résolu et votre chemin Traceroute peut ne pas être le même chemin que la connexion lente utilisée.
Un autre problème avec Traceroute est qu’il donne un affichage intéressant sur le chemin que votre transmission prendra probablement vers une destination donnée. pourtant, il ne vous donne aucun outil pour faire quoi que ce soit avec les informations que vous recevez. Il n’est pas possible de spécifier un chemin, et donc si vous voyez que l’un des routeurs sur Internet donne un temps de réponse lent, tout ce que vous pouvez faire avec cela est de savoir quel routeur ralentit vos connexions. Comme ce routeur n’appartient pas à votre entreprise et vous ne pouvez pas l’accélérer, vous avez acquis des connaissances grâce à Traceroute mais vous ne pouvez pas y donner suite.
Voir également: Les meilleurs outils pour Traceroute
ICMP Ping
Ping utilise deux codes ICMP: 8 (demande d’écho) et 0 (réponse d’écho). Lorsque vous exécutez la commande Ping à l’invite, le programme Ping envoie un paquet ICMP contenant le code 8 dans le Type champ. La réponse aura un Type de 0. Le programme multiplie l’écart entre l’envoi du paquet de demande d’écho et l’arrivée de la réponse. Ainsi, vous pouvez obtenir le “temps de parcours”D’un paquet vers la destination donnée et retour.
Le paquet de demande d’écho est inhabituel en ce qu’il est le seul paquet ICMP qui est envoyé sans être provoqué par une erreur. Ainsi, Ping n’a pas à émuler une condition d’erreur pour récupérer un message ICMP. Ping a deux options qui vous permettent de spécifier une liste d’adresses pour le chemin que la transmission doit prendre. Ceux-ci sont “-j“, Qui suggère un itinéraire et”-k», Qui dicte l’itinéraire.
Port Ping ICMP
Vous vous demandez peut-être quel port Ping utilise. La réponse est: aucun. Si un utilitaire vous permet de «cingler» un port, ce n’est pas littéralement la commande Ping. Au lieu de cela, cet utilitaire utilise un paquet TCP ou UDP pour tester un port. En vérité, ce type de fonction est appelé “scanner de port” ou “vérificateur de port.”
Ping ne peut pas utiliser les ports car c’est un protocole qui existe à un niveau inférieur à Couche de transport, où les ports sont une caractéristique majeure.
La méthode la plus proche d’un rapport de port ICMP Ping disponible est de envoyer un paquet UDP à un port spécifique. Si ce port n’est pas actif, la transmission provoquera un message ICMP de l’hôte de type 3 (Destination inaccessible) sous-type 3 (port de destination inaccessible). Ainsi, bien qu’il soit possible de provoquer un message ICMP sur un port, il n’est pas possible d’utiliser le mécanisme Ping pour envoyer un paquet ICMP à ce port en premier lieu en tant que demande d’écho. Si vous insérez un numéro de port sur l’adresse IP dans une commande Ping (c’est-à-dire ping :), la commande ne se lancera pas mais renverra une erreur de syntaxe à la place.
Pathping
Pathping est un utilitaire qui est intégré au système d’exploitation Windows et il est disponible dans toutes les versions depuis Windows NT. Ce programme est une combinaison de Ping et Traceroute, donc il exploite trois types de messages ICMP. Il s’agit du type de message de demande et de réponse d’écho (8 et 0) et du type de message dépassé dans le temps (11)..
Comme avec Traceroute et Ping, il est possible de donner une liste d’adresses pour un chemin suggéré comme paramètre à la commande et l’utilitaire essaiera d’envoyer un paquet à la destination via ces adresses.
Pathping produit un rapport de résultats formaté qui montre l’itinéraire et les horaires aller-retour à chaque routeur. Il enverra des requêtes ping répétées à chaque routeur du chemin plutôt que de simplement contacter plusieurs fois la destination. C’est ce que fait Ping, ou simplement enregistrer chaque routeur dans le chemin une fois, ce que fait Traceroute.
Pathping n’est pas aussi résilient que Ping ou Traceroute. Bien que chaque appareil sur Internet soit capable d’envoyer des messages ICMP, tous les appareils n’ont pas leurs fonctions ICMP activées. Certains propriétaires de routeurs et de serveurs désactivent intentionnellement les fonctions ICMP comme protection contre les attaques de pirates.
Si un routeur intermédiaire n’utilise pas ICMP, Ping passe toujours par ce routeur pour tester la destination. Si Traceroute rencontre un routeur qui n’enverra pas de paquets ICMP, il progresse simplement vers le routeur suivant, présentant une ligne d’astérisques pour le routeur non communicatif. Dans la même situation, Pathping termine ses requêtes auprès du routeur sur lequel ICMP est désactivé.
Attaque de Schtroumpf
La raison principale pour laquelle certains propriétaires d’équipements désactivent les capacités ICMP de leurs appareils est que le système peut être utilisé par des pirates informatiques comme conduit d’attaques. L’attaque du Schtroumpf en est un exemple.
L’attaque du Schtroumpf utilise une stratégie de réflecteur. Il n’attaque pas directement la cible, mais invoque d’autres ordinateurs et routeurs pour envoyer des messages à la victime. L’attaquant élabore l’adresse de diffusion utilisée sur le réseau de la victime, puis envoie une demande d’écho ICMP (Ping). Chaque appareil du réseau enverra une réponse d’écho au routeur qui héberge cette adresse IP de diffusion.
Cette attaque ne fonctionne que sur les grands réseaux. Il provoque efficacement une attaque par déni de service distribué (DDoS) depuis le réseau, alors que la plupart des attaques sont lancées via des ordinateurs distants sur Internet.. Le type d’attaque peut être évité en désactivant les capacités ICMP sur le routeur de passerelle ou en filtrant l’acceptation des demandes portant l’adresse IP de diffusion du réseau sur les paquets entrant dans le réseau à partir d’un emplacement distant.
Inondation Ping
Une inondation Ping est une stratégie DDoS qui submerge un ordinateur cible avec Demandes d’écho ICMP. Certaines implémentations de Ping fonctionnent mieux que d’autres. Par exemple, l’attaque est plus efficace si la commande Ping est lancée avec le “inonder”Option. Cependant, cette option n’est pas disponible avec toutes les versions de Ping – ce n’est pas une option valide sur la version intégrée à Windows, par exemple. Le fait que l’option flood n’est pas universelle pose des problèmes aux pirates qui souhaitent diriger des ordinateurs distants infectés par un botnet programme de contrôle pour envoyer les requêtes Ping. L’option d’inondation étant rare, il est probable que la plupart des appareils du botnet ne pourront pas lancer l’attaque.
Cette stratégie d’attaque aurait plus de succès si le pirate s’assurait que tous les ordinateurs infectés utilisaient une tentative pour lancer l’attaque si l’option d’inondation était disponible dans leurs implémentations Ping. Une façon de s’assurer que ce serait de tester les ordinateurs avant toute attaque et de classer un groupe qui a la bonne forme de Ping, ou pour installer un Ping compatible Flood sur tous les ordinateurs infectés par le virus botnet.
La défense la plus simple contre une inondation Ping est de désactiver les capacités ICMP sur le routeur. Si vous exécutez un serveur Web, un pare-feu d’application Web devrait vous protéger des inondations Ping.
Ping of Death
Le ping de la mort implique l’envoi de paquets de demande de ping trop longs. La demande aura une grande quantité de remplissage à la fin de celui-ci dans la charge utile. Comme le datagramme est trop long pour la transmission, le processeur de protocole Internet divise la chaîne en morceaux de la taille de l’unité de transmission maximale (MTU) de l’expéditeur. Le récepteur remarquera qu’il s’agit d’un paquet extra long qui a été brisé et essaie pour remonter le long paquet original avant de l’envoyer vers son application de destination. Si la longueur du paquet est supérieure à la taille de la mémoire disponible sur l’ordinateur récepteur, la tentative de remontage du paquet bloquera l’ordinateur..
Ping of Death est désormais un type d’attaque bien connu ainsi, les pare-feu dynamiques et les systèmes de détection des intrusions peuvent le détecter et le bloquer. Comme pour tout truc de pirate qui devient connu, son efficacité n’est plus menaçante. Ainsi, les pirates ont largement abandonné la stratégie Ping of Death en faveur de la Inondation Ping.
Tunnel ICMP
Les routeurs ne regardent que les en-têtes d’un paquet ICMP, y compris l’en-tête TCP / UDP qui pourrait se trouver derrière les données ICMP. Donc un paquet normal contenant beaucoup de données serait transmis aussi longtemps qu’il contiendrait une section ICMP. C’est potentiellement une porte dérobée pour permettre aux visiteurs de contourner les procédures d’authentification et de facturation des réseaux publics. C’est ce qu’on appelle un tunnel ICMP ou tunnel Ping.
Il n’est pas possible de passer par les passerelles et les pare-feu avec l’utilitaire Ping réseau standard que la plupart des gens ont sur leurs ordinateurs. Un tunnel ICMP devrait être programmé. C’est également un itinéraire possible dans un réseau pour un pirate. Malheureusement, pour les administrateurs réseau, il existe un certain nombre de packages de tunnel ICMP gratuits disponibles en téléchargement sur Internet.
Comme avec les deux précédents types d’attaques ICMP, Les tunnels Ping peuvent être bloqués par des pare-feu d’applications Web, des systèmes de détection d’intrusion ou simplement en bloquant toutes les activités ICMP à la passerelle réseau.
Attaque Twinge
Twinge est un programme d’attaque de pirates. Il lance une inondation ICMP pour submerger un ordinateur cible. Bien que toutes les requêtes Ping que la cible reçoit semblent provenir de nombreuses sources différentes, elles sont toutes en fait de la même source, chacun avec une fausse adresse IP source dans l’en-tête. Twinge est peut-être juste un utilitaire Ping renommé avec l’option «flood» implémentée. Cela ferait un outil très utile pour botnet les propriétaires de charger sur leurs ordinateurs zombies afin de lancer Attaques Ping Flood.
Essentiellement, une inondation Twinge est la même qu’une inondation Ping et les solutions pour en protéger un réseau sont les mêmes que pour la principale catégorie d’attaque DDoS via ICMP: désactiver ICMP, installer un pare-feu d’application Web ou un pare-feu dynamique, ou installer un système de détection d’intrusion.
Découverte de Path MTU
L’unité de transmission maximale (MTU) est un paramètre sur les appareils conformes au réseau qui dicte la plus longue longueur de paquets IP que l’appareil doit traiter. Elle s’exprime en octets, qui est un octet de huit bits. La recommandation initiale du MTU pour le protocole Internet était de 576 octets. Cependant, la norme Ethernet recommande 1500 octets et cela est devenu la norme pour tous les appareils réseau et Internet.
Il est possible d’ajuster les paramètres MTU sur n’importe quel routeur. Donc, si vos paquets passent par un routeur avec un MTU inférieur, chacun sera divisé en deux paquets IP. Cela ralentit la livraison de vos transferts car le paquet d’origine doit être remonté par le destinataire avant de pouvoir progresser au traitement de la couche de transport puis transmis à l’application de destination.
Il est également possible de spécifier dans l’en-tête IP ce fractionnement, qui est appelé “fragmentation»Ne doit pas être effectué sur le paquet. Dans ce cas, un routeur dont le MTU est plus petit que la longueur du paquet abandonnera le paquet et fera ensuite un rapport avec une notification d’erreur ICMP. Ce message d’erreur serait de type ICMP 3 (Destination inaccessible) sous-type 4 (fragmentation requise mais l’indicateur «ne pas fragmenter» est activé).
Une tentative de découverte Path MTU contourne le problème des paquets fragmentés ou abandonnés. Si vous pouvez trouver le MTU le plus bas sur le chemin que prendra votre transmission, il vous suffit de définir votre propre MTU à cette taille.
Le mécanisme de découverte est mis en œuvre par les procédures de défaillance décrites ci-dessus. Un paquet IP sort vers une destination avec la charge utile rembourrée pour atteindre la taille MTU de l’expéditeur et le “ne pas fragmenter”Jeu de drapeaux. Si cela arrive, vous ne devriez avoir aucun problème avec vos connexions à la destination à laquelle vous avez envoyé le paquet de test. Si la transmission provoque une erreur ICMP, vous devrez simplement essayer le test à plusieurs reprises, réduction de la longueur des paquets à chaque fois. Avec cela, vous finirez par envoyer un paquet qui passe et la longueur de ce paquet vous indiquera le MTU le plus bas sur le chemin de votre destination.
Ping a une option pour définir le “ne pas fragmenter” drapeau. Cependant, cela ne sera efficace que si le paquet Ping est plus long que les MTU des routeurs sur son chemin. Ping ne correspond pas à votre taille MTU, il est donc douteux qu’un court paquet Ping soit jamais abandonné.
le Basé sur Linux Le package IPutils contient tracepath, qui effectuera la découverte de MTU de chemin pour vous. Sur les fenêtres ordinateurs, vous pouvez consulter l’utilitaire mturoute gratuit.
Monde ICMP
Le système ICMP est un mécanisme très simple pour signaler les échecs de transmission. Cependant, il est également l’un des outils les plus puissants disponibles pour les administrateurs réseau. La bonne nouvelle est que ICMP est gratuit et automatiquement disponible sur tout appareil connecté au réseau. La mauvaise nouvelle est que ICMP peut être utilisé par des pirates pour former des attaques ou même se faufiler des connexions à travers des pare-feu.
Le fait que ICMP puisse être utilisé de manière malveillante encourage de nombreux administrateurs de réseaux peu enclins à prendre des risques à désactiver le système de messagerie. C’est dommage car cela désactive une grande partie des utilitaires très utiles décrits dans ce guide.
Si vous exécutez un réseau, et surtout si vous possédez un routeur qui transmet le trafic Internet, envisager d’utiliser des pare-feu dynamiques et des systèmes de détection d’intrusions pour bloquer les abus ICMP au lieu de désactiver complètement le protocole de messagerie. Examinez les paramètres et les fonctionnalités du micrologiciel de votre routeur pour voir s’il dispose de procédures de résolution des abus ICMP qui vous permettront de continuer à utiliser ICMP sur l’appareil.
Utilisez-vous des méthodes ICMP pour vérifier vos connexions? Avez-vous un utilitaire graphique basé sur ICMP que vous utilisez régulièrement et que vous pouvez recommander à d’autres? Avez-vous désactivé ICMP sur votre routeur pour protéger votre réseau? Laissez un message dans le commentaires section ci-dessous et partagez vos expériences.
erreur ICMP est le champ “temps de vie” (TTL). Ce champ est utilisé pour éviter que les paquets ne circulent indéfiniment sur le réseau. Chaque fois quun paquet traverse un routeur, le TTL est décrémenté de 1. Si le TTL atteint 0, le routeur envoie un message ICMP “temps dépassé” au périphérique source pour signaler que le paquet na pas pu être livré. Traceroute avec ICMP Traceroute est un outil de diagnostic réseau qui utilise ICMP pour suivre le chemin quun paquet prend à travers le réseau. Lorsque vous exécutez une commande traceroute, votre ordinateur envoie des paquets ICMP avec des TTL croissants. Chaque routeur sur le chemin renvoie un message ICMP “temps dépassé” avec son adresse IP. En collectant ces adresses IP, traceroute peut afficher le chemin complet que le paquet a pris à travers le réseau. Problèmes de Traceroute Bien que traceroute soit un outil utile, il peut y avoir des problèmes lors de son utilisation. Certains routeurs sont configurés pour bloquer les paquets ICMP, ce qui empêche traceroute de fonctionner correctement. De plus, certains pare-feu peuvent bloquer les messages ICMP, ce qui peut également empêcher traceroute de fonctionner. ICMP Ping Ping est un outil de diagnostic réseau qui utilise ICMP pour tester la connectivité entre deux périphériques. Lorsque vous exécutez une commande ping, votre ordinateur envoie des paquets ICMP “demande décho” à ladresse IP de destination. Si le périphérique de destination est en ligne, il renvoie un message ICMP “réponse décho” à ladresse IP source. Ping peut également être utilisé pour mesurer le temps de réponse entre les périphériques. Port Ping ICMP Ping ne teste que la connectivité IP de base entre deux périphériques. Si vous souhaitez tester la connectivité à un port spécifique, vous pouvez utiliser un outil de port ping. Cela envoie des paquets ICMP à un port spécifique sur le périphérique de destination et vérifie si une réponse est reçue. Pathping Pathping est un outil