“It’s the oldest question of all, George. Who can spy on the spies?”
John le Carré, Tinker Tailor Soldier Spy
Dzisiejszy blog był zainspirowany przez Państwa komentarze (osobne podziękowania dla Pana Jakuba!). Bezpośrednim natomiast powodem była dość smutna wiadomość o odejściu Johna le Carré (1931-2020), którego książki (The Spy Who Came in from the Cold, Tinker Tailor Soldier Spy czy też ostatnia i niesamowita Agent Running in the Field) były i pozostaną inspiracją dla wielu pokoleń kryminalistyków.
W czasach Wojny Zimowej jednym z podstawowych problemów, z którym miały do czynienia służby bezpieczeństwa, było przekazywanie informacji (zdobytych) w taki sposób, żeby w sytuacji, kiedy wiadomość/list zostanie przechwycona/y a) nie ujawnić jej źródła, b) uniemożliwić odczyt treści wiadomości oraz c) nie dać podmienić wiadomości na inną. W sztuce szpiegowskiej stosowano w tych celach wiele rozwiązań – od prostych do dość zaawansowanych technicznie. Możemy zobaczyć, jak wyglądała ukryta wiadomość (wariant najprostszy) w filmie braci Coen Bridge of Spies opowiadającym o wymianie Rudolfa Abla na Francisa Gary Powersa – pilota amerykańskiego samolotu szpiegowskiego U-2 zestrzelonego nad terytorium Związku Radzickiego. Do zaawansowanych technicznie metod można zaliczyć tzw. microdot’y – tekst widoczny wyłącznie przy dużym powiększeniu zamaskowany pod kropkę lub zabrudzenie (Rys. 1).
Steganografia klasyczna opiera się o zasadę „matreshki” (rys. 2)
Technika cyfrowa zdecydowanie poszerza możliwości steganografii. Dostępne metody można podzielić na dwie grupy 1) te, gdzie trzeba popracować rączkami oraz 2) gotowe programy, które robią wszystko za nas (rys. 3).
Gotowe programy mają jednak kilka istotnych wad:
kryminalistycy cyfrowi wiedzą o ich istnieniu;
każdy może je ściągnąć i wypróbować, a więc będzie wiedział, jak wygląda wynik końcowy oraz (kryminalistyk cyfrowy) jak działa dany program;
gotowe programy zostawiają ślady cyfrowe (szczególnie w środowisku Windows), na podstawie których można domyślić się, jakiego programu steganograficznego używał nasz Kowalski.
W związku z powyższym w dzisiejszym blogu opiszemy metodę nr 1. Potrzebny nam będzie redaktor liczb szesnastkowych, na przykład znany nam już HxD Maëla Hörza z uroczego Saarbrücken😊 oraz program do archiwizowania/kompresji plików, na przykład darmowy 7-Zip. Plus, zwierzątko doświadczalne – plik z rozszerzeniem .jpg lub .gif.
Mamy plik secret.docx. Kompresujemy nasz plik w 7-Zip (klikamy na plik prawy przyciskiem myszki, w menu wybieramy 7-Zip – Add to „Secret.7z” – rys. 4).
Otwieramy nasz nowy plik secret.7z w HxD Editorze (rys.5), kopiujemy w całości (!) widoczny na ekranie kod szesnastkowy (nie zamykamy programu HxD).
Przeciągamy myszką plik-obrazek na ikonkę HxD. Przewijamy kod szesnastkowy do samego końca i dodajemy kod szesnastkowy pliku secret.7z. Zachowujemy plik (Save) (nie zwracamy uwagi na pojawiające się ostrzeżenie dotyczące zmiany rozmiaru pliku, zmiana ta nie jest na tyle znacząca, żeby tym się przyjmować) – rys. 6.
Gotowe! Mamy teraz nasz plik-obrazek, w którym schowaliśmy plik secret.docx. Jeśli zmienimy rozszerzenie pliku-obrazku na .7z będziemy mogli odtworzyć go w programie 7-Zip (Rys. 7- 8).
Podsumowanie: zaprezentowana metoda jest prosta w użyciu, a jednocześnie nie pozostawia za wiele śladów (programy do tworzenia skompresowanych plików są dość popularne, można je znaleźć na każdym komputerze). Pozostaje tylko poinformować naszego Adresata o zastosowanej metodzie steganograficznej. Jak to zrobić – odsyłam do książek J. Le Carré 😊
Zadanie: ukryć plik (.pdf, .docx, .wav lub inny) na dysku twardym, a jednocześnie uniemożliwić jego otwarcie przez osoby trzecie nie stosując szyfrowania.
Przedstawimy Państwu dwie metody z zakresu tzw. antiforensics, tj. działań podejmowanych w celu ukrycia śladów (kryminalistycznych) przed detekcją – metodę dla „laików” oraz drugą, bardziej zaawansowaną metodę antykryminalistyczną.
Antiforensics – działania kontrwykrywcze, których celem jest zatarcie, ukrycie śladów (w tym tych zaliczanych do kategorii cyfrowych) stanowią przedmiot kryminalistyki.
Materiał udostępniany w danym blogu ma służyć wyłącznie do celów edukacyjnych i informacyjnych.
Rozwiązanie 1: zmienić rozszerzenie pliku
Każdy plik ma określone rozszerzenie (ang. extention) wskazujące na jego format – .doc, .docx, .pdf, .png, .wav, .avi itd. Oficjalną, pełną listę rozszerzeń plików można znaleźć na stronie https://fileinfo.com/ (Rys. 2).
Rozszerzenie pliku można łatwo zmienić na dowolne (również te, które w naturze nie istnieje). Na przykład, możemy zmienić rozszerzenie .docx na .jpg. Ikonka pliku zmieni się wtedy „automatycznie” (Rys. 2).
Dodatkowo, możemy umieścić plik ze zmienionym rozszerzeniem wśród innych plików tego samego rodzaju (steganografia). Można też zmienić nazwę naszego pliku na inną, bardziej odpowiadającą nowemu rozszerzeniu. Musimy tylko zapamiętać, jak się nazywa plik i gdzie się znajduje. Po zmianie rozszerzenia pojawi się problem z otwarciem pliku, ale po przywróceniu oryginalnego rozszerzenia wszystko będzie działać jak trzeba.
Niestety (na szczęście😊), programy kryminalistyczne do analizy śladów cyfrowych takie, jak słynny Autopsy mają funkcję (moduł) rozpoznawania plików z niepoprawnym rozszerzeniem.
Na poziomie binarnym każdy plik jest kombinacją jedynek i zer (=jeżyk binarny lub kod binarny – Rys. 3). Każda jedynka, każde zero to jest jeden bit. Kombinacja z ośmiu jedynek i zer tworzy jeden bajt.
W kryminalistyce cyfrowej nie stosuje się jednak kodu binarnego – jest on trudny do zapamiętania i niewygodny dla człowieka. Zamiast tego używa się kodu heksadecymalnego, szesnastkowego, gdzie ta sama informacja binarna jest kodowana przy pomocy kombinacji z liczb (od 0 do 9) i liter (A, B, C, D, E, F). Na rysunku 4 widzimy, że ten sam tekst (plik .txt) w reprezentacji szesnastkowej jest znacznie krótszy i łatwiej odbierany (Rys. 4). W tej uproszczonej formie dane (binarne) mogą być swobodnie odczytane przez człowieka (human-readable).
W zapisie heksadecymalnym każdy znaczek – litera czy liczba – oznacza 4 bity. Kombinacja z literki i liczby/dwóch literek lub dwóch liczb reprezentuje więc jeden bajt (8 bit). Po prawej stronie („Decoded text”) widzimy przedstawienie naszego kodu w ASCII – tabeli, składającej z 256 symboli. Na przykład, kombinacja 74 w ASCII reprezentuje literę „t” małe (z tabelą ASCII można się zapoznać na stronie https://www.ascii-code.com/ ).
Zobaczyć zawartość pliku w języku heksadecymalnym można przy pomocy specjalnego edytora, na przykład HxD – https://mh-nexus.de/en/hxd/
Każdy plik (oprócz plików z rozszerzeniem .txt) ma podpis/sygnaturę cyfrową (w języku angielskim file signature, file header lub magic bytes). Jest on „zakodowany” w pierwszych kilkunastu bitach (Rys. 5). Na stronie https://www.filesignatures.net/ znajdziemy oficjalną bazę podpisów/sygnatur plików.
W naszym przypadku podpis cyfrowy pliku tworzą pierwsze 64 bity – 50 4B 03 04 14 00 06 00 (jak widzimy na Rys. 6, 32-bitowa sygnatura 50 4B 03 04 odpowiada dokumentom MS Office). W ASCII jest to zapis „PK…” – widzimy go po prawej stronie w „Decoded text”.
Jeśli zmieniamy wyłącznie rozszerzenie pliku (rozwiązanie 1), to na poziomie binarnym plik będzie dalej plikiem w formacie .docx. Musimy, więc, zmienić podpis cyfrowy pliku. Na przykład, na ten odpowiadający często spotykanym plikom w formacie .png – pliki-obrazki (Rys. 7).
Jak widać, nasz plik otrzymał nowy podpis cyfrowy i jest teraz plikiem w formacie .png Zostało tylko zmienić rozszerzenie pliku z .docx na .png (rozwiązanie 1), nazwę pliku oraz umieścić go wśród innych plików-obrazków.
Ważne: Opisana metoda działa również w przypadku „chmury” – możemy umieścić zmodyfikowany plik w naszym „schowku” wirtualnym. Provider usługi (Microsoft, Google) nie będzie mógł wtedy „zajrzeć” do środka. Plus, osoba nieupoważniona, która uzyska dostęp do naszego konta, nie będzie mogła odczytać, co jest w tym pliku.
Metoda 2 jest bardziej skomplikowana w porównaniu do rozwiązania pierwszego, ale jest też skuteczniejsza – nie udało nam się znaleźć żadnego programu komercyjnego, który potrafiłby rozpoznać rzeczywisty format pliku, który ma zmienioną sygnaturę binarną. Rozwiązania tego problemu istnieją tylko w teorii. To oznacza, że jeśli dysk zawierający podobny plik trafi do biegłego, temu ostatniemu będzie łatwiej uznać plik za uszkodzony i pominąć go w raporcie niż próbować odczytać jego zawartość.