VOID#GEIST: wieloetapowy, „fileless” łańcuch infekcji, który dowozi XWorm, AsyncRAT i XenoRAT

securitybeztabu.pl 1 dzień temu

Wprowadzenie do problemu / definicja luki

VOID#GEIST to nazwa kampanii opisanej przez Securonix, w której atakujący odchodzą od typowych plików wykonywalnych PE na rzecz łańcucha opartego o skrypty i uruchamianie ładunków w pamięci. Zamiast „klasycznego EXE”, ofiara widzi (pozornie) zwykłą czynność — np. otwarcie dokumentu — podczas gdy w tle uruchamiane są kolejne etapy infekcji: batch, PowerShell, pobranie legalnego środowiska Python oraz finalne wstrzyknięcie shellcode do procesu explorer.exe.

W skrócie

  • Nośnik/launcher: obfuskowany skrypt BAT (m.in. non.bat), dystrybuowany m.in. w kampaniach phishingowych i pobierany z domen w modelu TryCloudflare.
  • Kamuflaż: wabik w postaci PDF otwieranego w Chrome (socjotechnika i „odwrócenie uwagi”).
  • Persistencja: drugi BAT (np. spol.bat) w Startup folder użytkownika — bez eskalacji uprawnień.
  • Rdzeń: pobranie legalnego Python embedded runtime z python.org, a następnie odszyfrowanie i uruchomienie w pamięci shellcode odpowiadającego trzem rodzinom RAT: XWorm, AsyncRAT, XenoRAT.
  • Technika wykonania: Early Bird APC injection (MITRE ATT&CK: T1055.004) do nowych instancji explorer.exe.

Kontekst / historia / powiązania

Wzorzec „script-first + living-off-the-land + fileless” to trend, który w praktyce daje atakującym kilka przewag:

  1. Mniej artefaktów na dysku → mniejsza szansa na detekcję sygnaturową.
  2. Etapy wyglądają niewinnie w izolacji: cmd.exe, PowerShell, curl, archiwum ZIP, Python — wszystko bywa legalne w środowiskach IT.
  3. Szybka rotacja infrastruktury (np. przez Cloudflare Tunnel/TryCloudflare) utrudnia blokowanie IOC w dłuższym horyzoncie.

VOID#GEIST jest dobrym przykładem dojrzałej „operacyjnej” kampanii: łączy psychologię (wabik PDF), stealth (ukryty relaunch), przenośność (Python embedded) i technikę wstrzyknięcia do zaufanego procesu.

Analiza techniczna / szczegóły łańcucha infekcji

Poniżej najczęściej opisywany przebieg (na podstawie analizy Securonix i streszczenia THN):

Etap A: non.bat jako punkt wejścia

  • Uruchomienie przez cmd.exe /c ...\non.bat rozpoczyna orkiestrację infekcji.
  • Skrypt bywa pobierany z adresów typu TryCloudflare (przykładowo obserwowano hosty w tej domenie).

Etap B: Wabik PDF (odwrócenie uwagi)

  • Securonix opisuje otwieranie Chrome z URL-em do „faktury” (PDF) hostowanej na zaufanie wyglądającej domenie. Klucz: to nie exploit, tylko zasłona dymna, gdy w tle lecą kolejne kroki.

Etap C: Ukryty relaunch przez PowerShell

  • PowerShell startuje non.bat ponownie z ukrytą konsolą (-WindowStyle Hidden) i parametrem sterującym logiką skryptu (np. tryb „h”).
  • To pozwala wykonać staging bez „migających” okien cmd.exe i bez zwracania uwagi użytkownika.

Etap D: Staging narzędzi + Python embedded runtime

  • Kampania pobiera oficjalny pakiet embedded Pythona (w raporcie wskazywany jest wariant Python 3.10 embedded dla Windows) bezpośrednio z python.org.
  • To istotny moment: ruch do legalnej domeny jest często mniej podejrzany, a jednocześnie zapewnia środowisko uruchomieniowe niezależne od tego, czy Python jest zainstalowany na stacji.

Etap E: Shellcode, XOR i wykonanie „fileless”

  • Ładunki RAT są dostarczane jako zaszyfrowane bloby (np. new.bin, pul.bin, xn.bin) i odszyfrowywane w locie z użyciem materiału klucza w plikach JSON (np. a.json, p.json, n.json).
  • Następnie payloady są wstrzykiwane do oddzielnych instancji explorer.exe i wykonywane bez zapisu odszyfrowanego EXE na dysku.

