
Sammlung von Steganographie-Werkzeugen - hilft bei CTF-Herausforderungen
Dieses Projekt ist ein Docker-Image, das zum Lösen von Steganografie-Herausforderungen nützlich ist, wie man sie auf CTF-Plattformen wie hackthebox.eu findet.
Das Image ist vorinstalliert mit vielen beliebten Werkzeugen (siehe Liste unten) und mehreren Screening-Skripten, mit denen Sie einfache Dinge überprüfen können (z. B. führen Sie check_jpg.sh image.jpg aus, um einen Bericht für eine JPG-Datei zu erhalten).
Stellen Sie zunächst sicher, dass Docker installiert ist (Anleitung).
Anschließend können Sie die Shell-Skripte bin/build.sh und bin/run.sh in diesem Repository verwenden, um das Image zu erstellen und den Container auszuführen.
Sie werden in eine Bash-Shell im Container abgesetzt.
Der Ordner wird eingehängt, in den Sie die zu analysierenden Dateien legen können.
dataWenn Sie die Skripte nicht verwenden, führen Sie diese Schritte aus:
docker build -t <image_name> .) oder von Docker Hub ziehen (docker pull dominicbreuker/stego-toolkit)/data eingehängt werden (docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash)check_jpg.sh image.jpg aus, um einen schnellen Bericht zu erstellen, oder brute_jpg.sh image.jpg wordlist.txt, um zu versuchen, versteckte Daten mit verschiedenen Tools und Passwörtern zu extrahierenstart_ssh.sh aus und verbinden Sie sich mit X11-Weiterleitung mit Ihrem Containerstart_vnc.sh aus und verbinden Sie sich über Ihren Browser mit dem Desktop des ContainersWeitere Informationen finden Sie in den folgenden Abschnitten:
Starten Sie mit docker run -it --rm -v $(pwd)/data:/data dominicbreuker/stego-toolkit /bin/bash.
Sie werden in eine Container-Shell im Arbeitsverzeichnis /data abgesetzt.
Ihr Host-Ordner $(pwd)/data wird eingehängt und die Bilder darin sind zugänglich.

