DominicBreuker / stego-toolkit

Projekt ten jest obrazem Dockera przydatnym do rozwiązywania wyzwań steganograficznych, takich jakie można znaleźć na platformach CTF takich jak hackthebox.eu.Obraz jest preinstalowany z wieloma popularnymi narzędziami (zobacz listę poniżej) i kilkoma skryptami sprawdzającymi, których możesz użyć do sprawdzenia prostych rzeczy (na przykład, uruchom check_jpg.sh image.jpg aby uzyskać raport dla pliku JPG).

Stan budowy Dockera

Hack The Box

Użycie

Najpierw upewnij się, że masz zainstalowanego Dockera (jak to zrobić).Następnie możesz użyć skryptów powłoki bin/build.sh i bin/run.sh w tym repo, aby zbudować obraz i uruchomić kontener. Zostaniesz przeniesiony do powłoki bash wewnątrz kontenera. Będzie on miał zamontowany folder data, do którego możesz włożyć pliki do analizy.

Jeśli nie używasz skryptów, wykonaj następujące kroki:

  1. Zbuduj obraz (docker build -t <image_name> .) lub ściągnij z Docker hub (docker pull dominicbreuker/stego-toolkit)
  2. Uruchom kontener z plikami zamontowanymi w folderze /data (docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash)
  3. Użyj narzędzi CLI i skryptów przesiewowych na swoich plikach: np, uruchom check_jpg.sh image.jpg, aby utworzyć szybki raport, lub uruchom brute_jpg.sh image.jpg wordlist.txt, aby spróbować wydobyć ukryte dane za pomocą różnych narzędzi i haseł
  4. Jeśli chcesz uruchomić narzędzia GUI, użyj jednego z tych dwóch sposobów:
  • Uruchom start_ssh.sh i połącz się z kontenerem za pomocą przekierowania X11
  • Uruchom start_vnc.sh i połącz się z Pulpitem kontenera przez przeglądarkę

Sprawdź następujące sekcje, aby uzyskać więcej informacji:

  • Jakie narzędzia są zainstalowane? Idź tutaj
  • Jakie skrypty mogę uruchomić, aby szybko prześwietlić pliki automatycznie lub wymusić ich użycie? Idź tutaj
  • Jak mogę grać z różnymi przykładami Steganografii, aby zobaczyć, czy mogę je złamać? Go here
  • How can I run GUI tools inside the container? go here

Demo

Start with docker run -it --rm -v $(pwd)/data:/data dominicbreuker/stego-toolkit /bin/bash.You will be dropped into a container shell in work dir /data.Twój folder hosta $(pwd)/data zostanie zamontowany, a obrazy wewnątrz będą dostępne.

animated demo gif

Narzędzia

Zainstalowano wiele różnych narzędzi dla Linuksa i Windows.Narzędzia Windows są obsługiwane przez Wine.Niektóre narzędzia mogą być używane w wierszu poleceń, podczas gdy inne wymagają obsługi GUI!

Narzędzia interfejsu wiersza poleceń

Te narzędzia mogą być używane w wierszu poleceń.Wszystko, co musisz zrobić, to uruchomić kontener i zamontować pliki steganografii, które chcesz sprawdzić.

Narzędzia do ogólnego przesiewania

Narzędzia do uruchomienia na początku.Pozwalają uzyskać szerokie pojęcie o tym, z czym masz do czynienia.

.

.

.

Narzędzie Opis Jak używać
file Sprawdź, jaki rodzaj pliku masz file stego.jpg
exiftool Sprawdź metadane plików multimedialnych exiftool stego.jpg
binwalk Sprawdź, czy inne pliki są osadzone/dodane binwalk stego.jpg
strings Sprawdź, czy w pliku znajdują się interesujące czytelne znaki strings stego.jpg
foremost Wyodrębnij pliki osadzone/ dołączone foremost stego.jpg
pngcheck Uzyskaj szczegółowe informacje o pliku PNG (lub dowiedz się, że jest to coś innego) pngcheck stego.png
identify Narzędzie GraphicMagick do sprawdzania, jakiego rodzaju obrazem jest plik. Sprawdza również, czy obraz jest uszkodzony. identify -verbose stego.jpg
ffmpeg ffmpeg może być używany do sprawdzania integralności plików audio i pozwalać na raportowanie informacji i błędów ffmpeg -v info -i stego.mp3 -f null -. do przekodowania pliku i wyrzucenia wyniku

Narzędzia wykrywające steganografię

Narzędzia przeznaczone do wykrywania steganografii w plikach.Najczęściej wykonują testy statystyczne.Ujawnią ukryte wiadomości tylko w prostych przypadkach, mogą jednak podpowiedzieć, czego szukać, jeśli znajdą interesujące nieprawidłowości.

