Vous avez probablement entendu parler d’ICMP et si vous n’êtes qu’un féru de technologie, vous saurez probablement (au moins) que cela a quelque chose à voir avec Internet.

ICMP est en fait un protocole, tout comme IP, TCP et UDP (dont nous avons discuté et expliqué précédemment), il joue donc un rôle assez important dans le bon fonctionnement de nos connexions Internet.

ICMP a plus à voir avec la façon dont les problèmes de connectivité sont détectés et traités, mais ne gâchons pas trop notre conférence. Continuez à lire si vous voulez savoir ce qu’est ICMP et comment il nous aide à maintenir nos connexions fonctionnant à des niveaux optimaux.

Internet Control Message Protocol

Qu’est-ce que ICMP?

Le protocole de message de contrôle Internet, que la plupart connaissent par son acronyme plus convivial ICMP, est un protocole fondamental pour résoudre divers problèmes liés à la connectivité.

Ce protocole est utilisé par une grande variété de périphériques réseau, y compris, mais sans s’y limiter, les routeurs, les modems et les serveurs pour informer les autres participants du réseau des problèmes de connectivité potentiels.

Nous avons mentionné ci-dessus qu’ICMP est un protocole tout comme TCP et UDP, mais contrairement à ces deux-là, ICMP n’est généralement pas utilisé pour faciliter l’échange de données entre les systèmes. De plus, il n’est pas fréquemment utilisé dans les applications réseau des utilisateurs finaux, à moins qu’il ne s’agisse d’outils de diagnostic.

La définition originale de l’ICMP a été esquissée par Jon Postel , qui a contribué massivement et à plusieurs reprises au développement d’Internet, et le premier standard d’ICMP a été publié en avril 1981 dans la RFC 777 .

De toute évidence, la définition initiale a subi de nombreux changements pour atteindre la forme que nous connaissons aujourd’hui. La forme stable de ce protocole a été publiée 5 mois plus tard que sa définition initiale, en septembre 1981, dans la RFC 792, et a également été écrite par Postel.

Comment fonctionne ICMP?

En bref, ICMP est utilisé pour signaler les erreurs en déterminant si les données atteignent ou non leur destination prévue relativement rapidement.

Dans un scénario de base, deux appareils sont connectés via Internet et échangent des informations via ce que nous appelons des paquets de données ou des datagrammes. ICMP génère des erreurs et les partage avec l’appareil qui a envoyé les données d’origine au cas où les paquets n’arriveraient jamais à leur destination.

Par exemple, si vous envoyez un paquet de données qui est tout simplement trop volumineux pour que le routeur puisse le gérer, le routeur abandonnera d’abord le paquet puis il générera un message d’erreur indiquant au périphérique émetteur que son paquet n’a jamais atteint la destination qu’il était. en route vers.

Cependant, c’est ce que nous appellerions une compétence passive car vous n’avez absolument rien à faire pour recevoir ces messages d’erreur (si le besoin s’en fait sentir). Comme vous le découvrirez bientôt, ICMP dispose également d’un utilitaire plus actif, sur lequel vous pouvez compter pour effectuer diverses opérations de dépannage du réseau.

Contrairement à TCP et UDP, ICMP n’a pas besoin de connexion de périphérique pour envoyer un message. Dans une connexion TCP, par exemple, les appareils connectés doivent effectuer une poignée de main en plusieurs étapes, après quoi les données peuvent être transférées.

Avec ICMP, il n’est pas nécessaire d’établir une connexion; un message peut être simplement envoyé au lieu d’une connexion. En outre, un message ICMP ne nécessite pas de port vers lequel diriger le message, contrairement à TCP et UDP, qui utilisent tous deux des ports spécifiques pour acheminer les informations. Non seulement ICMP ne nécessite pas de port, mais il ne permet en fait pas de cibler des ports spécifiques.

