Volatility - CheatSheet

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

​​RootedCON to najważniejsze wydarzenie z zakresu cyberbezpieczeństwa w Hiszpanii i jedno z najważniejszych w Europie. Mając misję promowania wiedzy technicznej, ten kongres jest gorącym punktem spotkań dla profesjonalistów technologii i cyberbezpieczeństwa we wszystkich dziedzinach.

Jeśli chcesz szybkie i szalone narzędzie, które uruchomi kilka wtyczek Volatility równolegle, możesz skorzystać z: https://github.com/carlospolop/autoVolatility

python autoVolatility.py -f MEMFILE -d OUT_DIRECTORY -e /home/user/tools/volatility/vol.py # It will use the most important plugins (could use a lot of space depending on the size of the memory)

Instalacja

volatility3

git clone https://github.com/volatilityfoundation/volatility3.git
cd volatility3
python3 setup.py install
python3 vol.py —h

volatility2

Download the executable from https://www.volatilityfoundation.org/26

Polecenia Volatility

Dostęp do oficjalnej dokumentacji znajdziesz w Referencji poleceń Volatility

Uwaga dotycząca wtyczek „list” vs. „scan”

Volatility ma dwa główne podejścia do wtyczek, które czasami odzwierciedlają się w ich nazwach. Wtyczki „list” będą próbować nawigować przez struktury jądra systemu Windows, aby odzyskać informacje, takie jak procesy (lokalizacja i przechodzenie przez listę połączoną struktur _EPROCESS w pamięci), uchwyty systemowe (lokalizacja i wylistowanie tabeli uchwytów, dereferencjonowanie znalezionych wskaźników, itp.). Zachowują się one mniej więcej tak, jakby system Windows API został poproszony o wylistowanie procesów.

To sprawia, że wtyczki „list” są dość szybkie, ale równie podatne na manipulację przez złośliwe oprogramowanie jak Windows API. Na przykład, jeśli złośliwe oprogramowanie użyje DKOM do odłączenia procesu od listy połączonej struktur _EPROCESS, nie pojawi się ono w Menedżerze zadań, ani w pslist.

Wtyczki „scan” z kolei podejmą podejście podobne do wycinania pamięci w poszukiwaniu rzeczy, które mogą mieć sens, gdy zostaną dereferencjonowane jako konkretne struktury. Na przykład psscan odczyta pamięć i spróbuje utworzyć obiekty _EPROCESS z niej (używa skanowania tagów puli, które polega na wyszukiwaniu 4-bajtowych ciągów wskazujących na obecność interesującej struktury). Zaletą jest to, że może wydobyć procesy, które zostały zakończone, a nawet jeśli złośliwe oprogramowanie ingeruje w listę połączoną struktur _EPROCESS, wtyczka nadal znajdzie strukturę pozostającą w pamięci (ponieważ musi nadal istnieć, aby proces mógł działać). Wada polega na tym, że wtyczki „scan” są nieco wolniejsze niż wtyczki „list” i czasami mogą dawać fałszywe wyniki (proces, który został zakończony zbyt dawno i którego części struktury zostały nadpisane przez inne operacje).

Źródło: http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/

Profile systemów operacyjnych

Volatility3

Jak wyjaśniono w pliku readme, musisz umieścić tabelę symboli systemu operacyjnego, który chcesz obsługiwać w volatility3/volatility/symbols. Pakiety tabel symboli dla różnych systemów operacyjnych są dostępne do pobrania pod adresem:

Volatility2

Profil zewnętrzny

Możesz uzyskać listę obsługiwanych profili wykonując:

./volatility_2.6_lin64_standalone --info | grep "Profile"

Jeśli chcesz użyć nowego profilu, który pobrałeś (na przykład profilu linux), musisz utworzyć gdzieś następującą strukturę folderów: plugins/overlays/linux i umieścić wewnątrz tego folderu plik zip zawierający profil. Następnie, uzyskaj numer profilu, korzystając z:

./vol --plugins=/home/kali/Desktop/ctfs/final/plugins --info
Volatility Foundation Volatility Framework 2.6


Profiles
--------
LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64 - A Profile for Linux CentOS7_3.10.0-123.el7.x86_64_profile x64
VistaSP0x64                                   - A Profile for Windows Vista SP0 x64
VistaSP0x86                                   - A Profile for Windows Vista SP0 x86

Możesz pobrać profile Linuxa i Maca z https://github.com/volatilityfoundation/profiles

W poprzednim fragmencie możesz zobaczyć, że profil nazywa się LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64, i możesz go użyć do wykonania czegoś w stylu:

./vol -f file.dmp --plugins=. --profile=LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64 linux_netscan

Odkryj profil

volatility imageinfo -f file.dmp
volatility kdbgscan -f file.dmp

