Bildsteganographie
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Die meisten CTF image stego lassen sich in eine der folgenden Kategorien einordnen:
- LSB/bit-planes (PNG/BMP)
- Metadata/comment payloads
- PNG chunk weirdness / corruption repair
- JPEG DCT-domain tools (OutGuess, etc)
- Frame-based (GIF/APNG)
Schnelle Triage
Priorisiere Hinweise auf Container-Ebene, bevor du eine tiefgehende Inhaltsanalyse durchführst:
- Validiere die Datei und untersuche die Struktur:
file,magick identify -verbose, Format-Validatoren (z. B.pngcheck). - Extrahiere Metadaten und sichtbare Strings:
exiftool -a -u -g1,strings. - Prüfe auf eingebettete/angehängte Inhalte:
binwalkund End-of-File-Inspektion (tail | xxd). - Nach Container unterscheiden:
- PNG/BMP: bit-planes/LSB und chunk-level Anomalien.
- JPEG: Metadaten + DCT-domain Tools (OutGuess/F5-Familien).
- GIF/APNG: Frame-Extraktion, Frame-Differenzierung, Palette-Tricks.
Bit-planes / LSB
Technik
PNG/BMP sind in CTFs beliebt, weil sie Pixel so speichern, dass Manipulationen auf Bit-Ebene leicht möglich sind. Der klassische Hide/Extract-Mechanismus ist:
- Jeder Pixelkanal (R/G/B/A) hat mehrere Bits.
- Das least significant bit (LSB) jedes Kanals verändert das Bild nur sehr wenig.
- Angreifer verstecken Daten in diesen niederwertigen Bits, manchmal mit einem Stride, einer Permutation oder kanal-spezifischer Auswahl.
Was in Challenges zu erwarten ist:
- Der Payload befindet sich nur in einem Kanal (z. B.
RLSB). - Der Payload befindet sich im Alpha-Kanal.
- Der Payload ist nach der Extraktion komprimiert/kodiert.
- Die Nachricht ist über Ebenen verteilt oder durch XOR zwischen Ebenen verborgen.
Weitere Familien, denen du begegnen kannst (implementationabhängig):
- LSB matching (nicht nur das Umdrehen des Bits, sondern +/-1-Anpassungen, um das Zielbit zu erreichen)
- Palette/index-based hiding (indexed PNG/GIF: Payload in Farbindices statt rohem RGB)
- Alpha-only payloads (vollständig unsichtbar in der RGB-Ansicht)
Tools
zsteg
zsteg listet viele LSB/bit-plane Extraktionsmuster für PNG/BMP auf:
zsteg -a file.png
Repo: https://github.com/zed-0xff/zsteg
StegoVeritas / Stegsolve
stegoVeritas: führt eine Reihe von Transformationsprüfungen durch (metadata, image transforms, brute forcing LSB variants).stegsolve: manuelle visuelle Filter (channel isolation, plane inspection, XOR, etc).
Stegsolve download: https://github.com/eugenekolo/sec-tools/tree/master/stego/stegsolve/stegsolve
FFT-based visibility tricks
FFT ist keine LSB-Extraktion; es wird in Fällen eingesetzt, in denen Inhalte gezielt im Frequenzraum oder in subtilen Mustern versteckt werden.
- EPFL demo: http://bigwww.epfl.ch/demo/ip/demos/FFT/
- Fourifier: https://www.ejectamenta.com/Fourifier-fullscreen/
- FFTStegPic: https://github.com/0xcomposure/FFTStegPic
Webbasierte Triagierung, die oft in CTFs verwendet wird:
- Aperi’Solve: https://aperisolve.com/
- StegOnline: https://stegonline.georgeom.net/
PNG-Interna: chunks, Beschädigung und versteckte Daten
Technik
PNG ist ein chunked Format. In vielen Challenges wird die payload auf Container-/Chunk-Ebene statt in Pixelwerten gespeichert:
- Extra bytes after
IEND(viele Viewer ignorieren trailing bytes) - Non-standard ancillary chunks die payloads enthalten
- Corrupted headers, die Dimensionen verbergen oder Parser zum Absturz bringen, bis sie korrigiert sind
Wichtige Chunk-Positionen, die überprüft werden sollten:
tEXt/iTXt/zTXt(text metadata, manchmal komprimiert)iCCP(ICC profile) und andere ancillary chunks, die als Träger verwendet werdeneXIf(EXIF data in PNG)
Triage-Befehle
magick identify -verbose file.png
pngcheck -v file.png
Worauf achten:
- Ungewöhnliche width/height/bit-depth/colour-type-Kombinationen
- CRC/chunk-Fehler (pngcheck zeigt normalerweise den genauen Offset an)
- Warnungen über zusätzliche Daten nach
IEND
Wenn du eine detailliertere Chunk-Ansicht benötigst:
pngcheck -vp file.png
exiftool -a -u -g1 file.png
Nützliche Referenzen:
- PNG specification (structure, chunks): https://www.w3.org/TR/PNG/
- File format tricks (PNG/JPEG/GIF corner cases): https://github.com/corkami/docs
JPEG: Metadaten, DCT-domain Tools und ELA-Einschränkungen
Technik
JPEG wird nicht als rohe Pixel gespeichert; es ist im DCT-Bereich komprimiert. Deshalb unterscheiden sich JPEG stego-Tools von PNG LSB-Tools:
- Metadata/comment payloads sind auf Datei-Ebene (hohes Signal und schnell zu prüfen)
- DCT-domain stego tools betten Bits in Frequenzkoeffizienten ein
Praktisch gilt für JPEG:
- Ein Container für Metadata-Segmente (hohes Signal, schnell zu prüfen)
- Eine komprimierte Signal-Domain (DCT-Koeffizienten), in der spezialisierte stego-Tools arbeiten
Schnelle Prüfungen
exiftool file.jpg
strings -n 6 file.jpg | head
binwalk file.jpg
Wichtige Orte:
- EXIF/XMP/IPTC Metadaten
- JPEG Kommentarsegment (
COM) - Application segments (
APP1for EXIF,APPnfor vendor data)
Häufige Tools
- OutGuess: https://github.com/resurrecting-open-source-projects/outguess
- OpenStego: https://www.openstego.com/
Wenn du speziell auf steghide-Payloads in JPEGs triffst, verwende stegseek (schnellerer bruteforce als ältere Skripte):
Error Level Analysis
ELA hebt verschiedene Rekompressionsartefakte hervor; es kann dir Bereiche zeigen, die bearbeitet wurden, ist aber für sich genommen kein Stego-Detektor:
Animierte Bilder
Technik
Bei animierten Bildern gehe davon aus, dass die Nachricht:
- In einem einzelnen Frame (einfach), oder
- Über mehrere Frames verteilt (Reihenfolge ist wichtig), oder
- Nur sichtbar ist, wenn du aufeinanderfolgende Frames differenzierst
Frames extrahieren
ffmpeg -i anim.gif frame_%04d.png
Behandle die Frames dann wie normale PNGs: zsteg, pngcheck, channel isolation.
Alternative tooling:
gifsicle --explode anim.gif(schnelles Frame-Extrahieren)imagemagick/magickfür Transformationen pro Frame
Frame differencing ist oft entscheidend:
magick frame_0001.png frame_0002.png -compose difference -composite diff.png
APNG Pixelanzahl-Codierung
- APNG-Container erkennen:
exiftool -a -G1 file.png | grep -i animationoderfile. - Frames ohne Retiming extrahieren:
ffmpeg -i file.png -vsync 0 frames/frame_%03d.png. - Payloads wiederherstellen, die als Pixelanzahl pro Frame kodiert sind:
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'))
Animierte Challenges können jedes Byte als Anzahl einer bestimmten Farbe in jedem Frame kodieren; das Aneinanderhängen der Zählwerte rekonstruiert die Nachricht.
Passwortgeschütztes Embedding
Wenn Sie vermuten, dass das Embedding durch eine passphrase geschützt ist statt durch Manipulation auf Pixelebene, ist dies normalerweise der schnellste Weg.
steghide
Unterstützt JPEG, BMP, WAV, AU und kann verschlüsselte Payloads einbetten und extrahieren.
steghide info file
steghide extract -sf file --passphrase 'password'
I can’t access external repos. Please paste the exact contents of src/stego/images/README.md here (or the parts you want translated). I will translate the English text to German following your rules and keep all markdown/html/tags, links and code unchanged.
stegcracker file.jpg wordlist.txt
Repo: https://github.com/Paradoxis/StegCracker
stegpy
Unterstützt PNG/BMP/GIF/WebP/WAV.
Repo: https://github.com/dhsdshdhk/stegpy
Referenzen
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.