Les messages ICMP sont transportés par des paquets IP mais ne sont pas contenus par eux. Au lieu de cela, ils se servent de ces paquets, car ils ne sont générés que si leur opérateur (c’est-à-dire les paquets IP) n’atteignent jamais leur destination. Le plus souvent, les circonstances qui ont permis à un paquet ICMP de se reproduire résultent des données disponibles dans l’en-tête IP du paquet ayant échoué.

Étant donné qu’ICMP inclut les données de l’en-tête IP du paquet ayant échoué, les outils d’analyse de réseau peuvent être utilisés pour déterminer exactement quels paquets IP n’ont pas pu être livrés. Cependant, l’en-tête IP n’est pas le seul type d’information transporté par le paquet ICMP.

Un paquet ICMP contient l’en-tête IP, suivi d’un en-tête ICMP et des huit premiers octets de la charge utile.

  • En-tête IP -contient des détails sur la version IP, les adresses IP source et de destination, le nombre de paquets envoyés, le protocole utilisé, la longueur des paquets, la durée de vie (TTL), les données de synchronisation, ainsi que comme numéros d’identification pour des paquets de données particuliers
  • En-tête ICMP -contient un code qui permet de catégoriser l’erreur, un sous-code qui facilite l’identification de l’erreur en proposant une description et une somme de contrôle
  • En-tête de couche de transport -huit premiers octets de la charge utile (transférés via TCP ou UDP)

Messages de contrôle ICMP

Comme nous l’avons mentionné ci-dessus, lorsqu’une erreur se produit, les valeurs du premier champ de l’en-tête ICMP peuvent être utilisées pour l’identifier. Ces types d’erreur, ainsi que leur identifiant, sont les suivants:

  • 0 -Réponse d’écho-utilisée à des fins de ping
  • 3 -Destination inaccessible
  • 5 -Message de redirection-utilisé pour indiquer le choix d’un itinéraire différent
  • 8 -Requête d’écho-utilisée à des fins de ping
  • 9 -Annonce de routeur-utilisée par les routeurs pour annoncer que leurs adresses IP sont disponibles pour le routage
  • 10 -Sollicitation de routeur-découverte, sollicitation ou sélection de routeur
  • 11 -Temps dépassé-TTL expiré ou temps de réassemblage dépassé
  • 12 -Problème de paramètre: en-tête IP incorrect-longueur incorrecte, option requise manquante ou erreur indiquée par le pointeur
  • 13 -Horodatage
  • 14 -Réponse d’horodatage
  • 41 -utilisé pour les protocoles de mobilité expérimentaux
  • 42 -Demande d’écho étendu-demande un écho étendu
  • 43 -Réponse d’écho étendue-réponses à 42 demandes d’écho étendues
  • 253 et 254 -expérimental

Le champ TTL (Time to Live)

Le champ TTL est l’un des champs d’en-tête IP qui peut (et le fait souvent) générer une erreur ICMP. Il contient une valeur, qui est le nombre maximum de routeurs qu’un paquet envoyé peut traverser avant d’atteindre sa destination finale.

Une fois le paquet traité par un routeur, cette valeur diminue de un, et le processus continue jusqu’à ce que l’une des deux choses se produise: soit le paquet atteint sa destination, soit la valeur atteint zéro, ce qui est généralement suivi par le routeur abandonnant le paquet et envoyant un message ICMP à l’expéditeur d’origine.

Il va donc sans dire que si un paquet est abandonné parce que son TTL a atteint zéro, ce n’est pas à cause de données corrompues dans l’en-tête ou de problèmes spécifiques au routeur. TTL a été en fait conçu pour empêcher les paquets malveillants de bloquer les connexions et a abouti à la création d’un outil primordial pour le dépannage du réseau: Traceroute.

Utilisation d’ICMP dans les diagnostics réseau

Comme mentionné ci-dessus, ICMP peut être utilisé avec des outils de diagnostic pour déterminer le bon fonctionnement d’une connexion réseau. Vous ne savez peut-être pas ce qu’est ICMP avant de lire notre guide, mais nous sommes certains que vous avez au moins entendu parler de ping, le célèbre utilitaire réseau qui vous permet de savoir si un hôte est accessible ou non.

