Jak wykrywać ukryte procesy i backdoory przy użyciu Volatility 3 i technik pamięciowych
Jak wykrywać ukryte procesy i backdoory przy użyciu Volatility 3 i technik pamięciowych
Ukryte procesy, rootkity oraz backdoory to jedne z najtrudniejszych do wykrycia elementów złośliwego oprogramowania. Działają często poniżej poziomu systemu operacyjnego, manipulując strukturami pamięci, aby uniknąć widoczności w narzędziach takich jak ps, tasklist, top, Menedżer zadań czy nawet zaawansowane skanery AV.
Volatility 3, najnowsza wersja popularnego frameworka do analizy pamięci RAM, pozwala wykrywać takie zagrożenia dzięki analizie surowych struktur jądra, tabel procesów i obiektów, których nie da się łatwo ukryć. W tym artykule pokazuję, jak krok po kroku wykrywać ukryte procesy i backdoory, wykorzystując techniki pamięciowe oraz moduły Volatility 3.
1. Dlaczego analiza pamięci jest kluczowa przy wykrywaniu ukrytych procesów?
Ukryte procesy (np. poprzez hooking, DKOM, manipulację EPROCESS lub task_struct) mogą:
- nie występować na liście procesów,
- ukrywać swoje moduły,
- wycinać się z drzewka rodzic–dziecko,
- usuwać ślady w logach,
- ukrywać swoje porty i połączenia sieciowe.
Jednak nie mogą całkowicie usunąć śladów ze struktur pamięci jądra, takich jak:
- EPROCESS (Windows),
- task_struct (Linux),
- listy aktywnych wątków,
- VAD-y i mapowania pamięci,
KernelCallbackTable,- tablice handle’ów.
Dlatego forensic memory analysis jest skuteczniejsza niż skanery w systemie live.

2. Przygotowanie: pozyskanie obrazu pamięci RAM
Volatility 3 pracuje na obrazach pamięci:
- Windows:
.raw,.mem,.dmp - Linux: dump z LiME
- MacOS:
.raw
Przykładowe przechwycenie z użyciem winpmem:
winpmem.exe --format raw --output memory.raw
Lub w Linux:
sudo insmod lime.ko "path=/mnt/memdump.raw format=raw"
Po wykonaniu dumpu analizujemy go offline — to najbardziej bezpieczna i wiarygodna metoda.
3. Analiza procesów w Volatility 3 – fundamenty wykrywania ukrytych procesów
Wylistowanie procesów widocznych w systemie
vol3 -f memory.raw windows.pslist
Moduł analizuje powiązaną listę EPROCESS → ActiveProcessLinks.
Wykrywanie ukrytych procesów (technika cross-view)
Ukryty proces to taki, który:
- istnieje w pamięci,
- ale został odłączony od ActiveProcessLinks.
Dlatego porównujemy kilka widoków.
4. Wykrywanie ukrytych procesów – cross-view detection
1. pslist vs psscan
psscan przeszukuje pamięć surowo, ignorując listy systemowe.
vol3 -f memory.raw windows.psscan
Jeśli proces widnieje w psscan, ale nie ma go w pslist, oznacza to:
- ukryty proces (rootkit),
- martwy proces „zombie”,
- proces w trakcie usuwania,
- manipulację DKOM.
2. pstree vs pslist
vol3 -f memory.raw windows.pstree
Ukrycie powiązań rodzicielskich często oznacza techniki stealth:
- proces bez rodzica,
- proces adoptowany przez system,
- proces parent spoofing.
5. Analiza atrybutów procesów – wykrywanie manipulacji DKOM
Rootkity często manipulują:
- terminacją procesów,
- flagami ExitStatus,
- wskaźnikami do modułów,
- obiektami tokenów (eskalacja uprawnień).
Sprawdź:
vol3 -f memory.raw windows.getservicesids
vol3 -f memory.raw windows.getsids
Proces działający z niepasującymi SID-ami to sygnał backdoora.
6. Wykrywanie ukrytych wątków i nietypowych połączeń sieciowych
Ukryte wątki:
vol3 -f memory.raw windows.threads
Ukryty malware może tworzyć wątki w cudzym procesie (DLL injection / APC injection).
Połączenia sieciowe:
vol3 -f memory.raw windows.netscan
Wskazówki:
- proces nieistniejący w pslist → podejrzany,
- porty otwarte bez procesu–rodzica,
- połączenia do TOR/hidden services.
7. Analiza modułów załadowanych przez proces
Ukryte moduły → technika module unlinking.
Sprawdzamy:
vol3 -f memory.raw windows.dlllist
Jeśli moduł znajduje się w pamięci, ale:
- nie ma go na liście DLL,
- nie ma nazwy,
- ma adres spoza legalnych mapowań,
to sygnał:
- reflective DLL injection,
- manual map,
- malicious loader,
- backdoor kernelowy.
8. Analiza jądra – wykrywanie rootkitów kernelowych
1. Moduły kernelowe
vol3 -f memory.raw windows.modscan
Jeśli moduł widoczny w modscan, ale nie w oficjalnej liście sterowników, to klasyczny rootkit DKOM.
2. Hooki SSDT / IDT / IRP
Volatility 3 wspiera analizę tabel systemowych:
vol3 -f memory.raw windows.ssdt
vol3 -f memory.raw windows.idt
Nieregularne wskaźniki, skoki do nieznanych adresów lub przestrzeni user mode oznaczają:
- keylogger kernelowy,
- rootkit przechwytujący system calls,
- backdoor interceptujący ruch sieciowy.
9. Wykrywanie backdoorów w shellcode i pamięci użytkownika
1. Malfind – analiza podejrzeń injekcji
vol3 -f memory.raw windows.malfind
Wynik zawiera:
- nieoznaczone regiony pamięci,
- kod wykonywalny w sekcji RWX lub RX,
- fragmenty shellcode,
- fragmenty PE bez nagłówków (manual mapping).
2. Heurystyka backdoorów
Jeśli proces:
- ma podejrzane VAD-y,
- otwiera ukryte porty,
- ma nieznane PDO/handle,
- posiada RWX page z kodem wykonywalnym,
— może być loaderem, C2 lub implantem.
10. Korelacja zdarzeń – jak potwierdzić backdoor?
Sprawdzamy:
- nazwy procesów niezgodne z hashami,
- procesy z nietypowym parent PID,
- procesy bez ścieżki binarnej,
- procesy z nietypowymi SID-ami lub tokenami,
- dziwne połączenia zewnętrzne,
- brak DLL w dlllist, ale obecne VAD-y z kodem.
11. Przykładowy workflow wykrywania ukrytego procesu
pslist– lista widocznych procesówpsscan– lista faktyczna- porównanie → wykrycie ukrytego procesu
malfind→ analiza kodunetscan→ sprawdzenie połączeńdlllist/vadinfo→ sprawdzenie modułówmodscan/ssdt→ wykrycie hooków- korelacja zdarzeń → potwierdzenie backdoora
Podsumowanie
Volatility 3 i techniki analizy pamięci pozwalają wykryć:
- ukryte procesy,
- rootkity,
- moduły kernelowe działające poza listami systemowymi,
- backdoory komunikujące się z zewnątrz,
- zastrzyki DLL i shellcode,
- manipulacje strukturami jądra (DKOM),
- stealth malware działający niewidocznie w systemie live.
To jedna z najskuteczniejszych metod detekcji zagrożeń, których nie wychwycą klasyczne AV czy EDR — bo działają na poziomie użytkownika, a nie na poziomie surowych obiektów pamięci.






