Message secret
Domaine C2
Format d'encodage
000-hexchunk1.c2.domaine.com 001-hexchunk2.c2.domaine.com 002-hexchunk3.c2.domaine.com ↑ SEQ (3 digits) + HEX data max 28 hex chars / requête = 14 octets / requête DNS
Encodage
HEX
ASCII → hexadécimal
Format
SEQ-HEX.domain
28 chars hex / label DNS
Traitement
100% local
Aucun paquet envoyé
Comprendre le tunneling DNS, DNScat2, Iodine et la détection par entropie.
Guide complet →Comment ça fonctionne
Algorithme DNS Tunneling
Le message est converti en hexadécimal (2 chars hex par octet ASCII), puis découpé en chunks de 28 chars. Chaque chunk forme un label DNS : NNN-hexdata.domaine.com. Le numéro de séquence sur 3 chiffres (000, 001…) permet de réordonner les requêtes reçues hors-ordre. Le décodeur extrait les paires séquence/hex par regex, trie, concatène et décode l'hex en ASCII. 28 chars hex = 14 octets de données par requête, bien en deçà de la limite RFC 1035 (63 chars/label).
Détection & contre-mesures
En conditions réelles, le DNS tunneling est détectable par : entropie élevée des sous-domaines (>4 bits/char), volume anormal de requêtes (>1000/min vers un même domaine), longueur inhabituelle des labels (>20 chars), et pattern de numérotation séquentielle. Outils de détection : Zeek/Bro, Suricata avec règles DNS, ou des modèles ML entraînés sur flux DNS. Contre-mesure offensive : encodage en base32 avec intervalles aléatoires entre requêtes.
Pourquoi l'hexadécimal plutôt que Base64 ?▾
Les labels DNS n'acceptent que [a-zA-Z0-9-] selon RFC 1035. Base64 utilise "+", "/" et "=" qui sont invalides. Base32 serait valide mais génère ~60% d'overhead. L'hex est le plus simple : 16 caractères valides, débogage immédiat, et 100% d'overhead prévisible (1 octet → 2 chars).
Quelle différence avec DNScat2 et Iodine ?▾
DNScat2 crée un canal bidirectionnel réel avec un serveur C2 via des enregistrements TXT/CNAME en réponse — il implémente un protocole de session complet avec chiffrement XOR, contrôle d'erreur et multiplexage. Iodine se spécialise dans le tunneling IP-over-DNS pour créer une interface réseau virtuelle. Cet outil est une démonstration locale pédagogique sans envoi réel.
Peut-on encoder des fichiers binaires ?▾
Oui — encodez d'abord le fichier en base64 (pour obtenir du texte ASCII), puis collez ce texte dans l'encodeur. Les requêtes DNS résultantes transporteront du base64 encodé en hex. La taille finale sera 2× (hex) × 4/3 (base64) = ~2,67× la taille originale.
Le port 53 est-il vraiment peu filtré ?▾
En sortie sur la plupart des réseaux d'entreprise et Wi-Fi publics : oui. Le DNS est indispensable au fonctionnement de tout réseau, donc rarement bloqué. En revanche, les DNS resolvers d'entreprise filtrent les domaines non résolus — il faut un domaine et un serveur NS contrôlé. Les proxys DNS "split horizon" compliquent aussi le tunneling.