Volatility 3
Windows memory forensics cheat sheet.
Basic Command Structure
# Standard syntax
vol -f <memory.raw> <plugin>
# With options
vol -f memory.raw -o output/ -r json windows.pslist
# Plugin-specific help
vol windows.pslist -h
Key Differences from Volatility 2
- NO
--profileneeded (auto-detection) - Plugin namespace:
windows.plugin_name - Faster execution
- Python 3.8+ required
- Unified output formats
Complete Plugin Enumeration Workflow
Phase 1: System Identification
# Verify image and get OS info
vol -f memory.raw windows.info
# Output: OS version, architecture, kernel base, system time
Phase 2: Process Analysis
Process Enumeration (Multiple Methods)
# Active processes (linked list traversal)
vol -f memory.raw windows.pslist
# Hidden/terminated processes (pool scanning)
vol -f memory.raw windows.psscan
# Process hierarchy tree
vol -f memory.raw windows.pstree
# Cross-reference detection (rootkit hunting)
vol -f memory.raw windows.psxview
Process Details
# Command-line arguments
vol -f memory.raw windows.cmdline
vol -f memory.raw windows.cmdline --pid 1234
# Command history from cmd.exe
vol -f memory.raw windows.cmdscan
# Console buffers
vol -f memory.raw windows.consoles
# Environment variables
vol -f memory.raw windows.envars --pid 1234
# Process privileges
vol -f memory.raw windows.privileges.Privs
# Process SIDs
vol -f memory.raw windows.getsids
# Process threads
vol -f memory.raw windows.threads
vol -f memory.raw windows.threads --pid 1234
# Suspended threads
vol -f memory.raw windows.suspended_threads
# Suspicious threads
vol -f memory.raw windows.suspicious_threads
# Debug registers
vol -f memory.raw windows.debugregisters
# Orphaned kernel threads
vol -f memory.raw windows.orphan_kernel_threads
DLL Analysis
# Loaded DLLs per process
vol -f memory.raw windows.dlllist
vol -f memory.raw windows.dlllist --pid 1234
# DLL load verification (detect DLL injection)
vol -f memory.raw windows.ldrmodules
# Unloaded modules
vol -f memory.raw windows.unloadedmodules
Handles
# Open handles (files, registry, mutexes, etc.)
vol -f memory.raw windows.handles
vol -f memory.raw windows.handles --pid 1234
Phase 3: Network Analysis
# Network connections (TCP/UDP) - Vista+
vol -f memory.raw windows.netscan
# Alternative: netstat (Vista+)
vol -f memory.raw windows.netstat
Output: Local/Remote addresses, PIDs, state, protocol, timestamps.
Phase 4: File System Analysis
# Scan for FILE_OBJECT structures
vol -f memory.raw windows.filescan
# Dump cached files
vol -f memory.raw -o output/ windows.dumpfiles
vol -f memory.raw -o output/ windows.dumpfiles --pid 1234
vol -f memory.raw -o output/ windows.dumpfiles --virtaddr 0x12345678
vol -f memory.raw -o output/ windows.dumpfiles --physaddr 0xabcdef
# MFT entries scanning
vol -f memory.raw windows.mftscan.MFTScan
# Alternate Data Streams (ADS)
vol -f memory.raw windows.mftscan.ADS
# Symbolic links
vol -f memory.raw windows.symlinkscan
Phase 5: Registry Analysis
# List registry hives
vol -f memory.raw windows.registry.hivelist
# Scan for hives
vol -f memory.raw windows.registry.hivescan
# Print registry keys
vol -f memory.raw windows.registry.printkey
vol -f memory.raw windows.registry.printkey --key "Software\\Microsoft\\Windows\\CurrentVersion\\Run"
# UserAssist (tracks executed programs)
vol -f memory.raw windows.registry.userassist
# Certificates
vol -f memory.raw windows.registry.certificates.Certificates
# Hooked registry handlers
vol -f memory.raw windows.registry.getcellroutine
Phase 6: Malware Detection
Code Injection Detection
# Find injected code
vol -f memory.raw windows.malfind
# Hollow processes
vol -f memory.raw windows.hollowprocesses
# Process ghosting
vol -f memory.raw windows.processghosting
# Direct system calls (EDR bypass)
vol -f memory.raw windows.direct_system_calls
# Indirect system calls (EDR bypass)
vol -f memory.raw windows.indirect_system_calls
# Unhooked system calls (EDR bypass)
vol -f memory.raw windows.unhooked_system_calls
Kernel Hooks & Rootkits
# Kernel callbacks
vol -f memory.raw windows.callbacks.Callbacks
# SSDT (System Service Descriptor Table)
vol -f memory.raw windows.ssdt.SSDT
# Driver IRP hooks
vol -f memory.raw windows.driverirp.DriverIrp
# Hidden drivers
vol -f memory.raw windows.drivermodule.DriverModule
# Skeleton Key malware detection
vol -f memory.raw windows.skeleton_key_check.Skeleton_Key_Check
# Kernel timers
vol -f memory.raw windows.timers.Timers
YARA Scanning
# Scan process memory with YARA
vol -f memory.raw windows.vadyarascan --yara-file rules.yar
vol -f memory.raw windows.vadyarascan --yara-rules "rule test { strings: $a = \"malware\" condition: $a }"
# Scan entire memory
vol -f memory.raw yarascan.YaraScan --yara-file rules.yar
# Regex scanning
vol -f memory.raw windows.vadregexscan --pattern "https?://[a-zA-Z0-9]+"
Import Address Table (IAT) Analysis
vol -f memory.raw windows.iat.IAT --pid 1234
Phase 7: Memory Dumps
# Dump process memory
vol -f memory.raw -o output/ windows.memmap --dump --pid 1234
# Dump PE executables
vol -f memory.raw -o output/ windows.pedump.PEDump --pid 1234
# Memory map
vol -f memory.raw windows.memmap --pid 1234
# VAD (Virtual Address Descriptor) information
vol -f memory.raw windows.vadinfo --pid 1234
# Walk VAD tree
vol -f memory.raw windows.vadwalk --pid 1234
Phase 8: Windows Services
# List services (doubly-linked list)
vol -f memory.raw windows.svclist.SvcList
# Scan for services (pool scanning)
vol -f memory.raw windows.svcscan.SvcScan
# Compare methods (rootkit detection)
vol -f memory.raw windows.svcdiff.SvcDiff
# Service SIDs
vol -f memory.raw windows.getservicesids.GetServiceSIDs
Phase 9: Scheduled Tasks
vol -f memory.raw windows.scheduled_tasks.ScheduledTasks
Phase 10: Credential Extraction
# Password hashes
vol -f memory.raw windows.hashdump.Hashdump
# LSA secrets
vol -f memory.raw windows.lsadump.Lsadump
# Cached domain credentials
vol -f memory.raw windows.cachedump.Cachedump
# TrueCrypt passphrases
vol -f memory.raw windows.truecrypt.Passphrase
Phase 11: Driver Analysis
# Loaded kernel modules
vol -f memory.raw windows.modules.Modules
# Scan for drivers (finds hidden)
vol -f memory.raw windows.driverscan.DriverScan
# Module scanning
vol -f memory.raw windows.modscan.ModScan
# Device tree
vol -f memory.raw windows.devicetree.DeviceTree
# KPCR structures
vol -f memory.raw windows.kpcrs.KPCRs
Phase 12: Forensic Artifacts
# AmCache
vol -f memory.raw windows.amcache.Amcache
# ShimCache
vol -f memory.raw windows.shimcachemem.ShimcacheMem
# Big page pools
vol -f memory.raw windows.bigpools.BigPools
# Master Boot Record scanning
vol -f memory.raw windows.mbrscan.MBRScan
# Job links
vol -f memory.raw windows.joblinks.JobLinks
# Sessions
vol -f memory.raw windows.sessions.Sessions
# Crash dump info
vol -f memory.raw windows.crashinfo.Crashinfo
# PE symbols
vol -f memory.raw windows.pe_symbols.PESymbols
# Version info
vol -f memory.raw windows.verinfo.VerInfo
# Statistics
vol -f memory.raw windows.statistics.Statistics
Phase 13: Mutexes & Synchronization
# Scan for mutexes
vol -f memory.raw windows.mutantscan.MutantScan
Phase 14: Timeline Analysis
# Generate timeline from all plugins
vol -f memory.raw timeliner.Timeliner
New Plugins in Volatility 3 (v2.7–2.26)
EDR Bypass Detection
windows.direct_system_calls # Direct syscall technique
windows.indirect_system_calls # Indirect syscall technique
windows.unhooked_system_calls # Unhooked syscall detection
Advanced Malware Detection
windows.hollowprocesses # Process hollowing detection
windows.processghosting # Process ghosting technique
windows.suspended_threads # Find suspended threads
windows.suspicious_threads # Identify suspicious threads
windows.orphan_kernel_threads # Orphaned kernel threads
Command History & Console
windows.cmdscan # Command history scanning
windows.consoles # Console buffer extraction
Registry & Forensics
windows.amcache.Amcache # AmCache parsing
windows.scheduled_tasks # Scheduled tasks
windows.registry.getcellroutine # Registry hook detection
windows.shimcachemem # ShimCache from memory
windows.debugregisters # Hardware breakpoint detection
Import Address Table
windows.iat.IAT # IAT extraction and analysis
Process Cross-Reference
windows.psxview # Multi-method process detection
Regex & Advanced Scanning
windows.vadregexscan # Regex pattern scanning in VADs
Output Formats
# JSON output
vol -f memory.raw -r json windows.pslist > output.json
# CSV output
vol -f memory.raw -r csv windows.pslist > output.csv
# Pretty formatted
vol -f memory.raw -r pretty windows.pslist
# JSONL (line-delimited JSON)
vol -f memory.raw -r jsonl windows.netscan
# Save to file
vol -f memory.raw windows.pslist > pslist.txt
Advanced Tips & Tricks
1. Filtering & Targeting
# Target specific PID
vol -f memory.raw windows.pslist --pid 1234
vol -f memory.raw windows.dlllist --pid 1234
# Multiple PIDs (plugin dependent)
vol -f memory.raw windows.handles --pid 1234 --pid 5678
2. Parallel Processing
vol -f memory.raw --parallelism processes windows.psscan
3. Verbosity for Debugging
# Increase verbosity to troubleshoot
vol -f memory.raw -vvv windows.info
4. Offline Mode
# Disable online symbol lookups
vol -f memory.raw --offline windows.pslist
5. Configuration Files
# Use config file for repeated analysis
vol -c config.json windows.pslist
# Save configuration
vol -f memory.raw --save-config analysis.json windows.pslist
6. Combining Outputs
# Run multiple plugins and save all
for plugin in pslist pstree netscan filescan; do
vol -f memory.raw windows.$plugin > ${plugin}_output.txt
done
7. Hunting for Specific Artifacts
# Find specific string in process memory
vol -f memory.raw windows.strings | grep -i "password"
# Search for IP addresses
vol -f memory.raw windows.netscan | grep "192.168"
# Find processes without parent
vol -f memory.raw windows.pstree | grep "PPID: 0"
8. Memory Dump Extraction
# Dump specific process
vol -f memory.raw -o dumps/ windows.memmap --dump --pid 1234
# Dump all files
vol -f memory.raw -o files/ windows.dumpfiles
# Dump executable only
vol -f memory.raw -o exe/ windows.pedump --pid 1234
Malware Analysis Workflow
Step 1: Initial Triage
vol -f memory.raw windows.info
vol -f memory.raw windows.pslist
vol -f memory.raw windows.pstree
vol -f memory.raw windows.netscan
Step 2: Identify Suspicious Processes
Look for:
- Processes with no parent (PPID: 0)
- Misspelled system processes
- Unusual paths (not in System32/Program Files)
- Processes with network connections
- Short-lived processes (in psscan but not pslist)
Step 3: Deep Dive on Suspicious Process
PID=<suspicious_pid>
vol -f memory.raw windows.cmdline --pid $PID
vol -f memory.raw windows.dlllist --pid $PID
vol -f memory.raw windows.handles --pid $PID
vol -f memory.raw windows.envars --pid $PID
vol -f memory.raw windows.malfind --pid $PID
vol -f memory.raw windows.vadinfo --pid $PID
Step 4: Code Injection Detection
vol -f memory.raw windows.malfind
vol -f memory.raw windows.hollowprocesses
vol -f memory.raw windows.ldrmodules
vol -f memory.raw windows.direct_system_calls
vol -f memory.raw windows.indirect_system_calls
Step 5: Persistence Mechanisms
vol -f memory.raw windows.registry.printkey --key "Software\\Microsoft\\Windows\\CurrentVersion\\Run"
vol -f memory.raw windows.registry.userassist
vol -f memory.raw windows.scheduled_tasks
vol -f memory.raw windows.svcscan
Step 6: Dump & Analyze
vol -f memory.raw -o output/ windows.memmap --dump --pid $PID
vol -f memory.raw -o output/ windows.pedump --pid $PID
Rootkit Detection Checklist
# 1. Hidden processes
vol -f memory.raw windows.psxview
# 2. Hidden drivers
vol -f memory.raw windows.drivermodule
# 3. Kernel hooks
vol -f memory.raw windows.ssdt
vol -f memory.raw windows.callbacks