Różnice między imageinfo a kdbgscan

Z tej strony: W przeciwieństwie do imageinfo, które po prostu proponuje profile, kdbgscan jest zaprojektowany do pozytywnego zidentyfikowania poprawnego profilu i poprawnego adresu KDBG (jeśli istnieje ich kilka). Ten plugin skanuje sygnatury nagłówka KDBG powiązane z profilami Volatility i stosuje testy spójności w celu zmniejszenia fałszywych wyników. Natężenie wyników i liczba testów spójności, które można przeprowadzić, zależy od tego, czy Volatility może znaleźć DTB, więc jeśli już znasz poprawny profil (lub jeśli masz sugestię profilu z imageinfo), upewnij się, że go używasz.

Zawsze sprawdź liczbę procesów, które znalazł kdbgscan. Czasami imageinfo i kdbgscan mogą znaleźć więcej niż jeden odpowiedni profil, ale tylko ten poprawny będzie miał związane z nim pewne procesy (Dzieje się tak, ponieważ do wyodrębnienia procesów potrzebny jest poprawny adres KDBG)

# GOOD
PsActiveProcessHead           : 0xfffff800011977f0 (37 processes)
PsLoadedModuleList            : 0xfffff8000119aae0 (116 modules)
# BAD
PsActiveProcessHead           : 0xfffff800011947f0 (0 processes)
PsLoadedModuleList            : 0xfffff80001197ac0 (0 modules)

KDBG

Blok debugera jądra, określany jako KDBG przez narzędzie Volatility, jest kluczowy dla zadań z zakresu forensyki wykonywanych przez Volatility oraz różne debuggery. Zidentyfikowany jako KdDebuggerDataBlock i typu _KDDEBUGGER_DATA64, zawiera istotne odwołania, takie jak PsActiveProcessHead. To konkretne odwołanie wskazuje na początek listy procesów, umożliwiając wylistowanie wszystkich procesów, co jest fundamentalne dla dokładnej analizy pamięci.

Informacje o systemie

#vol3 has a plugin to give OS information (note that imageinfo from vol2 will give you OS info)
./vol.py -f file.dmp windows.info.Info

Wtyczka banners.Banners może być użyta w vol3 do próby znalezienia banerów systemu Linux w zrzucie.

Skróty/Hasła

Wyodrębnij skróty SAM, bufory pamięci podręcznej domeny i sekrety LSA.

./vol.py -f file.dmp windows.hashdump.Hashdump #Grab common windows hashes (SAM+SYSTEM)
./vol.py -f file.dmp windows.cachedump.Cachedump #Grab domain cache hashes inside the registry
./vol.py -f file.dmp windows.lsadump.Lsadump #Grab lsa secrets

Wolatility Cheat Sheet

Basic Commands

  • Image info: vol.py -f <memory_dump> imageinfo

  • Running processes: vol.py -f <memory_dump> --profile=<profile> pslist

  • Dumping a process: vol.py -f <memory_dump> --profile=<profile> procdump -p <pid> -D <output_directory>

  • File scan: vol.py -f <memory_dump> --profile=<profile> filescan

  • Yara scan: vol.py -f <memory_dump> --profile=<profile> yarascan --yara-rules=<rules_file>

Plugins

  • Check for rootkits: vol.py -f <memory_dump> --profile=<profile> malfind

  • Network connections: vol.py -f <memory_dump> --profile=<profile> connscan

  • Registry analysis: vol.py -f <memory_dump> --profile=<profile> printkey -K <registry_key>

  • Detecting hidden processes: vol.py -f <memory_dump> --profile=<profile> psxview

Memory Analysis

  • Identifying injected code: vol.py -f <memory_dump> --profile=<profile> malfind

  • Detecting API hooks: vol.py -f <memory_dump> --profile=<profile> apihooks

  • Finding hidden processes: vol.py -f <memory_dump> --profile=<profile> ldrmodules

Timeline Analysis

  • Listing processes by start time: vol.py -f <memory_dump> --profile=<profile> pstree

  • Listing all processes with creation time: voljson.py -f <memory_dump> --profile=<profile> pslist

Network Analysis

  • Listing open sockets: vol.py -f <memory_dump> --profile=<profile> sockets

  • Listing network connections: vol.py -f <memory_dump> --profile=<profile> connscan

  • Listing DLLs loaded by a process: vol.py -f <memory_dump> --profile=<profile> dlllist -p <pid>

User Activity Analysis

  • Listing user accounts: vol.py -f <memory_dump> --profile=<profile> useraccounts

  • Listing user sessions: vol.py -f <memory_dump> --profile=<profile> sessions

  • Listing user activity: vol.py -f <memory_dump> --profile=<profile> userassist

