Sur ciel-nocturne.example, un forum de photographie fictif, le compte « Corvus » publie chaque semaine un paysage, sans jamais le moindre commentaire. Les modérateurs soupçonnent un canal de communication caché, mais les images paraissent parfaitement normales et strings n'y trouve rien.
Un ancien membre du groupe a fini par lâcher une seule phrase : « On n'utilise qu'une couleur, et seulement le dernier bit. »
La dernière image publiée vous est fournie (pièce jointe paysage.png). Extrayez le message dissimulé : il contient le flag au format CSA{...}.
Ce que l'on sait du procédé : chaque pixel est codé par trois composantes (rouge, vert, bleu) de 8 bits chacune, soit une valeur de 0 à 255. Le message a été écrit bit par bit dans les pixels, de gauche à droite puis de haut en bas, en commençant par le bit de poids fort de chaque caractère.
Outils possibles, tous utilisables hors ligne : zsteg (Linux), stegsolve, CyberChef (opération « Extract LSB ») ou quelques lignes de Python avec la bibliothèque Pillow.
Comment fonctionne la stéganographie LSB
Modifier le bit de poids faible (LSB, Least Significant Bit) d'une composante change sa valeur d'une unité au plus : la différence est invisible à l'œil nu. En remplaçant ces bits par ceux d'un message, on dissimule des données sans altérer l'apparence de l'image. Capacité : une image de 800 × 500 pixels compte 400 000 pixels, soit 1,2 million de bits sur les trois canaux, environ 150 000 caractères cachables.
Pourquoi c'est un enjeu de sécurité
Des logiciels malveillants s'en servent pour recevoir leurs ordres ou faire sortir des données volées à l'intérieur d'images anodines, publiées sur des sites parfaitement légitimes : les filtres qui ne bloquent que les fichiers suspects les laissent passer. Un initié peut aussi exfiltrer des documents de cette manière.
Se défendre