4. Pozyskiwanie i analiza informacji ulotnych

4.1. Proces przechwytywania ulotnych informacji

Przede wszystkim należy zadbać o stabilność naszej maszyny roboczej. Jednym z problemów, z jakimi można się spotkać, jest automatyczny restart maszyny, spowodowany automatycznymi aktualizacjami systemu operacyjnego. Dlatego warto wyłączyć, nie aktualizacje systemu operacyjnego, ale ich zdolność do wymuszania restartu maszyny. Takie ponowne uruchomienie mogłoby na przykład przerwać akwizycję dysku lub analizę obrazu.

Inną dobrą praktyką jest odmowa dostępu do zapisu na dyskach wymiennych, co zapobiega zmianom na dyskach źródłowych.

Dane ulotne to wszelkie dane, które mogą zostać utracone po wyłączeniu systemu, takie jak zapis połączenia ze stroną internetową, który jest nadal obecny w pamięci RAM lub w schowku systemowym. Zbieranie tych danych musi odbywać się podczas pracy systemu.

Live-Data Forensics, to technika stosowana do zbierania danych, które są zmienne i mogą zostać utracone w przypadku utraty zasilania przez urządzenie.

Memory DUMP to procedura zapisywania w pliku, wszystkich danych znajdujących się w danym momencie w pamięci fizycznej komputera.

Podczas gromadzenia tego typu danych należy wziąć pod uwagę kolejność zmienności danych, dostosowując gromadzenie do kategorii danych, która jest najbardziej interesująca. Jeśli naszym celem jest zidentyfikowanie wysłania wiadomości e-mail na określony adres, nie miałoby większego sensu nadawanie priorytetu identyfikacji procesów zamiast zbierania haseł, lub poświadczeń dostępu, umożliwiających dostęp do adresu e-mail.

Bardzo ważne jest, aby zbieranie danych na żywo było odpowiednio udokumentowane, najlepiej poprzez stworzenie zespołu zbierającego składającego się z co najmniej dwóch osób, aby zapewnić, że procedury zbierania są wykonywane przez jedną osobę, podczas gdy druga dokumentuje zastosowany proces zbierania.

 

Ważne jest również zagwarantowanie minimalnej zmiany w analizowanym systemie, a jeśli trzeba dokonać jakiejkolwiek zmiany, należy ją zarejestrować w raporcie dla przyszłej pamięci.

Zalecenia dotyczące stosowania skryptów:

·       Użycie zmiennych środowiskowych
(np.: cmd: %COMPUTERNAME% / PS: $env:Computername)

·       Uruchomienie w trybie administratora

 

4.1.1.  Rodzime narzędzia systemowe

Biorąc pod uwagę minimalny ślad cyfrowy na urządzeniu, powinniśmy w miarę możliwości wykorzystywać narzędzia kryminalistyczne do zbierania przydatnych informacji, które pozwolą na bardziej efektywną analizę. Przykładem tego są informacje związane z szyfrowaniem całego dysku. System operacyjny MS Windows umożliwia jednak wykonywanie poleceń i skryptów za pomocą natywnych narzędzi, będąc doskonałą możliwością pozyskania niezbędnych informacji przy minimalnym śladzie cyfrowym.

4.1.2.  Narzędzia zewnętrzne

W przypadku korzystania z narzędzi zewnętrznych należy zadbać o dokładne przetestowanie każdego z nich, aby wiedzieć, co dokładnie robią w systemie. W przypadku korzystania z narzędzi zewnętrznych należy odnotować datę/godzinę ich użycia, a także opisać zamiar ich użycia.


4.1.3.  Data, czas i inne informacje o systemie

Ten element powinien być zbierany jako pierwszy podczas prowadzenia badania. Data systemowa umożliwia kontekstualizację zebranych później informacji oraz pozwala badaczowi na zbudowanie osi czasu zdarzeń, które miały miejsce nie tylko w analizowanym systemie, ale poprzez korelację pomiędzy informacjami z innych systemów. Kolejnym ważnym elementem danych jest czas, jaki upłynął od ostatniego uruchomienia systemu (uptime).

Niektóre narzędzia mogą pomóc badaczom w tych zadaniach, np. MiTeC - System Information X[1] i WinAudit[2] .

Zbieranie daty/czasu serwisowanego systemu (Rysunek 32).


Rysunek 32 - Uzyskiwanie daty i czasu systemu.

Zbieranie daty/czasu ostatniego uruchomienia systemu (Rysunek 33).


Rysunek 33 - Uzyskiwanie daty i godziny ostatniego uruchomienia systemu

Polecenia przydatne do uzyskania danych z systemu:

·       Wersja dla systemu Windows: ver

·       Zmienne środowiskowe: set

·       Informacje o systemie: systeminfo /fo list >> C:™mpinfo.txt

·       Sprawdź rejestr: zapytanie reg "HKLM Microsoft NT CurrentVersion" /v ProductName

·       Konsultacja z WMI: wmic os get name, version

·       Uruchamianie i zamykanie systemu: TurnedOnTimesView.exe (Fonte: Nirsoft.net)

Polecenia przydatne do uzyskania danych o użytkownikach systemu

·       Użytkownicy:

o   Net User [username]

o   Userprofilesview.exe /shtml "f:™profiles.html" /sort "User Name" (Źródło: Nirsoft.net)

·       Zalogowani użytkownicy:

o   PSLoggedOn.exe (Źródło: SysInternals)

o   LogonSessions.exe (Źródło: SysInternals)

4.1.4.  Procesy i zastosowania

