Przewiń do głównej treści

Network Forensics - PsExec Lateral Movement

·1235 słów·6 min·
Blueteam Forensics Wireshark Lateral-Movement
CyberZgroza
Autor
CyberZgroza

Scenariusz
#

An alert from the Intrusion Detection System (IDS) flagged suspicious lateral movement activity involving PsExec. This indicates potential unauthorized access and movement across the network. As a SOC Analyst, your task is to investigate the provided PCAP file to trace the attacker's activities. Identify their entry point, the machines targeted, the extent of the breach, and any critical indicators that reveal their tactics and objectives within the compromised environment.

System IDS wygenerował alert dotyczący podejrzanego ruchu sieciowego wskazującego na aktywność narzędzia PsExec. PsExec jest narzędziem administracyjnym z pakietu Sysinternals, jednak ze względu na swoje możliwości (zdalne wykonywanie poleceń przez protokół SMB) jest nadużywane przez atakujących do realizacji ataków lateral movement (przemieszczania się w sieci z hosta na host). Celem analizy jest odtworzenie przebiegu ataku na podstawie dostarczonego pliku PCAP.

Pytanie 1
#

To effectively trace the attacker's activities within our network, can you identify the IP address of the machine from which the attacker initially gained access?

Ze względu na brak wstępnego kontekstu zdarzenia, analizę rozpocząłem od zebrania ogólnych statystyk ruchu sieciowego. W tym celu wykorzystałem zakładkę Statistics → I/O Graph w Wiresharku. Wykres ujawnił wyraźny, odstający od normy wzrost liczby pakietów w określonym przedziale czasowym. Mogło to wskazywać na zautomatyzowaną aktywność atakujących.

psexec_spike

Następnie w zakładce Statistics → Endpoints dokonałem przeglądu statystyk ruchu z podziałem na poszczególne hosty. Analiza wykazała, że dwa adresy wyróżniały się znacząco wyższą liczbą wysłanych pakietów w stosunku do pozostałych hostów w sieci:

  • 10[.]0[.]0[.]130 - 40 040 pakietów łącznie
  • 10[.]0[.]0[.]133 - 38 284 pakietów łącznie

Pozostałe hosty generowały ruch kilkukrotnie niższy.

psexec_spike2

Po zastosowaniu filtru ip.addr==10.0.0.130 zidentyfikowałem następującą sekwencję zdarzeń:

  1. Host 10[.]0[.]0[.]130 zainicjował połączenie z 10[.]0[.]0[.]133 na porcie 445 (SMB).
  2. Przeprowadzano udane uwierzytelnienie za pomocą NTLM - PsExec uzyskał dostęp do share’u ADMIN$
  3. Na maszynie 10[.]0[.]0[.]133 tworzony jest plik PSEXECSVC.exe, a następnie przesyłany strumieniowo przez TCP w wielu segmentach.

psexec_ntlm_hostname

psexec_admin_share

psexec_assembly

Opisana sekwencja jest charakterystyczna dla działania narzędzia PsExec: nawiązanie sesji SMB -> skopiowanie pliku wykonywalnego usługi na share ADMIN$ -> uruchomienie usługi -> komunikacja przez named pipes. Całość odpowiada technice T1021.002 - Remote Services: SMB/Windows Admin Shares zgodnie z macierzą MITRE ATT&CK.

Zebrane dowody wskazują, że host 10[.]0[.]0[.]130 jest hostem, z którego przeprowadzono atak.

Dodatkowe informacje o psexec: hxxps://nv2lt[.]github[.]io/windows/smb-psexec-smbexec-winexe-how-to/

Odpowiedź: 10[.]0[.]0[.]130

Pytanie 2
#

To fully understand the extent of the breach, can you determine the machine's hostname to which the attacker first pivoted?

Protokół SMB2 wymaga uwierzytelnienia NTLM. W celu identyfikacji nazwy hosta docelowego zastosowałem filtr ntlmssp.ntlmv2_response.target_name, który wyświetla pakiety zawierające odpowiedź NTLMv2 - host docelowy przekazuje swoje szczegóły.

