DominicBreuker / stego-toolkit

Dieses Projekt ist ein Docker-Image, das für das Lösen von Steganographie-Herausforderungen nützlich ist, wie man sie auf CTF-Plattformen wie hackthebox.eu finden kann.Das Image kommt vorinstalliert mit vielen populären Tools (siehe Liste unten) und mehreren Screening-Skripten, mit denen man einfache Dinge überprüfen kann (z.B. check_jpg.sh image.jpg ausführen, um einen Bericht für eine JPG-Datei zu erhalten).

Docker-Build-Status

Hack The Box

Verwendung

Stellen Sie zunächst sicher, dass Sie Docker installiert haben (how to).Dann können Sie die Shell-Skripte bin/build.sh und bin/run.sh in diesem Repo verwenden, um das Image zu erstellen und den Container zu starten.Sie werden in eine Bash-Shell innerhalb des Containers fallen gelassen.Es wird der Ordner data gemountet, in den Sie die zu analysierenden Dateien legen können.

Wenn Sie die Skripte nicht verwenden, folgen Sie diesen Schritten:

  1. Build image (docker build -t <image_name> .) oder pull from Docker hub (docker pull dominicbreuker/stego-toolkit)
  2. Starten Sie einen Container mit Ihren Dateien, die in den Ordner /data (docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash)
  3. Verwenden Sie CLI-Tools und Screening-Skripte für Ihre Dateien: z.B., Führen Sie check_jpg.sh image.jpg aus, um einen Schnellbericht zu erstellen, oder führen Sie brute_jpg.sh image.jpg wordlist.txt aus, um zu versuchen, versteckte Daten mit verschiedenen Tools und Passwörtern zu extrahieren
  4. Wenn Sie GUI-Tools ausführen möchten, verwenden Sie eine der beiden folgenden Möglichkeiten:
  • Starten Sie start_ssh.sh und verbinden Sie sich mit Ihrem Container über X11-Weiterleitung
  • Starten Sie start_vnc.sh und verbinden Sie sich über Ihren Browser mit dem Desktop des Containers

Weitere Informationen finden Sie in den folgenden Abschnitten:

  • Welche Tools sind installiert? Hier
  • Welche Skripte kann ich ausführen, um Dateien schnell und automatisch zu überprüfen oder sie zu erzwingen? Hier
  • Wie kann ich mit verschiedenen Steganografie-Beispielen spielen, um zu sehen, ob ich sie knacken kann? Hier
  • Wie kann ich GUI-Tools innerhalb des Containers ausführen? Hier

Demo

Starten Sie mit docker run -it --rm -v $(pwd)/data:/data dominicbreuker/stego-toolkit /bin/bash und Sie werden in einer Container-Shell im Arbeitsverzeichnis /data landen.Ihr Host-Ordner $(pwd)/data wird gemountet und die Bilder darin sind zugänglich.

animated demo gif

Tools

Viele verschiedene Linux- und Windows-Tools werden installiert.Windows-Tools werden mit Wine unterstützt.Einige Tools können auf der Kommandozeile verwendet werden, während andere GUI-Unterstützung benötigen!

Tools für die Kommandozeile

Diese Tools können auf der Kommandozeile verwendet werden.Alles, was Sie tun müssen, ist, einen Container zu starten und die Steganografie-Dateien, die Sie überprüfen möchten, zu mounten.

Allgemeine Screening-Tools

Tools, die Sie am Anfang ausführen sollten, damit Sie eine grobe Vorstellung davon bekommen, womit Sie es zu tun haben.

Werkzeug Beschreibung Verwendung
Datei Überprüfen Sie, welche Art von Datei Sie haben file stego.jpg
exiftool Metadaten von Mediendateien prüfen exiftool stego.jpg
binwalk Überprüfen, ob andere Dateien eingebettet/angehängt sind binwalk stego.jpg
Strings Prüfen, ob interessante lesbare Zeichen in der Datei vorhanden sind strings stego.jpg
vorherige Eingebettete/angehängte Dateien ausschneiden foremost stego.jpg
pngcheck Details zu einer PNG-Datei ermitteln (oder herausfinden, ob es sich um eine andere Datei handelt) pngcheck stego.png
identify GraphicMagick-Werkzeug, um zu überprüfen, welche Art von Bild eine Datei ist. Prüft auch, ob das Bild beschädigt ist. identify -verbose stego.jpg
ffmpeg ffmpeg kann verwendet werden, um die Integrität von Audiodateien zu prüfen und Informationen und Fehler zu melden ffmpeg -v info -i stego.mp3 -f null - die Datei umkodieren und das Ergebnis wegwerfen

