Scenariusz: The SOC team has detected suspicious activity in the network traffic, revealing that a machine has been compromised. Sensitive company information has been stolen. Your task is to use Network Capture (PCAP) files and Threat Intelligence to investigate the incident and determine how the breach occurred.
Mamy do dyspozycji zrzut ruchu sieciowego w postaci pliku PCAP. Scenariusz nie podaje wielu szczegółów, oprócz tego, że istotne jest tu również szersze wykorzystanie narzędzi Cyber Threat Intelligence, aby zidentyfikować przyczynę uzyskania dostępu do hosta przez atakujących i uzyskać szerszy kontekst.
Do tego celu użyłem sprawdzonego Wiresharka oraz m.in. narzędzi VirusTotal, Cisco Talos oraz AbuseIPDB.
Pytanie 1#
Which IP address was used by the attacker during the initial access?
Aby z samego zrzutu PCAP (z kilkoma tysiącami pakietów) zidentyfikować adres IP atakującego, potrzeba szerszego kontekstu. Ręczne sprawdzanie i scrollowanie ściany pakietów to marnowanie cennego czasu. Scenariusz nie podał żadnych szczegółów, więc potrzebujemy kontekstu i wstępnych informacji, na których będzie można się skupić. W tym celu wykorzystałem zakładkę Statistics, gdzie znajdują się informacje m.in. o ilości wysłanych pakietów przez poszczególne hosty, liczbie danych wysyłanych w jednostce czasu czy najczęściej wykorzystywanych protokołach. Timeline zrzutu pokazał, że ok. 62 sekundy od momentu rejestracji przez Wireshark wystąpił wyraźny i odstający od reszty wzrost liczby pakietów wysłanych w czasie.

Najwięcej danych zostało przesłanych z adresu 188[.]114[.]97[.]3 do 10[.]2[.]14[.]101.

Co jeszcze ciekawsze, host 10[.]2[.]14[.]101 komunikował się z wieloma różnymi adresami IP. Poniżej fragment listy.

Poniżej statystyki hostów z liczbą pakietów, które wysłały.

Ze względu na znaczącą ilość danych przesłanych przez 10[.]2[.]14[.]101 zastosowałem filtr ip.addr==10[.]2[.]14[.]101, aby wyświetlić związany z nim ruch. Host 10[.]2[.]14[.]101 już na samym początku wysłał zapytanie DNS o adres IP domeny portfolio[.]serveirc[.]com. W odpowiedzi otrzymał adres 62[.]173[.]142[.]148, a następnie wymieniał z nim dane. Domena wydała mi się podejrzana, głównie przez wyraz „portfolio". Sprawdziłem więc zarówno IP, jak i domenę w VirusTotal.


Analiza w VT wykazała, że host 10[.]2[.]14[.]101 komunikował się ze złośliwą domeną.

Poniżej analiza adresu IP w VT. Został oznaczony jako złośliwy przez jednego vendora.

Dodatkowa analiza za pomocą AbuseIPDB wykazała, że adres był wcześniej zgłaszany jako wykorzystywany w atakach.

Poniżej screen z Cisco Talos. Domena jest oznaczona jako niezaufana i złośliwa.

Wracając do samych pakietów, znalazłem również zapytanie GET wysłane przez hosta 10[.]2[.]14[.]101 do uzyskanego wcześniej adresu 62[.]173[.]142[.]148. Zapytanie dotyczyło pliku login.php.

Wireshark umożliwia „wydobycie" plików, które zostały pobrane m.in. przez protokół HTTP. Zapisałem więc plik na wyizolowanej maszynie wirtualnej i za pomocą narzędzia HashMyFiles uzyskałem hash MD5 i wrzuciłem go do VirusTotal.

Analiza w VT potwierdziła, że login.php to tak naprawdę złośliwy plik JavaScript z kategorii „downloaderów". Dane z MITRE ATT&CK wskazały, że plik wykorzystuje m.in. technikę T1071 oraz T1095 do komunikacji z serwerem, zapewne pobierając dodatkowy malware. W szczegółach podana została informacja, że malware wysyła zapytania DNS.


