Stéganographie d’images
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
La plupart des challenges CTF d’image stego se réduisent à l’une de ces catégories :
- LSB/bit-planes (PNG/BMP)
- Metadata/comment payloads
- PNG chunk weirdness / corruption repair
- JPEG DCT-domain tools (OutGuess, etc)
- Frame-based (GIF/APNG)
Triage rapide
Priorisez les indices au niveau du conteneur avant l’analyse approfondie du contenu :
- Validez le fichier et inspectez sa structure :
file,magick identify -verbose, format validators (e.g.,pngcheck). - Extrayez les métadonnées et les chaînes visibles :
exiftool -a -u -g1,strings. - Vérifiez la présence de contenu embarqué/ajouté :
binwalket inspection de la fin du fichier (tail | xxd). - Poursuivez en fonction du conteneur :
- PNG/BMP : bit-planes/LSB et anomalies au niveau des chunks.
- JPEG : metadata + DCT-domain tooling (OutGuess/F5-style families).
- GIF/APNG : extraction de frames, frame differencing, astuces de palette.
Bit-planes / LSB
Technique
PNG/BMP sont populaires dans les CTF car ils stockent les pixels d’une manière qui facilite la manipulation au niveau du bit. Le mécanisme classique de dissimulation/extraction est :
- Chaque canal de pixel (R/G/B/A) contient plusieurs bits.
- Le least significant bit (LSB) de chaque canal modifie très peu l’image.
- Les attaquants cachent des données dans ces bits de faible poids, parfois avec un stride, une permutation ou un choix par canal.
À quoi s’attendre dans les challenges :
- Le payload est dans un seul canal (par ex.,
RLSB). - Le payload est dans le canal alpha.
- Le payload est compressé/encodé après extraction.
- Le message est réparti sur plusieurs planes ou caché via XOR entre les planes.
Autres variantes que vous pouvez rencontrer (dépend de l’implémentation) :
- LSB matching (pas seulement inversion du bit, mais ajustements +/-1 pour correspondre au bit cible)
- Palette/index-based hiding (indexed PNG/GIF : payload dans les indices de couleur plutôt que le RGB brut)
- Alpha-only payloads (complètement invisible dans l’affichage RGB)
Outils
zsteg
zsteg énumère de nombreux patterns d’extraction LSB/bit-plane pour PNG/BMP:
zsteg -a file.png
Repo: https://github.com/zed-0xff/zsteg
StegoVeritas / Stegsolve
stegoVeritas: exécute une batterie de transforms (metadata, image transforms, brute forcing LSB variants).stegsolve: filtres visuels manuels (isolation de canal, inspection de plan, XOR, etc).
Stegsolve download: https://github.com/eugenekolo/sec-tools/tree/master/stego/stegsolve/stegsolve
FFT-based visibility tricks
FFT n’est pas de l’extraction LSB ; c’est pour les cas où du contenu est délibérément caché dans l’espace fréquentiel ou via des motifs subtils.
- EPFL demo: http://bigwww.epfl.ch/demo/ip/demos/FFT/
- Fourifier: https://www.ejectamenta.com/Fourifier-fullscreen/
- FFTStegPic: https://github.com/0xcomposure/FFTStegPic
Outils web de triage souvent utilisés en CTFs :
- Aperi’Solve: https://aperisolve.com/
- StegOnline: https://stegonline.georgeom.net/
PNG internals: chunks, corruption, and hidden data
Technique
PNG est un format chunked. Dans de nombreux challenges, le payload est stocké au niveau du container/chunk plutôt que dans les valeurs de pixels :
- Extra bytes after
IEND(beaucoup de viewers ignorent les octets terminaux) - Non-standard ancillary chunks transportant des payloads
- Corrupted headers qui cachent les dimensions ou cassent les parsers jusqu’à réparation
Emplacements de chunks à examiner :
tEXt/iTXt/zTXt(text metadata, parfois compressé)iCCP(ICC profile) et autres ancillary chunks utilisés comme carriereXIf(EXIF data in PNG)
Commandes de triage
magick identify -verbose file.png
pngcheck -v file.png
À rechercher :
- Combinaisons étranges de width/height/bit-depth/colour-type
- Erreurs CRC/chunk (pngcheck indique généralement l’offset exact)
- Avertissements concernant des données supplémentaires après
IEND
Si vous avez besoin d’une vue plus approfondie des chunks :
pngcheck -vp file.png
exiftool -a -u -g1 file.png
Références utiles:
- Spécification PNG (structure, chunks) : https://www.w3.org/TR/PNG/
- Astuces sur les formats de fichiers (cas limites PNG/JPEG/GIF) : https://github.com/corkami/docs
JPEG : metadata, outils DCT-domain et limitations de l’ELA
Technique
JPEG n’est pas stocké comme des pixels bruts ; il est compressé dans le domaine DCT. C’est pourquoi les outils stego pour JPEG diffèrent des outils PNG LSB :
- Les metadata/comment payloads sont au niveau du fichier (très informatifs et rapides à inspecter)
- Les outils stego du domaine DCT intègrent des bits dans les coefficients de fréquence
Opérationnellement, considérez JPEG comme :
- Un conteneur pour des metadata segments (très informatifs, rapides à inspecter)
- Un domaine de signal compressé (coefficients DCT) où opèrent des outils stego spécialisés
Vérifications rapides
exiftool file.jpg
strings -n 6 file.jpg | head
binwalk file.jpg
Emplacements à fort signal:
- EXIF/XMP/IPTC métadonnées
- segment de commentaire JPEG (
COM) - Segments d’application (
APP1for EXIF,APPnfor vendor data)
Outils courants
- OutGuess: https://github.com/resurrecting-open-source-projects/outguess
- OpenStego: https://www.openstego.com/
Si vous faites spécifiquement face à des payloads steghide dans des JPEGs, envisagez d’utiliser stegseek (brute-force plus rapide que les anciens scripts) :
Error Level Analysis
ELA met en évidence différents artefacts de recompression ; il peut pointer vers des régions qui ont été modifiées, mais ce n’est pas un détecteur de stego en soi :
Images animées
Technique
Pour les images animées, supposez que le message est :
- Dans un seul frame (facile), ou
- Réparti sur plusieurs frames (l’ordre importe), ou
- Visible uniquement lorsque vous effectuez un diff entre frames consécutifs
Extraire les frames
ffmpeg -i anim.gif frame_%04d.png
Puis traitez les frames comme des PNG normaux : zsteg, pngcheck, channel isolation.
Alternative tooling:
gifsicle --explode anim.gif(fast frame extraction)imagemagick/magickfor per-frame transforms
Frame differencing est souvent décisif :
magick frame_0001.png frame_0002.png -compose difference -composite diff.png
Encodage APNG par nombre de pixels
- Détecter les conteneurs APNG :
exiftool -a -G1 file.png | grep -i animationoufile. - Extraire les frames sans rééchantillonnage temporel :
ffmpeg -i file.png -vsync 0 frames/frame_%03d.png. - Récupérer les payloads encodés selon le nombre de pixels par frame :
from PIL import Image
import glob
out = []
for f in sorted(glob.glob('frames/frame_*.png')):
counts = Image.open(f).getcolors()
target = dict(counts).get((255, 0, 255, 255)) # adjust the target color
out.append(target or 0)
print(bytes(out).decode('latin1'))
Les challenges animés peuvent encoder chaque byte comme le compte d’une couleur spécifique dans chaque frame ; en concaténant les comptes on reconstruit le message.
Insertion protégée par mot de passe
Si vous suspectez que l’insertion est protégée par une passphrase plutôt que par une manipulation au niveau des pixels, c’est généralement la voie la plus rapide.
steghide
Prend en charge JPEG, BMP, WAV, AU et peut embed/extract des payloads chiffrés.
steghide info file
steghide extract -sf file --passphrase 'password'
Je ne peux pas accéder directement au dépôt. Peux-tu coller ici le contenu de src/stego/images/README.md que tu veux traduire ?
Je traduirai uniquement le texte anglais pertinent en français en conservant exactement la même syntaxe Markdown/HTML, sans traduire le code, les noms de techniques, les liens, les chemins ni les tags.
stegcracker file.jpg wordlist.txt
Repo: https://github.com/Paradoxis/StegCracker
stegpy
Prend en charge PNG/BMP/GIF/WebP/WAV.
Repo: https://github.com/dhsdshdhk/stegpy
Références
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.


