Volatility - CheatSheet

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

​​RootedCON è l'evento di cybersecurity più rilevante in Spagna e uno dei più importanti in Europa. Con la missione di promuovere la conoscenza tecnica, questo congresso è un punto di incontro vivace per professionisti della tecnologia e della cybersecurity in ogni disciplina.

Se vuoi qualcosa di veloce e folle che lanci diversi plugin di Volatility in parallelo, puoi usare: 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)

Installazione

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

Comandi di Volatility

Accedi alla documentazione ufficiale in riferimento ai comandi di Volatility

Una nota sui plugin “list” vs. “scan”

Volatility ha due approcci principali ai plugin, che a volte si riflettono nei loro nomi. I plugin “list” cercheranno di navigare attraverso le strutture del kernel di Windows per recuperare informazioni come i processi (localizzare e percorrere la lista collegata delle strutture _EPROCESS in memoria), gestori del sistema operativo (localizzare e elencare la tabella dei gestori, dereferenziare eventuali puntatori trovati, ecc.). Si comportano più o meno come farebbe l'API di Windows se richiesto di, ad esempio, elencare i processi.

Questo rende i plugin “list” piuttosto veloci, ma altrettanto vulnerabili quanto l'API di Windows alla manipolazione da parte di malware. Ad esempio, se un malware utilizza DKOM per scollegare un processo dalla lista collegata _EPROCESS, non apparirà nel Task Manager e nemmeno in pslist.

I plugin “scan”, d'altra parte, adotteranno un approccio simile al carving della memoria per cose che potrebbero avere senso quando dereferenziate come strutture specifiche. psscan, ad esempio, leggerà la memoria e cercherà di creare oggetti _EPROCESS da essa (utilizza la scansione dei pool-tag, che cerca stringhe di 4 byte che indicano la presenza di una struttura di interesse). Il vantaggio è che può recuperare processi che sono terminati, e anche se il malware manomette la lista collegata _EPROCESS, il plugin troverà comunque la struttura presente in memoria (poiché deve ancora esistere affinché il processo funzioni). Lo svantaggio è che i plugin “scan” sono un po' più lenti dei plugin “list” e possono talvolta generare falsi positivi (un processo che è terminato troppo tempo fa e ha avuto parti della sua struttura sovrascritte da altre operazioni).

Da: http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/

Profili OS

Volatility3

Come spiegato all'interno del readme, è necessario inserire la tabella dei simboli del sistema operativo che si desidera supportare all'interno di volatility3/volatility/symbols. I pacchetti della tabella dei simboli per i vari sistemi operativi sono disponibili per download su:

Volatility2

Profilo Esterno

Puoi ottenere l'elenco dei profili supportati eseguendo:

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

Se vuoi utilizzare un nuovo profilo che hai scaricato (ad esempio uno per linux) devi creare da qualche parte la seguente struttura di cartelle: plugins/overlays/linux e mettere all'interno di questa cartella il file zip contenente il profilo. Poi, ottieni il numero dei profili usando:

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

Puoi scaricare i profili per Linux e Mac da https://github.com/volatilityfoundation/profiles

Nel blocco precedente puoi vedere che il profilo si chiama LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64, e puoi usarlo per eseguire qualcosa come:

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

Scopri Profilo

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

Differenze tra imageinfo e kdbgscan

Da qui: A differenza di imageinfo che fornisce semplicemente suggerimenti sui profili, kdbgscan è progettato per identificare positivamente il profilo corretto e l'indirizzo KDBG corretto (se ce ne sono più di uno). Questo plugin cerca le firme KDBGHeader collegate ai profili di Volatility e applica controlli di sanità per ridurre i falsi positivi. La verbosità dell'output e il numero di controlli di sanità che possono essere eseguiti dipendono dal fatto che Volatility riesca a trovare un DTB, quindi se conosci già il profilo corretto (o se hai un suggerimento di profilo da imageinfo), assicurati di usarlo.

Dai sempre un'occhiata al numero di processi che kdbgscan ha trovato. A volte imageinfo e kdbgscan possono trovare più di un profilo adatto, ma solo il valido avrà alcuni processi correlati (Questo perché per estrarre i processi è necessario l'indirizzo KDBG corretto).

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

KDBG

Il kernel debugger block, noto come KDBG da Volatility, è cruciale per i compiti forensi eseguiti da Volatility e vari debugger. Identificato come KdDebuggerDataBlock e di tipo _KDDEBUGGER_DATA64, contiene riferimenti essenziali come PsActiveProcessHead. Questo riferimento specifico punta alla testa della lista dei processi, consentendo l'elenco di tutti i processi, fondamentale per un'analisi approfondita della memoria.

OS Information

#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

Il plugin banners.Banners può essere utilizzato in vol3 per cercare banner linux nel dump.

Hash/Password

Estrai gli hash SAM, credenziali memorizzate nel dominio e segreti 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

Memory Dump

Il memory dump di un processo estrarrà tutto lo stato attuale del processo. Il modulo procdump estrarrà solo il codice.

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

​​​RootedCON è l'evento di cybersecurity più rilevante in Spagna e uno dei più importanti in Europa. Con la missione di promuovere la conoscenza tecnica, questo congresso è un punto di incontro vivace per professionisti della tecnologia e della cybersecurity in ogni disciplina.