Ponownie patrząc na pakiety, widzimy, że tuż po pobraniu złośliwego skryptu JS wysyłane są zapytania DNS o domeny wpad[.]localdomain, client[.]wns[.]windows.com oraz ogs[.]google[.]com. Pierwsza z nich nie ma wyników w VT, a host nie otrzymał jej adresu IP.

Do domeny client[.]wns[.]windows.com należał adres 20[.]90[.]153[.]243. Według zgłoszeń w AbuseIPDB adres był w przeszłości wykorzystywany w złośliwych działaniach.

Co ciekawe, w VirusTotal wyżej wspomniana domena nie została oznaczona przez żadnego vendora, ale w zakładce „Community" jest ponad 300 komentarzy wskazujących na jej wykorzystywanie w przeszłości do złośliwych operacji. Trzecia domena natomiast, ogs[.]google[.]com, nie została oznaczona jako złośliwa w AbuseIPDB, Cisco Talos oraz VirusTotal bądź nie było jej w bazie danych.

Biorąc powyższe informacje pod uwagę, złośliwy adres IP pod kontrolą atakującego to 62[.]173[.]142[.]148. Poniżej fragment komunikacji z tym hostem. Po uzyskaniu złośliwego skryptu połączenie zostało zakończone (FIN).

Odpowiedź: 62[.]173[.]142[.]148
Pytanie 2#
What is the name of the malicious file used for initial access?
Plik został zidentyfikowany jako login.php, który zgodnie z VirusTotal jest skryptem JS i oznaczony jako „downloader" - jego zadaniem jest pobranie dodatkowego malware’u.
MD5: 5daf53bf848bb4cda008a655bdecf425
SHA256: 847b4ad90b1daba2d9117a8e05776f3f902dda593fb1252289538acf476c4268
Plik jest jednolinijkowym skryptem z zastosowaną obfuskacją. Najprawdopodobniej jedną z technik jest wykorzystanie kodowania Base64, na co dowodem może być obecność alfabetu Base64 w kodzie (zaznaczone poniżej). Dla lepszej czytelności zastosowałem „word wrap" w Notepad++.

Poniżej techniki używane przez malware zgodnie z MITRE ATT&CK.

Zgodnie ze szczegółami techniki T1071 malware komunikuje się ze złośliwą domeną soundata[.]top. W zrzucie PCAP zostało zarejestrowane zapytanie DNS o nią, co stanowi dowód na uruchomienie skryptu na hoście 10[.]2[.]14[.]101.


Zapytanie GET o zasób login.php nastąpiło tuż po uzyskaniu adresu IP domeny portfolio[.]serveirc[.]com, co sugeruje, że plik był częścią etapu initial access. Zrzut nie zawierał jednak wcześniejszego ruchu sieciowego, co nie daje pełnego obrazu okoliczności (mail phishingowy? zdalny dostęp do hosta?), w jakich 10[.]2[.]14[.]101 wysłał zapytanie DNS o złośliwą domenę. Dodatkowo faktyczna nazwa skryptu to allegato_708.js - zapytanie GET było więc o login.php, ale zasób został zapisany jako allegato_708.js.

Odpowiedź: allegato_708.js
Pytanie 3#
What is the SHA-256 hash of the malicious file used for initial access?
Hash SHA256 uzyskałem za pomocą HashMyFiles.
Odpowiedź: 847b4ad90b1daba2d9117a8e05776f3f902dda593fb1252289538acf476c4268
Pytanie 4#
Which process was used to execute the malicious file?
Użyto procesu wscript do uruchomienia skryptu. wscript.exe (Windows Script Host) to wbudowany interpreter skryptów w systemie Windows, obecny w każdej instalacji od Windows 98. Służy do uruchamiania skryptów napisanych w językach takich jak VBScript czy JS. Ponieważ jest podpisany cyfrowo przez Microsoft, nieodpowiednio skonfigurowane narzędzia bezpieczeństwa mogą go przepuszczać. To przykład ataku metodą „Living off the Land". Poniżej fragment kodu z nazwą narzędzia oraz informacje z VT.



