-15% na nową książkę sekuraka: Wprowadzenie do bezpieczeństwa IT. Przy zamówieniu podaj kod: 10000

Automatyczna analiza złośliwego oprogramowania z wykorzystaniem SysAnalyzer

15 lutego 2017, 08:22 | Narzędzia, Teksty | komentarzy 6

Wstęp

SysAnalyzer jest aplikacją (a właściwie zestawem), która pozwala na szybką analizę złośliwego oprogramowania poprzez obserwację wykonywanych przez nią działań w różnych stadiach systemu.

Oprogramowanie przed startem „złośliwej próbki” tworzy snapshot obecnego stanu naszego środowiska, który po uruchomieniu malware stanowi podstawę do stwierdzenia zmian w systemie.

Autorem aplikacji jest David Zimmer, którego możecie znać z takich narzędzi jak PDF Stream Dumper czy COMRaider.

W niniejszym artykule omówię opcje aplikacji SysAnalyzer, dzięki czemu korzystanie z niej stanie się znacznie prostsze.

Zanim zaczniemy…

Pamiętaj, że każdą analizę złośliwego oprogramowania powinieneś przeprowadzać w kontrolowanym środowisku. Uruchomienie maszyny wirtualnej na prywatnym lub biurowym komputerze, na którym codziennie pracujemy, nie jest najlepszym pomysłem. Zawsze istnieje ryzyko podatności oprogramowania, które wykorzystujemy do wirtualizacji (znane są takie przypadki z przeszłości, np. CVE-2014-0983, CVE-2015-3456 i CVE-2008-0923). Postaraj się stworzyć oddzielne środowisko z odseparowanym dostępem do Internetu (i dedykowanym adresem IP).

Instalacja

Instalacja przebiega w dość prosty sposób i sprowadza się do kliknięcia kilka razy przycisku „Dalej”, oczywiście poza zdefiniowaniem miejsca instalacji. Aplikacja po zainstalowaniu zajmuje ok. 8 MB, więc jest stosunkowo nieduża.

Jeżeli wybieraliśmy standardowe opcje, to na pulpicie powinniśmy zobaczyć 5 głównych elementów programu SysAnalyzer (które zostaną omówione w kolejnym rozdziale):

SysAnalyzer

Pakiet aplikacji SysAnalyzer

Dostępny jest również kod źródłowy tej aplikacji:

SysAnalyzer

Kod źródłowy pakietu SysAnalyzer

Konfiguracja

W tej części przyjrzymy się opcjom dostępnym w narzędziu SysAnalyzer. Po uruchomieniu aplikacji powinniśmy zobaczyć poniższy ekran:

SysAnalyzer

Główny interfejs aplikacji

Do wyboru mamy następujące opcje:

  • Executable – lokalizacja złośliwej aplikacji, którą chcemy przeanalizować (możemy ją przenieść za pomocą Drag&Drop)
  • Arguments – argumenty niezbędne do uruchomienia złośliwej aplikacji

Wskazówka: Druga opcja jest szczególnie przydatna, gdy chcemy przeanalizować np. działanie potencjalnie złośliwych dokumentów. Przyjrzyjmy się poniższym prostym przykładom:

Dokumenty *.doc – zakładając, że w celu analizy wykorzystamy oprogramowanie Microsoft Office, to w polu Executable podajemy lokalizację do głównego pliku aplikacji Microsoft Word, tj. WINWORD.EXE, natomiast w polu Arguments – lokalizację do pliku *.doc.

Analogicznie do powyższej sytuacji w przypadku np. plików PDF prawdopodobnie podalibyśmy lokalizację do AcroRd32.exe (Acrobat Reader) – w zależności od wersji systemu itp.