Narzędzie Typy plików Opis Jak używać
stegoVeritas Obrazy (JPG, PNG, GIF, TIFF, BMP) Duża różnorodność prostych i zaawansowanych kontroli. Sprawdź stegoveritas.py -h. Sprawdza metadane, tworzy wiele przekształconych obrazów i zapisuje je do katalogu, Brute forces LSB, … stegoveritas.py stego.jpgaby uruchomić wszystkie kontrole
zsteg Obrazy (PNG, BMP) Wykrywa różne stego LSB, również openstego i narzędzie Camouflage zsteg -a stego.jpg, aby uruchomić wszystkie kontrole
stegdetect Images (JPG) Wykonuje testy statystyczne, aby znaleźć, czy narzędzie stego zostało użyte (jsteg, outguess, jphide, …). Sprawdź man stegdetect po szczegóły. stegdetect stego.jpg
stegbreak Images (JPG) Brute force cracker dla obrazów JPG. Twierdzi, że może złamać outguess, jphide i jsteg. stegbreak -t o -f wordlist.txt stego.jpg, użyj -t o dla outguess, -t p dla jphide lub -t j dla jsteg

Narzędzia faktycznie wykonujące steganografię

Narzędzia, których możesz użyć do ukrycia wiadomości i ujawnienia ich później.Some encrypt the messages before hiding them.If they do, they require a password.If you have a hint what kind of tool was used or what password might be right, try these tools.Niektóre narzędzia są obsługiwane przez skrypty brute force dostępne w tym obrazie Dockera.

Narzędzie Typy plików Opis Jak ukryć Jak odzyskać
AudioStego Audio (MP3 / WAV) Szczegóły na temat tego, jak to działa, są w tym wpisie na blogu hideme cover.mp3 secret.txt && mv ./output.mp3 stego.mp3 hideme stego.mp3 -f && cat output.txt
jphide/jpseek Image (JPG) Pretty old tool stąd. Tutaj jest zainstalowana wersja stąd, ponieważ oryginalna cały czas się zawieszała. Pyta o hasło interaktywnie! jphide cover.jpg stego.jpg secret.txt jpseek stego.jpg output.txt
jsteg Image (JPG) Narzędzie stego LSB. Nie szyfruje wiadomości. jsteg hide cover.jpg secret.txt stego.jpg jsteg reveal cover.jpg output.txt
mp3stego Audio (MP3) Stary program. Szyfruje, a następnie ukrywa wiadomość (szyfrowanie 3DES!). Narzędzie dla Windows działające w Wine. Wymaga wejścia WAV (może wyrzucać błędy dla niektórych plików WAV. to co działa dla mnie to np.: ffmpeg -i audio.mp3 -flags bitexact audio.wav). Ważne: używaj tylko ścieżki absolutnej! 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 Obrazy (PNG) Różne algorytmy LSB stego (sprawdź na tym blogu). Nadal utrzymywany. openstego embed -mf secret.txt -cf cover.png -p password -sf stego.png openstego extract -sf openstego.png -p abcd -xf output.txt (pomiń -xf, aby utworzyć plik o oryginalnej nazwie!)
outguess Images (JPG) Używa „nadmiarowych bitów” do ukrywania danych. Występuje w dwóch wersjach: old=outguess-0.13 pobranej stąd i new=outguess z repozytoriów pakietów. Aby odzyskać dane, musisz użyć tej użytej do ukrycia. outguess -k password -d secret.txt cover.jpg stego.jpg outguess -r -k password stego.jpg output.txt
spectrology Audio (WAV) Koduje obraz w spektrogramie pliku audio. TODO Użyj narzędzia GUI sonic-visualiser
stegano Obrazy (PNG) Ukrywa dane różnymi metodami (opartymi na LSB). Dostarcza również kilka narzędzi do przesiewania. stegano-lsb hide --input cover.jpg -f secret.txt -e UTF-8 --output stego.png lub stegano-red hide --input cover.png -m "secret msg" --output stego.png lub stegano-lsb-set hide --input cover.png -f secret.txt -e UTF-8 -g $GENERATOR --output stego.png dla różnych generatorów (stegano-lsb-set list-generators) stegano-lsb reveal -i stego.png -e UTF-8 -o output.txt lub stegano-red reveal -i stego.png lub stegano-lsb-set reveal -i stego.png -e UTF-8 -g $GENERATOR -o output.txt
Steghide Obrazy (JPG, BMP) i audio (WAV, AU) Wszechstronne i dojrzałe narzędzie do szyfrowania i ukrywania danych. 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 Images (PNG) LSB stego narzędzie do obrazów cloackedpixel hide cover.jpg secret.txt password tworzy cover.jpg-stego.png cloackedpixel extract cover.jpg-stego.png output.txt password
LSBSteg Obrazy (PNG, BMP, …) w nieskompresowanych formatach Proste narzędzia LSB z bardzo ładnym i czytelnym kodem Pythona LSBSteg encode -i cover.png -o stego.png -f secret.txt LSBSteg decode -i stego.png -o output.txt
f5 Obrazy. (JPG) Algorytm steganograficzny F5 ze szczegółowymi informacjami na temat procesu f5 -t e -i cover.jpg -o stego.jpg -d 'secret message' f5 -t x -i stego.jpg 1> output.txt
stegpy Obrazy (PNG, GIF, BMP, WebP) i audio (WAV) Prosty program do steganografii oparty na metodzie LSB stegpy secret.jpg cover.png stegpy _cover.png