volatility --profile=Win7SP1x86_23418 hashdump -f file.dmp #Grab common windows hashes (SAM+SYSTEM)
volatility --profile=Win7SP1x86_23418 cachedump -f file.dmp #Grab domain cache hashes inside the registry
volatility --profile=Win7SP1x86_23418 lsadump -f file.dmp #Grab lsa secrets

Zrzut pamięci

Zrzut pamięci procesu wydobędzie wszystko z bieżącego stanu procesu. Moduł procdump wydobędzie tylko kod.

volatility -f file.dmp --profile=Win7SP1x86 memdump -p 2168 -D conhost/

​​​RootedCON to najważniejsze wydarzenie z zakresu cyberbezpieczeństwa w Hiszpanii i jedno z najważniejszych w Europie. Mając misję promowania wiedzy technicznej, ten kongres stanowi gorące miejsce spotkań dla profesjonalistów technologii i cyberbezpieczeństwa we wszystkich dziedzinach.

Procesy

Wyświetlanie procesów

Spróbuj znaleźć podejrzane procesy (po nazwie) lub niespodziewane procesy potomne (na przykład cmd.exe jako proces potomny iexplorer.exe). Może być interesujące porównanie wyników pslist z wynikami psscan w celu zidentyfikowania ukrytych procesów.

python3 vol.py -f file.dmp windows.pstree.PsTree # Get processes tree (not hidden)
python3 vol.py -f file.dmp windows.pslist.PsList # Get process list (EPROCESS)
python3 vol.py -f file.dmp windows.psscan.PsScan # Get hidden process list(malware)

Polecenia wykonane w cmd.exe są zarządzane przez conhost.exe (lub csrss.exe w systemach przed Windows 7). Oznacza to, że jeśli cmd.exe zostanie zakończony przez atakującego przed uzyskaniem zrzutu pamięci, nadal można odzyskać historię poleceń sesji z pamięci conhost.exe. Aby to zrobić, jeśli wykryto nietypową aktywność w modułach konsoli, należy wykonać zrzut pamięci procesu powiązanego z conhost.exe. Następnie, wyszukując ciągi znaków w tym zrzucie, można potencjalnie wyodrębnić używane w sesji linie poleceń.

Środowisko

Pobierz zmienne środowiskowe każdego działającego procesu. Mogą tam być interesujące wartości.

python3 vol.py -f file.dmp windows.envars.Envars [--pid <pid>] #Display process environment variables

Podstawowa metodyka analizy dumpa pamięci za pomocą narzędzia Volatility

Ogólne polecenia

  • imageinfo - Wyświetla informacje o obrazie pamięci

  • kdbgscan - Skanuje pamięć w poszukiwaniu struktury KDBG

  • pslist - Wyświetla listę procesów

  • pstree - Wyświetla drzewo procesów

  • dlllist - Wyświetla listę załadowanych bibliotek dynamicznych

  • handles - Wyświetla listę uchwytów procesów

  • filescan - Skanuje pamięć w poszukiwaniu struktur plików

  • cmdline - Wyświetla argumenty wiersza poleceń dla procesów

  • consoles - Wyświetla listę konsol procesów

  • vadinfo - Wyświetla informacje o regionach pamięci VAD

  • vadtree - Wyświetla drzewo regionów pamięci VAD

  • malfind - Skanuje pamięć w poszukiwaniu podejrzanych zachowań

  • ldrmodules - Wyświetla listę modułów załadowanych przez procesy

  • apihooks - Wyświetla informacje o hakach API

  • svcscan - Skanuje pamięć w poszukiwaniu baz danych usług

  • connections - Wyświetla listę otwartych połączeń

  • sockets - Wyświetla listę otwartych gniazd

  • devicetree - Wyświetla drzewo urządzeń

  • modscan - Skanuje pamięć w poszukiwaniu modułów jądra

  • ssdt - Wyświetla informacje o SSDT

  • callbacks - Wyświetla informacje o callbackach

  • gdt - Wyświetla informacje o GDT

  • idt - Wyświetla informacje o IDT

  • driverscan - Skanuje pamięć w poszukiwaniu sterowników

  • yarascan - Skanuje pamięć przy użyciu reguł YARA

  • dumpfiles - Wyodrębnia pliki z dumpa pamięci

  • dumpregistry - Wyodrębnia rejestr z dumpa pamięci

  • memmap - Wyświetla mapę pamięci

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Skanuje pamięć w poszukiwaniu obiektów atomowych

  • atomscan - Sk

volatility --profile=PROFILE envars -f file.dmp [--pid <pid>] #Display process environment variables

volatility --profile=PROFILE -f file.dmp linux_psenv [-p <pid>] #Get env of process. runlevel var means the runlevel where the proc is initated

Uprawnienia tokenów