Decyzję o tym, jakiej aplikacji trzeba prawdopodobnie użyć, należy podejmować na podstawie rozszerzenia danego pliku i własnych doświadczeń.

  • Delay (secs) – czas opóźnienia pomiędzy stworzeniem początkowego snapshotu a snapshotem, z którym go porównujemy
  • Known file DB – baza znanych i zaufanych plików, niewidocznych w wynikach
  • Use SniffHit – odpowiada za monitorowanie ruchu HTTP, IRC oraz zapytań DNS, a także stworzenie listy unikalnych adresów IP
  • Use API Logger – wstrzykuje bibliotekę DLL do procesu, aby pokazać nam wszystkie wywoływane API
  • Use Directory Watcher – obserwuje modyfikacje w systemie plików (tworzone, modyfikowane oraz usuwane pliki i foldery)
  • Full Packet Capture – pełny zapis ruchu sieciowego do pliku *.pcap
  • Interface Index – numer interfejsu sieciowego
  • Run As Another User – uruchomienie jako inny użytkownik
  • RWE Scan – skanowanie procesów pod kątem iniekcji w pamięci (RWE – Read, Write, Execute) oraz zapisanie zrzutu ciągu znaków (z pamięci)
  • Monitor Dlls in – monitorowanie konkretnych procesów pod kątem ładowania nowych bibliotek DLL (wprowadzając *, dołączamy obserwację wszystkich procesów)

Oczywiście pozostały jeszcze opcje dodatkowe:

  • About – informacje o aplikacji
  • Help file – pomoc
  • Tools – po kliknięciu prawym przyciskiem myszy prezentowane są opcje:
    • Scan Processes for DLL – wyszukiwanie ciągów znaków w nazwie biblioteki DLL lub jej ścieżce
    • Scan Procs for Unknow Dlls – skanowanie procesów pod kątem nieznanych bibliotek (jeżeli stworzymy „Known file DB”)
    • RWE Memory Scan All – analogicznie do „RWE Scan” opcja ze skanowaniem całej pamięci
    • RWE Memory Scan One – analogicznie do „RWE Scan” opcja ze skanowaniem jednego procesu
    • Open Saved Analysis – otwieranie zapisanej analizy
    • Kill All Like – zamknięcie procesów, których nazwa zawiera określony ciąg znaków
    • External
      • SniffHit – uruchamia aplikację Sniffhit
      • ProcWatch – uruchamia aplikację ProcWatch
      • Api Logger – uruchamia aplikację ApiLogger
      • DirWatch – uruchamia aplikację DirWatch
      • Command Prompt – uruchamia wiersz poleceń w folderze aplikacji SysAnalyzer
      • Edit Hosts File – edycja pliku %WINDIR%\system32\drivers\etc\hosts

Natomiast opcję „Skip”(odpowiadającą za przejście do panelu manualnej analizy) omówię w części Alternatywne uruchomienie.

Analizujemy plik i przeglądamy wyniki z raportu

Jeżeli udało nam się już zapoznać z podstawowymi opcjami aplikacji, to przyszedł czas na analizę.

Wskazówka: Wykorzystując maszynę wirtualną, warto przed rozpoczęciem zrobić snapshot – aby w prosty sposób powrócić potem do stanu początkowego.

Przykładowa konfiguracja może wyglądać następująco:

SysAnalyzer

Przykładowa konfiguracja aplikacji SysAnalyzer

Jeśli mamy już ustawione wszystkie niezbędne opcje, to pozostało nam jedynie kliknięcie przycisku „Start”.

Bezpośrednio po uruchomieniu zobaczymy kolejno włączające się narzędzia oraz informację o starcie naszej potencjalnie złośliwej aplikacji „malware.exe”, a po chwili powinien pojawić się raport:

SysAnalyzer

Raport wygenerowany przez aplikację SysAnalyzer

Jak pewnie zauważyliście, po uruchomieniu na Pulpicie został stworzony nowy katalog o nazwie „analysis”, w którym zapisane są wszystkie wyniki raportu.

Uwaga! Pamiętaj, że część informacji o zaistniałych zmianach w naszym środowisku zebranych przez narzędzia automatyczne nie zawsze wynika z działalności malware – czasami jest to po prostu zwykłe działanie systemu operacyjnego.

Przyjrzyjmy się teraz informacjom, które udało się uzyskać aplikacji. Widzimy 4 główne gałęzie:

  • \analysis
  • DirWatch
  • Malware
  • RWE_Memory

