Volatility - CheatSheet
Reading time: 22 minutes
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
â
As jy 'n hulpmiddel nodig het wat geheue-analise outomatiseer met verskillende skandeervlakke en verskeie Volatility3-plug-ins gelyktydig uitvoer, kan jy autoVolatility3 gebruik:: https://github.com/H3xKatana/autoVolatility3/
# Full scan (runs all plugins)
python3 autovol3.py -f MEMFILE -o OUT_DIR -s full
# Minimal scan (runs a limited set of plugins)
python3 autovol3.py -f MEMFILE -o OUT_DIR -s minimal
# Normal scan (runs a balanced set of plugins)
python3 autovol3.py -f MEMFILE -o OUT_DIR -s normal
As jy iets vinnige en mal wil hĂȘ wat verskeie Volatility-inproppe parallel kan begin, kan jy gebruik maak van: 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)
Installasie
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
Volatility Opdragte
Toegang tot die amptelike dokumentasie in Volatility command reference
'n Nota oor âlistâ teenoor âscanâ plugins
Volatility het twee hoofbenaderings tot plugins, wat soms in hul name weerspieĂ«l word. âlistâ plugins sal probeer om deur Windows Kernel-strukture te navigeer om inligting soos prosesse (lokaliseer en loop deur die gekoppelde lys van _EPROCESS
strukture in geheue), OS-handvatsels (lokaliseer en lys die handvatsel tabel, dereferensie enige punte wat gevind word, ens.). Hulle gedra hulle min of meer soos die Windows API sou as daar gevra word om, byvoorbeeld, prosesse te lys.
Dit maak âlistâ plugins redelik vinnig, maar net so kwesbaar soos die Windows API vir manipulasie deur malware. Byvoorbeeld, as malware DKOM gebruik om 'n proses van die _EPROCESS
gekoppelde lys te ontkoppel, sal dit nie in die Taakbestuurder verskyn nie en ook nie in die pslist nie.
âscanâ plugins, aan die ander kant, sal 'n benadering neem wat soortgelyk is aan die karving van die geheue vir dinge wat sinvol kan wees wanneer dit as spesifieke strukture dereferensieer word. psscan
byvoorbeeld sal die geheue lees en probeer om _EPROCESS
objek te maak daarvan (dit gebruik pool-tag skandering, wat soek na 4-byte stringe wat die teenwoordigheid van 'n struktuur van belang aandui). Die voordeel is dat dit prosesse kan opgrawe wat verlaat het, en selfs al manipuleer malware met die _EPROCESS
gekoppelde lys, sal die plugin steeds die struktuur in die geheue vind (aangesien dit steeds moet bestaan vir die proses om te loop). Die nadeel is dat âscanâ plugins 'n bietjie stadiger is as âlistâ plugins, en soms vals positiewe kan lewer (ân proses wat te lank gelede verlaat het en dele van sy struktuur deur ander operasies oorgeskryf is).
Van: http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/
OS Profiele
Volatility3
Soos verduidelik in die readme, moet jy die simbol tabel van die OS wat jy wil ondersteun in volatility3/volatility/symbols plaas.
Simbol tabel pakkette vir die verskillende bedryfstelsels is beskikbaar vir aflaai by:
- https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip
- https://downloads.volatilityfoundation.org/volatility3/symbols/mac.zip
- https://downloads.volatilityfoundation.org/volatility3/symbols/linux.zip
Volatility2
Eksterne Profiel
Jy kan die lys van ondersteunde profiele kry deur:
./volatility_2.6_lin64_standalone --info | grep "Profile"
As jy 'n nuwe profiel wat jy afgelaai het (byvoorbeeld 'n linux een) wil gebruik, moet jy ĂȘrens die volgende vouerstruktuur skep: plugins/overlays/linux en die zip-lĂȘer wat die profiel bevat, binne hierdie vouer plaas. Dan, kry die nommer van die profiele deur:
./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
U kan Linux en Mac profiele aflaai van https://github.com/volatilityfoundation/profiles
In die vorige stuk kan u sien dat die profiel genoem word LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64
, en u kan dit gebruik om iets soos uit te voer:
./vol -f file.dmp --plugins=. --profile=LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64 linux_netscan
Ontdek Profiel
volatility imageinfo -f file.dmp
volatility kdbgscan -f file.dmp
Verskille tussen imageinfo en kdbgscan
Van hier: In teenstelling tot imageinfo wat eenvoudig profielvoorstelle bied, is kdbgscan ontwerp om die korrekte profiel en die korrekte KDBG-adres (indien daar verskeie is) positief te identifiseer. Hierdie plugin skandeer vir die KDBGHeader-handtekeninge wat aan Volatility-profiele gekoppel is en pas sanity checks toe om vals positiewe te verminder. Die omvang van die uitvoer en die aantal sanity checks wat uitgevoer kan word, hang af van of Volatility 'n DTB kan vind, so as jy reeds die korrekte profiel ken (of as jy 'n profielvoorstel van imageinfo het), maak seker jy gebruik dit.
Kyk altyd na die aantal prosesse wat kdbgscan gevind het. Soms kan imageinfo en kdbgscan meer as een geskikte profiel vind, maar slegs die geldige een sal 'n paar prosesverwante hĂȘ (Dit is omdat die korrekte KDBG-adres nodig is om prosesse te onttrek).
# GOOD
PsActiveProcessHead : 0xfffff800011977f0 (37 processes)
PsLoadedModuleList : 0xfffff8000119aae0 (116 modules)
# BAD
PsActiveProcessHead : 0xfffff800011947f0 (0 processes)
PsLoadedModuleList : 0xfffff80001197ac0 (0 modules)
KDBG
Die kernel debugger block, bekend as KDBG deur Volatility, is van kardinale belang vir forensiese take wat deur Volatility en verskeie debuggers uitgevoer word. Dit word geĂŻdentifiseer as KdDebuggerDataBlock
en van die tipe _KDDEBUGGER_DATA64
, en bevat noodsaaklike verwysings soos PsActiveProcessHead
. Hierdie spesifieke verwysing dui op die kop van die proseslys, wat die lysing van alle prosesse moontlik maak, wat fundamenteel is vir deeglike geheueanalise.
OS Inligting
#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
Die plugin banners.Banners
kan gebruik word in vol3 om te probeer om linux banners in die dump te vind.
Hashes/Wagwoorde
Trek SAM hashes, domein gekaapte geloofsbriewe en lsa geheime uit.
./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
Geheue Dump
Die geheue dump van 'n proses sal uittrek alles van die huidige status van die proses. Die procdump module sal slegs uittrek die kode.
volatility -f file.dmp --profile=Win7SP1x86 memdump -p 2168 -D conhost/
Prosesse
Lys prosesse
Probeer om verdagte prosesse (volgens naam) of onverwagte kind prosesse te vind (byvoorbeeld 'n cmd.exe as 'n kind van iexplorer.exe).
Dit kan interessant wees om die resultaat van pslist met dié van psscan te vergelyk om verborge prosesse te identifiseer.
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)
Dump proc
./vol.py -f file.dmp windows.dumpfiles.DumpFiles --pid <pid> #Dump the .exe and dlls of the process in the current directory
Opdraglyn
Is daar enige verdagte aksies uitgevoer?
python3 vol.py -f file.dmp windows.cmdline.CmdLine #Display process command-line arguments
Opdragte wat in cmd.exe
uitgevoer word, word bestuur deur conhost.exe
(of csrss.exe
op stelsels voor Windows 7). Dit beteken dat as cmd.exe
deur 'n aanvaller beëindig word voordat 'n geheue-dump verkry word, dit steeds moontlik is om die sessie se opdraggeskiedenis uit die geheue van conhost.exe
te herstel. Om dit te doen, as ongewone aktiwiteit binne die konsole se modules opgespoor word, moet die geheue van die geassosieerde conhost.exe
proses gedump word. Dan, deur te soek na strings binne hierdie dump, kan opdraglyne wat in die sessie gebruik is, moontlik onttrek word.
Omgewing
Kry die omgewing veranderlikes van elke lopende proses. Daar kan 'n paar interessante waardes wees.
python3 vol.py -f file.dmp windows.envars.Envars [--pid <pid>] #Display process environment variables
Token voorregte
Kyk vir voorregte tokens in onverwagte dienste.
Dit kan interessant wees om die prosesse wat 'n paar voorregte token gebruik, op te lys.
#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"
SIDs
Kontroleer elke SSID wat deur 'n proses besit word.
Dit kan interessant wees om die prosesse wat 'n privilige SID gebruik (en die prosesse wat 'n diens SID gebruik) op te lys.
./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
Hanteer
Nuttig om te weet na watter ander lĂȘers, sleutels, drade, prosesse... 'n proses 'n hanteer het (het geopen)
vol.py -f file.dmp windows.handles.Handles [--pid <pid>]
DLLs
./vol.py -f file.dmp windows.dlllist.DllList [--pid <pid>] #List dlls used by each
./vol.py -f file.dmp windows.dumpfiles.DumpFiles --pid <pid> #Dump the .exe and dlls of the process in the current directory process
Strings per processes
Volatility laat ons toe om te kyk na watter proses 'n string behoort.
strings file.dmp > /tmp/strings.txt
./vol.py -f /tmp/file.dmp windows.strings.Strings --strings-file /tmp/strings.txt
Dit laat ook toe om na stringe binne 'n proses te soek met die yarascan-module:
./vol.py -f file.dmp windows.vadyarascan.VadYaraScan --yara-rules "https://" --pid 3692 3840 3976 3312 3084 2784
./vol.py -f file.dmp yarascan.YaraScan --yara-rules "https://"
UserAssist
Windows hou rekord van programme wat jy uitvoer met 'n funksie in die registrasie genaamd UserAssist sleutels. Hierdie sleutels registreer hoe dikwels elke program uitgevoer word en wanneer dit laas uitgevoer is.
./vol.py -f file.dmp windows.registry.userassist.UserAssist
â
Dienste
./vol.py -f file.dmp windows.svcscan.SvcScan #List services
./vol.py -f file.dmp windows.getservicesids.GetServiceSIDs #Get the SID of services
Netwerk
./vol.py -f file.dmp windows.netscan.NetScan
#For network info of linux use volatility2
Registrasie heuning
Druk beskikbare heuning
./vol.py -f file.dmp windows.registry.hivelist.HiveList #List roots
./vol.py -f file.dmp windows.registry.printkey.PrintKey #List roots and get initial subkeys
Kry 'n waarde
./vol.py -f file.dmp windows.registry.printkey.PrintKey --key "Software\Microsoft\Windows NT\CurrentVersion"
Dump
#Dump a hive
volatility --profile=Win7SP1x86_23418 hivedump -o 0x9aad6148 -f file.dmp #Offset extracted by hivelist
#Dump all hives
volatility --profile=Win7SP1x86_23418 hivedump -f file.dmp
LĂȘerstelsel
Monteer
#See vol2
Skandeer/dump
./vol.py -f file.dmp windows.filescan.FileScan #Scan for files inside the dump
./vol.py -f file.dmp windows.dumpfiles.DumpFiles --physaddr <0xAAAAA> #Offset from previous command
Meester LĂȘer Tabel
# I couldn't find any plugin to extract this information in volatility3
Die NTFS-lĂȘerstelsel gebruik 'n kritieke komponent bekend as die master file table (MFT). Hierdie tabel sluit ten minste een inskrywing in vir elke lĂȘer op 'n volume, wat ook die MFT self dek. Belangrike besonderhede oor elke lĂȘer, soos grootte, tydstempels, toestemmings, en werklike data, is ingesluit in die MFT-inskrywings of in areas buite die MFT maar waarna hierdie inskrywings verwys. Meer besonderhede kan gevind word in die amptelike dokumentasie.
SSL Sleutels/sertifikate
#vol3 allows to search for certificates inside the registry
./vol.py -f file.dmp windows.registry.certificates.Certificates
Malware
./vol.py -f file.dmp windows.malfind.Malfind [--dump] #Find hidden and injected code, [dump each suspicious section]
#Malfind will search for suspicious structures related to malware
./vol.py -f file.dmp windows.driverirp.DriverIrp #Driver IRP hook detection
./vol.py -f file.dmp windows.ssdt.SSDT #Check system call address from unexpected addresses
./vol.py -f file.dmp linux.check_afinfo.Check_afinfo #Verifies the operation function pointers of network protocols
./vol.py -f file.dmp linux.check_creds.Check_creds #Checks if any processes are sharing credential structures
./vol.py -f file.dmp linux.check_idt.Check_idt #Checks if the IDT has been altered
./vol.py -f file.dmp linux.check_syscall.Check_syscall #Check system call table for hooks
./vol.py -f file.dmp linux.check_modules.Check_modules #Compares module list to sysfs info, if available
./vol.py -f file.dmp linux.tty_check.tty_check #Checks tty devices for hooks
{{#endtab}}
{{#tab name="vol2"}}
volatility --profile=Win7SP1x86_23418 -f file.dmp malfind [-D /tmp] #Find hidden and injected code [dump each suspicious section]
volatility --profile=Win7SP1x86_23418 -f file.dmp apihooks #Detect API hooks in process and kernel memory
volatility --profile=Win7SP1x86_23418 -f file.dmp driverirp #Driver IRP hook detection
volatility --profile=Win7SP1x86_23418 -f file.dmp ssdt #Check system call address from unexpected addresses
volatility --profile=SomeLinux -f file.dmp linux_check_afinfo
volatility --profile=SomeLinux -f file.dmp linux_check_creds
volatility --profile=SomeLinux -f file.dmp linux_check_fop
volatility --profile=SomeLinux -f file.dmp linux_check_idt
volatility --profile=SomeLinux -f file.dmp linux_check_syscall
volatility --profile=SomeLinux -f file.dmp linux_check_modules
volatility --profile=SomeLinux -f file.dmp linux_check_tty
volatility --profile=SomeLinux -f file.dmp linux_keyboard_notifiers #Keyloggers
{{#endtab}} {{#endtabs}}
Skandering met yara
Gebruik hierdie skrip om al die yara malware reëls van github af te laai en te kombineer: https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9
Skep die reĂ«ls gids en voer dit uit. Dit sal 'n lĂȘer genaamd malware_rules.yar skep wat al die yara reĂ«ls vir malware bevat.
wget https://gist.githubusercontent.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9/raw/4ec711d37f1b428b63bed1f786b26a0654aa2f31/malware_yara_rules.py
mkdir rules
python malware_yara_rules.py
#Only Windows
./vol.py -f file.dmp windows.vadyarascan.VadYaraScan --yara-file /tmp/malware_rules.yar
#All
./vol.py -f file.dmp yarascan.YaraScan --yara-file /tmp/malware_rules.yar
MISC
Eksterne plugins
As jy eksterne plugins wil gebruik, maak seker dat die vouers wat met die plugins verband hou die eerste parameter is wat gebruik word.
./vol.py --plugin-dirs "/tmp/plugins/" [...]
Autoruns
Laai dit af van https://github.com/tomchop/volatility-autoruns
volatility --plugins=volatility-autoruns/ --profile=WinXPSP2x86 -f file.dmp autoruns
Mutexes
./vol.py -f file.dmp windows.mutantscan.MutantScan
Simboliese skakels
./vol.py -f file.dmp windows.symlinkscan.SymlinkScan
{{#endtab}}
{{#tab name="vol2"}}
volatility --profile=Win7SP1x86_23418 -f file.dmp symlinkscan
{{#endtab}} {{#endtabs}}
Bash
Dit is moontlik om uit geheue die bash geskiedenis te lees. Jy kan ook die .bash_history lĂȘer dump, maar dit was gedeaktiveer, jy sal bly wees dat jy hierdie volatiliteit module kan gebruik.
./vol.py -f file.dmp linux.bash.Bash
Tydlyn
./vol.py -f file.dmp timeLiner.TimeLiner
Bestuurders
./vol.py -f file.dmp windows.driverscan.DriverScan
{{#endtab}}
{{#tab name="vol2"}}
volatility --profile=Win7SP1x86_23418 -f file.dmp driverscan
{{#endtab}} {{#endtabs}}
Kry klembord
#Just vol2
volatility --profile=Win7SP1x86_23418 clipboard -f file.dmp
Kry IE geskiedenis
#Just vol2
volatility --profile=Win7SP1x86_23418 iehistory -f file.dmp
Kry notepad teks
#Just vol2
volatility --profile=Win7SP1x86_23418 notepad -f file.dmp
Skermskoot
#Just vol2
volatility --profile=Win7SP1x86_23418 screenshot -f file.dmp
Meester Opstart Rekord (MBR)
volatility --profile=Win7SP1x86_23418 mbrparser -f file.dmp
Die Master Boot Record (MBR) speel 'n belangrike rol in die bestuur van die logiese partisies van 'n stoor medium, wat gestruktureer is met verskillende file systems. Dit hou nie net inligting oor die partisielayout nie, maar bevat ook uitvoerbare kode wat as 'n boot loader optree. Hierdie boot loader begin Ăłf direk die OS se tweede fase laai proses (sien second-stage boot loader) of werk in harmonie met die volume boot record (VBR) van elke partisie. Vir 'n diepgaande kennis, verwys na die MBR Wikipedia page.
References
- https://andreafortuna.org/2017/06/25/volatility-my-own-cheatsheet-part-1-image-identification/
- https://scudette.blogspot.com/2012/11/finding-kernel-debugger-block.html
- https://or10nlabs.tech/cgi-sys/suspendedpage.cgi
- https://www.aldeid.com/wiki/Windows-userassist-keys â* https://learn.microsoft.com/en-us/windows/win32/fileio/master-file-table
- https://answers.microsoft.com/en-us/windows/forum/all/uefi-based-pc-protective-mbr-what-is-it/0fc7b558-d8d4-4a7d-bae2-395455bb19aa
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.