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).
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:
- Zbuduj obraz (
docker build -t <image_name> .
) lub ściągnij z Docker hub (docker pull dominicbreuker/stego-toolkit
) - Uruchom kontener z plikami zamontowanymi w folderze
/data
(docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash
) - Użyj narzędzi CLI i skryptów przesiewowych na swoich plikach: np, uruchom
check_jpg.sh image.jpg
, aby utworzyć szybki raport, lub uruchombrute_jpg.sh image.jpg wordlist.txt
, aby spróbować wydobyć ukryte dane za pomocą różnych narzędzi i haseł - 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.
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.jpg aby 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.sh
aby 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!) | deepsound tylko 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
icrunch
są instalowane w celu generowania list – utrzymuj je na niskim poziomie).
Obsługiwane są następujące typy plików:
- JPG:
check_jpg.h
ibrute_jpg.sh
(brute runningsteghide
,outguess
,outguess-0.13
,stegbreak
,stegoveritas.py -bruteLSB
) - PNG:
check_png.h
ibrute_png.sh
(brute runningopenstego
istegoveritas.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żyjjohn -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 tocrunch <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
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
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
.