W sekcji „\analysis” możemy znaleźć:

  • api.log – lista wywołanych API

api.log

  • capture.pcap – zapis ruchu sieciowego (który możemy np. wczytać do programu Wireshark)
SysAnalyzer

capture.pcap

  • debug.log – zapis działania aplikacji
SysAnalyzer

debug.log

  • dirWatch.log – lista stworzonych, zmodyfikowanych lub usuniętych plików i katalogów
SysAnalyzer

dirWatch.log

  • ProcWatch.log – lista stworzonych i zamkniętych procesów
SysAnalyzer

ProcWatch.log

  • Report_GODZINA-ANALIZY.log – ogólny zbiór informacji o analizowanej próbce
SysAnalyzer

Report_GODZINA-ANALIZY.log

  • sample_NAZWA-ANALIZOWANEJ-APLIKACJI.exe_ – kopia analizowanej aplikacji
SysAnalyzer

sample_NAZWA-ANALIZOWANEJ-APLIKACJI.exe_

  • servers.log – lista adresów IP, z jakimi nastąpiło połączenie
SysAnalyzer

servers.log

Przyjrzyjmy się teraz sekcji „DirWatch”. Znajdziemy w niej kopie plików, które zostały stworzone w trakcie działania testowanej aplikacji. Jak widzimy, nawet plik „1478967.bat_”, który był stworzony, a potem usunięty, został skopiowany – dzięki temu możemy przejrzeć jego zawartość. Znalazły się tam również dwa pliki, które zazwyczaj nas nie interesują, m.in. wbemcore.log – są to pliki wygenerowane przez usługę WMI.

SysAnalyzer

Katalog DirWatch

W części „NAZWA_MALWARE” (w naszym przykładzie będzie to „malware”) znajdziemy m.in. zrzuty pamięci, ciągów znaków oraz kopię testowanej aplikacji.

SysAnalyzer

Katalog „NAZWA_APLIKACJI”

Ostatnią sekcją, jaką widzimy, jest „RWE_Memory”. Wszystkie nazwy procesów, które umieściliśmy w rubryce „RWE Scan” podczas konfiguracji, zostały przeskanowane pod kątem iniekcji w pamięci. Zobaczymy więc zrzuty pamięci z ww. procesów oraz ich ciągi znaków.

SysAnalyzer

Katalog „RWE_Memory”

Częstym przykładem jest „załadowanie” przez złośliwe oprogramowanie nowej biblioteki dla procesu Explorer.exe – o czym (jeżeli do tego dojdzie) zostaniemy powiadomieni przez SysAnalyzer w raporcie.

Pamiętaj: Powodów tego, że nasza próbka nie zadziałała, może być wiele. Do najpopularniejszych należą: błędne środowisko uruchomienia, wadliwa próbka (np. brak części kodu w próbce w wyniku działalności oprogramowania antywirusowego) czy też fakt, że próbka nie jest złośliwa.

Alternatywne uruchomienie

Wracamy do opcji „Skip”, czyli przechodzimy do trybu manualnej analizy.

Na początek przyjrzyjmy się interfejsowi:

SysAnalyzer

Interfejs aplikacji SysAnalyzer w trybie manualnym

