Odzyskiwanie danych, część 1

Odzyskiwanie danych to złożony temat, jednak podstawowe założenia są proste i logiczne. Zagadnienia, które omówiłem w artykułach a systemach plików okażą się niezwykle pomocne, dlatego jeżeli ktoś nie czyta artykułów po kolei, polecam mimo wszystko zapoznanie się z poprzednimi.

Artykuł ten opisuje zagadnienie odzyskiwania danych z punktu widzenia informatyki śledczej. Staram się wyjaśnić procesy przebiegające na niskim poziomie. Jeżeli ktoś trafił na tę stronę bo chce po prostu odzyskać dane – proponuję użyć jednego z wielu programów, które do tego służą, a które można be trudu wygooglować. Mój ulubiony to R-studio, ale większość z nich jest całkiem dobra.

Informatyk śledczy z kolei musi z kolei znać zasady działania tego typu programów aby wiedziećczego można się po nich spodziewać. Jeżeli ktokolwiek inny chce wiedzieć co dzieje się pod maską tych programów – zapraszam do lektury.

Terminologia odzyskiwanie danych nie jest w pełni ukształtowana, nawet w języku angielskim. Moją ulubioną jest w tym wypadku, ta wypracowana przez Access Data FTK. Dzielą oni odzyskiwanie danych na:

  • Data carving – wycinanie/odtwarzanie poprzednio istniejących plików na podstawie samych danych. Dane to w tym wypadku binarna zawartość przestrzeni dyskowej.
  • Meta carving – wycinanie/odtwarzanie poprzednio istniejących plików na podstawie metadanych. Metadane do których odnosi się FTK zawarte są w strukturach systemów plików czyli na przykład w tabeli FAT oraz wpisach katalogów (FAT32) lub  MFT (NTFS). Inne systemy plików, takie jak HFS lub EXT2, EXT3, EXT4 będą również miały swoje własne struktury.

Powyżej przedstawiłem terminologię Access Data ale każdy szanujący się program do odzyskiwanie danych będzie wykonywał przede wszystkim te dwie operacje – będą one zwykle po prostu nazwane inaczej.

Data carving

Data carving to praca archeologa. Obiekty (resztki dinozaurów) przemieszane są z masą mniej ciekawego materiału. Archeolog musi precyzyjnie oddzielić obiekty o wartości muzealnej od otaczającej je “ziemi”. Często obiekty te są pokruszone lub zdekompletowane i wymagają dodatkowej rekonstrukcji. Często nie wszystkie elementy  przysłowiowego szkieletu dinozaura nadal istnieją. Podobnie, choć z pewnymi różnicami sprawa wygląda z odzyskiwaniem danych. Program będzie musiał odnaleźć i wyodrębnić resztki plików, o których sam system plików już dawno zapomniał.

Jak wszyscy wiemy pliki w Windowsie posiadają rozszerzenie. Rozszerzenie jest wskazówką co do rodzaju pliku (pdf, txt, jpg). Tak – jedynie wskazówką. Rzeczywisty rodzaj pliku zapisany jest w nagłówku pliku, czyli w pierwszych kilku bajtach binarnej zawartości pliku.

W Windows działa to tak:

  •  Podwójnie klikamy na plik z rozszerzeniem, np zip,
  • Uruchamiana jest aplikacja odpowiedzialna za to rozszerzenie na przykład 7-zip,
  • 7-zip, nie będzie wierzył w rozszerzenie, zamiast tego sprawdzi sygnaturę pliku – jeżeli nie jest to sygnatura pliku ZIP zwróci komunikat o korupcji pliku. Właściwie 7-zip a tym wypadku będzie na tyle sprytny, że porówna sygnaturę pliku z wszystkimi typami archiwów, które obsługuje,  ale nie zmienia to generalnej zasady działania. 7-zip będzie dobrze wiedział, że ma do czynienia z plikiem RAR z rozszerzeniem ZIP, tylko kulturalnie nam tego nie wypomni.

Dla przykładu sygnatura pliku zip to następujący HEX:

50 4B 03 04

Co w ASCII zobaczymy jako PK..

RAR to z kolei

52 61 72 21 1A 07

W ASCII:

Rar!…

Więcej sygnatur można znaleźć tutaj: http://www.garykessler.net/library/file_sigs.html

Program odzyskujący dane metodą data carving przemierzy całą przestrzeń dyskową w poszukiwaniu sygnatur różnorodnych plików. Jeżeli sygnatura zostanie znaleziona, program uzna to za początek pliku. Teraz trzeba będzie ustalić koniec pliku. Tutaj zaczynają się problemy. Kilka typów plików posiada sygnaturę końca, większość jednak nie. Pliki mogą być również sfragmentowane lub nadpisane nową zawartością. Program więc nie tylko nie wie jaka jest długość pliku, ale także czy jego zawartość dalej istnieje, oraz w którym miejscu może się znajdować. Program więc przyjmuje założenie że plik nie jest sfragmentowany i odzyskuje wszystko aż do momentu odnalezienia sygnatury kolejnego pliku. Nie więcej jednak niż ustalony limit wielkości dla danego rodzaju pliku. Mało jest prawdopodobne na przykład istnienie a tym bardziej odzyskanie pliku Word o wielkości 3 GB, należy więc limit ustalić w jakiś rozsądny sposób na przykład 15 MB.