Viele verschiedene Linux- und Windows-Tools sind installiert. Windows-Tools werden mit Wine unterstützt. Einige Tools können über die Befehlszeile verwendet werden, andere benötigen GUI-Unterstützung!
Diese Tools können über die Befehlszeile verwendet werden. Sie müssen lediglich einen Container starten und die zu überprüfenden Steganografie-Dateien einhängen.
Tools, die am Anfang ausgeführt werden. Ermöglichen Ihnen, einen groben Überblick darüber zu bekommen, womit Sie es zu tun haben.
| Tool | Beschreibung | Verwendung |
|---|---|---|
| file | Überprüfen, um welche Art von Datei es sich handelt | file stego.jpg |
| exiftool | Metadaten von Mediendateien überprüfen | exiftool stego.jpg |
| binwalk | Überprüfen, ob andere Dateien eingebettet/angefügt sind | binwalk stego.jpg |
| strings | Überprüfen, ob interessante lesbare Zeichen in der Datei vorhanden sind | strings stego.jpg |
| foremost | Eingebettete/angefügte Dateien extrahieren | foremost stego.jpg |
| pngcheck | Details zu einer PNG-Datei abrufen (oder herausfinden, ob es sich tatsächlich um etwas anderes handelt) | pngcheck stego.png |
| identify | GraphicMagick-Tool zur Überprüfung, um welche Art von Bild eine Datei handelt. Überprüft auch, ob das Bild beschädigt ist. | identify -verbose stego.jpg |
| ffmpeg | ffmpeg kann verwendet werden, um die Integrität von Audiodateien zu überprüfen und Informationen und Fehler melden zu lassen | ffmpeg -v info -i stego.mp3 -f null - zum Neucodieren der Datei und Verwerfen des Ergebnisses |
Tools, die entwickelt wurden, um Steganografie in Dateien zu erkennen. Führen meist statistische Tests durch. Sie werden versteckte Nachrichten nur in einfachen Fällen aufdecken. Können jedoch Hinweise darauf geben, wonach gesucht werden muss, wenn sie interessante Unregelmäßigkeiten finden.
| Tool | Dateitypen | Beschreibung | Verwendung |
|---|---|---|---|
| stegoVeritas | Bilder (JPG, PNG, GIF, TIFF, BMP) | Eine Vielzahl einfacher und fortgeschrittener Prüfungen. Schauen Sie stegoveritas.py -h. Überprüft Metadaten, erstellt viele transformierte Bilder und speichert sie in einem Verzeichnis, Brute-Force für LSB, ... | stegoveritas.py stego.jpg, um alle Prüfungen auszuführen |
| zsteg | Bilder (PNG, BMP) | Erkennt verschiedene LSB-Stego, auch openstego und das Camouflage-Tool | zsteg -a stego.jpg, um alle Prüfungen auszuführen |
| stegdetect | Bilder (JPG) | Führt statistische Tests durch, um festzustellen, ob ein Stego-Tool verwendet wurde (jsteg, outguess, jphide, ...). Details finden Sie in man stegdetect. | stegdetect stego.jpg |
| stegbreak | Bilder (JPG) | Brute-Force-Cracker für JPG-Bilder. Behauptet, outguess, jphide und jsteg knacken zu können. | stegbreak -t o -f wordlist.txt stego.jpg, verwenden Sie -t o für outguess, -t p für jphide oder -t j für jsteg |
Tools, mit denen Sie Nachrichten verstecken und später wiederherstellen können. Einige verschlüsseln die Nachrichten, bevor sie sie verstecken. Wenn sie das tun, benötigen sie ein Passwort. Wenn Sie einen Hinweis darauf haben, welche Art von Tool verwendet wurde oder welches Passwort richtig sein könnte, versuchen Sie diese Tools. Einige Tools werden von den Brute-Force-Skripten unterstützt, die in diesem Docker-Image verfügbar sind.
| Tool | Dateitypen | Beschreibung | Verstecken | Wiederherstellen |
|---|---|---|---|---|
| AudioStego | Audio (MP3 / WAV) | Details zur Funktionsweise finden Sie in diesem Blogbeitrag | hideme cover.mp3 secret.txt && mv ./output.mp3 stego.mp3 | hideme stego.mp3 -f && cat output.txt |
| jphide/jpseek | Bild (JPG) | Ziemlich altes Tool von hier. Hier ist die Version von hier installiert, da die ursprüngliche ständig abstürzte. Es fordert interaktiv zur Passphrase auf! | jphide cover.jpg stego.jpg secret.txt | jpseek stego.jpg output.txt |
| jsteg | Bild (JPG) | LSB-Stego-Tool. Verschlüsselt die Nachricht nicht. | jsteg hide cover.jpg secret.txt stego.jpg | jsteg reveal cover.jpg output.txt |
| mp3stego | Audio (MP3) | Altes Programm. Verschlüsselt und versteckt dann eine Nachricht (3DES-Verschlüsselung!). Windows-Tool, das unter Wine läuft. Erfordert WAV-Eingabe (kann Fehler für bestimmte WAV-Dateien auslösen. Was bei mir funktioniert, ist z.B.: ffmpeg -i audio.mp3 -flags bitexact audio.wav). Wichtig: nur absolute Pfade verwenden! | mp3stego-encode -E secret.txt -P password /path/to/cover.wav /path/to/stego.mp3 | mp3stego-decode -X -P password /path/to/stego.mp3 /path/to/out.pcm /path/to/out.txt |
| openstego | Bilder (PNG) | Verschiedene LSB-Stego-Algorithmen (siehe diesen Blog). Wird noch gewartet. | openstego embed -mf secret.txt -cf cover.png -p password -sf stego.png | openstego extract -sf openstego.png -p abcd -xf output.txt (lassen Sie -xf weg, um eine Datei mit dem Originalnamen zu erstellen!) |
Alle untenstehenden Tools verfügen über grafische Benutzeroberflächen und können nicht über die Befehlszeile verwendet werden. Um sie auszuführen, müssen Sie einen X11-Server im Container verfügbar machen. Zwei Methoden werden unterstützt:
start_ssh.sh aus, um einen SSH-Server zu starten. Verbinden Sie sich anschließend mit X11-Weiterleitung. Erfordert einen X11-Server auf Ihrem Host!start_vnc.sh aus, um einen VNC-Server + -Client zu starten. Verbinden Sie sich anschließend über Ihren Browser mit Port 6901 und erhalten Sie einen Xfce-Desktop. Keine Host-Abhängigkeiten!Alternativ finden Sie andere Möglichkeiten, X11 im Container verfügbar zu machen. Viele verschiedene Wege sind möglich (z. B. UNIX-Sockets einhängen).
| Tool | Dateitypen | Beschreibung | Start |
|---|---|---|---|
| Steg | Bilder (JPG, TIFF, PNG, BMP) | Behandelt viele Dateitypen und implementiert verschiedene Methoden | steg |
| Steganabara (Der Original-Link ist defekt) | Bilder (???) | Bilder interaktiv transformieren, bis man etwas findet | steganabara |
| Stegsolve | Bilder (???) | Bilder interaktiv transformieren, Farbschemata getrennt anzeigen, ... | stegsolve |
| SonicVisualiser | Audio (???) | Audiodateien als Wellenform visualisieren, Spektrogramme anzeigen, ... | sonic-visualiser |
| Stegosuite | Bilder (JPG, GIF, BMP) | Kann Daten in Bildern verschlüsseln und verstecken. Wird aktiv entwickelt. | stegosuite |
| OpenPuff | Bilder, Audio, Video (viele Formate) | Anspruchsvolles Tool mit langer Geschichte. Wird noch gewartet. Windows-Tool, das unter Wine läuft. | openpuff |
| DeepSound | Audio (MP3, WAV) | Audio-Stego-Tool, dem Mr. Robot selbst vertraut. Windows-Tool unter Wine (sehr hackig, erfordert VNC und läuft im virtuellen Desktop, MP3 aufgrund fehlender DLL defekt!) | deepsound nur in VNC-Sitzung |
| cloackedpixel-analyse | Bilder (PNG) | LSB-Stego-Visualisierung für PNGs – verwenden Sie es, um verdächtig zufällige LSB-Werte in Bildern zu erkennen (Werte nahe 0,5 können auf eingebettete verschlüsselte Daten hinweisen) | cloackedpixel-analyse image.png |
Viele der oben genannten Tools erfordern keine Interaktion mit einer GUI. Daher können Sie einige Arbeitsabläufe einfach automatisieren, um eine grundlegende Überprüfung von Dateien durchzuführen, die möglicherweise versteckte Nachrichten enthalten. Da die anwendbaren Tools je nach Dateityp unterschiedlich sind, gibt es für jeden Dateityp verschiedene Skripte.
Für jeden Dateityp gibt es zwei Arten von Skripten:
XXX_check.sh <stego-datei>: führt grundlegende Screening-Tools aus und erstellt einen Bericht (+ möglicherweise ein Verzeichnis mit Berichten in Dateien)XXX_brute.sh <stego-datei> <wortliste>: versucht, eine versteckte Nachricht aus einer Stego-Datei mit verschiedenen Tools unter Verwendung einer Wortliste zu extrahieren (cewl, john und crunch sind installiert, um Listen zu generieren – halten Sie sie klein).Die folgenden Dateitypen werden unterstützt:
check_jpg.sh und brute_jpg.sh (Brute-Force mit steghide, outguess, outguess-0.13, stegbreak, stegoveritas.py -bruteLSB)check_png.sh und brute_png.sh (Brute-Force mit openstego und stegoveritas.py -bruteLSB)Die oben genannten Brute-Force-Skripte benötigen Wortlisten. Meiner Meinung nach wird es höchstwahrscheinlich nicht helfen, riesige Standard-Wortlisten wie rockyou zu verwenden. Die Skripte sind dafür zu langsam und Stego-Herausforderungen scheinen nicht dafür ausgelegt zu sein. Ein wahrscheinlicheres Szenario ist, dass Sie eine Ahnung haben, was das Passwort sein könnte, es aber nicht genau wissen.
Für diese Fälle sind mehrere Tools zur Generierung von Wortlisten enthalten:
john, um viele Varianten davon zu erstellen. Verwenden Sie john -wordlist:/path/to/your/wordlist -rules:Single -stdout > /path/to/expanded/wordlist, um umfangreiche Regeln anzuwenden (~x1000) john -wordlist:/path/to/your/wordlist -rules:Wordlist -stdout > /path/to/expanded/wordlist für einen reduzierten Regelsatz (~x50).crunch 6 6 abcdefghijklmnopqrstuvwxyz -t @@1984 erzeugt die 26 * 26 = 676 Passwörter aa1984, ab1984, ... bis zz1984. Das Format ist crunch <min-laenge> <max-laenge> <zeichensatz> <optionen> und wir haben die Vorlagenoption verwendet. Schauen Sie sich less /usr/share/crunch/charset.lst an, um die mitgelieferten Zeichensätze zu sehen.cewl -d 0 -m 8 https://en.wikipedia.org/wiki/Donald_Trump aus, wenn Sie vermuten, dass ein Bild von Donald Trump eine verschlüsselte versteckte Nachricht enthält. Der Befehl durchsucht die Website und extrahiert Zeichenfolgen mit mindestens 8 Zeichen Länge.Das Image enthält ein Beispielbild und eine Beispielaudiodatei in verschiedenen Formaten:
/examples/ORIGINAL.jpg/examples/ORIGINAL.png/examples/ORIGINAL.mp3/examples/ORIGINAL.wavEs enthält auch ein Skript /examples/create_examples.sh, das Sie ausführen können, um eine versteckte Nachricht ("This is a very secret message!") mit vielen verschiedenen Methoden in diese Dateien einzubetten.
Nach Ausführung dieses Skripts finden Sie diese Dateien in /examples/stego-files mit Namen, die angeben, welches Tool zum Einbetten der Nachricht verwendet wurde.
Sie können die Screening-Skripte ausführen, um zu sehen, ob sie etwas an ihnen finden, oder versuchen, sie anderweitig zu knacken.
Standardmäßig können in einem Docker-Container keine GUI-Tools ausgeführt werden, da kein X11-Server verfügbar ist. Um sie auszuführen, müssen Sie das ändern. Was dafür erforderlich ist, hängt von Ihrem Host-Rechner ab. Wenn Sie:
brew install Xquartz)Verwenden Sie X11-Weiterleitung über SSH, wenn Sie diesen Weg gehen möchten. Führen Sie im Container start_ssh.sh aus, um den Server zu starten, stellen Sie sicher, dass Sie Port 22 beim Starten des Containers freigeben: docker run -p 127.0.0.1:22:22 ..., dann verwenden Sie ssh -X ... beim Verbinden (das Skript gibt das Passwort aus).
Um nicht von X11 abhängig zu sein, wird das Image mit einem TigerVNC-Server und noVNC-Client geliefert.
Sie können damit eine HTML5-VNC-Sitzung mit Ihrem Browser öffnen, um eine Verbindung zum Xfce-Desktop des Containers herzustellen. Führen Sie dazu im Container start_vnc.sh aus, um Server und Client zu starten, stellen Sie sicher, dass Sie Port 6901 beim Starten des Containers freigeben: docker run -p 127.0.0.1:6901:6901 ... und gehen Sie zu localhost:6901/?password=<das_passwort> (das Skript gibt das Passwort aus).

