
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:
- Mniej artefaktów na dysku → mniejsza szansa na detekcję sygnaturową.
- Etapy wyglądają niewinnie w izolacji: cmd.exe, PowerShell, curl, archiwum ZIP, Python — wszystko bywa legalne w środowiskach IT.
- 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)
- Domeny C2/infrastruktura:
- Pliki/artefakty: non.bat, spol.bat, runn.py, new.bin, pul.bin, xn.bin, a.json, p.json, n.json
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)
- 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.
- Poluj na artefakty: obecność non.bat, spol.bat, plików *.bin i *.json w katalogach użytkownika / temp / appdata.
- 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
- The Hacker News – „Multi-Stage VOID#GEIST Malware Delivering XWorm, AsyncRAT, and Xeno RAT” (06.03.2026). (The Hacker News)
- Securonix Threat Research – „VOID#GEIST: Stealthy Multi-Stage Python Loader…” (17.02.2026). (Securonix)
- MITRE ATT&CK – T1055.004 Process Injection: Asynchronous Procedure Call (w tym wariant Early Bird). (MITRE ATT&CK)
- MITRE ATT&CK – T1547.001 Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder. (MITRE ATT&CK)







