Déballer le blob de config : inverser les couches XOR et Base64
Le défi
Récupéré dans le fichier de config d'un malware : le blob base64 ci-dessous. Les notes de l'analyste disent qu'il a été chiffré par XOR avec la clé 'acme' avant d'être encodé en base64. Construisez la recette dans l'atelier pour inverser les deux couches, puis soumettez le flag (HDNA{...}).
Ce que tu vas apprendre
- Inverser des transformations empilées dans le bon ordre (ordre inverse)
- Reconnaître le base64 comme couche de transport externe grâce à son jeu de caractères et son padding
- Appliquer un XOR à clé répétée avec une clé connue pour retrouver le texte en clair
- Écarter les transformations leurres en vérifiant si leur format d'entrée correspond
Compétences testées
Prérequis
- À l'aise avec le base64
- Comprendre que le XOR est sa propre inverse
Comment ça marche
Les auteurs de malware utilisent rarement une cryptographie solide pour cacher une config : ils recourent à une obfuscation réversible et peu coûteuse, généralement un XOR à clé répétée enveloppé dans du base64 pour que les octets survivent au stockage sous forme de texte. Pour un analyste, le travail consiste à reconnaître les couches et à les retirer dans le bon ordre.
Les couches se retirent dans l'ordre inverse de celui dans lequel elles ont été appliquées. Ici, l'auteur a pris la config en clair, l'a XORée avec une courte clé répétée, puis a encodé le résultat en base64. Vous devez donc d'abord décoder le base64 (ce qui transforme le blob imprimable en octets bruts chiffrés par XOR), puis annuler le XOR. Le XOR est pratique pour les deux camps : comme A XOR B XOR B = A, réappliquer la même clé avec la même opération l'annule exactement, sans besoin d'un « déchiffrement » séparé.
L'atelier modélise cela sous forme de recette : chaque opération transmet sa sortie à la suivante, et le résultat se met à jour en direct. Ajoutez From Base64, puis ajoutez XOR et tapez la clé acme : le flag en clair apparaît dans le panneau de sortie. Les autres opérations de la palette (ROT, Vigenere, hex, atbash, reverse) sont des leurres : une partie de la compétence consiste à remarquer que leur format d'entrée ne correspond pas à ce que vous avez sous la main.
Erreurs fréquentes
- Retirer les couches dans le mauvais ordre. Essayer de XORer directement le texte base64 imprimable. Le base64 est la couche externe ; décodez-le d'abord.
- Deviner la clé. La clé était donnée (acme) : lisez le brief avant de tenter un brute force.
- Se rabattre sur les leurres. ROT ou Vigenere ont l'air cryptographiques mais ne correspondent pas à des octets bruts ; vérifiez la forme des données avant d'ajouter une opération.
- Oublier que le XOR est symétrique. Il n'y a pas d'étape de déchiffrement séparée : le même XOR avec la même clé l'inverse.
Comment s'en protéger
Pour les défenseurs, à retenir : XOR plus base64, c'est de l'obfuscation, pas du chiffrement, cela arrête un strings occasionnel mais pas un analyste. En threat hunting, normalisez et décodez automatiquement les blobs suspects ; en développement, ne confondez jamais ce procédé avec une protection réelle de vos propres secrets.
- Décodez et scannez par XOR les blobs base64 suspects lors du triage pour faire apparaître les configs cachées et les données de C2.
- Utilisez un vrai chiffrement authentifié avec une clé gérée quand les données doivent réellement rester confidentielles.
- Considérez tout XOR à clé répétée courte comme récupérable, y compris par vos adversaires.