W górnym menu mamy do wyboru następujące opcje:

  • Snapshot
    • Show Snapshot 1 – prezentacja snapshotu początkowego
    • Show Snapshot 2 – prezentacja snapshotu końcowego (porównawczego)
    • Show Diff report – prezentacja różnic w snapshotach (w związku z tym po wybraniu tej opcji w zakładkach zobaczymy jedynie różnice)
    • Take Snapshot 1 – stworzenie snapshotu początkowego
    • Take Snapshot 2 – stworzenie snapshotu końcowego (porównawczego)
    • Start Over – rozpoczęcie nowej analizy
  • Data
    • Search All Tabs – wyszukiwanie danego słowa kluczowego we wszystkich zebranych wynikach
    • Copy All Tabs Data – prezentacja wszystkich danych w przejrzystej formie oraz możliwość ich skopiowania lub zapisu do pliku
    • Copy All Selected Entries – prezentacja jedynie zaznaczonych wpisów w przejrzystej formie oraz możliwość ich skopiowania lub zapisu do pliku
    • Basic Text Report – wyświetlenie prostego raportu tekstowego (podobny / taki sam jak w opcji „Copy All Tabs Data”)
    • Report Viewer – wyświetlenie standardowego okna prezentacji raportu
  • Tools
    • Scan Procs for Unknown Dlls – skanowanie procesów pod kątem nieznanych bibliotek
    • Scan processes For Dll – wyszukiwanie danego ciągu znaków w nazwie biblioteki DLL lub jej ścieżce
    • RWE Memory Scan All – analogicznie do „RWE Scan” opcja ze skanowaniem całej pamięci
    • String Memory Scan All – skanowanie całej pamięci pod kątem obecności danego słowa kluczowego
    • Start Directory Watch – uruchamianie monitorowania pod kątem stworzonych, zmodyfikowanych lub usuniętych plików i katalogów
    • Command Prompt – uruchamianie wiersza poleceń w folderze aplikacji SysAnalyzer
  • KnownDB – bardzo przydatna opcja, która pozwala na stworzenie bazy znanych i zaufanych plików, abyśmy nie widzieli ich w wynikach
    • Build Known File DB – budowanie bazy znanych plików
    • Hide Known Files – ukrywanie znanych plików w wyników analizy
    • Update Known Db – aktualizowanie bazy znanych plików
  • Help – pomoc

Przejdźmy teraz do zakładek… Zanim je omówimy, warto dodać, że w każdej z nich istnieje możliwość filtrowania wyświetlonych danych pod różnym kątem (standardowo filtr ustawiony jest na kolumnę „Path”, o czym informuje * przy nazwie kolumny – możemy to zmienić, m.in. wpisując w pole „Filter” polecenie „/TUTAJ_NUMER np. /1”, co spowoduje ustawienie filtrowania na kolumnę „PID”).

Ponadto w większości okien, jeżeli klikniemy prawym przyciskiem myszy dany wpis, zobaczymy dodatkowe menu, w którym możemy m.in. przeanalizować konkretny proces („Analyze”), wyświetlić powiązane biblioteki DLL („ShowDlls”) oraz Mapę Pamięci z listą modułów i wykonywalnych sekcji (oraz typami pamięci itp.), zamknąć proces („Kill”), a także wyświetlić właściwości danego pliku („File Properties”) czy zapisać zrzut procesu do folderu „analysis”.

SysAnalyzer

Lista dostępnych opcji w trybie manualnym

  • Running Processes – prezentacja wszystkich uruchomionych procesów
SysAnalyzer

Lista uruchomionych procesów

  • Open Ports – lista otwartych portów
SysAnalyzer

Lista dostępnych portów

  • Process Dlls – lista bibliotek DLL powiązanych z danym procesem
SysAnalyzer

Lista bibliotek DLL

  • Loaded Drivers – lista załadowanych sterowników
SysAnalyzer

Lista załadowanych sterowników

  • Reg Monitor – pozwala na monitorowanie zmian zachodzących w rejestrze
SysAnalyzer

Monitorowanie rejestru

  • Directory Watch Data – lista stworzonych, zmodyfikowanych lub usuniętych plików i katalogów (pamiętaj, aby włączyć w menu „Tools” opcję „Start Directory Watch”)
SysAnalyzer

Monitorowanie systemu plików

  • Mutexes – wyświetla listę mutexów
SysAnalyzer

Lista mutex’ów

  • Tasks – pozwala na monitorowanie harmonogramu zadań
SysAnalyzer

Monitorowanie harmonogramu zadań

  • Pipes – wyświetla listę pipe’ów
SysAnalyzer

Lista pipe’ów

 Jak przeprowadzić najprostszą przykładową analizę manualną?

