Volatility to otwartoźródłowy framework do analizy zrzutów pamięci RAM (memory forensics). Odtwarza działające procesy, otwarte połączenia sieciowe, załadowane moduły jądra i fragmenty danych, które nigdy nie trafiły na dysk. Po restarcie to wszystko znika — procesy ukryte przez rootkity, połączenia C&C, hasła w pamięci, zdekompresowany malware, historia powłoki. Zrzut RAM wykonany przed restartem zachowuje te dowody do analizy.

Jak działa Volatility?

Proces analizy składa się z dwóch głównych elementów:

  1. Zrzut pamięci (Memory Dump): Najpierw musimy uzyskać “kopię” całej zawartości pamięci RAM. Można to zrobić za pomocą narzędzi takich jak LiME (Linux Memory Extractor) lub poprzez zrobienie snapshotu maszyny wirtualnej.
  2. Profil systemu: Volatility musi wiedzieć, jak zinterpretować surowe dane. Każda wersja jądra Linuksa ma nieco inną strukturę danych w pamięci. “Profil” to zestaw informacji, który mówi Volatility, jak znaleźć procesy, połączenia sieciowe itp. w zrzucie z konkretnej wersji systemu (np. Linux_5_4_0-42-generic_x64).

Podstawowe komendy (wtyczki)

Volatility działa w oparciu o wtyczki. Poniższe przykłady dotyczą Volatility 2. Nowsza wersja, Volatility 3, ma zmienioną składnię (np. vol -f dump.raw linux.pslist) i nie używa profili. Oto kilka z najważniejszych wtyczek Volatility 2:

  • imageinfo: Próbuje automatycznie zidentyfikować profil systemu na podstawie zrzutu. Pierwszy krok w każdej analizie.
  • pslist: Wyświetla listę procesów działających w momencie zrzutu (podobne do ps -ef).
  • pstree: Pokazuje procesy w formie drzewa, co ułatwia znalezienie procesów-rodziców.
  • netscan: Skanuje w poszukiwaniu aktywnych połączeń sieciowych.
  • cmdline: Pokazuje, z jakimi argumentami został uruchomiony dany proces.
  • filescan: Próbuje znaleźć otwarte pliki w pamięci.
  • linux_bash: Odzyskuje historię komend wpisywanych w powłoce bash.

Przykład praktyczny

Wyobraź sobie, że serwer został skompromitowany. Udało Ci się zrobić zrzut pamięci do pliku dump.raw.

  1. Identyfikacja systemu:

    volatility -f dump.raw imageinfo
    

    Volatility sugeruje profil Linux_5_15_0-generic_x64.

  2. Listowanie procesów:

    volatility -f dump.raw --profile=Linux_5_15_0-generic_x64 pslist
    

    Na liście zauważasz podejrzany proces kworkerds, który wygląda jak literówka mająca naśladować legalny proces kworker.

  3. Sprawdzenie połączeń sieciowych:

    volatility -f dump.raw --profile=Linux_5_15_0-generic_x64 netscan
    

    Okazuje się, że proces kworkerds utrzymuje aktywne połączenie z adresem IP w Chinach.

  4. Sprawdzenie linii komend:

    volatility -f dump.raw --profile=Linux_5_15_0-generic_x64 cmdline
    

    Widzisz, że proces został uruchomiony z podejrzanymi argumentami: /tmp/kworkerds -o stratum+tcp://pool.example.com:1234 -u ... - to wygląda na koparkę kryptowalut!

Nowsza wersja jest opisana w artykule o Volatility 3, który obejmuje zaktualizowany interfejs i podejście oparte na tablicach symboli.