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

​

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/

bash
# 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

bash
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

bash
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:

Volatility2

Eksterne Profiel

Jy kan die lys van ondersteunde profiele kry deur:

bash
./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:

bash
./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:

bash
./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).

bash
# GOOD
PsActiveProcessHead           : 0xfffff800011977f0 (37 processes)
PsLoadedModuleList            : 0xfffff8000119aae0 (116 modules)
bash
# 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

bash
#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.

bash
./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.

bash
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

bash
./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?

bash
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.

bash
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.

bash
#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.

bash
./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)

bash
vol.py -f file.dmp windows.handles.Handles [--pid <pid>]

DLLs

bash
./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.

bash
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:

bash
./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.

bash
./vol.py -f file.dmp windows.registry.userassist.UserAssist

​

Dienste

bash
./vol.py -f file.dmp windows.svcscan.SvcScan #List services
./vol.py -f file.dmp windows.getservicesids.GetServiceSIDs #Get the SID of services

Netwerk

bash
./vol.py -f file.dmp windows.netscan.NetScan
#For network info of linux use volatility2

Registrasie heuning

Druk beskikbare heuning

bash
./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

bash
./vol.py -f file.dmp windows.registry.printkey.PrintKey --key "Software\Microsoft\Windows NT\CurrentVersion"

Dump

bash
#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

bash
#See vol2

Skandeer/dump

bash
./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

bash
# 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

bash
#vol3 allows to search for certificates inside the registry
./vol.py -f file.dmp windows.registry.certificates.Certificates

Malware

bash
./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"}}

bash
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.

bash
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.

bash
./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

bash
./vol.py -f file.dmp windows.symlinkscan.SymlinkScan

{{#endtab}}

{{#tab name="vol2"}}

bash
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

bash
./vol.py -f file.dmp timeLiner.TimeLiner

Bestuurders

./vol.py -f file.dmp windows.driverscan.DriverScan

{{#endtab}}

{{#tab name="vol2"}}

bash
volatility --profile=Win7SP1x86_23418 -f file.dmp driverscan

{{#endtab}} {{#endtabs}}

Kry klembord

bash
#Just vol2
volatility --profile=Win7SP1x86_23418 clipboard -f file.dmp

Kry IE geskiedenis

bash
#Just vol2
volatility --profile=Win7SP1x86_23418 iehistory -f file.dmp

Kry notepad teks

bash
#Just vol2
volatility --profile=Win7SP1x86_23418 notepad -f file.dmp

Skermskoot

bash
#Just vol2
volatility --profile=Win7SP1x86_23418 screenshot -f file.dmp

Meester Opstart Rekord (MBR)

bash
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

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