Tools zum Aufspüren von Steganografie

Tools zum Aufspüren von Steganografie in Dateien.Sie führen zumeist statistische Tests durch.Sie enthüllen versteckte Botschaften nur in einfachen Fällen, können aber Hinweise geben, worauf zu achten ist, wenn sie interessante Unregelmäßigkeiten finden.

Werkzeug Dateitypen Beschreibung Anwendungsweise
stegoVeritas Bilder (JPG, PNG, GIF, TIFF, BMP) Eine große Auswahl an einfachen und fortgeschrittenen Prüfungen. Schauen Sie sich stegoveritas.py -h an. Prüft Metadaten, erstellt viele transformierte Bilder und speichert sie in einem Verzeichnis, Brute Forces LSB, … stegoveritas.py stego.jpg um alle Prüfungen durchzuführen
zsteg Bilder (PNG, BMP) Ermittelt verschiedene LSB-Stegos, auch openstego und das Camouflage-Tool zsteg -a stego.jpg, um alle Prüfungen durchzuführen
stegdetect Images (JPG) Führt statistische Tests durch, um festzustellen, ob ein Stego-Tool verwendet wurde (jsteg, outguess, jphide, …). Siehe man stegdetect für Details. stegdetect stego.jpg
stegbreak Bilder (JPG) Brute Force Cracker für JPG Bilder. Kann angeblich outguess, jphide und jsteg knacken. stegbreak -t o -f wordlist.txt stego.jpg, verwende -t o für outguess, -t p für jphide oder -t j für jsteg

Tools, die Steganografie betreiben

Tools, mit denen man Nachrichten verstecken und sie hinterher offenlegen kann.Einige verschlüsseln die Nachrichten vor dem Verstecken und erfordern 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 in diesem Docker-Image verfügbaren Brute-Force-Skripten unterstützt.

Tool Dateitypen Beschreibung Verstecken Wiederherstellung
AudioStego Audio (MP3 / WAV) Details zur Funktionsweise gibt es in diesem Blogpost hideme cover.mp3 secret.txt && mv ./output.mp3 stego.mp3 hideme stego.mp3 -f && cat output.txt
jphide/jpseek Bild (JPG) Ein ziemlich altes Tool von hier. Hier ist die Version von hier installiert, da das Original ständig abstürzte. Es fragt interaktiv nach einer Passphrase! 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 in Wine läuft. Benötigt WAV-Eingabe (kann bei bestimmten WAV-Dateien zu Fehlern führen. bei mir funktioniert z.B.: ffmpeg -i audio.mp3 -flags bitexact audio.wav). Wichtig: nur absoluten Pfad 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 immer noch gepflegt. 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!)
outguess Bilder (JPG) Verwendet „redundante Bits“, um Daten zu verstecken. Gibt es in zwei Versionen: old=outguess-0.13 von hier und new=outguess aus den Paket-Repos. Zum Wiederherstellen muss die zum Verstecken verwendete Version verwendet werden. outguess -k password -d secret.txt cover.jpg stego.jpg outguess -r -k password stego.jpg output.txt
spectrology Audio (WAV) Encodiert ein Bild im Spektrogramm einer Audiodatei. TODO GUI-Tool verwenden sonic-visualiser
stegano Bilder (PNG) Versteckt Daten mit verschiedenen (LSB-basierten) Methoden. Stellt auch einige Screening-Tools zur Verfügung. 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 Verbergen 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 Steganographischer Algorithmus mit detaillierten Informationen über das Verfahren 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 Steganografieprogramm basierend auf der LSB-Methode stegpy secret.jpg cover.png stegpy _cover.png

Steganografie-GUI-Tools