Odpowiedź: wscript.exe
Pytanie 5#
What is the file extension of the second malicious file utilized by the attacker?
Ponownie wchodzimy na listę pobranych plików w zakładce Export objects -> HTTP. Na liście pobranych zasobów zidentyfikowałem kolejny podejrzany plik - bibliotekę DLL resources.dll.
Poniżej widoczny adres URL ze złośliwą domeną soundata[.]top.

Poniżej lista pobranych plików.

Poniżej analiza domeny soundata[.]top. Zgodnie z danymi była wykorzystywana przez malware DANABOT, stosowany głównie w atakach na sektor finansowy.

Tak jak w przypadku login.php, wyeksportowałem plik i uzyskałem hash resources.dll.
MD5: e758e07113016aca55d9eda2b0ffeebe
SHA256: 2597322a49a6252445ca4c8d713320b238113b3b8fd8a2d6fc1088a5934cee0e
Poniżej podstawowe informacje o pliku z PE Studio.

Poniżej fragment raportu w VT nt. biblioteki DLL.

Fragment macierzy MITRE ATT&CK z opisem technik użytych przez bibliotekę DLL. Istotna jest taktyka Collection oraz 6 technik związanych z eksfiltracją danych: T1005, T1056, T1113, T1119, T1185.

Odpowiedź DNS wskazała, że adres IP domeny soundata[.]top to 188[.]114[.]97[.]3. Zaznaczony pierwszy fragment to proces przesyłania złośliwej biblioteki DLL na hosta ofiary. Eksfiltracja danych z hosta ofiary rozpoczęła się o godz. 16:28:44 UTC (drugi spike) na adres 195[.]133[.]88[.]98.


Poniżej analiza adresu IP, do którego malware wysyłał zaszyfrowane dane podczas procesu eksfiltracji.


Poniżej analiza adresu IP domeny soundata[.]top w VT.

Odpowiedź: .dll
Pytanie 6#
What is the MD5 hash of the second malicious file?
Hash MD5 uzyskałem za pomocą narzędzia HashMyFiles.
Odpowiedź: e758e07113016aca55d9eda2b0ffeebe
Podsumowanie#
Faza 1 - Initial Access#
Host 10.2.14.101 odpytał domenę portfolio[.]serveirc[.]com (oznaczona jako złośliwa w VirusTotal i Cisco Talos) i nawiązał połączenie przez HTTP z serwerem atakującego 62[.]173[.]142[.]148.
Faza 2 - Delivery, Execution#
Pobrany plik allegato_708.js (login.php) - zaobfuskowany skrypt JavaScript z kategorii „downloader", uruchomiony przez proces wscript.exe.
MD5: 5daf53bf848bb4cda008a655bdecf425
Faza 3 - C2#
Skrypt nawiązał kontakt z domeną C2 soundata[.]top i pobrał bibliotekę resources.dll - właściwy moduł Danabot odpowiedzialny za kradzież danych.
MD5: e758e07113016aca55d9eda2b0ffeebe
Faza 4 - Eksfiltracja danych#
DanaBot należy do kategorii trojanów bankowych, których głównym celem jest kradzież poświadczeń, danych sesji bankowych oraz innych informacji o charakterze poufnym. Przeprowadzona analiza ujawniła podejrzaną aktywność sieciową hosta 10[.]2[.]14[.]101 - o godzinie 16:28:44 UTC zarejestrowano gwałtowny wzrost liczby pakietów skierowanych do 195[.]133[.]88[.]98, figurującego w bazach VirusTotal (VT) i AbuseIPDB jako złośliwy adres. Charakter i skala wysyłanych danych, a także cechy malware’u Danabot wskazują, że doszło do eksfiltracji danych.
IOC#
IP: 62[.]173[.]142[.]148
IP: 195[.]133[.]88[.]98
IP: 20[.]90[.]153[.]243
Domena: portfolio[.]serveirc[.]com
Domena: wpad[.]localdomain
Domena: client[.]wns[.]windows.com
Domena: soundata[.]top
MD5: e758e07113016aca55d9eda2b0ffeebe
MD5: 5daf53bf848bb4cda008a655bdecf425