Dobre programy do odzyskiwania danych, będą w stanie przeanalizować istniejący system plików i wykluczyć z procesu odzyskiwania danych przestrzeń dysku, która jest obecnie ulokowana. W takim wypadku natknięcie się na ulokowaną przestrzeń będzie również oznaczało koniec pliku.

Odzyskiwanie tą metodą będzie generalnie rzecz biorąc niezależne od systemu plików. Dane w najczęściej spotykanych systemach zapisywane są w sposób pozwalający na tego typu odzysk, Co więcej w ten sposób można odzyskać dane nawet ze zrzutów pamięci lub z pamięci swap.

Jeżeli chodzi o pamięci dyskowe,sygnatury pliku będziemy się spodziewać przede wszystkim na początku sektorów dysku. Program do odzyskiwania danych, może więc ułatwić sobie zadanie i szukać tylko tam.  Ponadto logika podpowiada, że sygnatury będą znajdowały się jedynie na początku klastrów na dysku. Klastry są przecież podstawową jednostką alokacji (Klaster to zwykle od 8 do 128 sektorów). Pamiętać jednak należy, że program do odzyskiwania danych musi przyjąć, że na dysku mógł istnieć wcześniej inny system plików, z innym rozkładem klastrów. Bezpieczniej jest więc zbadać wszystkie sektory.

Istnieją nawet sytuacje, kiedy sygnatura pliku nie znajduje się na początku sektora. Dotyczy to na przykład plików jpg zakotwiczonych w dokumencie starszych wersji Worda (doc) lub w przypadku różnego rodzaju innych plików – plik ISO zapisany na dysku, plik pamięci swap. Jeżeli odzysk danych jest kluczowy dla danej sprawy (na przykład sprawy związane z pornografią), warto poszukać sygnatur wszędzie.

Rezultaty

Metoda data carving oparta jest na sygnaturach plików. Jeżeli sygnatura została nadpisana program nie da rady odzyskać pliku. Jeżeli na dysku znajduje się 3-gigabajtowy plik wideo i jego pierwszy sektor został nadpisany małym plikiem tekstowym, wykrycie i odzyskanie tego pliku tą metodą stanie się niemożliwe. Dlatego właśnie niektóre programy do usuwania danych takie jak Eraser, posiadają opcję szybkiego kasowania  tylko pierwszych 2 KB usuwanego pliku. Przydatna chyba wtedy jak policja wyłamuje drzwi.

Druga kwestia to nieprawdziwe trafienia. Niektóre sygnatury są bardzo krótkie. 3 bajtowe zdarzają się często. W takim wypadku nawet losowe dane na dysku czasem ułożą się w sygnaturę, Zwłaszcza jeżeli będziemy ich szukali na całym obszarze, a nie tylko na granicach sektorów. Spowoduje to zwykle odzyskanie wielu fałszywie zidentyfikowanych plików. Wiele może oznaczać nawet dziesiątki lub setki tysięcy.

Trzeci problem to fragmentacja i nadpisane sektory. Jeżeli nawet sygnatura jest właściwa, program będzie zgadywał długość pliku i będzie zakładał, że był on niesfragmentowany  i nienadpisany nową zawartością. W wielu przypadkach nie będzie to odpowiadało rzeczywistości. Jeżeli spojrzymy na taki, odzyskany plik w edytorze binarnym, zobaczymy, że często zaczyna się prawidłowo (na przykład jak plik JPG) ale już w następnym odzyskanym klastrze widzimy zawartość innego rodzaju, na przykład XML.

W takich wypadkach próby otwarcia pliku w danej aplikacji skończą się niepowodzeniem. Nie zawsze jednak. W przypadku an przykład plików jpg jeżeli początek pliku jest prawidłowy, zostanie on wyświetlony, nawet jeżeli pozostałą część zawartości jest nadpisana/wadliwa. W przypadku więc plików graficznych, często spotkamy się z plikami odzyskanymi częściowo, gdzie tylko górna zwartość jest wyświetlona.

Zgadywanie długości pliku również może generować problemy. Nie raz widziałem odzyskane pliki PDF o wielkości 1 GB. Takie pliki nie występują w naturze, a potrafią dramatycznie zwiększyć rozmiar odzyskanej kolekcji. Należy więc zawsze w programie ustalić limit odzyskiwanych plików do jakiejś rozsądnej wartości.

Zaletą niektórych formatów plików, do których należy wspomniany PDF jest to, że sam plik w swojej sekcji początkowej zawiera informację o swojej długości. Acrobat Reader odczyta tę informację i odczyta tylko długość podaną w pliku. Jakiekolwiek informacje odzyskane w nadmiarze zostaną zignorowane i nie wygenerują błędu.