Tool Guide · memory

Volatility

What it does

Volatility is the de-facto standard for memory forensics. It reads a RAM dump and rebuilds the kernel's data structures in userland, letting you list processes, connections, modules, and file handles — even from memory that no longer maps to a running system. There are two active branches: Volatility 3 (current, Python 3, auto-detect) and Volatility 2 (classic, per-kernel profiles, still preferred by many Linux workflows).

Install

pip install volatility3

# use the console script (vol3) or the python module
vol3 --help

# also grab the standalone tools for memory acquisition
# LiME (capture) -> https://github.com/504ensicsLabs/lime
git clone https://github.com/volatilityfoundation/volatility.git
cd volatility
python setup.py install

# Linux profiles must be built on the target kernel:
# 1. cd volatility/tools/linux; make
# 2. zip module.dwarf + System.map into .zip
# 3. drop it into volatility/volatility/plugins/overlays/linux/

First commands

# volatility 3 - file info & auto profile
vol3 -f /evidence/ram.lime linux.info

# what plugins are available
vol3 -f /evidence/ram.lime linux.pslist --help

# volatility 2 - verify the profile is right
python vol.py -f /evidence/ram.lime --profile=LinuxUbuntu20_04x64 linux_pslist --info

Linux plugins tour

PluginUse
linux.pslist / linux.pstreeProcess list; parent/child tree
linux.psauxProcesses with full command lines
linux.proc.mapsMemory maps per process
linux.bashRecovered bash history from memory
linux.netstatNetwork connections at capture time
linux.socketsSocket objects, even closed ones
linux.lsmodLoaded kernel modules
linux.malfindInjected/executable memory without a backing file
linux.check_syscallSyscall table hook detection (rootkit)
linux.check_ttyTTY hook detection (keyloggers)
linux.dmesgKernel ring buffer
linux.proc -p PID --dumpDump a process image for offline analysis

Format support & profiles

Volatility 3 reads raw, EWF, and LiME formats. Volatility 2 additionally handles older formats with the right profile. LiME dumps carry their own header so profiling is straightforward.

file /evidence/ram.lime
  ram.lime: Linux Memory Dump (LiME format)
vol3 -f /evidence/ram.lime linux.info
Vol 2 on Linux: the profile gotcha Each Volatility 2 profile matches one exact kernel build. If you lack the right profile, Linux analysis silently fails or produces garbage. Capture-time discipline solves this: record uname -r and uname -a while the machine is up.

A triage workflow

vol3 -f ram.lime linux.psaux
vol3 -f ram.lime linux.pstree
vol3 -f ram.lime linux.netstat
vol3 -f ram.lime linux.lsmod
vol3 -f ram.lime linux.check_syscall
vol3 -f ram.lime linux.malfind
vol3 -f ram.lime linux.bash
vol3 -f ram.lime linux.proc -p 31337 --dump

Pair findings with the memory forensics article for interpretation, and with logs for correlation.


← Previous: Autopsy  ·  Next: Acquisition with dd & dcfldd →