Eh bien, ping est en fait un outil important qui utilise ICMP comme épine dorsale. Traceroute est un autre bon exemple d’outils qui nous aident à diagnostiquer et à résoudre les problèmes de connectivité sur nos réseaux. Pathping , qui est une combinaison de ping et de traceroute, est un autre excellent outil basé sur ICMP.

Ping

Ping est un outil Windows intégré accessible via CMD et l’un des outils les plus importants qui utilise ICMP pour résoudre les erreurs de réseau potentielles. Ping rend utilisation de deux des codes de la liste ci-dessus, 8 (demande d’écho) et 0 (réponse d’écho), pour être plus précis.

Voici à quoi ressemblent deux exemples de commandes ping :

ping 168.10.26.7
ping addictivetips.com

Lorsque vous l’exécutez, ping enverra un paquet ICMP avec un code 8 dans son champ de type, et attendra patiemment la réponse de type 0. Une fois la réponse arrivée, ping déterminera le temps entre la requête (8) et sa réponse (0) et renverra la valeur de l’aller-retour exprimée en millisecondes.

Nous avons déjà établi que les paquets ICMP sont généralement générés et envoyés à la suite d’une erreur. Cependant, le paquet de requête (type 8) n’a pas besoin d’une erreur pour être envoyé, donc ping peut également recevoir la réponse (0) sans déclencher d’erreur.

Comme vous l’avez probablement compris à partir de nos exemples ci-dessus, vous pouvez envoyer un ping à une adresse IP ou à un hôte. De plus, ping a une pléthore d’options supplémentaires que vous pouvez utiliser pour un dépannage plus avancé en ajoutant simplement l’option à la commande.

Par exemple, l’utilisation de l’option -4 forcera le ping à utiliser exclusivement IPv4 , alors que -6 utilisera uniquement IPv6 adresses. Consultez la capture d’écran ci-dessous pour une liste complète des options que vous pouvez ajouter à votre commande ping .

Qu'est-ce que ICMP

Une idée fausse courante à propos du ping est que vous pouvez l’utiliser pour tester la disponibilité de certains ports sur des systèmes ciblés. En bref, vous ne pouvez pas faire cela, car ICMP ne fait pas de véritable échange de messages entre les hôtes, contrairement à TCP ou UDP, et ne nécessite pas l’utilisation de port.

Les applications d’analyse de port utilisent des paquets TCP ou UDP pour déterminer si des ports spécifiques sont ouverts et accessibles. Les outils envoient des paquets TCP ou UDP à un port spécifique et génèrent un message ICMP de type 3 (hôte inaccessible) sous-type 3 (port de destination inaccessible) si ce port n’est pas actif.

Traceroute

Tout comme le ping, traceroute est un autre outil de dépannage réseau que chaque administrateur réseau devrait non seulement avoir dans sa ceinture à outils, mais également maîtriser. Ce que fait traceroute est vous aider à cartographier un itinéraire de tous les appareils traversés par votre connexion jusqu’à ce qu’elle atteigne sa destination spécifiée.

Donc, si vous souhaitez trouver l’itinéraire complet entre vous et une autre machine, traceroute peut vous donner exactement ces informations. Cet outil peut également être utilisé pour déterminer s’il y a un problème sur l’itinéraire suivi par votre connexion.

Si, par exemple, il y a un appareil sur le chemin de connexion qui a du mal à transférer vos paquets vers leur destination prévue, traceroute vous indiquera quel routeur vous donne une réponse différée (ou aucune du tout).

Le fonctionnement de traceroute consiste à envoyer un paquet avec une valeur de TTL ( Time To Live ) de 0, qui sera automatiquement abandonné. par le premier routeur qu’il rencontre, comme nous l’avons expliqué ci-dessus dans la section TTL. Après avoir déposé le paquet, le routeur génère un paquet ICMP et le renvoie à traceroute.