Processi

Elenco processi

Cerca di trovare processi sospetti (per nome) o processi figlio inaspettati (ad esempio un cmd.exe come figlio di iexplorer.exe). Potrebbe essere interessante confrontare il risultato di pslist con quello di psscan per identificare processi nascosti.

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

Command line

Qualsiasi cosa sospetta è stata eseguita?

python3 vol.py -f file.dmp windows.cmdline.CmdLine #Display process command-line arguments

I comandi eseguiti in cmd.exe sono gestiti da conhost.exe (o csrss.exe sui sistemi precedenti a Windows 7). Questo significa che se cmd.exe viene terminato da un attaccante prima che venga ottenuto un memory dump, è ancora possibile recuperare la cronologia dei comandi della sessione dalla memoria di conhost.exe. Per fare ciò, se viene rilevata un'attività insolita all'interno dei moduli della console, la memoria del processo associato conhost.exe dovrebbe essere dumpata. Quindi, cercando stringhe all'interno di questo dump, le righe di comando utilizzate nella sessione possono potenzialmente essere estratte.

Ambiente

Ottieni le variabili di ambiente di ciascun processo in esecuzione. Potrebbero esserci alcuni valori interessanti.

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

Privilegi dei token

Controlla i token di privilegi in servizi inaspettati. Potrebbe essere interessante elencare i processi che utilizzano alcuni token privilegiati.

#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

Controlla ogni SSID posseduto da un processo. Potrebbe essere interessante elencare i processi che utilizzano un SID di privilegi (e i processi che utilizzano un SID di servizio).

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

Handles

Utile sapere a quali altri file, chiavi, thread, processi... un processo ha un handle (ha aperto)

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

String per processi

Volatility ci consente di controllare a quale processo appartiene una stringa.

strings file.dmp > /tmp/strings.txt
./vol.py -f /tmp/file.dmp windows.strings.Strings --strings-file /tmp/strings.txt

Consente anche di cercare stringhe all'interno di un processo utilizzando il modulo yarascan:

./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 tiene traccia dei programmi che esegui utilizzando una funzionalità nel registro chiamata UserAssist keys. Queste chiavi registrano quante volte ogni programma è stato eseguito e quando è stato eseguito l'ultima volta.

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

​​​​RootedCON è l'evento di cybersecurity più rilevante in Spagna e uno dei più importanti in Europa. Con la missione di promuovere la conoscenza tecnica, questo congresso è un punto di incontro vivace per professionisti della tecnologia e della cybersecurity in ogni disciplina.

Servizi

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

Rete

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

Registro hives

Stampa hives disponibili

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

Ottieni un valore

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

Filesystem

Mount

#See vol2

Scansione/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

Master File Table

# I couldn't find any plugin to extract this information in volatility3

Il file system NTFS utilizza un componente critico noto come master file table (MFT). Questa tabella include almeno un'entrata per ogni file su un volume, coprendo anche la MFT stessa. Dettagli vitali su ogni file, come dimensione, timestamp, permessi e dati effettivi, sono racchiusi all'interno delle entrate MFT o in aree esterne alla MFT ma referenziate da queste entrate. Maggiori dettagli possono essere trovati nella documentazione ufficiale.

Chiavi/Certificati SSL

#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

Scansione con yara

Usa questo script per scaricare e unire tutte le regole yara per malware da github: https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9 Crea la directory rules ed eseguila. Questo creerà un file chiamato malware_rules.yar che contiene tutte le regole yara per malware.

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

Plugin esterni

Se vuoi utilizzare plugin esterni assicurati che le cartelle relative ai plugin siano il primo parametro utilizzato.

./vol.py --plugin-dirs "/tmp/plugins/" [...]

Autoruns

Scaricalo da 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
./vol.py -f file.dmp windows.symlinkscan.SymlinkScan

Bash

È possibile leggere dalla memoria la cronologia di bash. Potresti anche eseguire il dump del file .bash_history, ma è stato disabilitato, quindi sarai felice di poter utilizzare questo modulo di volatilità.

./vol.py -f file.dmp linux.bash.Bash

Cronologia

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

Driver

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

Ottieni appunti

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

Ottieni la cronologia di IE

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

Ottieni testo da notepad

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

Screenshot

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

Master Boot Record (MBR)

volatility --profile=Win7SP1x86_23418 mbrparser -f file.dmp

Il Master Boot Record (MBR) gioca un ruolo cruciale nella gestione delle partizioni logiche di un supporto di memorizzazione, che sono strutturate con diversi file systems. Non solo contiene informazioni sul layout delle partizioni, ma include anche codice eseguibile che funge da boot loader. Questo boot loader avvia direttamente il processo di caricamento di secondo livello del sistema operativo (vedi second-stage boot loader) o lavora in armonia con il volume boot record (VBR) di ciascuna partizione. Per una conoscenza approfondita, fare riferimento alla pagina Wikipedia dell'MBR.

Riferimenti

RootedCON è l'evento di cybersecurity più rilevante in Spagna e uno dei più importanti in Europa. Con la missione di promuovere la conoscenza tecnica, questo congresso è un punto di incontro fervente per professionisti della tecnologia e della cybersecurity in ogni disciplina.

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Last updated