Edmond Locard sformułował zasadę mówiącą (mniej więcej), że każdy kontakt pozostawia ślad, innymi słowy, przestępca zostawia coś na miejscu przestępstwa i coś stamtąd zabiera. Zasada ta jest prawdziwa nie tylko dla "tradycyjnej" kryminalistyki, ale i dla informatyki śledczej.
Zasada Locarda, kociątko Schrödingera
Każde działanie użytkownika, włamywacza, wirusa/malware zostawia (a przynajmniej powinno) jakiś ślad w systemie. Na przykład zawartość cache dns (ipconfig /displaydns):
(...) news.neostrada.pl ---------------------------------------- Record Name . . . . . : news.neostrada.pl Record Type . . . . . : 1 Time To Live . . . . : 1961 Data Length . . . . . : 4 Section . . . . . . . : Answer A (Host) Record . . . : 193.110.122.97 (...)
Sprawdzając netstat -ano:
Proto Local Address Foreign Address State PID (...) TCP 172.16.0.2:3624 193.110.122.97:119 ESTABLISHED 228 (...)
Dalej pslist 228:
Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time thunderbird 228 8 17 383 85132 0:04:10.656 47:50:41.383
...czyli przeglądnięcie grup dyskusyjnych w Thunderbird spowoduje pojawienie się w cache dns informacji o nazwie DNS i adresie IP serwera news. Uruchomienie programu (niech będzie ten Thunderbird) pozostawi informacje w Prefetch, podłączenie telefonu kablem USB też pozostawi ślad (przynajmniej pierwszym razem w setupapi.log):
[2008/12/05 19:03:26 972.8 Driver Install] #-019 Searching for hardware ID(s): nmwcd\vid_0421&pid_0042&if_oth #-198 Command line processed: C:\WINDOWS\system32\services.exe #I022 Found "NMWCD\VID_0421&PID_0042&IF_OTH" in C:\WINDOWS\inf\oem16.inf; Device: "Nokia E51 USB Generic"; Driver: "Nokia E51 USB Generic"; Provider: "Nokia"; Mfg: "Nokia"; Section name: "OtherX". (...)
Przykłady można mnożyć. Warto przy okazji zauważyć, że "czas życia" poszczególnych śladów jest różny, a więc ich zbieranie powinno odbywać się w określonej kolejności, co określa się jako Order of Volatility i można o tym przeczytać w RFC 3227.
Informacje o zawartości cache dns, połączeniach i aktywnych procesach można uzyskać z żywego systemu, informacje te znikną po jego wyłączeniu. Oczywiście nie musi to być do końca prawda, jeśli zastosowane jest dodatkowe logowanie (pamięta jeszcze ktoś PortReporter?). Informacje takie mogą okazać się bardzo istotne, na przykład dlatego: Trojan Horse as Porn Defense. Czy fakt, że w chwili przeprowadzania analizy nie ma śladu wrogiego kodu znaczy, że takiego kodu nie było kiedyś i to właśnie on nie pozostawił tych śladów?
Zabezpieczenie śladów z żywego systemu wcale nie musi być tak skomplikowane, jak może się wydawać. Można skorzystać na przykład z Windows Forensic Toolchest, albo z Helix3, albo (...). Tylko tu właśnie pojawia się coś, co dziwnie kojarzy mi się z zasadą nieoznaczoności. Tu również obserwacja zmienia stan badanego układu. Kilka przykładów:
- jesli w trakcie zbierania danych wykonywany jest dostęp do plików, zostanie zmodyfikowana informacja o czasie ostatniego dostępu,
- jeśli zostanie uruchomiony program, który był wykorzystany w trakcie "incydentu", informacja pozostała w Prefetch może zostać utracona,
- program do zrzucania pamięci może "przypadkiem" zastąpić sobą w pamięci pozostałości po "wrogim kodzie",
- jeśli uruchomionych zostanie wiele narzędzi, dane z Prefetch mogą zostać utracone (ograniczenie do 128 plików),
- jeśli nastąpi zapis do rejestru, zmodyfikowana zostanie wartość LastWriteTime,
- jeśli stworzone zostaną nowe pliki, mogą one nadpisać pozostałości po wcześniej istniejących i usuniętych plikach,
- jeśli komputer był wyłączony, to jego włączenie ... (ale to już nie do końca "obserwacja"),
Zbierając dane z żywego systemu trzeba uwzględniać nie tylko order of volatility, ale i fakt, że każda z wykonanych operacji pozostawia po sobie ślad w systemie. Innymi słowy - dobierać trzeba takie narzędzia, które śladów w systemie pozostawiają jak najmniej, bo później może się okazać, że po długich i ciężkich zmaganiach w końcu uda się ustalić, że podejrzane pozostałości to nie rootkit a RootkitRevealer, na przykład (o czym pisałem).
A kociak tak się tylko przyplątał. Biedaczek, ma klaustrofobię w wyniku pewnego eksperymentu. Ale i tak miał więcej szczęścia niż ten biedak :)