Etap F: Early Bird APC injection do explorer.exe

  • Technika wskazywana wprost to Early Bird APC injection (MITRE: T1055.004 Asynchronous Procedure Call), czyli wstrzyknięcie przed pełnym „rozruchem” procesu i potencjalnymi hookami/telemetrią bezpieczeństwa.

Etap G: Beaconing / potwierdzenie infekcji

  • Łańcuch kończy się lekkim beaconem HTTP (np. sygnał „success”) do infrastruktury kontrolowanej przez atakujących, również hostowanej w TryCloudflare.

Przykładowe IOC z raportu Securonix (wycinek)

Praktyczne konsekwencje / ryzyko

Jeśli VOID#GEIST z powodzeniem dostarczy RAT (XWorm/AsyncRAT/XenoRAT), organizacja zwykle ryzykuje:

  • Zdalne sterowanie stacją (RAT), kradzież danych i poświadczeń, rekonesans AD, lateral movement.
  • Trudniejszą detekcję, bo payload działa w pamięci, a wykonanie jest „opakowane” w legalne narzędzia.
  • Persistencję na poziomie użytkownika (Startup folder) — szczególnie problematyczną w środowiskach z luźniejszymi politykami uruchamiania skryptów.

Rekomendacje operacyjne / co zrobić teraz

Szybkie działania (0–24h)

  1. Blokuj i monitoruj ruch do podejrzanych subdomen trycloudflare.com (z naciskiem na IOC z raportu) oraz nietypowe połączenia wychodzące inicjowane przez explorer.exe.
  2. Poluj na artefakty: obecność non.bat, spol.bat, plików *.bin i *.json w katalogach użytkownika / temp / appdata.
  3. Sprawdź Startup folder użytkowników pod kątem świeżych BAT/skrótów i nietypowych wpisów autostartu.

Utwardzenie (1–7 dni)

  • WDAC/AppLocker: ogranicz uruchamianie .bat, .ps1, .js, .vbs z katalogów użytkownika i profili przeglądarek/poczty.
  • Włącz i zbieraj:
    • PowerShell Script Block Logging (często najważniejsze w kampaniach z obfuskacją)
    • Sysmon/EDR telemetrię pod kątem tworzenia procesu w stanie CREATE_SUSPENDED, alokacji pamięci w obcym procesie i kolejki APC (typowe sekwencje dla T1055.004).
  • Monitoruj pobrania z python.org w organizacjach, gdzie to nietypowe (np. nagły download embedded runtime na stacjach biurowych).

Hunting (ciągłe)

  • Koreluj: powershell.exe → ukryty start non.bat → curl/pobrania ZIP → uruchomienie python z nietypowymi argumentami → nowe instancje explorer.exe + nietypowy ruch sieciowy.
  • Poluj na zachowanie opisane w MITRE dla APC/Early Bird injection (T1055.004), bo to często wspólny mianownik dla „fileless” loaderów.

Różnice / porównania z innymi przypadkami

VOID#GEIST wyróżnia się tym, że:

  • Stawia na „portable execution environment” przez Python embedded pobrany z legalnego źródła (zmniejsza zależność od konfiguracji hosta).
  • Łączy „human evasion” (PDF-wabik) z „EDR evasion” (wstrzyknięcie Early Bird APC) w jednym, spójnym łańcuchu.
  • Rozdziela wykonanie payloadów do oddzielnych procesów explorer.exe, co zwiększa odporność operacyjną (awaria jednego nie musi kończyć całej operacji).

Podsumowanie / najważniejsze wnioski

  • VOID#GEIST to kampania, która dobrze pokazuje, jak współczesne infekcje wygrywają „prostotą w etapach”: każdy krok wygląda legalnie, ale suma daje pełną kompromitację.
  • Najbardziej newralgiczne punkty obrony to: kontrola uruchamiania skryptów, telemetria PowerShell, oraz detekcja in-memory injection (szczególnie APC/Early Bird).
  • Jeśli Twoje środowisko nie używa Pythona na endpointach: alert na embedded runtime z python.org może być bardzo skutecznym sygnałem.

Źródła / bibliografia

  1. The Hacker News – „Multi-Stage VOID#GEIST Malware Delivering XWorm, AsyncRAT, and Xeno RAT” (06.03.2026). (The Hacker News)
  2. Securonix Threat Research – „VOID#GEIST: Stealthy Multi-Stage Python Loader…” (17.02.2026). (Securonix)
  3. MITRE ATT&CK – T1055.004 Process Injection: Asynchronous Procedure Call (w tym wariant Early Bird). (MITRE ATT&CK)
  4. MITRE ATT&CK – T1547.001 Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder. (MITRE ATT&CK)
Idź do oryginalnego materiału