Komputerowy łańcuch zdarzeń

Metody informatyki śledczej można wykorzystać do analizy zainfekowanych komputerów w firmie.

Głównym zadaniem informatyki śledczej jest zabezpieczanie śladów przestępstw, w których narzędziem był komputer. Organy ścigania korzystają z wiedzy specjalistów i zabezpieczają cyfrowe ślady na komputerach, stanowiących dowód w sprawie sądowej. Jeszcze kilka lat temu w ten sposób analizowano niemal wyłącznie działania poszczególnych osób. Obecnie coraz więcej uwagi poświęca się czynnościom realizowanym za pomocą złośliwego oprogramowania. Dochodzenie zaczyna się od zainfekowanego komputera, aby ustalić, jak do jego pamięci trafiło złośliwe oprogramowanie, jakie realizowało i - jeśli tylko da się to określić - komu służyło. Technikę zapożyczoną z laboratoriów śledczych można wykorzystać przy analizie infekcji systemów.

Przygotowanie dysku do analizy

Praca specjalistów zaczyna się od pozyskania informacji z podejrzanego komputera. Jeśli jest to możliwe, wykonuje się zrzut pamięci operacyjnej, w każdym przypadku jednak tworzy się obraz dysku, zabezpieczony sumą kryptograficzną (na przykład SHA-256). Do sporządzania kopii dysku używa się urządzeń, które sprzętowo uniemożliwiają przeprowadzenie operacji zapisu na dysku (tak zwany write blocker), dzięki czemu badacze mają pewność, że nie naruszą oryginalnego obrazu pamięci masowej komputera.

Po sporządzeniu takiego obrazu można pracować na nim tak samo jak na dysku mechanicznym. Jeśli badany komputer nie musi być dowodem, można uprościć proces, podłączając dysk do drugiego komputera z uruchomioną dystrybucją Linuksa przeznaczoną do celów informatyki śledczej (np. BackTrack) lub z wbudowanymi narzędziami montowania zasobów (System Rescue CD). Mimo braku sprzętowej blokady zapisu, wystarczy skopiować obraz dysku bez jego montowania. Jeśli dystrybucja nie montuje dysków lokalnych automatycznie (wyżej wymienione tego nie robią), to można posłużyć się narzędziami, takimi jak partimage czy dd, by uzyskać wierną kopię dysku bez wprowadzania na nim zmian. Mając obraz, można przystąpić do analizy.

Co to za dziwny program?

Znaczącą częścią przychodów cyberprzestępców jest od pewnego czasu sprzedaż fałszywych programów antywirusowych. Po zainfekowaniu komputera instalowane są w nim programy, które wyświetlają informacje o rzekomej infekcji różnymi typami wirusów. Aby "usunąć" te wirusy, należy kupić pełną wersję programu - te pieniądze stanowią łup przestępców. Przykładowa analiza obejmuje stwierdzenie, że dana aplikacja wykonuje takie akcje, odtworzenie w czasie akcji zrealizowanych, by zainstalować wirusa, a także wykrycie eksploitów wykorzystanych do przejęcia kontroli nad komputerem.

Podstawowym narzędziem wykorzystywanym do analizy programów jest deasembler, ale bardzo pomocne bywa także proste przeszukiwanie zawartości plików wykonywalnych pod kątem łańcuchów tekstowych (przydają się do tego celu komendy findstr, strings lub grep). Twórcy fałszywych antywirusów kodują zapisane w swoich dziełach łańcuchy tekstu, ale czasami spore fragmenty pozostają niezaszyfrowane, dlatego też prosta analiza może przynieść oczekiwane wyniki. Przyjrzyjmy się konkretnemu przypadkowi analizy inflacji.

