Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

Szybka analiza malware

09 lutego 2015, 12:07 | Teksty | komentarzy 16

Czasem w otrzymanym mailu coś przykuje naszą uwagę i spowoduje zapalenie się czerwonej lampki. Może to być adres nadawcy, dziwny załącznik lub link w treści wiadomości. Wtedy będziemy chcieli szybko i skutecznie dowiedzieć się z czym mamy do czynienia – zwłaszcza jeśli podejrzewamy, że ktoś chciałby uzyskać dostęp do naszych danych poufnych, lub do danych przedsiębiorstwa, dla którego pracujemy.

W poniższym artykule pokażę, jak w prosty sposób przeprowadzić analizę działania i śladów pozostawionych przez złośliwe oprogramowanie. Będziemy pracować na rzeczywistym pliku, który spowodował ogromne straty w pewnym kraju za oceanem.

Wektor ataku

Na skrzynkę jednego z wysoko postawionych pracowników firmy przychodzi wiadomość e-mail. Jest napisana płynnie w języku odbiorcy, nie zawiera rażących błędów ortograficznych, podejrzanych próśb czy załączników. Udaje ona jednak potwierdzenie z banku i zachęca do otwarcia odnośnika znajdującego się na końcu.

Treść maila

Treść maila

Prezentowany przeze mnie przykład odnosi się do jednej z szeroko zakrojonych, profesjonalnych kampanii malware’owych. Jej celem jest infekcja dużej ilości odbiorców, a kliknięcie linku w wiadomości rozpoczyna pobieranie pliku zamieszczonego na jednej z przygotowanych wcześniej maszyn. Może to być zaatakowany serwer web, który serwuje plik lub wykorzystuje błąd w przeglądarce poprzez Exploit Kit.

W naszym przypadku załącznik pobrany z linku ma formę archiwum ZIP. W jego wnętrzu znajduje się plik przypominający PDF. Większość użytkowników da się zwieść ikonce nie zwracając uwagi na podwójne rozszerzenie pliku i uruchomi go.

Ikona pliku

Ikona pliku

Finalnie, zainfekowana stacja przestaje być wyłącznie pod naszą kontrolą. Atakujący uzyskuje dostęp do naszych plików, wpisywanych haseł, sieci wewnętrznej oraz może modyfikować działanie innych programów (np. zmieniać ruch w szyfrowanym połączeniu z bankiem i wstawiać w nim własny kod HTML). Program antywirusowy nie miał szansy wykryć zaciemnionego, nieznanego mu wcześniej zagrożenia.

Analiza pliku

Analiza statyczna

Typ pliku

Na samym początku musimy się dowiedzieć, z jakim rodzajem pliku mam do czynienia. Samo rozszerzenie może być mylące, dlatego skorzystamy z linuksowego narzędzia file . Jest ono wyposażone w bazę sygnatur, po których rozpoznaje typ pliku:

$ file INV\ 53.PDF.exe
INV 53.PDF.exe: PE32 executable (GUI) Intel 80386, for MS Windows

Jest to plik wykonywalny PE systemu Windows (popularny EXE). Otworzymy go zatem za pomocą dowolnego hex-edytora i upewnimy się dodatkowo, że jesteśmy w stanie zlokalizować w nim zaznaczone na poniższym rysunku sekcje (początek pliku). Wykorzystujemy do tego graficzny edytor bless, który wyświetla binarną zawartość pliku wraz z jego tekstową reprezentacją ASCII.

Edytor bless

Edytor bless

Ciągi znaków

Przeglądanie hex-edytorem długich plików w poszukiwaniu czytelnego tekstu, wymieszanego z binarnym kodem jest bardzo czasochłonne, dlatego posłużymy się innym narzędziem – strings. Przeszukuje ono plik w poszukiwaniu sekwencji co najmniej 4 znaków ASCII lub UNICODE zakończonych terminatorem. Po takim zabiegu, jeżeli plik nie jest zaszyfrowany/spakowany powinniśmy móc wydedukować, co program może robić. Dodatkowo, jeżeli wewnątrz zawiera frazy wskazujące ściśle na naszą organizację (np. nazwy wewnętrznych zasobów, nazwa firmy, dane pracowników/klientów), powinniśmy się dwa razy zastanowić, nim udostępnimy ten plik w Internecie.

