Jak ukryć archiwum w spektrogramie audio i znaleźć ukryte dane jednym poleceniem
Jeśli kiedykolwiek brałeś udział w CTF lub analizowałeś podejrzane pliki w ramach forensyki cyfrowej, prawdopodobnie pamiętasz ten ból. Dla obrazów uruchamiasz zsteg lub stegsolve, dla audio otwierasz Sonic Visualiser, do analizy LSB szukasz starego skryptu w Pythonie 2, a dla JPEG pamiętasz steghide. W efekcie na pulpicie ląduje tuzin narzędzi o różnym stopniu zaniedbania.
Na GitHubie pojawił się projekt o nazwie StegoForge autorstwa programisty Nour833. Autor postanowił połączyć wszystkie popularne techniki steganografii i steganalizy w jednym narzędziu z wygodnym CLI i lokalnym interfejsem webowym. Co więcej, narzędzie może pracować nie tylko ze znajomymi plikami PNG, ale także z MP4, dokumentami Office, PDF-ami, plikami binarnymi, a nawet pakietami sieciowymi.
Przyjrzyjmy się, jak to działa i jakie przydatne funkcje oferuje.
Co kryje się w StegoForge
Pod maską to modularny framework w Pythonie, ale dystrybuowany jest również jako gotowe pliki binarne dla Windows, macOS i Linux. Nie musisz więc koniecznie konfigurować środowiska i zarządzać zależnościami, jeśli chcesz szybko sprawdzić plik na maszynie wirtualnej.
Repozytorium obejmuje jednocześnie dwa zadania: pakowanie ukrytych danych do pliku nośnika (steganografia) oraz wyszukiwanie ukrytych ładunków w nieznanych plikach (steganaliza).
Kontenerem może być prawie każdy popularny format:
- Obrazy rastrowe: PNG, JPEG, WebP, GIF, BMP. Obsługiwane są różne metody, od klasycznego LSB po osadzanie oparte na częstotliwościach przez DCT i algorytmy adaptacyjne.
- Audio: WAV, MP3, FLAC, OGG. Dane można osadzać w najmniej znaczących bitach próbek, przesuwaniu fazy lub rysowaniu obrazu bezpośrednio na spektrogramie.
- Wideo: MP4 i WebM poprzez osadzanie w klatkach kluczowych i wektorach ruchu.
- Dokumenty: ukrywanie w niewidocznych znakach Unicode (o zerowej szerokości), strumieniach PDF i strukturach XML plików Office.
- Pliki wykonywalne: pakowanie w przestrzeń slack i sekcje overlay PE i ELF.
Wszystkie dane są szyfrowane przez AES-256-GCM z wyprowadzaniem klucza Argon2 przed osadzeniem, więc atakujący nie będzie w stanie po prostu zauważyć sensownego tekstu w edytorze szesnastkowym.
Główne funkcje w praktyce
Tryb konkursowy i ślepa analiza
W wyzwaniach CTF rzadko z góry wiadomo, jak dokładnie ukryta jest flaga. Zazwyczaj trzeba ręcznie przechodzić przez metody. StegoForge ma dedykowane polecenie ctf do tego.
stegoforge ctf -f suspicious.mp3
Polecenie przepuszcza plik przez heurystyki, testy statystyczne (chi-kwadrat, analiza RS) i próbuje wykryć charakterystyczne sygnatury lub zaszyfrowane bloki. Dla obrazów narzędzie może podłączyć splotowe sieci neuronowe w formacie ONNX, które są pobierane z HuggingFace przy pierwszym uruchomieniu i oceniają prawdopodobieństwo osadzenia steganograficznego.
Spektrogramy i wizualny dźwięk
Jedną z najbardziej ilustracyjnych technik w steganografii audio jest osadzanie obrazu w widmie częstotliwości. StegoForge robi to jedną linijką:
stegoforge encode -c track.wav -p logo.png --method spectrogram
Wynik to zwykły plik audio. Podczas słuchania słyszysz szum, ale jeśli otworzysz utwór w dowolnym analizatorze widma, osadzony obraz wyraźnie pojawi się na ekranie.
Podwójne dno dla wiarygodnego zaprzeczenia
Interesująca implementacja trybu decoy. Możesz zapisać dwa różne ładunki z różnymi hasłami w jeden plik nośnika:
stegoforge encode -c photo.png \
-p secret.pdf -k "main-password" \
--decoy fake_notes.txt --decoy-key "fake-password"
Jeśli zostaniesz poproszony o odszyfrowanie kontenera, wprowadzasz hasło decoy fake-password i przekazujesz niewinną tekstową wiadomość. Udowodnienie istnienia drugiego ukrytego archiwum bez znajomości głównego hasła jest matematycznie trudne.
Sprawdzanie przeżywalności danych w serwisach społecznościowych
Większość platform, takich jak Telegram, Discord czy Twitter, ponownie kompresuje przesłane obrazy, niszcząc najmniej znaczące bity. StegoForge ma wbudowaną korekcję błędów Reed-Solomon i gotowe profile kompresji dla mediów społecznościowych. Możesz bezpośrednio w terminalu sprawdzić, czy ładunek pozostanie czytelny po optymalizacji po stronie platformy:
stegoforge encode -c photo.png -p text.txt -k "pass" --target twitter --test-survival
Jak zbudowany jest projekt
Architektura podzielona jest na niezależne warstwy:
- Core
core/zawiera enkoder dla każdego typu nośnika (obraz, audio, wideo, dokument, binarny, sieciowy). - Moduł
detect/odpowiada za analizę matematyczną, obliczanie entropii i uruchamianie modeli ONNX. - Moduł
crypto/hermetyzuje pierwotne elementy kryptograficzne (Argon2, AES-GCM, X25519). - Interfejsy są rozdzielone: istnieje CLI z interaktywnym menu i interfejs webowy oparty na Flask.
Interfejs webowy uruchamia się lokalnie poleceniem stegoforge web. Możesz w nim wizualnie przeglądać mapy ciepła zmian pikseli, porównywać oryginał ze stego kontenerem i przechodzić przez metody bez zapamiętywania flag terminalowych.
Na co zwrócić uwagę
Projekt jest jeszcze młody, repozytorium ma około sześciuset gwiazd, ale baza kodu jest schludna. Pewne niuanse:
- Przy pierwszym uruchomieniu detektora sieci neuronowej skrypt połączy się z siecią, aby pobrać wagi modelu do
~/.stegoforge/models. Jeśli pracujesz na izolowanej maszynie bez internetu, powinieneś wcześniej wstępnie załadować wagi do cache. - Niektóre złożone metody osadzania w wideo i skompresowanym JPEG wymagają zauważalnie więcej czasu i zasobów CPU niż prosty LSB w nieskompresowanym PNG.
Kto znajdzie to przydatne
StegoForge warto dodać do zakładek uczestnikom CTF, specjalistom od forensyki cyfrowej i studentom studiującym bezpieczeństwo informacji. Narzędzie eliminuje zoo rozproszonych narzędzi i zapewnia jasną platformę do eksperymentowania z ukrywaniem i wykrywaniem danych.
Możesz sklonować repozytorium lub pobrać gotowy plik binarny ze strony projektu na GitHub.
Powiązane projekty