W sekcji NTLMv2 Response pakietu widoczne są dodatkowe atrybuty, w tym atrybuty NetBIOS przechowujące informacje o nazwie domeny i nazwie komputera.

psexec_salespc

Pierwszą maszyną docelową atakującego był host o nazwie SALES-PC.

Odpowiedź: SALES-PC

Pytanie 3
#

Knowing the username of the account the attacker used for authentication will give us insights into the extent of the breach. What is the username utilized by the attacker for authentication?

W tym samym pakiecie NTLM Response, który posłużył do identyfikacji nazwy hosta, dostępne są również pola User name oraz Host name. Zawierają one informacje o koncie użytym do uwierzytelnienia oraz o maszynie inicjującej połączenie. W analizowanym pakiecie odczytano następujące wartości:

psexec_att_user

Atakujący przeprowadził uwierzytelnienie przy użyciu konta ssales, a maszyna źródłowa nosi nazwę HR-PC. Brak przypisanej domeny (NULL) sugeruje użycie konta lokalnego.

Odpowiedź: ssales

Pytanie 4
#

After figuring out how the attacker moved within our network, we need to know what they did on the target machine. What's the name of the service executable the attacker set up on the target?

W celu identyfikacji przesyłanych plików wykonywalnych zastosowałem filtr smb2.filename contains "exe". Umożliwia on wyświetlenie wyłącznie pakietów SMB2 powiązanych z transferem plików, których nazwa zawiera rozszerzenie .exe.

Na liście wyników widoczne były żądania Create Request oraz Write Request dla pliku PSEXECSVC.exe. Jest to usługa instalowana przez PsExec na maszynie docelowej, odpowiedzialna za zdalne przyjmowanie i wykonywanie poleceń.

psexec_key_service

Odpowiedź: PSEXECSVC

Pytanie 5
#

We need to know how the attacker installed the service on the compromised machine to understand the attacker's lateral movement tactics. This can help identify other affected systems. Which network share was used by PsExec to install the service on the target machine?

Informacja o wykorzystanym share zawarta jest w atrybucie Tree Id pakietów SMB2, m.in. w pakiecie Create Response, File: PSEXECSVC.exe. W szczegółach jest następujący wpis:

psexec_admin_share

ADMIN$ share jest domyślnie mapowany na katalog C:\Windows. PsExec korzysta z niego w celu skopiowania pliku PSEXECSVC.exe na maszynę docelową przed jego uruchomieniem jako usługi systemowej. Dostęp do niego wymaga uprawnień administratora lokalnego lub domenowego.

Odpowiedź: ADMIN$

Pytanie 6
#

We must identify the network share used to communicate between the two machines. Which network share did PsExec use for communication?

Komunikacja między maszyną atakującego a zdalnie uruchomioną usługą PsExec odbywa się za pośrednictwem mechanizmu named pipes. W celu identyfikacji odpowiedniego share’u zastosowałem filtr smb2.filename contains "stdout", który ujawnił pakiety zawierające pliki PSEXESVC-HR-PC-7980-stdout oraz PSEXESVC-HR-PC-7980-stdin. Służą do przekierowania standardowego wejścia i wyjścia zdalnie wykonywanego procesu.

psexec_smb_outfile

W szczegółach analizowanych pakietów widoczny jest następujący share.

psexec_ipc

Share IPC$ służy do komunikacji między procesami za pośrednictwem sieci. PsExec wykorzystuje go jako kanał do przesyłania poleceń i odbierania wyników ich wykonania przez named pipes.

Odpowiedź: IPC$

Pytanie 7
#

Now that we have a clearer picture of the attacker's activities on the compromised machine, it's important to identify any further lateral movement. What is the hostname of the second machine the attacker targeted to pivot within our network?

Ponowna analiza statystyk hostów (Statistics -> Endpoints) wykazała podwyższoną aktywność adresu 10[.]0[.]0[.]131. Po zastosowaniu filtra ip.addr==10.0.0.131 potwierdzono, że sekwencja zdarzeń jest niemal identyczna jak w przypadku hosta 10[.]0[.]0[.]133: negocjacja protokołu SMB2, uwierzytelnienie NTLM, połączenie z ADMIN$ share oraz przesłanie pliku PSEXECSVC.exe.

