Memory Forensics

Analyze volatile memory dumps to uncover evidence of malicious activity

Introduction to Memory Forensics

Memory forensics involves analyzing a computer's volatile memory (RAM) to investigate security incidents, malware infections, and system compromises. Unlike disk forensics, memory analysis captures the live state of a system, including running processes, network connections, and decrypted data.

Why Memory Forensics?
  • Live System State: Capture running processes, loaded drivers, and active network connections
  • Uncover Hidden Malware: Detect rootkits and process injection that hide from traditional tools
  • Decrypt Data: Access encryption keys and passwords stored in memory
  • Timeline Reconstruction: Build a timeline of system activity
  • Incident Response: Quickly triage compromised systems

Memory Acquisition

Windows Memory Acquisition
DumpIt (Recommended for Windows)
# Run as Administrator
DumpIt.exe

# Creates a .raw file in the same directory
# File will be named: HOSTNAME-YYYYMMDD-HHMMSS.raw
FTK Imager
# GUI Tool
# File -> Capture Memory
# Select destination and filename
# Creates .mem file
WinPmem
# Command-line memory acquisition
winpmem_mini_x64.exe memory.raw

# With compression
winpmem_mini_x64.exe -c memory.aff4
Linux Memory Acquisition
LiME (Linux Memory Extractor)
# Install LiME
git clone https://github.com/504ensicsLabs/LiME
cd LiME/src
make

# Load the kernel module
sudo insmod lime-$(uname -r).ko "path=/tmp/memory.lime format=lime"

# For remote acquisition
sudo insmod lime-$(uname -r).ko "path=tcp:4444 format=lime"

# On receiving machine
nc -l -p 4444 > memory.lime
AVML (Azure Memory Logger)
# Download and run
sudo ./avml memory.lime

Volatility Framework

Volatility is the most popular open-source memory forensics framework, supporting analysis of Windows, Linux, and macOS memory dumps.

Installation
# Volatility 2 (Python 2)
git clone https://github.com/volatilityfoundation/volatility.git
cd volatility
python setup.py install

# Volatility 3 (Python 3 - Recommended)
pip3 install volatility3
Essential Volatility 3 Commands
Image Information
# Get image information (no profile needed in Vol3)
vol3 -f memory.dmp windows.info

# For Volatility 2, identify profile first
vol.py -f memory.dmp imageinfo
vol.py -f memory.dmp kdbgscan
Process Analysis
# List running processes
vol3 -f memory.dmp windows.pslist

# Process tree view
vol3 -f memory.dmp windows.pstree

# Show hidden/terminated processes
vol3 -f memory.dmp windows.psscan

# Command line arguments for each process
vol3 -f memory.dmp windows.cmdline

# Environment variables
vol3 -f memory.dmp windows.envars

# Process handles (files, registry keys, etc.)
vol3 -f memory.dmp windows.handles --pid 1234
Network Analysis
# Network connections
vol3 -f memory.dmp windows.netscan

# Network statistics
vol3 -f memory.dmp windows.netstat
DLL Analysis
# List loaded DLLs for all processes
vol3 -f memory.dmp windows.dlllist

# DLLs for specific process
vol3 -f memory.dmp windows.dlllist --pid 1234

# Detect unlinked DLLs (rootkit technique)
vol3 -f memory.dmp windows.ldrmodules

Malware Analysis

Detecting Malicious Activity
Process Injection Detection
# Malfind - Detect injected code and DLLs
vol3 -f memory.dmp windows.malfind

# Look for PAGE_EXECUTE_READWRITE memory
# VAD tags, MZ headers in unusual locations
Rootkit Detection
# SSDT (System Service Descriptor Table) hooks
vol3 -f memory.dmp windows.ssdt

# Driver analysis
vol3 -f memory.dmp windows.modules
vol3 -f memory.dmp windows.driverscan

# Detect hidden processes (DKOM)
vol3 -f memory.dmp windows.psxview
API Hooks Detection
# Inline hooks and IAT hooks
vol3 -f memory.dmp windows.apihooks
Extracting Suspicious Processes
# Dump process executable
vol3 -f memory.dmp windows.pslist --pid 1234 --dump

# Dump process memory
vol3 -f memory.dmp windows.memmap --pid 1234 --dump

# Dump specific DLL
vol3 -f memory.dmp windows.dumpfiles --pid 1234

Credential Extraction

Extracting Windows Credentials
Registry Hives
# List registry hives
vol3 -f memory.dmp windows.registry.hivelist

# Dump SAM hive
vol3 -f memory.dmp windows.registry.hivelist --dump

# Print registry keys
vol3 -f memory.dmp windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\Run"
Password Extraction with Mimikatz
# Using hashdump plugin
vol3 -f memory.dmp windows.hashdump

# Look for lsass.exe process for credentials
vol3 -f memory.dmp windows.pslist | grep lsass
Cached Credentials
# LSA secrets
vol3 -f memory.dmp windows.lsadump

# Cached domain credentials
vol3 -f memory.dmp windows.cachedump

File and Artifact Recovery

File Extraction
# List files in memory
vol3 -f memory.dmp windows.filescan

# Dump specific file by address
vol3 -f memory.dmp windows.dumpfiles --virtaddr 0x12345678

# Extract files by extension
vol3 -f memory.dmp windows.dumpfiles --pid 1234
Browser Artifacts
# Extract clipboard contents
vol3 -f memory.dmp windows.clipboard

# Command history
vol3 -f memory.dmp windows.cmdline

# Console history
vol3 -f memory.dmp windows.consoles
Timeline Analysis
# Create timeline of events
vol3 -f memory.dmp windows.timeline

# Analyze user activity
vol3 -f memory.dmp windows.sessions
vol3 -f memory.dmp windows.getservicesids

Additional Tools

Rekall

Alternative to Volatility with additional features

# Installation
pip install rekall

# Basic usage
rekall -f memory.dmp pslist
MemProcFS

Mount memory dumps as a virtual file system

# Mount memory dump
./memprocfs -device memory.dmp -mount /mnt/memory

# Browse as file system
cd /mnt/memory
ls -la
Bulk Extractor

Extract useful information from memory dumps

# Scan memory for artifacts
bulk_extractor -o output/ memory.dmp

# Find email addresses, URLs, credit cards, etc.
cat output/email.txt
cat output/url.txt

Practice Challenges

Beginner Level
  • Process Hunter
    Identify suspicious processes
  • Network Detective
    Find active network connections
  • Command Line Secrets
    Analyze process command lines
Advanced Level
  • Rootkit Reveal
    Detect hidden rootkit activity
  • Injection Point
    Find process injection artifacts
  • Credential Harvest
    Extract passwords from memory