Alle unten aufgeführten Tools haben eine grafische Benutzeroberfläche und können nicht über die Befehlszeile verwendet werden.Um sie auszuführen, müssen Sie einen X11-Server innerhalb des Containers zur Verfügung stellen.

  • Führen Sie start_ssh.shaus, um einen SSH-Server zu starten. Verbinden Sie sich anschließend mit einer X11-Weiterleitung. Erfordert einen X11-Server auf Ihrem Host!
  • ausführen start_vnc.sh, um einen VNC-Server + Client zu starten. Verbinden Sie sich anschließend mit Ihrem Browser zu Port 6901 und Sie erhalten einen Xfce-Desktop. Keine Host-Abhängigkeiten!

Alternativ finden Sie andere Wege, um X11 innerhalb des Containers verfügbar zu machen.Viele verschiedene Wege sind möglich (z.B., UNIX-Sockets einbinden).

Tool Dateitypen Beschreibung Wie starten
Steg Bilder (JPG, TIFF, PNG, BMP) Verarbeitet viele Dateitypen und implementiert verschiedene Methoden steg
Steganabara (Der ursprüngliche Link ist defekt) Bilder (???) Bilder interaktiv umwandeln, bis man etwas findet steganabara
Stegsolve Bilder (???) Bilder interaktiv umwandeln, Farbschemata separat betrachten, … stegsolve
SonicVisualiser Audio (???) Audio-Dateien in Wellenform visualisieren, Spektrogramme anzeigen, … sonic-visualiser
Stegosuite Bilder (JPG, GIF, BMP) Kann Daten in Bildern verschlüsseln und verstecken. Wird aktiv weiterentwickelt. stegosuite
OpenPuff Bilder, Audio, Video (viele Formate) Ausgereiftes Tool mit langer Geschichte. Wird immer noch gepflegt. Windows-Tool läuft in Wine. openpuff
DeepSound Audio (MP3, WAV) Audio-Stego-Tool, dem Mr. Robot selbst vertraut. Windows-Tool, das in Wine läuft (sehr umständlich, erfordert VNC und läuft im virtuellen Desktop, MP3 ist wegen fehlender DLL kaputt!) 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 darauf hinweisen, dass verschlüsselte Daten eingebettet sind) cloackedpixel-analyse image.png

Screening-Skripte

Viele der oben genannten Tools erfordern keine Interaktion mit einer grafischen Benutzeroberfläche.Da sich die anwendbaren Werkzeuge je nach Dateityp unterscheiden, gibt es für jeden Dateityp unterschiedliche Skripte.

Für jeden Dateityp gibt es zwei Arten von Skripten:

  • XXX_check.sh <stego-file>: führt grundlegende Screening-Tools aus und erstellt einen Bericht (+ möglicherweise ein Verzeichnis mit Berichten in Dateien)
  • XXX_brute.sh <stego-file> <wordlist>: versucht, eine versteckte Nachricht aus einer Stegodatei mit verschiedenen Tools unter Verwendung einer Wortliste zu extrahieren (cewl, john und crunch sind installiert, um Listen zu erzeugen – halten Sie sie klein).

Die folgenden Dateitypen werden unterstützt:

  • JPG: check_jpg.h und brute_jpg.sh (brute running steghide, outguess, outguess-0.13, stegbreak, stegoveritas.py -bruteLSB)
  • PNG: check_png.h und brute_png.sh (brute running openstego und stegoveritas.py -bruteLSB)

Wordlist generation

Die obigen Brute-Forcing-Skripte benötigen Wordlists.Imho wird es höchstwahrscheinlich nicht helfen, große Standard-Wortlisten wie rockyou zu verwenden.Ein wahrscheinlicheres Szenario ist, dass Sie eine Ahnung haben, wie das Passwort lauten könnte, es aber nicht genau wissen.

Für diese Fälle sind mehrere Tools zur Erzeugung von Wortlisten enthalten:

  • john: die von der Community erweiterte Version von John the Ripper kann Ihre Wortlisten erweitern. Erstellen Sie eine Basiswortliste mit einigen Passwortkandidaten und verwenden Sie 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: kann kleine Wortlisten erzeugen, wenn Sie ein Muster im Kopf haben. Wenn Sie zum Beispiel wissen, dass die Passwörter mit 1984 enden und 6 Buchstaben lang sind, wird crunch 6 6 abcdefghijklmnopqrstuvwxyz -t @@1984 die 26 * 26 = 676 Passwörter aa1984, ab1984, … bis zz1984 generieren. Das Format ist crunch <min-length> <max-length> <charset> <options> und wir haben die Schablonenoption verwendet. Schauen Sie sich less /usr/share/crunch/charset.lst an, um die Zeichensätze zu sehen, mit denen Crunch ausgeliefert wird.
  • CeWL: kann Wortlisten generieren, wenn Sie wissen, dass eine Website mit einem Passwort verbunden ist. Führen Sie zum Beispiel 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, die mindestens 8 Zeichen lang sind.