Narzędzia GUI do steganografii

Wszystkie poniższe narzędzia mają graficzne interfejsy użytkownika i nie mogą być używane z wiersza poleceń.Aby je uruchomić, musisz udostępnić serwer X11 wewnątrz kontenera.Obsługiwane są dwa sposoby:

  • run start_ssh.shaby odpalić serwer SSH. Następnie połącz się za pomocą przekierowania X11. Wymaga serwera X11 na twoim hoście!
  • run start_vnc.sh, aby uruchomić serwer VNC + klienta. Następnie połącz się z przeglądarką na porcie 6901, a otrzymasz pulpit Xfce. Brak zależności od hosta!

Alternatywnie, znajdź inne sposoby, aby udostępnić X11 wewnątrz kontenera.Wiele różnych sposobów jest możliwych (np, mount UNIX sockets).

Narzędzie Typy plików Opis Jak zacząć
Steg Obrazy (JPG, TIFF, PNG, BMP) Obsługuje wiele typów plików i implementuje różne metody steg
Steganabara (Oryginalny link jest uszkodzony) Obrazy (???) Interaktywnie przekształcaj obrazy, aż coś znajdziesz steganabara
Stegsolve Images (???) Interaktywnie przekształcaj obrazy, przeglądaj schematy kolorów osobno, … stegsolve
SonicVisualiser Audio (???) Wizualizowanie plików audio w formie fal, wyświetlanie spektrogramów, … sonic-visualiser
Stegosuite Obrazy (JPG, GIF, BMP) Możliwość szyfrowania i ukrywania danych w obrazach. Aktywnie rozwijany. stegosuite
OpenPuff Obrazy, Audio, Video (wiele formatów) Wyrafinowane narzędzie z długą historią. Wciąż utrzymywane. Narzędzie Windows działające w wine. openpuff
DeepSound Audio (MP3, WAV) Narzędzie do stego audio, któremu zaufał sam Mr. Robot. Narzędzie Windows działające w wine (bardzo hacky, wymaga VNC i działa w wirtualnym pulpicie, MP3 uszkodzone z powodu brakującej DLL!) deepsoundtylko w sesji VNC
cloackedpixel-analyse Obrazy (PNG) Wizualizacja stego LSB dla PNG – użyj jej do wykrycia podejrzanie losowych wartości LSB w obrazach (wartości bliskie 0.5 mogą wskazywać na osadzenie zaszyfrowanych danych) cloackedpixel-analyse image.png

Skrypty ekranujące

Wiele z powyższych narzędzi nie wymaga interakcji z GUI.Dlatego można łatwo zautomatyzować niektóre przepływy pracy w celu wykonania podstawowego przesiewania plików potencjalnie zawierających ukryte wiadomości.Ponieważ odpowiednie narzędzia różnią się w zależności od typu pliku, każdy typ pliku ma inne skrypty.

Dla każdego typu pliku istnieją dwa rodzaje skryptów:

  • XXX_check.sh <stego-file>: uruchamia podstawowe narzędzia przesiewania i tworzy raport (+ ewentualnie katalog z raportami w plikach)
  • XXX_brute.sh <stego-file> <wordlist>: próbuje wyodrębnić ukrytą wiadomość z pliku stego za pomocą różnych narzędzi wykorzystujących listę słów (cewl, john i crunch są instalowane w celu generowania list – utrzymuj je na niskim poziomie).

Obsługiwane są następujące typy plików:

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

Generowanie Wordlist

Powyższe skrypty brute forcing potrzebują wordlist.Imho jest bardzo prawdopodobne, że nie pomoże to w użyciu ogromnych standardowych list słów, takich jak rockyou.Bardziej prawdopodobnym scenariuszem jest to, że masz przeczucie co do tego, jakie może być hasło, ale nie wiesz dokładnie.