W badanym środowisku zamontowano obraz dyskowy, by znaleźć poszukiwany plik - był nim defender.exe. Po deasemblacji okazało się, że wszystkie informacje o rzekomym zarażeniu komputera są zapisane w aplikacji defender, włącznie z nazwami kilku wybranych wirusów. Ponieważ aplikacja nie miała odwołań do żadnego API związanego z wykrywaniem wirusów, oznacza to, że jedynym działaniem defendera jest wyświetlanie groźnie brzmiących komunikatów. Sama aplikacja została napisania w taki sposób, by utrudnić deasemblację, więc wymagała dodatkowej pracy. Następnym krokiem było poszukiwanie źródła infekcji, które doprowadziło do pobrania i instalacji defendera na dysku lokalnym.

Drive-by download w praktyce

Proces zarażania komputera rzadko odbywa się w jednym prostym kroku, w którym gotowa aplikacja zostaje pobrana, zapisana i uruchomiona. Zazwyczaj pobierane jest jedno małe narzędzie, które charakteryzuje się dużą zmiennością kodu. To ono pobiera z różnych serwerów poszczególne fragmenty i składa z nich finalny plik. Ten wykonywalny plik jest następnie uruchamiany.

Analizowany proces zarażenia komputera również miał cechy drive-by (jeden komponent złośliwego oprogramowania instalował automatycznie następne), dlatego należało prześledzić wszystkie jego etapy. Pomocnym narzędziem jest analiza czasowa, która umożliwia ustalenie zależności między poszczególnymi zmienionymi plikami na dysku. Do tego celu można wykorzystać znaczniki czasu obecne w systemie NTFS oraz mechanizm wstępnego doczytywania pliku (prefetch).

Znaczniki czasu oraz katalog Prefetch

Znaczniki czasu NTFS określają czas utworzenia, modyfikacji oraz ostatniego dostępu do pliku i katalogu, szczególnie przydatny może być ten ostatni znacznik (LastAccess). Niestety, aktualizacja LastAccess jest domyślnie wyłączona w Windows Vista oraz Windows 7, zatem nie będzie można polegać na wartości tego znacznika przy określaniu, które pliki brały udział w zmianie stanu systemu. Szczegóły znaczników można znaleźć w dokumencie KB 299648, są one bardzo pomocne przy określaniu stanu kopiowanych plików.

O wiele ciekawsze informacje można uzyskać, analizując w systemach Windows XP, Vista i 7 folder Prefetch, który zawiera informacje o plikach wykonywalnych, zapisane w postaci specjalnych skrótów i danych (pliki .pf, maksymalnie 128). Informacje umożliwiają radykalne przyspieszenie uruchamiania aplikacji i są odświeżane na bieżąco. Domyślnie usługa Prefetcher odpowiedzialna za obsługę tej technologii jest włączona zarówno dla plików systemu operacyjnego, jak i aplikacji, dzięki temu zawiera aktualne informacje o uruchamianych programach. Użyteczne informacje zawierają datę ostatniego uruchomienia, liczbę uruchomień, pełną ścieżkę dostępu do pliku, ścieżki ładowalnych bibliotek DLL. Aby ułatwić analizę foldera Prefetch, można skorzystać z narzędzia Prefetch Parser, które generuje łatwiejsze w zrozumieniu listy uruchamianego oprogramowania. Właśnie wpisy z takiej listy mogą być cenną wskazówką w poszukiwaniu kolejnych składników złośliwego oprogramowania. Oczywiście, omawiany defender.exe znajduje się na tej liście.

Informacja na osi czasu

Kolejne wskazówki przynosi szukanie plików zmodyfikowanych bezpośrednio przed utworzeniem wspomnianego pliku wykonywalnego zawierającego wirusa. W omawianym przypadku udało się odtworzyć cały łańcuch (cztery pliki) oraz wskazać aplikację, która zainicjowała ten proces. Plik ten miał nazwę cyfrową 0.226....exe, co sugeruje użycie liczby losowej z funkcji random() do utworzenia nazwy pliku. Dokładna analiza wskazała, że jest to downloader, który pobiera kolejne składniki złośliwego oprogramowania, a wszystkie łańcuchy tekstu są w nim ukryte. Aby określić, skąd wziął się ten plik, należało analizować oś czasu wstecz.

Cache przeglądarki wskaże źródło problemu