Le programme extrait l’adresse source du paquet, ainsi que le temps qu’il a fallu au paquet pour revenir, puis envoie un autre paquet avec une valeur TTL de 1 . Une fois que le deuxième paquet passe par la passerelle, son TTL diminue de 1 (devenant 0 ) et se dirige vers le deuxième routeur, qui, lors de la détection de la valeur TTL nulle, supprime le paquet et renvoie un paquet ICMP à traceroute.

Chaque fois que traceroute reçoit un paquet ICMP, il augmente le TTL de un et le renvoie sur sa trace, et cette opération se poursuit jusqu’à ce que la destination spécifiée soit atteinte ou que le traceroute soit épuisé de houblon. Par défaut, Windows alloue une quantité maximale de 30 sauts, mais vous pouvez l’augmenter en le spécifiant dans la syntaxe de la commande.

Voici un exemple de la façon dont vous pouvez exécuter traceroute dans CMD:

tracert addictivetips.com

Tout comme le ping, traceroute a une série d’options que vous pouvez ajouter à la syntaxe si vous voulez être plus précis. Vous pouvez forcer IPv4 ou IPv6 , mais vous pouvez également ignorer la résolution des adresses en noms d’hôte et augmenter le nombre maximal de sauts pour rechercher la cible. Consultez notre capture d’écran ci-dessous pour un exemple d’utilisation de traceroute et une liste de toutes les options que vous pouvez utiliser avec.

Options de traceroute

Il convient toutefois de mentionner que traceroute ne peut vous fournir que des informations en temps réel. Par conséquent, si vous rencontrez un ralentissement de votre connexion et que vous souhaitez utiliser cet outil pour l’examiner, vous risquez de recevoir des résultats trompeurs car l’itinéraire a peut-être changé entre-temps.

Bien qu’il soit possible de forcer traceroute à suivre un certain chemin en utilisant l’option -j et en ajoutant manuellement des adresses de routeur, cela signifie que vous êtes déjà au courant du chemin défectueux. C’est quelque peu paradoxal, car découvrir le chemin en premier lieu vous oblige à utiliser traceroute sans l’option -j .

Si vous n’êtes pas vraiment fan des outils CLI (Command Line Interface) et préférez de loin une approche GUI (Graphical User Interface), il existe de nombreuses solutions logicielles tierces pour traceroute. Traceroute NG de SolarWinds est l’un des meilleurs exemples auxquels nous puissions penser. Avons-nous mentionné que c’est entièrement gratuit ?

Pathping

Comme nous l’avons brièvement mentionné ci-dessus, pathping complète le trio d’outils de dépannage réseau indispensables. Du point de vue de la fonctionnalité, patphing est une combinaison de ping et de traceroute, car il utilise les trois types de messages exploités par le duo susmentionné: echo request (8), echo répondre (0), ainsi que le temps dépassé (11).

Le plus souvent, le cheminement est utilisé pour identifier les nœuds de connexion qui sont affectés par une latence élevée et une perte de paquets. Bien sûr, vous pouvez utiliser traceroute puis ping pour obtenir ces détails, mais avoir les fonctionnalités des deux outils sous une seule commande est beaucoup plus pratique pour les administrateurs réseau.

L’un des inconvénients de l’utilisation de pathping est que cela peut prendre un certain temps pour terminer son enquête (25 secondes par saut pour produire des statistiques de ping). Pathping vous montrera à la fois l’itinéraire vers la destination spécifiée et les heures de trajet aller-retour pour y arriver.

Contrairement au ping et au traceroute, pathping envoie un ping à chaque routeur sur son chemin à plusieurs reprises, ce qui augmente son efficacité globale. Cependant, s’il rencontre un routeur qui a désactivé ses fonctions ICMP, pathping arrêtera sa demande d’informations, alors que le ping peut toujours atteindre un routeur sans fonctionnalités ICMP, et traceroute passera au routeur suivant dans son chemin et affichez une chaîne d’astérisques pour tous les routeurs non ICMP.