Dla takich przypadków dołączono kilka narzędzi do generowania wordlist:

  • john: ulepszona przez społeczność wersja John the Ripper może rozszerzyć twoje wordlisty. Utwórz bazową wordlistę z kilkoma kandydatami na hasła i użyj john, aby utworzyć wiele ich wariantów. Użyj john -wordlist:/path/to/your/wordlist -rules:Single -stdout > /path/to/expanded/wordlist, aby zastosować rozbudowane reguły (~x1000) john -wordlist:/path/to/your/wordlist -rules:Wordlist -stdout > /path/to/expanded/wordlist dla zredukowanego zestawu reguł (~x50).
  • crunch: może generować małe listy słów, jeśli masz na myśli jakiś wzór. Na przykład, jeśli wiesz, że hasło kończy się na 1984 i ma 6 liter, użyj crunch 6 6 abcdefghijklmnopqrstuvwxyz -t @@1984 wygeneruje 26 * 26 = 676 haseł aa1984, ab1984, … aż do zz1984. Format to crunch <min-length> <max-length> <charset> <options> i użyliśmy opcji szablonowania. Sprawdź less /usr/share/crunch/charset.lst, aby zobaczyć zestawy znaków, z którymi Crunch dostarcza.
  • CeWL: może generować listy słów, jeśli wiesz, że dana strona jest związana z hasłem. Na przykład, uruchom cewl -d 0 -m 8 https://en.wikipedia.org/wiki/Donald_Trump jeśli podejrzewasz, że zdjęcie Donalda Trumpa zawiera zaszyfrowaną ukrytą wiadomość. Polecenie przeskrobuje stronę i wyodrębnia ciągi o długości co najmniej 8 znaków.

Przykłady steganografii

Obrazek zawiera przykładowy obrazek i plik audio, każdy w innym formacie:

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

Zawiera również skrypt /examples/create_examples.sh, który można uruchomić, aby osadzić ukrytą wiadomość („To jest bardzo tajna wiadomość!”Po uruchomieniu tego skryptu, znajdziesz te pliki w /examples/stego-files z ich nazwami wskazującymi, które narzędzie zostało użyte do osadzenia wiadomości.Możesz uruchomić skrypty sprawdzające, aby zobaczyć, czy znajdą coś na nich lub spróbować je złamać w inny sposób.

GUI i kontenery

Domyślnie, żadne narzędzia GUI nie mogą być uruchomione w kontenerze Docker, ponieważ nie jest dostępny serwer X11.Aby je uruchomić, musisz to zmienić.Co jest wymagane, aby to zrobić, zależy od twojej maszyny hosta.Jeśli:

  • run na Linuksie, prawdopodobnie masz X11
  • run na Mac OS, potrzebujesz Xquartz (brew install Xquartz)
  • run na Windows, masz problem

Użyj przekierowania X11 przez SSH, jeśli chcesz iść tą drogą. Uruchom start_ssh wewnątrz kontenera, aby uruchomić serwer, upewnij się, że eksponujesz port 22 podczas uruchamiania kontenera: docker run -p 127.0.0.1:22:22 ..., a następnie użyj ssh -X ... podczas łączenia (skrypt drukuje hasło).

Aby nie zależeć od X11, obraz jest dostarczany z serwerem TigerVNC i klientem noVNC.Możesz go użyć do otwarcia sesji HTML5 VNC za pomocą przeglądarki, aby połączyć się z pulpitem Xfce kontenerów. Aby to zrobić, uruchom start_vnc.sh wewnątrz kontenera, aby uruchomić serwer i klienta, upewnij się, że wystawiasz port 6901 podczas uruchamiania kontenera docker run -p 127.0.0.1:6901:6901 ... i przejdź do localhost:6901/?password=<the_password> (skrypt drukuje hasło).

Używanie SSH z przekierowaniem X11

animated demo gif - SSH + X11

Komendy w GIF dla kopiowania & wklejania:

# 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

Using Browser and VNC

animated demo gif - Browser + VNC

Commands in the GIF for copy & paste:

# 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>

Link collection

This is a collection of useful Steganography links:

  • You must be able to spot codes. Sprawdź ten cheat sheet od Erica Harshbargera, który zawiera wiele różnych kodów.
  • Cheat sheet opisujący przepływ pracy, rzeczy, których należy szukać i popularne narzędzia: kliknij
  • Przewodnik po Forensics CTF z mnóstwem pomysłów na wyzwania stego: kliknij
  • Opisy formatów plików jako piękne plakaty: kliknij

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.