Przeważająca większość ataków odbywa się przy wykorzystaniu luki w bezpieczeństwie wtyczek, takich jak Flash i Java. Aby znaleźć lukę, należy szukać obiektu, który został pobrany przez wtyczkę i utworzył obiekt na dysku w określonym czasie. Poszukiwania wskazały na obecność w pamięci podręcznej Java (Java cache) apletu, który zawierał klasę Java oraz plik, który miał tę samą zawartość, co 0.226. exe. Analiza klasy Java umożliwiła znalezienie adresu, z którego pobrano downloader. Mimo wszystko należało się zastanowić, dlaczego aplet Java mógł uruchomić pobrany obiekt. W normalnych warunkach niepodpisany aplet Java nie ma prawa wykonać polecenia Runtime.exec(), dzięki czemu mógłby przekazać sterowanie do innego pliku.

Aby znaleźć odpowiedź na to pytanie, należało analizować obiekty, które zostały pobrane przed pobraniem i uruchomieniem apletu Java. Odpowiedź udało się znaleźć w pliku html, który zawierał enkodowany JavaScript. Zazwyczaj taka treść jest napisana w sposób, który utrudnia analizę, ale po jej dokonaniu okazało się, że skrypt sprawdzał wersję Javy oraz wykorzystywał podatność CVE-2010-4452. Luka w bezpieczeństwie umożliwiała uruchomienie apletu pobranego z innej domeny na poziomie uprawnień domeny zaufanej, którą w tym przypadku był plik na dysku lokalnym. Wynikły stąd dwa ograniczenia: adres nie mógł zawierać kropek, a aplet z obcej domeny był niezaufany.

Ograniczenie związane z kropkami da się obejść, podając adres w postaci cyfrowej - po konwersji z postaci DNS na adres cyfrowy należy go zamienić na zestaw szesnastkowy, usunąć kropki i cały ciąg zamienić z powrotem na liczbę dziesiątkową. Aby obejść drugie z tych ograniczeń, zastosowano gotowy zestaw eksploitów (nazywany Incognito Exploit Kit), wykorzystujących trzy różne podatności. Mając takie informacje, należało znaleźć witrynę, na której znalazł się link do tych obiektów.

Po ponownym przejrzeniu pamięci podręcznej przeglądarki okazało się, że atak rozpoczął się od umieszczenia polecenia wyświetlenia ramki IFRAME z obcej witryny, zawierającej link do wspomnianego skryptu, który wywołuje zestaw eksploitów. Link umieszczono na stronie zawierającej nieaktualną instalację oprogramowania blogowego WordPress, umożliwiającą podmianę pliku i10n.js. Właśnie ten obiekt był odpowiedzialny za rozpoczęcie całego łańcucha infekcji.

Środki zaradcze

Z każdego ataku należy wyciągać wnioski i stosować je w praktyce w chronionej organizacji. Analiza opisanego przypadku podsuwa następujące środki zaradcze:

- Java jest dziś celem wielu ataków, zatem jeśli to jest tylko możliwe, należy ją odinstalować lub wyłączyć obsługę w przeglądarce. To samo dotyczy wtyczki Flash, ale jest ona niezbędna do wyświetlania treści na wielu stronach www. Zatem należy zapewnić filtrowanie obcych obiektów na filtrze treści.

- Ponieważ Adobe Reader to wyjątkowo skomplikowany program, który nadal zawiera błędy wykorzystywane przez przestępców, należy rozważyć użycie alternatywnych czytników PDF, takich jak SumatraPDF.

- Należy zablokować połączenia do darmowych dostawców DNS drugiego poziomu. Dobrym pomysłem jest zastosowanie listy dozwolonych domen oraz filtrowania treści.

- Niezbędne są tradycyjne środki zaradcze, w postaci możliwie szybkiego wdrażania aktualizacji oraz posiadania oprogramowania antywirusowego.

- Każde środowisko może być celem ataku, dlatego należy posiadać opracowaną procedurę odpowiedzi na zagrożenie i z każdego incydentu wyciągać wnioski na przyszłość.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200