Pathping est un outil intégré à Windows et il en a été ainsi depuis Windows NT, vous pouvez donc l’utiliser comme vous le feriez avec un ping ou un tracert: via une ligne de commande.

Voici un exemple de la façon dont vous pouvez utiliser pathping:

pathping addictivetips.com-h 40-w 2-4

La commande ci-dessus vous montrera l’itinéraire vers notre site Web, ainsi que les temps d’aller-retour vers chaque routeur dans le chemin de connexion. De plus, les options que nous avons utilisées dans notre exemple augmenteront la valeur de sauts maximum par défaut de 30 à 40, ajouteront une valeur de délai d’expiration de 2 millisecondes pour chaque réponse et forceront IPv4.

Consultez notre capture d’écran ci-dessous pour un guide rapide d’utilisation de pathping et une liste d’options que vous pouvez ajouter à la syntaxe de la commande.

Options de cheminement et exemple d'utilisation

Applicabilité ICMP dans les cyberattaques

Bien que la gamme ICMP facilite de nombreuses opérations de dépannage de connectivité, ce protocole peut également être exploité pour effectuer diverses cyberattaques. Si vous êtes depuis assez longtemps sur Internet, vous avez probablement entendu parler d’inondations de ping, de DDoS, de ping de la mort, d’attaques de Schtroumpf ou de tunnels ICMP.

Si certaines de ces attaques servent aujourd’hui de PoC (Proof of Concept), d’autres sont encore utilisées par des agents malveillants pour endommager les systèmes compatibles Internet ou par des experts en sécurité pour tester les vulnérabilités.

Nous allons commencer par le plus populaire, qui est le ping flood (encore largement utilisé, d’ailleurs), et expliquer comment il utilise ICMP pour le mal.

Ping flood

Utiliser ping pour envoyer des requêtes d’écho et attendre les réponses d’écho semble assez inoffensif. Mais que se passerait-il si, au lieu d’attendre la réponse, le ping envoyait simplement une énorme quantité de demandes d’écho ICMP? Dans ce scénario d’attaque classique DoS (déni de service) , l’appareil cible subirait un retard important, et même des pertes de connexion si l’attaque réussissait.

Cette attaque est plus efficace si l’attaquant dispose de plus de bande passante que la victime, et si la victime envoie des échos ICMP à la multitude de requêtes qu’elle reçoit, consommant ainsi de la bande passante entrante et sortante.

L’attaquant peut spécifier une option «flood» dans la commande ping, mais cette option est assez rare et n’est pas intégrée aux outils intégrés des systèmes d’exploitation. Par exemple, le ping de Windows n’a pas d’option «flood» , mais certains outils tiers intègrent cette fonctionnalité.

Une attaque ping flood peut vraiment devenir catastrophique si elle se transforme en attaque DDoS (Déni de service distribué) . Une attaque DDoS utilise plusieurs systèmes pour en cibler un seul, le submergeant ainsi de paquets provenant de plusieurs emplacements à la fois.

Un moyen infaillible de vous protéger contre une inondation de ping est de désactiver les fonctions ICMP sur votre routeur. Vous pouvez également installer un pare-feu d’application Web si vous devez protéger un serveur Web contre de telles attaques.

Ping de la mort

Cette attaque consiste à envoyer un ping mal formé à un ordinateur cible. Dans ce type d’attaque, le paquet envoyé contiendra une quantité de remplissage dans la charge utile qui est trop volumineuse pour être traitée en une seule fois.

Cependant, avant d’être envoyé, ce ping malveillant sera fragmenté en parties plus petites, car le transmettre dans sa forme d’origine assemblée serait impossible pour le processeur Internet Protocol .

L’ordinateur ciblé par le ping de la mort recevra les morceaux et tentera de les réassembler avant d’envoyer le paquet malveillant à son application de destination. Voici où le dommage se produit: si le paquet assemblé est plus long que la mémoire disponible sur l’ordinateur cible, le réassemblage peut entraîner un dépassement de la mémoire tampon , des plantages du système et même permettre à du code malveillant d’être injecté dans la machine affligée.