psexec_131

Atakujący napotkał trudności z uwierzytelnieniem na hosta 10[.]0[.]0[.]131. Na podstawie filtra ntlmssp.auth.username == "jdoe" zidentyfikowano trzy nieudane próby logowania przy użyciu konta jdoe, zakończone odpowiedzią STATUS_LOGON_FAILURE. Dopiero czwarta próba z użyciem konta IEUser zakończyła się sukcesem i umożliwiła nawiązanie sesji SMB.

psexec_ieuser_success

Powyższe zachowanie sugeruje, że atakujący zastosował technikę password spraying lub dysponował zestawem skradzionych poświadczeń i systematycznie testował kolejne konta do momentu uzyskania dostępu.

Nazwę drugiej maszyny docelowej odczytano z atrybutów pakietu NTLMv2 Response - analogicznie jak w Pytaniu 2:

psexec_131_hostname

Odpowiedź: MARKETING-PC

Podsumowanie
#

Przeprowadzona analiza zrzutu PCAP pozwoliła na pełną rekonstrukcję przebiegu ataku lateral movement.

Etap 1
#

Host 10[.]0[.]0[.]130 (maszyna przejęta przez atakującego, hostname: HR-PC) nawiązał połączenie SMB z hostem 10[.]0[.]0[.]133 i przeprowadził pomyślne uwierzytelnienie NTLM przy użyciu konta ssales z uprawnieniami administracyjnymi.

Etap 2
#

PsExec za pośrednictwem ADMIN$ share skopiował plik PSEXECSVC.exe na maszynę 10[.]0[.]0[.]133 (hostname: SALES-PC) i uruchomił go jako usługę systemową. Komunikacja z uruchomioną usługą odbywała się przez IPC$ share z wykorzystaniem “named pipes” (stdin, stdout).

Etap 3
#

W ramach kolejnego etapu przemieszczania się w sieci atakujący podjął próbę uzyskania dostępu do hosta 10[.]0[.]0[.]131 (hostname: MARKETING-PC). Trzy próby z użyciem konta jdoe zakończyły się niepowodzeniem (STATUS_LOGON_FAILURE). Dostęp uzyskano dopiero po użyciu konta IEUser. Schemat działania (skopiowanie i uruchomienie PSEXECSVC.exe przez ADMIN$ share) był identyczny jak w przypadku lateral movementu na 10[.]0[.]0[.]133.

Techniki MITRE ATT&CK
#

IDTechnikaOpis
T1021.002Remote Services: SMB/Windows Admin SharesDostęp zdalny przez SMB
T1570Lateral Tool TransferPrzesłanie pliku PSEXECSVC.exe na hosty docelowe
T1078Valid AccountsUwierzytelnienie przy użyciu istniejących kont (ssales, IEUser)
T1110Brute ForceWielokrotne próby logowania z użyciem konta jdoe

IOC
#

IP (atakujący/przejęta maszyna)10[.]0[.]0[.]130
IP (ofiara 1)10[.]0[.]0[.]133
IP (ofiara 2)10[.]0[.]0[.]131
Hostname (atakujący/przejęta maszyna)HR-PC
Hostname (ofiara 1)SALES-PC
Hostname (ofiara 2)MARKETING-PC
Username (atakujący)ssales
ProcesPSEXECSVC.exe
Install shareADMIN$
Communication shareIPC$

Related

LLMNR/NBT-NS Poisoning (T1557.001)
·1793 słów·9 min
Blueteam Forensics Wireshark Windows
Analiza złośliwego ruchu sieciowego w AD - T1557.001
Android forensics - ALEAPP
·890 słów·5 min
Blueteam Forensics DFIR
Analiza zrzutu systemu Android z wykorzystaniem ALEAPP. Korelacja artefaktów oraz rekonstrukcja aktywności użytkownika na podstawie danych systemowych i aplikacyjnych.
OctoRAT - analiza statyczna
·1652 słów·8 min
Blueteam Malware Forensics
Malware .NET - Inżynieria wsteczna i analiza