$ strings -a INV\ 53.PDF.exe | less
!This program cannot be run in DOS mode.
.text
`.rsrc
@.rdata
@.data
.reloc
upRro
...
WaitForDebugEvent
PeekConsoleInputW
WinExec
UrlEscapeA
CreateDirectoryW
QueryDosDeviceA
CreateFontPackage
ReadConsoleOutputA
GetProcAddress_
PathStripToRootW
SHDeleteKeyW
GetFileTitleA
PathGetDriveNumberA
OpenFile_
DeleteTimerQueue
SetLastConsoleEventActive
_lopen_
PathIsUNCServerW
MergeFontPackage
GetTempFileNameW
FreeUserPhysicalPages
GetSaveFileNameA
...
C:\zdbfkyp
c:\nwebCOps\akqk\yhoppHjZG\Qxof
c:\bFzflj\nttBL\EyVrGApgb\DogikYid
C:\poxmow\dDta\BJpwx\dyHYtcu

W pliku oprócz standardowych ciągów znaków oraz masy śmieci (wynikającej z błędnej interpretacji kodu binarnego jako tekst, do której niestety trzeba się przyzwyczaić) natrafiamy na coś, co wygląda jak nazwy funkcji Windows API (tablica importów). Do jej analizy nieoceniona okaże się wyszukiwarka dokumentacji Microsoft.

Ostatnie cztery wyglądają jak losowe lub zakodowane nazwy plików. Niemniej jednak, na tej podstawie trudno stwierdzić czy, i do czego używanych. W tej wersji wyglądają raczej na śmieci, dodane w celu utrudnienia analizy.

Suma MD5

W ostatnim kroku analizy statycznej (bez uruchamiania pliku) wygenerujemy jego hash MD5. Używając takiego skrótu w wyszukiwarce (np. Google oraz w serwisie VirusTotal) łatwo możemy sprawdzić, czy ktoś wcześniej nie analizował naszego pliku. Hash’e MD5 biorą pod uwagę wyłącznie zawartość pliku, a przy jego nawet drobnych zmianach znacząco się różnią. Daje nam to proste narzędzie do “nazwania” pliku oraz mamy pewność, że próbka z której ktoś wygenerował hash posiada tą samą zawartość.

$ md5sum INV\ 53.PDF.exe
0aecb730b8c1a06534cf393f5c0f01fd  INV 53.PDF.exe

W wynikach VirusTotal widzimy, że plik jest już dość stary, a większość antywirusów jest już w stanie go rozpoznać (47 / 54).

Wyniki VirusTotal

Wyniki VirusTotal

Posiadamy już pewne pojęcie z jakim plikiem mamy do czynienia. By nie uruchamiać aplikacji, w kolejnym kroku moglibyśmy posłużyć się deasemblerem, takim jak np. IDA Pro. Wymaga to jednak umiejętności Reverse Engineering’u, znajomości IDA Pro oraz jest czasochłonne. Postaramy się zatem uruchomić program w kontrolowanym przez nas środowisku.

Analiza behawioralna (dynamiczna)

Na razie wiemy z jakim plikiem mamy do czynienia oraz posiadamy kilka poszlak. Nie wiemy natomiast co właściwie robi analizowany plik ani w jaki sposób wykorzystuje Windows API oraz ścieżki poznane wcześniej. Uruchomimy zatem próbkę w symulowanym, izolowanym środowisku. Następnie zbierzemy informacje o zachowaniu aplikacji z narzędzi pomiarowych i na tej podstawie postaramy się wyciągnąć wnioski. Interesować nas będą przede wszystkim tworzone i usuwane pliki, uruchamiane procesy, wykonywane połączenia sieciowe.

Sandbox

Jako jeden z pierwszych kroków, powinniśmy rozważyć uruchomienie aplikacji w dostarczanym bezpłatnie on-line środowisku sandbox. Są to środowiska szybkie, nie wymagające wcześniejszego przygotowania, mogące wspierać wiele komercyjnych silników antywirusowych oraz dające gotowy wynik w postaci raportów. Przed przesłaniem pliku powinniśmy się upewnić, że nie zawiera on informacji, których nie chcielibyśmy ujawnić (np. dane klientów/pracowników, jak również sama informacja, że dany plik jest poddawany głębszej analizie). Ponieważ raporty przeważnie są dostępne publicznie, możemy również dowiedzieć się, czy ktoś wcześniej nie dostarczył danego pliku do analizy.

Przedstawione poniżej trzy środowiska zostały wybrane z uwagi na przejrzystość prezentowanych raportów, wzajemne uzupełnianie się oraz swoją wysoką skuteczność. Uruchomienie w więcej niż jednym środowisku pozwala nam skorzystać z większej ilości narzędzi do analizy, typów i konfiguracji systemów. Istnieje wiele technik, pozwalających malware na wykrycie i uniknięcie analizy w takim środowisku. Uruchomienie pliku w wielu różnych sandboksach daje dużą szansę na uniknięcie tak zastawionych pułapek.

VirusTotal

VirusTotal jest sandboksem połączonym z wieloma silnikami antywirusowymi. Wykrycie pliku jako zainfekowanego jest bardzo istotną oznaką, że mamy do czynienia z malware’m. My skupimy się jednak na opisie, który znajduje się w zakładce Informacje o zachowaniu. Z powyższych informacji wyciągamy wnioski:

Cecha Znaczenie / Analiza
Written files
C:\Documents and Settings\ \Application Data\Microsoft\ ahhupdate.exe (successful) nazwa przypominająca narzędzie systemowe albo komponent innej aplikacji, zapisane w ścieżce wskazującej na inny program – prawdopodobnie fragment malware uruchamiany przy starcie systemu
C:\Documents and Settings\ \Application Data\ 2298954.bat (successful) losowa nazwa, pliki skryptowe (np. .BAT) często używane do sprzątania, jeden z najprostszych sposobów żeby plik sam się usunął
Created processes
C:\WINDOWS\system32\cmd.exe” /c „C:\DOCUME~1\ ~1\APPLIC~1\2298954.bat”” (successful)> uruchomienie stworzonego przez siebie skryptu
Deleted files
C:\Documents and Settings\ \Application Data\Microsoft\ ahhupdate.exe:Zone.Identifier (failed) wartorść po „:” oznacza, że w pliku najprawdopodobniej próbowano użyć ADS – Alternate Data Stream, jedna z technik omijania AV w dodatkowym strumieniu, rzadko wykorzystywane przez normalne programy
C:\e0181b6ef6(…)2c0d0e93 (successful) to zmieniona przez VirusTotal nazwa pliku poddawanego analizie
Code injections in the following processes
cmd.exe (successful) wstrzyknięcie kodu do działającej aplikacji (o ile nie wystarczyło uruchomienie skryptu), wyraźny sygnał manipulacji
HTTP requests
URL: http://192.154.110.228:8080/ 6c78a9c3/41aff6ea/ wysłanie żądania HTTP (takiego jak przeglądarki WWW), w celu pobrania dodatkowych komponentów, ustawień konfiguracyjnych lub wysłanie informacji o infekcji
TYPE: POST może wskazywać na to, że jakieś informacje zostały wysłane na serwer
USER AGENT: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) nazwa przeglądarki wybrana jako jedna z typowych, w celu uniknięcia wykrycia. Czasami można na tak drobnych szczegółach zbudować dobre sygnatury IDS/IPS
TCP connections
192.154.110.228:8080 w połączenie na ten adres IP w USA (serwery dedykowane, hosting)

 

Znajdujemy informację o adresie IP, do którego próbowano się połączyć. Cennych danych na jego temat tego adresu można szukać np. na Robtex (nawigacja za pomocą belki u góry).

Informacje o adresie IP

Informacje o adresie IP

Cuckoo (malwr.com)

W zależności od preferencji możemy wykorzystać darmowy serwis on-line malwr.com lub zainstalować i skonfigurować go na własnej maszynie (używane oprogramowanie, własny adres IP, itp.). Niezależnie od wybranej metody, wyniki otrzymujemy w formie raportu, którego przejrzenie dostarcza kolejnych informacji.

Poza śladami które udało nam się uzyskać poprzednio, odkrywamy między innymi utworzone klucze rejestru auto startu przez proces Explorer.EXE (nazwa do pliku malware jest różna od tej, z poprzedniego serwisu i najprawdopodobniej tworzona pseudo-losowo).

Klucz rejestru autostartu

Klucz rejestru autostartu

Z informacji dostarczonych przez Cuckoo dowiadujemy się również o wielu interesujących, niskopoziomowych zdarzeniach:

  • Explorer.EXE: zapisuje do pamięci pliki EXE (wskazują na to np. sygnatura „MZ” na początku ciągu „This program cannot be run in DOS mode”)
  • Explorer.EXE: szuka biblioteki odpowiedzialnej za szyfrowanie asymetryczne RSA
  • cmd.exe: odkrywamy zapisywany i uruchamiany plik .BAT (poniżej)
  • cmd.exe: utworzenie pliku //PIPE\lsarpc//
  • cmd.exe: usunięcie początkowego pliku .EXE

Mamy również możliwość przyjrzenia się plikowi BAT, tworzonemu przez aplikację. Służy on do automatycznego usunięcia pliku ze złośliwym oprogramowaniem po udanej infekcji:

:l 
if not exist "C:\DOCUME~1\User\LOCALS~1\Temp\2014_0~1.EXE" goto e 
del /Q /F "C:\DOCUME~1\User\LOCALS~1\Temp\2014_0~1.EXE" 
goto l 
:e del /Q /F "C:\DOCUME~1\User\APPLIC~1\5331169.bat"

 Anubis (anubis.iseclab.org)

Raport z trzeciego środowiska dostarcza kolejnych szczegółów w skondensowanej formie. Ponieważ w infekcji bierze udział wiele plików, najłatwiej poruszać się po raporcie za pomocą załączonego u góry spisu treści. Poznajemy między innymi:

  • nową nazwę pod którą kopiowany jest plik – “tsoedit32.exe”
  • dowiadujemy się o wielu modyfikowanych kluczach rejestru
  • sposobie komunikacji z Internetem za pomocą urządzenia \Device\Afd\Endpoint
  • poznajemy kolejną domenę z którą próbowano się komunikować: 80.91.191.158:8080
  • proces Explorer.EXE zaczyna monitorować kursor myszy
Raport z Anubisa

Raport z Anubisa

Poniżej zebrana została lista wszystkich kluczowych cech, które udało nam się uzyskać w trakcie dotychczasowej analizy

Proces Typ Cecha
Explorer.EXE Próba połączenia 103.28.148.51:8080(Indonezja) (
POST /99aa1cd1/ec8a4b32/)
192.154.110.228:8080 (USA)
80.91.191.158:8080 (Ukraina)
Explorer.EXE Rejestr HKU\{USER_SID}\Software\Microsoft\Office\Common\
{RANDOM_1}\{RANDOM_1}RS
HKU\{USER_SID}\Software\Microsoft\Office\Common\
{RANDOM_1}\{RANDOM_1}SS
HKU\{USER_SID}\Software\Microsoft\Office\Common\
{RANDOM_1}\{RANDOM_1}PS
Explorer.EXE Rejestr HKLM\​SYSTEM\​CURRENTCONTROLSET\​
HARDWARE PROFILES\​CURRENT\​Software\​Microsoft\​
​windows\​CurrentVersion\​ Internet Settings (ProxyEnable=0)
INV 53.PDF.exe Alternate Data Stream C:\Documents and Settings\User\Application Data\
Microsoft\{RANDOM_NAME}.exe:Zone.Identifier
INV 53.PDF.exe Automatyczne usunięcie C:\Documents and Settings\Administrator\Application Data\
{RANDOM_NAME}.bat
Explorer.EXE Kopia malware C:\Documents and Settings\Administrator\Application Data\
Microsoft\tsoedit32.exe
cmd.exe Użycie kryptografii \Device\KsecDD
Explorer.EXE Anty-debugging HKLM\​SOFTWARE\​MICROSOFT\​TRACING\​NETSHELL
HKLM\​Software\​Microsoft\​Tracing\​RASAPI32
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Control\SafeBoot\Option
Explorer.EXE Autorun HKEY_CURRENT_USER\Software\Microsoft\Windows\​
CurrentVersion\Run
HKLM\​System\​CurrentControlSet\​Services\​​
WinSock2\​Parameters\​NameSpace_Catalog5
HKLM\​System\​CurrentControlSet\​Services\​​
WinSock2\​Parameters\​Protocol_Catalog9
Explorer.EXE Modyfikacja połączeń sieciowych \Device\Afd\Endpoint (AFD_BIND, AFD_CONNECT, AFD_SEND, AFD_RECV)
Wstrzyknięcie pamięci do procesu C:\WINDOWS\explorer.exe
C:\WINDOWS\system32\cmd.exe
Modyfikacja zabezpieczeń aplikacji HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\
Windows\ Safer\CodeIdentifiers\{ID}\{KLUCZ}
HKEY_USERS\{SID}\Software\Policies\Microsoft\Windows\ Safer\CodeIdentifiers\{ID}\{KLUCZ}
Explorer.EXE Monitoring klawiszy myszy VK_LBUTTON
Mutex {PROCESS_ID}M, {PROCESS_ID}I (580I, 580M, 470I, 470M …)
Komunikacja pomiędzy procesami \\.\PIPE\lsarpc

Maszyna wirtualna lub fizyczny system

Sandboxy pomimo wielu zalet, mają kilka ważnych wad. Są one stosunkowo łatwe do wykrycia, a jeżeli tak się stanie całkowicie tracą swoją przydatność. Czasami również nie są w stanie zapewnić oczekiwanego przez malware poziomu interakcji, jak np. uruchomienie konkretnej aplikacji, wejście na odpowiednią stronę czy choćby nietypowe uruchomienie pliku wykonywalnego.

Postaramy się wziąć sprawy we własne ręce. Uruchomimy złośliwe oprogramowanie w dedykowanym, izolowanym systemie w obecności narzędzi, które zapiszą informacje o jego zachowaniu. Posłużyć się możemy maszyną wirtualną lub dedykowanym do tego celu fizycznym systemem a wybór pomiędzy nimi zależy od dostępnych środków i własnych preferencji. Kluczowe cechy tych rozwiązań możemy znaleźć w tabelce poniżej:

Fizyczna Maszyna Maszyna wirtualna
  • Trudne do wykrycia przez malware
  • Łatwe do izolacji sieciowej (fizycznie)
  • Tanie (brak fizycznego sprzętu)
  • Łatwe w utrzymaniu (odtwarzanie systemu ze snapshot’u)
  • Wiele systemów operacyjnych/konfiguracji zależnie od VM
  • W przypadku błędu w oprogramowaniu – możliwa kompromitacja systemu gospodarza

W naszym wypadku zdecydowaliśmy się na maszynę wirtualną opartą o darmowe oprogramowanie VirtualBox. Jako system gościa wybraliśmy najbardziej aktualną (ale już nie wspieraną) wersję systemu Windows XP. Instalację dodatku do środowiska (VirtualBox AddOns) trzeba dokładnie przemyśleć, ponieważ w swojej podstawowej wersji jest bardzo często wykrywany przez malware. Następnie przed uruchomieniem złośliwego oprogramowania instalujemy wybrane narzędzia do analizy. Należy również pamiętać o odłączeniu maszyny od sieci – nie chcemy by infekcja wymknęła się nam spod kontroli, bo możemy w ten sposób zaszkodzić nie tylko sobie.

Snapshot

Jednym z najwygodniejszych narzędzi podczas uruchamiania złośliwych próbek jest wbudowana w większość narzędzi wirtualizacyjnych funkcja wykonania snapshotu. Po zainstalowaniu systemu, narzędzi i skonfigurowaniu przez nas wszystkiego, wybieramy tę funkcję i wszystko co do tej pory zrobiliśmy wewnątrz maszyny wirtualnej jest zapisywane i zamrażane na dysku (cały stan systemu operacyjnego, dysku oraz pamięci).

Później gdy uruchomimy cokolwiek (np. malware) i zostaną dokonane jakiekolwiek zmiany – funkcja snapshot’u pozwoli nam wrócić do poprzedniego stanu. Znacząco upraszcza i przyśpiesza to powrót do środowiska, które czeka na przeanalizowanie następnej próbki, a jej zachowanie nie będzie interferowało z poprzednikami. Rysunek poniżej pokazuje jak skorzystać z tej funkcji:

VirtualBox - snapshoty

VirtualBox – snapshoty

Narzędzia

Niezależnie od tego, czy wybraliśmy maszynę fizyczną czy wirtualną, instalujemy na niej narzędzia które pomogą nam monitorować uruchomiony malware. Interesują nas głównie cechy, które pozwolą nam na jego łatwe wykrycie. Wykorzystamy do tego celu tworzone, usuwane i modyfikowane pliki i katalogi, klucze rejestru, uruchamiane procesy oraz wszystkie oznaki komunikacji sieciowej.

Ponieważ w większości opisanych przypadków uruchamiamy złośliwe oprogramowanie na tej samej stacji co narzędzia analizujące, może się zdarzyć, że będą one wykrywane przez malware. Powinniśmy więc postarać się zamienić je na ich mniej znane odpowiedniki.

Poniżej znajduje się opis kilku preferowanych programów, które zakresem działania powinny się uzupełniać. Włączamy wszystkie na raz przed uruchomieniem złośliwego pliku i odczekujemy chwilę która powinna pozwolić mu na wykonanie złośliwych akcji. Następnie sprawdzamy wyniki działania narzędzi. Niektóre z nich ze względu na szeroki zakres użycia zasługiwałyby na osobny artykuł. Jednak do naszych zastosowań spokojnie wystarczą ich zaprezentowane możliwości.

Narzędzia do analizy zachowania malware'u

Narzędzia do analizy zachowania malware’u

RegShot

RegShot jest prostym narzędziem do badania zmian w rejestrze. Przed uruchomieniem próbki zapisujemy za pomocą przycisku 1st shot stan rejestru. Nie zamykamy programu i po uruchomieniu malware wybieramy przycisk 2nd shot. RegShot pobierze wtedy drugi raz aktualną zawartość rejestru i je porówna. Rozbieżności (czyli dodane, usunięte lub zmienione wartości/klucze) zapisze do pliku i wyświetli. W ten sposób szybko można się przekonać, co zmieniło się pomiędzy tymi wpisami.

Program jest bardzo prosty w użyciu. Może eksportować raporty w formacie tekstowym oraz HTML. Głównym minusem jego użycia jest natomiast brak informacji, która aplikacja dokonała zmian w rejestrze, przez co zawiera w wynikach wiele kluczy zmieniających się podczas normalnej pracy systemu. Generowany raport nie obejmie również wyników, które zostały zmienione po pierwszym zrzucie i przywrócone przed kolejnym.

Aplikacja RegShot

Aplikacja RegShot

ProcessExplorer (SysInternals)

Process Explorer jest znakomitym narzędziem z pakietu SysInternals. Jest to manager procesów, jednak w odróżnieniu od standardowego, w przypadku uruchomienia lub zamknięcia procesu, wyświetla przez jakiś czas tą informację w odpowiednim kolorze. Procesy prezentowane są w postaci drzewa, co ułatwia zorientowanie się w sytuacji. Pod prawym przyciskiem myszy zawiera bogate menu kontekstowe, można za jego pomocą sprawdzić z jakich bibliotek korzysta dana aplikacja czy wylistować ciągi znakowe (jak za pomocą strings). Ponadto umożliwia wyświetlenie strings’ów nie tylko ze statycznego pliku ale również z pamięci uruchomionego procesu. Porównanie tych list pozwala w szybki sposób znaleźć procesy, do pamięci których wstrzyknięto dodatkowy kod. W wielu przypadkach malware jest spakowany lub zaszyfrowany w celu uniknięcia analizy i zaraz po uruchomieniu jest rozpakowywany. Możliwość wykonania listy ciągów znakowych w pamięci procesu po tej operacji dostarcza ciągów znakowych w ich użytecznej postaci.

ProcessMonitor (SysInternals)

Process Monitor (również SysInternals) jest jednym z najbardziej zaawansowanych narzędzi przedstawianych tutaj. Pozwala on na monitorowanie niektórych akcji (dysk, rejestr, procesy, sieć) wykonywanych przez aplikacje działające w systemie (wszystkie, nie tylko tę przez nas wybraną).

Przed uruchomieniem złośliwego pliku definiujemy filtr widoku dla zdarzeń które mają być prezentowane. W trakcie działania program zbiera akcje wykonywane przez wszystkie aplikacje i prezentuje tylko wybrane za pomocą filtru. W naszym wypadku filtrujemy po nazwie uruchamianego pliku.

Process Monitor - definicja filtru

Process Monitor – definicja filtru

Następnie za pomocą przycisku START/STOP rozpoczynamy monitoring i uruchamiamy plik poddawany analizie. Po niedługim czasie zatrzymujemy tym samym przyciskiem dalsze zbieranie zdarzeń (ponieważ ich ilość po chwili zaczyna robić się problematyczna).

Czterema przyciskami na górze wybieramy interesujące nas kategorie zdarzeń (Registry, Filesystem, Network, Process). Lista poniżej zawiera wszystkie zarejestrowane zdarzenia z wybranych przez nas kategorii.

Process Monitor - obsługa programu

Process Monitor – obsługa programu

Trzeba być przygotowanym na to, że narzędzie generuje obszerne wyniki (związane z normalnym działaniem aplikacji, jak np. ładowanie bibliotek). Ich identyfikacja wymaga pewnej wprawy oraz wiedzy na temat domyślnie wykonywanych akcji. Gdy takie widzimy, warto za pomocą menu kontekstowego pod prawym przyciskiem myszy wybrać ukrycie nieinteresujących nas zdarzeń i przeglądać wyłącznie pozostałe.

Przy przeglądaniu zdarzeń szybko natrafiliśmy na informację, o uruchomieniu innego procesu – cmd.exe. Obok jego nazwy znajduje się jednocześnie identyfikator PID. Działanie wszystkich procesów jest zapisywane w Process Explorerze, przez co po dodaniu i tego procesu, nie potrzebujemy uruchamiać niczego ponownie. Taki filtr zmieniamy w tym samym miejscu co poprzednio i dodajemy w nim PID nowo otwartego procesu po to by uwzględnić go w wynikach.

Process Monitor - filtr po cmd.exe

Process Monitor – filtr po cmd.exe

Symulacja Internetu

Wielokrotnie szkodliwy kawałek kodu będzie próbował skomunikować się ze światem zewnętrznym. Znacząco ułatwi nam to identyfikację zarażonych maszyn w sieci lokalnej, ale w kontrolowanym środowisku – nie chcemy narażać innych maszyn na niebezpieczeństwo. Dlatego jeżeli już musimy, powinniśmy bardzo ostrożnie podchodzić do wystawienia naszej puszki pandory do Internetu. Możemy natomiast w prosty sposób przygotować środowisko, które ułatwi nam przekonanie malware’u, iż komunikuje się z maszynami poza siecią lokalną.

Posłużymy się do tego celu drugą maszyną wirtualną połączoną wewnętrzną siecią oprogramowania wirtualizacyjnego. Zainstalujemy na niej DNSChef oraz INetSim i ustawimy hosta jako domyślną bramę. W takim ustawieniu, wszystkie próby komunikacji malware ze światem zewnętrznym będą musiały przejść przez drugą maszynę, której ustawienie będzie determinowało czy pierwsza dostanie spreparowane odpowiedzi, czy może zdecydujemy się przekierować niektóre usługi do prawdziwych maszyn poza naszą kontrolą (MITM). W obu przypadkach będziemy logowali całą komunikację w celu późniejszej analizy.

Schemat takiego prostego połączenia (wraz z markowanymi usługami) znajduje się na poniższym diagramie:

Schemat izolowanego środowiska

Schemat izolowanego środowiska

DNSChef

DNSChef to konfigurowalne PROXY DNS, przygotowane z myślą zarówno o pentestach jak i analizie malware. Pozwala na wysyłanie zdefiniowanych, fałszywych odpowiedzi DNS dla wszystkich lub tylko wybranych zapytań. Dodatkowo wypisuje wszystkie otrzymane zapytania wraz z odpowiedziami dla nich, co znacząco ułatwia analizę.

W naszym przypadku ustawimy go tak, aby wszystkie nazwy poza *.google.com wskazywały na stację, która symuluje usługi sieciowe. Po takim zabiegu, malware próbujący połączyć się z domeną np. sekurak.pl finalnie połączy się z wystawioną przez nas usługą. Przykład poniżej:

# ./dnschef.py --interface 192.168.0.1 --fakeip 192.168.0.1 --fakeipv6 192.168.0.1 
               --fakemail 192.168.0.1  --fakealias 192.168.0.1 --fakens 192.168.0.1 
               --truedomains *.google.com

          _                _          __
         | | version 0.2  | |        / _|
       __| |_ __  ___  ___| |__   ___| |_
      / _` | '_ \/ __|/ __| '_ \ / _ \  _|
     | (_| | | | \__ \ (__| | | |  __/ |
      \__,_|_| |_|___/\___|_| |_|\___|_|
                   iphelix@thesprawl.org

[*] DNSChef started on interface: 192.168.0.1
[*] Using the following nameservers: 8.8.8.8
[*] Cooking A replies to point to 192.168.0.1 not matching: *.google.com
[*] Cooking AAAA replies to point to 192.168.0.1 not matching: *.google.com
[*] Cooking MX replies to point to 192.168.0.1 not matching: *.google.com
[*] Cooking CNAME replies to point to 192.168.0.1 not matching: *.google.com
[*] Cooking NS replies to point to 192.168.0.1 not matching: *.google.com

[05:02:52] 192.168.0.2: proxying the response of type 'A' for www.google.com
[05:04:14] 192.168.0.2: cooking the response of type 'A' for sekurak.pl to 192.168.0.1

INetSim

Wykorzystamy również INetSim który jest symulatorem wielu różnych usług sieciowych. Przy próbie połączenia na daną usługę odpowiada zdefiniowanym banerem lub np. w przypadku protokołu HTTP/S pozwala na dociągnięcie obrazków i innych plików. Został napisany tak, aby strona inicjująca miała jak największe problemy z odróżnieniem takiej usługi od prawdziwej. Może również posłużyć jako PROXY które zapisze i przekaże żądanie dalej, do oryginalnej maszyny. Jest prosty w obsłudze i posiada spore możliwości konfiguracyjne z dobrymi ustawieniami podstawowymi (warto jednak poświęcić chwilę na zmianę standardowych banerów w pliku conf/inetsim.conf, ponieważ przedstawia się jako INetSim).

W zależności od wybranych przez nas usług, połączenie np. na port SMTP pozwoli nam przeprowadzić ograniczoną sesję wysyłania poczty a przy połączeniu na port HTTP zobaczymy przykładową stronę WWW. My uruchomimy wszystkie obsługiwane przez INetSim usługi.

Wireshark

Ostatnim narzędziem którym powinniśmy się wesprzeć jest Wireshark. Jest to analizator ruchu sieciowego z wygodnym interface’m użytkownika. Pozwala na zapis informacji i charakterystyk ruchu sieciowego, co znacząco ułatwia budowanie sygnatur sieciowych. Ponadto rejestruje i pozwala wychwycić inne próby ataku i komunikacji wychodzące z zarażonej maszyny a nie rejestrowane przez INetSim.

Zakończenie

Z artykułu dowiedzieliśmy się, jakie zagrożenia może nieść uruchamianie podejrzanych plików. Podczas analizy statycznej zweryfikowaliśmy, iż w rzeczywistości mamy do czynienia z malware’m, zbadaliśmy format oraz zawartość pliku pod kątem charakterystycznych cech. Odkryliśmy poprzez uruchomienie w kontrolowanym środowisku jej zachowanie, co pozwoliło nam przygotować się do zbudowania sygnatur które wykryją zarażone stacje oraz przyszłe infekcje. Zgromadziliśmy również odpowiedni warsztat, który w przyszłości pozwoli nam efektywnie rozprawić się z nowymi wyzwaniami oraz zdobyliśmy podstawową wiedzę jak z niego korzystać.

Poniżej lista kluczowych cech oraz zachowań złośliwego oprogramowania, które udało nam się ustalić podczas analizy i które wykorzystamy w następnych częściach:

Proces Typ Cecha
Explorer.EXE Próba połączenia 103.28.148.51:8080(Indonezja) (POST /99aa1cd1/ec8a4b32/)
192.154.110.228:8080 (USA)
80.91.191.158:8080 (Ukraina)
E-Mail

Group Data Protection Officer

Volksbanken

@maler-zibert.de

OnlineSupport AVH

24S68Q38QE45…

Explorer.EXE Rejestr HKU\{USER_SID}\Software\Microsoft\Office\Common\{RANDOM_1}\{RANDOM_1}{RS,SS,PS}
Mutex {PROCESS_ID}M, {PROCESS_ID}I
Explorer.EXE Kopia malware C:\Documents and Settings\Administrator\Application Data\Microsoft\{RANDOM_NAME}.exe
Explorer.EXE Autorun HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
Żądanie HTTP POST /[a-z0-9]{8}/[a-z0-9]{8}/
INV 53.PDF.exe Automatyczne usunięcie C:\Documents and Settings\Administrator\Application Data\{RANDOM_NAME}.bat
Explorer.EXE Rejestr HKLM\​SYSTEM\​CURRENTCONTROLSET\​HARDWARE PROFILES\​CURRENT\​Software\​Microsoft\​windows\​CurrentVersion\​Internet Settings (ProxyEnable=0)
INV 53.PDF.exe Alternate Data Stream C:\Documents and Settings\User\Application Data\Microsoft\{RANDOM_NAME}.exe:Zone.Identifier
Explorer.EXE Modyfikacja połączeń sieciowych \Device\Afd\Endpoint (AFD_BIND, AFD_CONNECT, AFD_SEND, AFD_RECV)
Wstrzyknięcie pamięci do procesu

C:\WINDOWS\explorer.exe

C:\WINDOWS\system32\cmd.exe

Explorer.EXE Monitoring klawiszy myszy VK_LBUTTON

 

Jest to pierwszy artykuł z serii, w której dowiemy się między innymi:

  • Jak efektywnie reagować na incydenty związane ze złośliwym oprogramowaniem (od wykrywania infekcji, przez izolację aż po oczyszczanie środowiska i wyciąganie wniosków).
  • Przygotujemy się do walki oraz nauczymy jak wybierać cechy i przygotowywać sygnatury w takich narzędziach, jak:
    • yara – silnik do klasyfikacji plików, nauczymy się wykrywać różne odmiany tego zagrożenia
    • snort – sieciowy system detekcji włamań
    • narzędzia gnu – wykorzystanie przyjaciół każdego administratora w efektywnej detekcji incydentów
    • ssdeep – narzędzie pozwalające na określenie stopnia podobieństwa pomiędzy plikami
  • Malware który analizujemy przestanie być dla nas anonimowym zagrożeniem. Okaże się, że to “Emotet”, malware bankowy kradnący między innymi dane do logowania do banku i wykorzystany do ataków w USA.

Aleksander Janusz

Odnośniki do zasobów w sieci

 

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. sdgfsdf

    „Samo rozszerzenie może być mylące, dlatego skorzystamy z linuksowego narzędzia find”
    chyba chodziło o file

    Odpowiedz
  2. pl

    Całkiem fajny artykuł, jedna mała uwaga:

    ssdeep – narzędzie pozwalające na określenie stopnia prawdopodobieństwa pomiędzy plikami

    Powinno być „podobieństwa”.
    Pozdrawiam!

    Odpowiedz
  3. Lukasz

    Swietny artykul, dobry opis narzedzi i na co zwraca uwage w przyswajalnej formie. oby tak dalej!

    Fajna sprawa, tez analizowalem podobny malware pare m-cy temu. Wiekszosc informacji byla podobna tylko kwota z maila inna.

    Symulacja internetu podrzucila mi pare pomyslow, bede musial pozmieniac swoje srodowisko :)

    Tylko chyba maly blad sie wkradl:
    „Samo rozszerzenie może być mylące, dlatego skorzystamy z linuksowego narzędzia **find**. Jest ono wyposażone w bazę sygnatur, po których rozpoznaje typ pliku:”
    O ile znam 'find’ to chyba chodzi tu o GNU 'file’?

    Pozdrawiam

    Odpowiedz
    • nshadov

      Dzięki za zwrócenie uwagi, rzeczywiście wkradła się drobna pomyłka (na listingu poniżej była poprawna komenda 'file’).

      Odpowiedz
    • Poprawione, dzięki!

      Odpowiedz
  4. Mlodziak

    Hej. Dajcie namiar na linki z malware które mógłbym sobie poanalizować, dzięki. Albo hint jak szukać

    Odpowiedz
    • nshadov

      W kolejnych częściach artykułu postaram się wskazać kilka takich źródeł i jak z nich korzystać (wyszukiwanie konkretnej odmiany itp).

      Na szybko tylko podpowiem, że Mila prowadzi całkiem ciekawy zbiór: http://contagiodump.blogspot.com/

      Odpowiedz
    • sandalarz

      Kolego podaj adres publicznie – zaraz będziesz miał od zatrzęsienia próbek.

      Odpowiedz
  5. michal

    Fajny artykuł, czekam na kolejne części !

    Odpowiedz
  6. marcin
    Odpowiedz
  7. czesław

    Artukuł świetnie systematyzuje wiedzę na temat analizy oprogramowania, zwłaszcza pod kątem działalności w żywym systemie.

    Oprócz migawek można stosować darmowe oprogramowanie sandboxie. Program umożliwia podejrzenie wszystkich plików wygenerowanych przez oprogramowanie, również wpisy w rejestrze.

    Odpowiedz
  8. 123qwe

    Fajny artykul, ktory fajnie sie czyta, wszystko dokladnie opisane.

    PS
    Caly czas czekam na obiecany opis uzywania debuggera do wykrywania bugow/podatnosci – dotyczy opisu wykrywania buga w arcie o firmwarze routera – niestety tam ta kwestia byla calkowicie pominieta i w komentarzach obiecano osobny artykul na ten temat.

    Odpowiedz
  9. vanitas

    Ja tam kiedyś dostałem malwara jako fakturę od UPS. Faktura – to doc odpalajacy VB, ściągający pliki trojana. Dowcip polegał na tym, że w metatagach doca nie wyczyszczono pola „Author” ;). W sumie to żaden dowód (jak kogoś nie lubie mogę go wpisać)…

    Odpowiedz
  10. Piotrek

    Fajny art. Chociaż przydałby się prosty przykład jak uruchomić narzędzia typu InetSim. Poza tym z tego co wiem adresy 192.* to adresy prywatne klasy C. A w artykule mowa o adresie „192.154.110.228:8080” pochodzącym z USA. To jakiś skrót myślowy?

    Odpowiedz
    • Adresy prywatne to zakres 192.168.*.*.

      https://tools.ietf.org/html/rfc1918

      The Internet Assigned Numbers Authority (IANA) has reserved following three blocks of the IP address space for private internets:

      10.0.0.0 – 10.255.255.255 (10/8 prefix)
      172.16.0.0 – 172.31.255.255 (172.16/12 prefix)
      192.168.0.0 – 192.168.255.255 (192.168/16 prefix)

      Odpowiedz
      • Piotrek

        Ale ze mnie *** ;)

        Odpowiedz

Odpowiedz