>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
Python

Jak ukryć archiwum w spektrogramie audio i znaleźć ukryte dane jednym poleceniem

StegoForge Dashboard

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