Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Szybka analiza malware
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.
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.
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.
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).
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).
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).
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
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 |
|
|
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:
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.
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.
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.
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.
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.
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:
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) |
– |
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 |
- 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
- Wyszukiwarka dokumentacji do Windows API
- Wyniki Google dla sumy MD5
- Analiza w serwisie VirusTotal
- Często polecany Deassembler – IDA Pro
- Analiza behawioralna w serwisie VirusTotal
- Informacje o adresie IP w serwisie DomainTools
- Graf zależności adresu IP w serwisie Robtex
- Analiza w Cuckoo Sandbox w serwisie malwr.com
- Strona projektu Cuckoo Sandbox
- Raport z Anubis Sandbox
- Narzędzie do wirtualizacji VirtualBox
- Program do analizy zmian rejestru systemowego RegShot
- Process Explorer – lista procesów
- Process Monitor – monitorowanie procesów
- Aplikacja do modyfikowania odpowiedzi DNS – DNSChef
- Symulator usług sieciowych INetSim
- Analizator ruchu sieciowego Wireshark
„Samo rozszerzenie może być mylące, dlatego skorzystamy z linuksowego narzędzia find”
chyba chodziło o file
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!
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
Dzięki za zwrócenie uwagi, rzeczywiście wkradła się drobna pomyłka (na listingu poniżej była poprawna komenda 'file’).
Poprawione, dzięki!
Hej. Dajcie namiar na linki z malware które mógłbym sobie poanalizować, dzięki. Albo hint jak szukać
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/
Kolego podaj adres publicznie – zaraz będziesz miał od zatrzęsienia próbek.
Fajny artykuł, czekam na kolejne części !
http://zeltser.com/malware-sample-sources/
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.
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.
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ć)…
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?
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)
Ale ze mnie *** ;)