Steganografie-Beispiele

Das Bild enthält ein Beispielbild und eine Audiodatei, jeweils in verschiedenen Formaten:

  • /examples/ORIGINAL.jpg
  • /examples/ORIGINAL.png
  • /examples/ORIGINAL.mp3
  • /examples/ORIGINAL.wav

Es enthält auch ein Skript /examples/create_examples.sh, das Sie ausführen können, um eine versteckte Nachricht („Dies ist eine sehr geheime Nachricht!“Nach der Ausführung dieses Skripts finden Sie diese Dateien in /examples/stego-files mit ihren Namen, die angeben, welches Werkzeug zum Einbetten der Nachricht verwendet wurde.Sie können die Screening-Skripte laufen lassen, um zu sehen, ob sie etwas in ihnen finden oder versuchen, sie anderweitig zu knacken.

GUI und Container

Standardmäßig können keine GUI-Tools in einem Docker-Container ausgeführt werden, da kein X11-Server verfügbar ist.Um sie auszuführen, müssen Sie das ändern.Was dazu nötig ist, hängt von deinem Host-Rechner ab.Wenn du:

  • auf Linux läufst, hast du wahrscheinlich X11
  • auf Mac OS, brauchst du Xquartz (brew install Xquartz)
  • auf Windows, hast du ein Problem

Verwendest du X11-Weiterleitung über SSH, wenn du diesen Weg gehen willst. Führen Sie start_ssh innerhalb des Containers aus, um den Server zu starten, stellen Sie sicher, dass Sie Port 22 freigeben, wenn Sie den Container starten: docker run -p 127.0.0.1:22:22 ..., dann verwenden Sie ssh -X ..., wenn Sie sich verbinden (das Skript gibt das Passwort aus).

Um nicht von X11 abhängig zu sein, enthält das Image einen TigerVNC-Server und einen noVNC-Client, mit dem Sie eine HTML5-VNC-Sitzung mit Ihrem Browser öffnen können, um sich mit dem Xfce-Desktop des Containers zu verbinden. Dazu führen Sie start_vnc.sh innerhalb des Containers aus, um Server und Client zu starten, stellen Sie sicher, dass Sie beim Starten des Containers docker run -p 127.0.0.1:6901:6901 ... den Port 6901 freigeben und gehen Sie zu localhost:6901/?password=<the_password> (das Skript gibt das Passwort aus).

SSH mit X11-Weiterleitung verwenden

Animierte Demo-GIF - SSH + X11

Befehle im GIF zum Kopieren &Einfügen:

# in 1st host shelldocker run -it --rm -p 127.0.0.1:22:22 dominicbreuker/stego-toolkit /bin/bash# inside container shellstart_ssh.sh# in 2nd host shell (use it to launch GUI apps afterwards)ssh -X -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@localhost

Browser und VNC verwenden

Animiertes Demo-GIF - Browser + VNC

Befehle im GIF zum Kopieren &Einfügen:

# in 1st host shelldocker run -it --rm -p 127.0.0.1:6901:6901 dominicbreuker/stego-toolkit /bin/bash# inside container shellstart_vnc.sh# in browser, connect with: http://localhost:6901/?password=<password_from_start_vnc>

Linksammlung

Dies ist eine Sammlung nützlicher Steganographie-Links:

  • Sie müssen Codes erkennen können. Schauen Sie sich diesen Spickzettel von Eric Harshbarger an, der viele verschiedene Codes enthält.
  • Spickzettel mit Beschreibungen von Arbeitsabläufen, Dingen, auf die man achten sollte, und gängigen Tools: klick
  • Forensics CTF Guide mit vielen Ideen für Stego-Herausforderungen: klick
  • Dateiformatbeschreibungen als schöne Poster: klick

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.