Du bon côté, Ping of Death n’est plus une nouveauté, car de nombreux systèmes de sécurité le reconnaissent sans problème et réussissent à le bloquer.

Attaque Schtroumpf

Contrairement aux deux types d’attaques précédents, une attaque Schtroumpf n’attaque pas directement un appareil mais utilise d’autres appareils sur le même réseau pour coordonner une attaque DoS distribuée (un DDoS ) vers une seule machine.

L’attaquant a besoin de l’adresse IP de sa cible et de l’adresse de diffusion IP du réseau cible. L’attaquant ajoute l’adresse IP de la victime aux paquets ICMP (usurpe) puis les diffuse sur le réseau de la cible en utilisant une adresse de diffusion IP .

En réponse, la plupart des appareils connectés au même réseau enverront une réponse à l’adresse IP source (remplacée pour refléter la machine de la cible), qui pourrait être submergée par le trafic si le réseau est assez grand (a un grand nombre de appareils).

En conséquence, l’ordinateur de la cible peut être ralenti et même rendu inutilisable pendant une période donnée, si l’attaque est suffisamment sévère.

Comme précédemment, vous pouvez éviter une attaque Schtroumpf en désactivant simplement les capacités ICMP de votre routeur passerelle. Une autre façon d’obtenir une protection consiste à mettre sur liste noire les demandes provenant de l’adresse IP de diffusion de votre réseau.

Attaque Twinge

Une attaque Twinge est menée par un programme qui envoie un flot de paquets ICMP usurpés afin de nuire à un système. Les paquets ICMP sont faux car ils utilisent tous de fausses adresses IP aléatoires, mais en réalité, les paquets proviennent d’une seule source (la machine de l’attaquant).

Il semblerait que les paquets ICMP contiennent une signature qui peut révéler le fait que l’attaque ne provient pas de plusieurs sources, mais a été coordonnée avec l’aide de Twinge à la place.

Bien que cette attaque puisse être désastreuse si elle est bien planifiée, la désactivation d’ICMP sur votre routeur de passerelle et l’installation d’un pare-feu ou d’un système de détection d’intrusion peuvent vous aider à vous en protéger.

Tunnel ICMP

Par défaut, les routeurs ne recherchent que les en-têtes des paquets ICMP, ce qui permet aux paquets qui contiennent en fait beaucoup de données supplémentaires de facilement contourner la détection tant qu’ils contiennent une section ICMP. Ce type d’attaque est appelé tunnel ping ou ICMP. Heureusement, les utilitaires de ping standard ne sont pas capables de tunneliser à travers les pare-feu et les passerelles, car les tunnels ICMP doivent être soigneusement adaptés aux réseaux auxquels ils sont destinés.

D’autre part, il existe de nombreuses ressources en ligne que les attaquants peuvent utiliser et émuler un tel tunnel, s’octroyant un libre passage à travers les réseaux privés et les machines qui y sont connectées. Comme auparavant, la désactivation des fonctionnalités ICMP sur votre routeur de passerelle, l’utilisation de pare-feu et l’application de règles strictes de liste noire peuvent être primordiales pour éviter ce type d’attaque.

ICMP-Conclusion

Tout bien considéré, bien qu’ICMP ne soit pas utilisé pour échanger des informations entre des appareils connectés sur un réseau donné comme le font TCP et UDP, il a toujours une large plage d’applicabilité. En fait, ICMP est l’un des protocoles fondamentaux les plus flexibles qui aident à garder Internet tel que nous le connaissons.

Hormis son objectif fondamental de faire savoir à un système quand il y a un étranglement dans sa connexion à un autre système, ICMP est l’épine dorsale de nombreux outils de dépannage tels que ping, pathping et traceroute. Malheureusement, il aide également les agents malveillants à livrer un large éventail d’attaques DoS et d’infiltration aux machines vulnérables.

Categories: IT Info