Wystarczy, że stworzymy snapshot początkowy: „Snapshot” –> „Take Snapshot 1”, a po chwili uruchomimy nasze złośliwe oprogramowanie. Po kilkunastu sekundach powinniśmy stworzyć snapshot końcowy: „Snapshot” –> „Take Snapshot 2”. Teraz pozostało nam jedynie porównać wyniki naszej analizy z wykorzystaniem opcji „Snapshot” –> „Show Diff report”.

Podsumowanie

SysAnalyzer jest interesującym projektem, który dostarczy nam wiele przydatnych narzędzi do obserwacji potencjalnie złośliwej aplikacji pod różnym kątem. W trakcie analizy kilkudziesięciu próbek w ramach testów kilka z nich nie uruchomiło się z bliżej nieokreślonej przyczyny w trybie automatycznym – ale już tryb manualny dał pozytywne rezultaty. Jeżeli nie mamy czasu na analizę, a chcielibyśmy przeanalizować daną aplikację (nie tylko złośliwą), to warto wybrać SysAnalyzer.

Download:

Źródła pozyskiwania próbek do analizy (wybrane):

 

~ Artur Czyż, konsultant d/s bezpieczeństwa IT & pentester w Securitum.

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



Komentarze

  1. fuacgalu

    Super tool i znakomicie opisany :)

    Odpowiedz
  2. zero one

    Dobro robota Panie Arturze :-D

    Odpowiedz
  3. TomBe

    Szkoda, że nie ma wersji na systemy unixowe

    Odpowiedz
  4. Marcin

    „Zanim zaczniemy…

    Pamiętaj, że każdą analizę złośliwego oprogramowania powinieneś przeprowadzać w kontrolowanym środowisku. Uruchomienie maszyny wirtualnej na prywatnym lub biurowym komputerze, na którym codziennie pracujemy, nie jest najlepszym pomysłem. Zawsze istnieje ryzyko podatności oprogramowania, które wykorzystujemy do wirtualizacji (znane są takie przypadki z przeszłości, np. CVE-2014-0983, CVE-2015-3456 i CVE-2008-0923). Postaraj się stworzyć oddzielne środowisko z odseparowanym dostępem do Internetu (i dedykowanym adresem IP).”

    hm.. A jak sobie na oddzielnym dysku postawię system obok tych do codziennego użytku. Nie będę montował pozostałych dysków. I na nim postawię maszynę virtualną do takiej analizy, to będzie ok?

    Odpowiedz
    • ac

      Zdecydowanie nie polecam Ci takiego rozwiązania ;-)

      Warto przygotować całkowicie dedykowaną maszynę (w większości przypadków wystarczy „stary” laptop), która jest podłączona do oddzielnej sieci (np. modem z kartą prepaid), w żadnym wypadku nie połączonej z inną.

      Musisz mieć zawsze na uwadze, możliwość zidentyfikowania błędów w oprogramowaniu, którego używasz do zarządzania swoimi maszynami wirtualnymi.

      Rozwiązanie z dedykowaną maszyną, podłączoną do całkowicie odseparowanej sieci – to kierunek w którym powinieneś pomyśleć, jeżeli chciałbyś analizować złośliwe oprogramowanie ;-)

      Warto przygotować sobie dobry „warsztat pracy” :-)

      Odpowiedz
  5. Marcin

    „Musisz mieć zawsze na uwadze, możliwość zidentyfikowania błędów w oprogramowaniu, którego używasz do zarządzania swoimi maszynami wirtualnymi.”
    No rozumiem, że może być błąd w systemie do virtualizacji. Może sprobuję rozrysować mój pomysł w ASCII.. :-)

    dysk1 | dysk2 | dysk3 (do analizy malware montowany tylko na sys3)
    Sys1 | sys2 | sys3 (do analizy malware montujący tylko dysk3)
    | | virtualna maszyna (do analizy malware)
    W takim modelu systemy wspołdzielą tylko ram, procesor, itd. Dyski są odseparowane, sieć jest łatwo zmienić lub całkowicie odłączyć. Co złego w takiej konfiguracji?

    Odpowiedz

Odpowiedz