Befehle im GIF zum Kopieren & Einfügen:
# in der 1. Host-Shell
docker run -it --rm -p 127.0.0.1:22:22 dominicbreuker/stego-toolkit /bin/bash
# innerhalb der Container-Shell
start_ssh.sh
# in der 2. Host-Shell (verwenden Sie sie, um anschließend GUI-Apps zu starten)
ssh -X -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@localhost

Befehle im GIF zum Kopieren & Einfügen:
# in der 1. Host-Shell
docker run -it --rm -p 127.0.0.1:6901:6901 dominicbreuker/stego-toolkit /bin/bash
# innerhalb der Container-Shell
start_vnc.sh
# im Browser verbinden mit: http://localhost:6901/?password=<passwort_aus_start_vnc>
Dies ist eine Sammlung nützlicher Steganografie-Links:
Die folgenden Beispielmediendateien sind in diesem Repository enthalten:
| outguess |
| Bilder (JPG) |
Verwendet „redundante Bits“, um Daten zu verstecken. Kommt in zwei Versionen: alt=outguess-0.13 von hier und neu=outguess aus den Paketquellen. Zum Wiederherstellen muss die Version verwendet werden, die zum Verstecken verwendet wurde. |
outguess -k password -d secret.txt cover.jpg stego.jpg |
outguess -r -k password stego.jpg output.txt |
| spectrology | Audio (WAV) | Kodiert ein Bild im Spektrogramm einer Audiodatei. | TODO | Verwenden Sie das GUI-Tool sonic-visualiser |
| stegano | Bilder (PNG) | Versteckt Daten mit verschiedenen (LSB-basierten) Methoden. Stellt auch einige Screening-Tools bereit. | stegano-lsb hide --input cover.jpg -f secret.txt -e UTF-8 --output stego.png oder stegano-red hide --input cover.png -m "secret msg" --output stego.png oder stegano-lsb-set hide --input cover.png -f secret.txt -e UTF-8 -g $GENERATOR --output stego.png für verschiedene Generatoren (stegano-lsb-set list-generators) | stegano-lsb reveal -i stego.png -e UTF-8 -o output.txt oder stegano-red reveal -i stego.png oder stegano-lsb-set reveal -i stego.png -e UTF-8 -g $GENERATOR -o output.txt |
| Steghide | Bilder (JPG, BMP) und Audio (WAV, AU) | Vielseitiges und ausgereiftes Tool zum Verschlüsseln und Verstecken von Daten. | steghide embed -f -ef secret.txt -cf cover.jpg -p password -sf stego.jpg | steghide extract -sf stego.jpg -p password -xf output.txt |
| cloackedpixel | Bilder (PNG) | LSB-Stego-Tool für Bilder | cloackedpixel hide cover.jpg secret.txt password erstellt cover.jpg-stego.png | cloackedpixel extract cover.jpg-stego.png output.txt password |
| LSBSteg | Bilder (PNG, BMP, ...) in unkomprimierten Formaten | Einfache LSB-Tools mit sehr schönem und lesbarem Python-Code | LSBSteg encode -i cover.png -o stego.png -f secret.txt | LSBSteg decode -i stego.png -o output.txt |
| f5 | Bilder (JPG) | F5-Steganographie-Algorithmus mit detaillierten Informationen zum Prozess | f5 -t e -i cover.jpg -o stego.jpg -d 'secret message' | f5 -t x -i stego.jpg 1> output.txt |
| stegpy | Bilder (PNG, GIF, BMP, WebP) und Audio (WAV) | Einfaches Steganographieprogramm basierend auf der LSB-Methode | stegpy secret.jpg cover.png | stegpy _cover.png |