Tym razem kontynuacja wpisu (Prawie) każde szyfrowanie można złamać, która dotyczy śladów, jakie pozostawiają w systemie Windows narzędzia do szyfrowania. Konkretnie dwa: TrueCrypt oraz FreeOTFE, przy czym w przypadku FreeOTFE skupię się na FreeOTFE Explorer. W obu przypadkach skupię się na kontenerach, a nie szyfrowaniu dysków.
I Know What You Did Last Summer
Punkt wyjścia: to są losowe śmieci
Na początek zainteresowanych odeślę do dokumentacji TrueCrypt i FreeOTFE dotyczącej formatu kontenera. Kluczowy jest tutaj fakt, że pliki te nie mają określonego formatu. Co do zasady nie różnią się od losowych danych, co dokładniej omówiłem we wpisie W poszukiwaniu kontenera TrueCrypt. W żaden sposób nie można również polegać na "zwyczajowych" rozszerzeniach plików typu *.tc czy *.vol. Plik zawierający zaszyfrowane dane może nazywać się dowolnie.
Rezultatem braku wyraźnego formatu pliku zawierającego szyfrowany kontener i braku wymagań co do jego nazwy, nie można mieć pewności, czy dany plik zawiera/nie zawiera szyfrowany kontener. Innymi słowy - mogę złośliwie stworzyć plik, zapisać do niego losowe dane, nadać mu rozszerzenie *.tc lub *.vol, a osoby próbujące rozszyfrować ten plik w zasadzie nigdy nie będą w stanie stwierdzić, czy zawiera on śmieci, czy jeszcze nie znaleźli odpowiedniego hasła/klucza. A może używają złego programu? Jest w czym wybierać: On-The-Fly Encryption: A Comparison. Zwracam uwagę na kolumnę Volumes have no identifier, która mówi, czy zastosowanie danego narzędzia można rozpoznać na podstawie cech charakterystycznych (sygnatury, formatu).
System Cię śledzi
Nieco gorzej sytuacja przedstawia się jeśli chodzi o ślady, które użycie określonego oprogramowania pozostawia w systemie. Warto pamiętać, że:
- informacja o uruchamianych programach jest "zapisana" w Prefetch (przy okazji jeszcze raz: WinPrefetchView) oraz UserAssist,
- TrueCrypt wymaga kilku plików, a truecrypt.sys zostawia ślady w rejestrze,
- montowanie kontenerów TrueCrypt pozostawia ślady w rejestrze,
- FreeOTFE Explorer również zostawia ślady w rejestrze,
Powyższa lista "śladów" nie jest pełna, chodzi tylko o pokazanie jak wiele przesłanek użycia określonego oprogramowania można znaleźć.
Ślady w Prefetch
W Prefetch można znaleźć na przykład takie ślady:
Filename: FREEOTFEEXPLORER.EXE-18D47E53.pf Created Time: 2010-03-06 16:10:08 Modified Time: 2010-03-06 16:10:08 File Size: 18 100 Process EXE: FREEOTFEEXPLORER.EXE Process Path: C:\PROGRAM FILES\FREEOTFE EXPLORER\FREEOTFEEXPLORER.EXE Run counter: 1 Last Run Time: 2010-03-06 16:09:58
Filename: TRUECRYPT.EXE-079E6E81.pf Created Time: 2010-03-06 15:59:47 Modified Time: 2010-03-06 15:59:47 File Size: 17 200 Process EXE: TRUECRYPT.EXE Process Path: C:\PROGRAM FILES\TRUECRYPT\TRUECRYPT.EXE Run counter: 1 Last Run Time: 2010-03-06 15:59:37
Akurat w tym przypadku trudno powiedzieć które z narzędzi jest używane częściej.
Ślady w UserAssist
W UserAssist można znaleźć wpisy, które dobrze zgadzają się z informacjami z Prefetch:
UEME_RUNPATH:TrueCrypt.lnk 1 2010-03-06 15:59:37 UEME_RUNPATH:C:\Program Files\TrueCrypt\TrueCrypt.exe 1 2010-03-06 15:59:37 UEME_RUNPIDL:%csidl2%\FreeOTFE Explorer\FreeOTFE Explorer.lnk 1 2010-03-06 16:09:58 UEME_RUNPATH:C:\Program Files\FreeOTFE Explorer\FreeOTFEExplorer.exe 1 2010-03-06 16:09:58
Ślad po truecrypt.sys
Korzystanie z TrueCrypt wymaga zainstalowania w systemie pliku truecrypt.sys i "uruchomienia" go. Tak, nawet w przypadku, gdy wykorzystywany jest tak zwany Traveler Mode (przy okazji: Using TrueCrypt Without Administrator Privileges). A to pozostawia po sobie ślad w rejestrze w:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\truecrypt
Poza samym faktem zainstalowania stosownego sterownika, wpis w rejestrze może powiedzieć jeszcze kilka rzeczy: Co mówi rejestr, czyli LastWriteTime.
Ślad po montowaniu dysków/kontenerów TrueCrypt
Kolejny ślad po TrueCrypt wiąże się z montowaniem dysków. Śladów tych można szukać w:
HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
A ślady mogą wyglądać mniej więcej tak:
\??\Volume{6569067a-2199-11db-a7a8-0016418a97d9} TrueCryptZ \??\Volume{d065ba5b-a378-11dc-a873-001302aaef93} TrueCryptL \??\Volume{adb8bf6d-c9fb-11dc-a880-001302aaef93} TrueCryptS \??\Volume{aacc8b9d-e4a3-11dc-a884-001302aaef93} TrueCryptO \??\Volume{aacc8b9f-e4a3-11dc-a884-001302aaef93} TrueCryptN \??\Volume{ee28036e-f34b-11dc-a88a-001302aaef93} TrueCryptVolumeZ \??\Volume{59909978-289d-11dd-a89f-001302aaef93} TrueCryptVolumeX \??\Volume{8ee0e100-556e-11dd-a8b6-001302aaef93} TrueCryptVolumeY \??\Volume{c4f85b19-59ba-11dd-a8b9-001302aaef93} TrueCryptVolumeF \??\Volume{554d3b38-68a6-11dd-a8bb-001302aaef93} TrueCryptVolumeP
Ślad po FreeOTFE Explorer w rejestrze
Ciekawy ślad zostawia po sobie FreeOTFE Explorer. Należy go szukać w:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU
Wygląda on mniej więcej tak:
F.r.e.e.O.T.F.E.E.x.p.l.o.r.e.r...e.x.e...E.:...
Wpis ten może dostarczyć informacji na temat tego gdzie znajduje się szyfrowany plik, choć już nie powie jak ten plik się nazywa.
Przy okazji obserwując zachowanie TrueCrypt przy pomocy Process Monitor można zauważyć, że zostawia on podobny ślad, ale następnie po sobie sprząta.
Co z tego wynika
Pokazując jakie ślady po sobie zostawiają w systemie narzędzia chciałem zwrócić uwagę, że nie należy zakładać iż ewentualny intruz nie będzie wiedział jakie narzędzia były wykorzystane do szyfrowania danych. Rozważając bezpieczeństwo/ryzyko proponuję przyjąć założenie, że ONI wiedzą prawie wszystko, czyli znają użyte oprogramowanie oraz wiedzą, gdzie zaszyfrowane dane są przechowywane. Warto wykorzystywać te rozwiązania, które w takim przypadku bronią się najlepiej. Trzeba jeszcze pamiętać o jednej istotnej sprawie - założenia przy takiej analizie budowane są na podstawie aktualnego stanu wiedzy. Cała analiza może okazać się błędna w przypadku, gdy stan ten ulegnie istotnej zmianie.
Jeszcze jedna istotna sprawa - dobrze jest wiedzieć przed czym właściwie chcemy się bronić. Wrzucanie do jednego worka młodszej siostry, hiszpańskiej inkwizycji (or compatible - patrz niżej), NSA i brytyjskiego prawa to nie najlepszy pomysł...
Warto również odnotować ten przypadek: First Prosecution Based on Memory Forensics. Jeśli ONI mają zawartość pamięci, to mogą dowiedzieć się na tej podstawie dużo...
Pozwolę sobie jeszcze na jedną uwagę do komentarza, który zostawił Kravietz, a konkretnie do jego fragmentu:
I tak np. wystarczy użyć szyfru 3DES ze zmodyfikowanymi nieznacznie permutacjami wejściowymi (IP) i wyjściowymi, żeby uczynić wszelki próby łamania sprzętowego - nie mówiąc o zgadywaniu algorytmu - bezużytecznymi.
Mówisz - masz: Creating a New Hash/Cypher Driver. Nie to, by w innych rozwiązaniach się tak nie dało, w tym przypadku (FreeOTFE) jest to jednak wyjątkowo proste.