Memory forensics volatility
Skill ShulkwiSEC/bb-huge/skills/curated/memory-forensics-volatility
bb-huge π€ , Personal bug bounty findings hub and bug bounty orchestration for multiple agents
npx -y skills add ShulkwiSEC/bb-huge --skill memory-forensics-volatilityAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 18 stars18 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Memory forensics playbook using Volatility 2/3. Use when analyzing memory dumps for malware analysis, credential extraction, process investigation, code injection detection, and incident response timeline reconstruction.
SKILL.md
9.9 KB, as published. Nobody here has run it
SKILL: Memory Forensics β Expert Analysis Playbook
AI LOAD INSTRUCTION: Expert memory forensics techniques using Volatility 2 and 3. Covers memory acquisition, OS identification, process analysis (hidden process detection), network connections, DLL/module analysis, code injection detection (malfind), credential extraction, file carving, registry analysis, and timeline generation. Base models miss the Vol2/Vol3 command differences, malware indicator patterns, and Linux-specific memory analysis.
0. RELATED ROUTING
Before going deep, consider loading:
- traffic-analysis-pcap for correlating network artifacts with memory findings
- steganography-techniques if hidden data suspected in extracted files
- windows-privilege-escalation for understanding post-exploitation artifacts in memory
Quick Reference
Also load VOLATILITY_CHEATSHEET.md when you need:
- Vol2 vs Vol3 command comparison table
- Common plugin sequences for specific investigation types
1. MEMORY ACQUISITION
Linux
# LiME (Linux Memory Extractor) β kernel module
insmod lime.ko "path=/tmp/mem.lime format=lime"
# /proc/kcore (if available)
dd if=/proc/kcore of=/tmp/mem.raw bs=1M
# AVML (Microsoft's open-source)
./avml /tmp/mem.lime
Windows
# WinPmem
winpmem_mini_x64.exe memdump.raw
# FTK Imager (GUI) β capture memory to file
# DumpIt (single-click memory dump)
DumpIt.exe
# Comae (MagnetRAM)
MagnetRAMCapture.exe /output memdump.raw
Virtual Machines
# VMware: .vmem file in VM directory (suspend VM first)
# VirtualBox: VBoxManage debugvm "VM_NAME" dumpvmcore --filename mem.raw
# KVM/QEMU: virsh dump DOMAIN memdump --memory-only
# Hyper-V: checkpoint VM β inspect .bin files
2. VOLATILITY 2 vs 3
| Concept | Volatility 2 | Volatility 3 |
|---|---|---|
| Profile system | --profile=Win10x64_19041 | Auto-detected (symbol tables) |
| Image info | imageinfo | windows.info / linux.info |
| Process list | pslist | windows.pslist |
| Network | netscan / connections | windows.netscan / windows.netstat |
| DLLs | dlllist | windows.dlllist |
| Injection | malfind | windows.malfind |
| Hashes | hashdump | windows.hashdump |
| Files | filescan | windows.filescan |
| Registry | hivelist / printkey | windows.registry.hivelist / windows.registry.printkey |
| Install | pip2 install volatility | pip3 install volatility3 |
3. ANALYSIS METHODOLOGY
Step 1: Identify OS
# Vol2
vol.py -f mem.raw imageinfo
vol.py -f mem.raw kdbgscan
# Vol3
vol -f mem.raw windows.info
vol -f mem.raw banners.Banners
Step 2: Process Listing β Hidden Process Detection
# Vol2
vol.py -f mem.raw --profile=PROFILE pslist # EPROCESS linked list
vol.py -f mem.raw --profile=PROFILE psscan # pool tag scan (finds unlinked)
vol.py -f mem.raw --profile=PROFILE pstree # parent-child hierarchy
# Vol3
vol -f mem.raw windows.pslist
vol -f mem.raw windows.psscan
vol -f mem.raw windows.pstree
Red flags: Process in psscan but not pslist = DKOM (Direct Kernel Object Manipulation) hiding.
Step 3: Network Connections
# Vol2
vol.py -f mem.raw --profile=PROFILE netscan # TCP/UDP endpoints
vol.py -f mem.raw --profile=PROFILE connections # XP/2003 only
vol.py -f mem.raw --profile=PROFILE connscan # closed connections
# Vol3
vol -f mem.raw windows.netscan
vol -f mem.raw windows.netstat
Step 4: DLL / Module Analysis
# Vol2
vol.py -f mem.raw --profile=PROFILE dlllist -p PID
vol.py -f mem.raw --profile=PROFILE ldrmodules -p PID # find unlinked DLLs
# Vol3
vol -f mem.raw windows.dlllist --pid PID
Red flags: DLL in dlllist but False in all three ldrmodules columns = reflective DLL injection.
Step 5: Code Injection Detection (Malfind)
# Vol2
vol.py -f mem.raw --profile=PROFILE malfind -p PID
vol.py -f mem.raw --profile=PROFILE malfind -D /tmp/dump/ # dump injected sections
# Vol3
vol -f mem.raw windows.malfind --pid PID
What malfind detects: Memory regions with PAGE_EXECUTE_READWRITE that don't map to a file on disk β classic shellcode/injection indicator.
Step 6: Credential Extraction
# Vol2
vol.py -f mem.raw --profile=PROFILE hashdump # SAM hashes
vol.py -f mem.raw --profile=PROFILE lsadump # LSA secrets
vol.py -f mem.raw --profile=PROFILE cachedump # domain cached creds
vol.py -f mem.raw --profile=PROFILE mimikatz # (plugin) plaintext creds
# Vol3
vol -f mem.raw windows.hashdump
vol -f mem.raw windows.lsadump
vol -f mem.raw windows.cachedump
Step 7: File Extraction
# Vol2
vol.py -f mem.raw --profile=PROFILE filescan | grep -i "password\|secret\|flag"
vol.py -f mem.raw --profile=PROFILE dumpfiles -Q OFFSET -D /tmp/dump/
# Vol3
vol -f mem.raw windows.filescan
vol -f mem.raw windows.dumpfiles --virtaddr OFFSET
Step 8: Registry Analysis
# Vol2
vol.py -f mem.raw --profile=PROFILE hivelist
vol.py -f mem.raw --profile=PROFILE printkey -K "Software\Microsoft\Windows\CurrentVersion\Run"
vol.py -f mem.raw --profile=PROFILE userassist # program execution evidence
# Vol3
vol -f mem.raw windows.registry.hivelist
vol -f mem.raw windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\Run"
Step 9: Command History
# Vol2
vol.py -f mem.raw --profile=PROFILE cmdscan # cmd.exe history
vol.py -f mem.raw --profile=PROFILE consoles # full console output
# Vol3
vol -f mem.raw windows.cmdline
Step 10: Timeline Generation
# Vol2
vol.py -f mem.raw --profile=PROFILE timeliner --output=body --output-file=timeline.body
mactime -b timeline.body -d > timeline.csv
# Vol3
vol -f mem.raw timeliner.Timeliner
4. LINUX MEMORY ANALYSIS
# Vol2 (requires Linux profile)
vol.py -f mem.lime --profile=LinuxProfile linux_pslist
vol.py -f mem.lime --profile=LinuxProfile linux_pstree
vol.py -f mem.lime --profile=LinuxProfile linux_netstat
vol.py -f mem.lime --profile=LinuxProfile linux_bash # bash history
vol.py -f mem.lime --profile=LinuxProfile linux_enumerate_files
vol.py -f mem.lime --profile=LinuxProfile linux_proc_maps -p PID
vol.py -f mem.lime --profile=LinuxProfile linux_malfind
# Vol3
vol -f mem.lime linux.pslist
vol -f mem.lime linux.pstree
vol -f mem.lime linux.bash
vol -f mem.lime linux.check_afinfo # rootkit detection
vol -f mem.lime linux.check_syscall # syscall hooking
vol -f mem.lime linux.tty_check # TTY hooking
Building Linux Profiles (Vol2)
cd volatility/tools/linux
make
# Creates module.dwarf + System.map β zip as profile
zip LinuxProfile.zip module.dwarf /boot/System.map-$(uname -r)
# Place in volatility/plugins/overlays/linux/
5. MALWARE INDICATORS IN MEMORY
| Indicator | Detection Method | What It Means |
|---|---|---|
| Process in psscan but not pslist | Compare pslist vs psscan | DKOM β process hiding |
| Unexpected parent-child | pstree analysis | e.g., svchost spawned by cmd.exe |
| MZ header in non-image memory | malfind | Reflective DLL / PE injection |
| RWX memory without backing file | malfind | Shellcode injection |
| DLL unlinked from all PEB lists | ldrmodules (all False) | Stealth DLL loading |
| svchost.exe not child of services.exe | pstree | Fake svchost (malware) |
| Unusual network connections | netscan + PID correlation | C2 communication |
| Hooking in SSDT/IDT | ssdt / idt plugins | Rootkit |
| Modified kernel objects | linux_check_syscall | Linux rootkit |
Normal Parent-Child Relationships (Windows)
System (4)
βββ smss.exe
βββ csrss.exe
βββ wininit.exe
βββ services.exe
βββ svchost.exe (multiple)
βββ spoolsv.exe
βββ lsass.exe
βββ winlogon.exe
βββ explorer.exe
βββ user applications
6. DECISION TREE
Memory dump acquired β need to analyze
β
βββ What OS?
β βββ Windows β vol imageinfo / windows.info (Β§3 Step 1)
β βββ Linux β build profile or use Vol3 auto-detect (Β§4)
β
βββ Malware investigation?
β βββ Check processes: pslist vs psscan (hidden?) (Β§3 Step 2)
β βββ Check parent-child: pstree (suspicious spawning?) (Β§5)
β βββ Check injections: malfind (RWX memory?) (Β§3 Step 5)
β βββ Check DLLs: ldrmodules (unlinked?) (Β§3 Step 4)
β βββ Check network: netscan (C2 connections?) (Β§3 Step 3)
β βββ Extract suspicious files: dumpfiles (Β§3 Step 7)
β
βββ Credential recovery?
β βββ SAM hashes β hashdump (Β§3 Step 6)
β βββ LSA secrets β lsadump (Β§3 Step 6)
β βββ Cached domain creds β cachedump (Β§3 Step 6)
β βββ Plaintext passwords β mimikatz plugin (Β§3 Step 6)
β
βββ Incident timeline?
β βββ timeliner for comprehensive timeline (Β§3 Step 10)
β βββ cmdscan / consoles for command history (Β§3 Step 9)
β βββ userassist for program execution (Β§3 Step 8)
β βββ Cross-reference with PCAP timeline (β traffic-analysis-pcap)
β
βββ CTF / flag hunting?
β βββ filescan + grep for flag patterns (Β§3 Step 7)
β βββ cmdscan for typed flags/passwords (Β§3 Step 9)
β βββ Clipboard: clipboard plugin
β βββ Screenshots: screenshot plugin
β βββ Environment vars: envars plugin
β
βββ Linux-specific?
βββ linux_bash for shell history (Β§4)
βββ linux_check_syscall for rootkit (Β§4)
βββ linux_netstat for connections (Β§4)