Kluczowe jest wyliczenie procesów działających w potencjalnie zagrożonym systemie. Proces to część lub instancja aplikacji, która jest uruchomiona. Przeglądanie uruchomionych procesów w Menedżerze zadań daje pewne informacje, jednak można uzyskać o wiele więcej informacji, niż można tam zobaczyć.

Niektóre z rodzajów informacji o uruchomionych procesach, które można uzyskać:

·       Absolutna ścieżka do pliku wykonywalnego

·       Polecenie użyte do uruchomienia procesu

·       Czas trwania procesu

·       Jaki użytkownik rozpoczął proces i jaki ma poziom uprawnień w systemie

·       Moduły, które proces załadował

·       Zawartość pamięci przydzielonej procesowi

Przykłady programów i poleceń do pozyskiwania informacji o procesach działających w systemie:

·       Psinfo.exe -h -s -d /accepteula (Źródło: SysInternals)

·       PsList.exe (Źródło: sysinternals)

·       CurrProcess.exe (Źródło: Nirsoft.net)

·       tasklist /v

·       Wmic process get name, processid, priority, threadcount, privatepagecount

Przykłady programów i poleceń do pozyskiwania informacji o usługach, zaplanowanych zadaniach i zdarzeniach systemowych:

·       [Services] PsService.exe (SysInternals)

·       net start [Services]

·       [zaplanowane zadania] schtasks

·       [zdarzenia] PsLogList.exe (SysInternals)

·       [events] EventLogSourcesView.exe (Nirsoft)

·       [wydarzenia] wevtutil

 

4.1.5.  Pamięć

Schowek to obszar w pamięci, w którym dane mogą być przechowywane do przyszłego użytku. Większość aplikacji systemu Windows udostępnia tę funkcję poprzez menu Edycja i opcje Kopiuj, Wklej lub Wytnij. Funkcja ta jest przydatna do przenoszenia danych między aplikacjami lub dokumentami. Często dane pozostają w Schowku przez wiele dni, a użytkownik nie zdaje sobie z tego sprawy.

Do zbierania danych zapisanych w tym obszarze pamięci można wykorzystać następującą aplikację InsideClipboard.exe (Nirsoft.net).

Analitycy złośliwego oprogramowania szukają w pamięci, gdy mają do czynienia z obfuskowanym złośliwym oprogramowaniem, ponieważ gdy jest ono wykonywane, jest rozszyfrowywane w tej samej pamięci. Ponadto Rootkity ukrywają procesy, pliki, klucze rejestru, a nawet połączenia sieciowe. Możliwe jest sprawdzenie, co jest ukryte przed wzrokiem użytkownika, poprzez analizę pamięci RAM. Dane te są bardzo przydatne do kontekstualizacji zidentyfikowanych danych w przyszłych analizach.

4.1.6.  Pozyskiwanie pamięci

Proces Memory Dump (Rysunek 34) jest również szeroko stosowany do diagnozowania błędów w programach, ponieważ zrzuty te są zwykle tworzone, gdy wystąpi błąd i programy nieoczekiwanie przestają działać.

Te zrzuty pamięci wykonywane są w formacie binarnym, ósemkowym lub szesnastkowym. Dochodzenie można przeprowadzić za pomocą programów, takich jak:

·       DumpIT (moonsols)

·       AccessData FTK Imager

·       Belkasoft Live RAM Capturer

 

Rysunek 34 - Przykład działania DumpIT

Istnieją inne pliki[3] , do obsługi pamięci głównej, które muszą być gromadzone, takie jak pagefile.sys, używane przez Windows jako "pamięć wirtualna". Zawsze, gdy system potrzebuje użyć więcej pamięci niż jest dostępne w pamięci RAM. Albo hiberfil.sys służy do przechowywania danych z pamięci, gdy komputer przechodzi w stan hibernacji.

Do zbierania pamięci w środowisku linuksowym można wykorzystać programy dcfldd lub insmod.

·       dcfldd if=/dev/fmem of=memory.dump

·       insmod lime-XX.ko "path="memory.dump" format=raw"

4.1.7.  Informacje o sieci

Zbieranie zmiennych informacji o stanie sieci komputera: aktywne połączenia, otwarte porty, informacje i konfiguracja routingu, cache, ARP....

Natychmiast po zgłoszeniu incydentu osoba prowadząca badanie musi zebrać informacje o stanie połączeń sieciowych z systemem dotkniętym incydentem.

Te połączenia mogą wygasnąć, a informacje mogą zniknąć z czasem. Spojrzenie na te dane może pomóc w określeniu, czy atakujący jest nadal zalogowany do systemu, czy istnieją połączenia związane ze złośliwym oprogramowaniem, czy istnieje proces próbujący znaleźć inne maszyny w sieci w celu propagacji tego złośliwego oprogramowania lub wysłania informacji z dziennika do złośliwego serwera.

Zbieranie tych informacji może dostarczyć ważnych wskazówek i dodać kontekst do innych zebranych informacji.

Przykłady poleceń do zbierania informacji o sieci:

·       Informacje o karcie sieciowej: ipconfig /all

·       DNS cache: ipconfig /displaydns

·       Aktywne połączenia sieciowe: Netstat -a

·       ARP cache: Arp -a

·       Netsh int ipv6 show neigh

·       Wydarzenia wifi: Netsh wlan show all

·       Sieci bezprzewodowe: WifiInfoView.exe (Źródło: Nirsoft.net)

·       Tablica routingu: Wydruk trasy.

·       Połączenia w pamięci podręcznej: Netstat -c

·       Lista sesji Cache: Netstat -s

·       Rachunki netto

·       Udostępnianie zasobów: Udział netto

·       Zapytaj serwer o DNS: Nslookup -d

·       Lista aktualnych połączeń: Rasdial

·       Lista profili: Netsh wlan show profiles