Memory Forensics Cheatsheet: Volatility 3 Rapid Triage
For incident responders and SOC analysts who need a quick-reference guide to extract critical artifacts from memory dumps using Volatility 3 in the first 30 minutes of analysis.
Prerequisites
- Volatility 3 installed:
pip3 install volatility3 - A memory dump file (captured with DumpIt, WinPMEM, LiME, or similar)
- Basic command line familiarity
- Python 3.7+
Why Volatility 3?
Volatility 3 is a complete rewrite that's faster and supports unified analysis across Windows, Linux, and macOS. Unlike Vol2, you don't need to specify profiles manually—symbol tables are auto-detected.
Quick Start: Verify Your Dump
First, confirm Volatility can read your memory image:
bashvol3 -f memory.dmp windows.info
This identifies the OS version, kernel base, and timestamp. Output shows something like:
codeVariable Value Kernel Base 0xf80078000000 DTB 0x1aa000 Symbols ntkrnlmp.pdb
If this fails, your dump may be corrupted or you need symbol files (see Volatility docs).
Step 1: Identify Running Processes (First Look)
Get the process list to spot suspicious activity:
bashvol3 -f memory.dmp windows.pslist
Look for:
- Unexpected parent-child relationships (e.g.,
cmd.exespawned bywinword.exe) - Processes running from temp directories
- Misspelled system processes (
scvhost.exeinstead ofsvchost.exe) - Multiple instances of processes that should be singular
For tree view showing process hierarchy:
bashvol3 -f memory.dmp windows.pstree
Step 2: Detect Hidden/Unlinked Processes
Rootkits often hide processes. Cross-reference scanning methods:
bashvol3 -f memory.dmp windows.psscan
Compare psscan output with pslist. Anything in psscan but not pslist was unlinked from the process list—a major red flag.
Step 3: Extract Network Connections
See active and recent network activity:
bashvol3 -f memory.dmp windows.netstat
Key indicators of compromise:
- Connections to foreign IPs on unusual ports
- Local processes communicating on ports like 4444, 5555 (common backdoor ports)
- System processes with network connections (e.g.,
lsass.exeshouldn't talk to the internet)
For older Windows versions, use:
bashvol3 -f memory.dmp windows.netscan
Step 4: Timeline Suspicious Process Activity
Check what commands were executed:
bashvol3 -f memory.dmp windows.cmdline
This shows command-line arguments for each process. Look for:
- Encoded PowerShell (
-enc,-e) - Downloads (
wget,Invoke-WebRequest) - Credential dumping tools (
mimikatz,procdump) - Lateral movement (psexec, WMI commands)
Step 5: Dump Suspicious Process Memory
If PID 1337 looks suspicious, dump it for deeper analysis:
bashvol3 -f memory.dmp windows.memmap --pid 1337 --dump
This creates a pid.1337.dmp file. Scan it with YARA, strings, or load into a debugger:
bashstrings pid.1337.dmp | grep -i "password\|token\|secret"
Step 6: Extract Loaded DLLs and Code Injection
See what DLLs each process loaded:
bashvol3 -f memory.dmp windows.dlllist --pid 1337
Look for:
- DLLs loaded from temp or user directories
- Unexpected DLLs in system processes
- Missing or suspicious digital signatures
Detect code injection across processes:
bashvol3 -f memory.dmp windows.malfind
This finds private, executable memory regions (common in process hollowing and reflective DLL injection). It shows:
- PID and process name
- Memory protection (PAGE_EXECUTE_READWRITE is suspicious)
- Hex dump of the injected code
Step 7: Registry Analysis for Persistence
Check common persistence registry keys:
bashvol3 -f memory.dmp windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\Run"
Autostart locations to examine:
\CurrentVersion\Run\CurrentVersion\RunOnce\Windows\CurrentVersion\Explorer\Shell FoldersServiceskey
Step 8: Scan for Known Malware with YARA
Run YARA rules against all process memory:
bashvol3 -f memory.dmp windows.vadyarascan --yara-file /path/to/malware_rules.yar
This scans Virtual Address Descriptors (VADs) and reports matches with:
- Process name and PID
- Rule name that triggered
- Virtual address of the match
Step 9: File Extraction
List files in memory (from cache):
bashvol3 -f memory.dmp windows.filescan
Dump a specific file by its virtual address:
bashvol3 -f memory.dmp windows.dumpfiles --virtaddr 0x1234567890
Useful for extracting dropped malware, documents, or scripts.
Step 10: Export Timeline for SIEM
Create a comprehensive timeline:
bashvol3 -f memory.dmp timeliner --create-bodyfile > timeline.body
Convert to human-readable format with mactime:
bashmactime -b timeline.body -d > timeline.csv
Import this CSV into your SIEM or Splunk for correlation with other log sources.
Triage Checklist (First 30 Minutes)
- ✅ Run
windows.info- confirm dump integrity - ✅ Run
windows.pslistandwindows.pstree- map process landscape - ✅ Run
windows.psscan- find hidden processes - ✅ Run
windows.netstat- identify network IOCs - ✅ Run
windows.cmdline- check for suspicious commands - ✅ Run
windows.malfind- detect code injection - ✅ Run YARA scan - match known malware signatures
- ✅ Dump suspicious PIDs for deeper analysis
Where to Go Next
- Learn Linux/Mac analysis: Volatility 3 supports
linux.pslist,mac.netstat, etc. - Master symbol tables: Download Windows symbols from Microsoft Symbol Server for better analysis
- Build custom plugins: Volatility 3's Python framework lets you write plugins for specific artifacts
- Study the source: https://github.com/volatilityfoundation/volatility3
- Practice with CTFs: Try memory forensics challenges on CyberDefenders or HackTheBox
- Read "The Art of Memory Forensics": Comprehensive book covering advanced techniques
Memory forensics reveals what disk forensics can't—active malware, decrypted data, and runtime behavior. Master this skillset and you'll uncover evidence attackers thought they erased.