Sprawdź uprawnienia tokenów w nieoczekiwanych usługach. Może być interesujące wymienić procesy korzystające z pewnego uprzywilejowanego tokenu.

#Get enabled privileges of some processes
python3 vol.py -f file.dmp windows.privileges.Privs [--pid <pid>]
#Get all processes with interesting privileges
python3 vol.py -f file.dmp windows.privileges.Privs | grep "SeImpersonatePrivilege\|SeAssignPrimaryPrivilege\|SeTcbPrivilege\|SeBackupPrivilege\|SeRestorePrivilege\|SeCreateTokenPrivilege\|SeLoadDriverPrivilege\|SeTakeOwnershipPrivilege\|SeDebugPrivilege"

Wolatility Cheat Sheet

Basic Commands

  • Image info: vol.py -f <memory_dump> imageinfo

  • Running processes: vol.py -f <memory_dump> --profile=<profile> pslist

  • Dump process: vol.py -f <memory_dump> --profile=<profile> memdump -p <pid> -D <output_directory>

  • File scan: vol.py -f <memory_dump> --profile=<profile> filescan

Malware Analysis

  • Malware scan: vol.py -f <memory_dump> --profile=<profile> malscan

  • Yara scan: vol.py -f <memory_dump> --profile=<profile> yarascan --yara-rules=<rules_file>

Network Analysis

  • Network connections: vol.py -f <memory_dump> --profile=<profile> connscan

  • Sockets: vol.py -f <memory_dump> --profile=<profile> sockets

  • Connections by process: vol.py -f <memory_dump> --profile=<profile> connscan -p <pid>

Registry Analysis

  • Registry hives: vol.py -f <memory_dump> --profile=<profile> hivelist

  • Dump registry: vol.py -f <memory_dump> --profile=<profile> printkey -o <offset>

  • UserAssist: vol.py -f <memory_dump> --profile=<profile> userassist

Timeline Analysis

  • Timeliner: vol.py -f <memory_dump> --profile=<profile> timeliner

Other Commands

  • API hooks: vol.py -f <memory_dump> --profile=<profile> apihooks

  • Driver modules: vol.py -f <memory_dump> --profile=<profile> modscan

  • SSDT: vol.py -f <memory_dump> --profile=<profile> ssdt

  • Handles: vol.py -f <memory_dump> --profile=<profile> handles

  • Privileges: vol.py -f <memory_dump> --profile=<profile> privs

  • Crashinfo: vol.py -f <memory_dump> --profile=<profile> crashinfo

Volatility Plugins

  • List available plugins: vol.py --info | grep -i <keyword>

  • Run a specific plugin: vol.py -f <memory_dump> --profile=<profile> <plugin_name>

#Get enabled privileges of some processes
volatility --profile=Win7SP1x86_23418 privs --pid=3152 -f file.dmp | grep Enabled
#Get all processes with interesting privileges
volatility --profile=Win7SP1x86_23418 privs -f file.dmp | grep "SeImpersonatePrivilege\|SeAssignPrimaryPrivilege\|SeTcbPrivilege\|SeBackupPrivilege\|SeRestorePrivilege\|SeCreateTokenPrivilege\|SeLoadDriverPrivilege\|SeTakeOwnershipPrivilege\|SeDebugPrivilege"

SIDs

Sprawdź każde SSID posiadane przez proces. Może być interesujące wymienić procesy korzystające z SID uprawnień (oraz procesy korzystające z pewnego SID usługi).

./vol.py -f file.dmp windows.getsids.GetSIDs [--pid <pid>] #Get SIDs of processes
./vol.py -f file.dmp windows.getservicesids.GetServiceSIDs #Get the SID of services

Metodologia analizy dumpa pamięci za pomocą narzędzia Volatility:

  1. Zbieranie informacji o systemie:

    • imageinfo: Pobierz podstawowe informacje o dumpie pamięci.

    • kdbgscan: Znajdź adres Debug Data Block.

    • dt: Wyświetl informacje o typach danych.

  2. Analiza procesów:

    • pslist: Wyświetl listę procesów.

    • pstree: Wyświetl drzewo procesów.

    • psscan: Skanuj procesy w poszukiwaniu ukrytych.

  3. Analiza modułów:

    • modlist: Wyświetl listę załadowanych modułów.

    • modscan: Znajdź moduły w pamięci.

  4. Analiza zasobów:

    • handles: Wyświetl otwarte uchwyty.

    • dlllist: Wyświetl listę załadowanych bibliotek.

  5. Analiza rejestrów:

    • hivelist: Wyświetl listę załadowanych plików rejestru.

    • printkey: Wyświetl zawartość klucza rejestru.

  6. Analiza sieci:

    • netscan: Skanuj otwarte porty i połączenia sieciowe.

    • connections: Wyświetl otwarte połączenia.

  7. Analiza plików: