Can a single RAM image point an incident response team straight at an active compromise? That question flips the usual disk-first mindset and highlights why fast triage matters in cyber security.
This guide shows you exactly how to get started with a workflow that captures RAM, lists running processes, maps connections, and extracts suspect files for deeper analysis.
Volatility 3 simplifies early triage by auto-detecting the operating system, removing the old profile guesswork. That saves precious time when an incident demands quick, reliable leads.
In short: treat RAM as a high-value data source that is faster to collect than full disk images and often clearer than sprawling logs. The next sections will walk through practical commands, extraction tips, and what to do when you find red flags.
Key Takeaways
- RAM yields quick leads: smaller dumps mean speed during an incident.
- Volatility 3 eases setup: it infers the system automatically.
- First-look commands: list processes and scan connections early.
- Extract artifacts: dump suspicious files for strings and YARA checks.
- Export early: save output to files for sharing and repeatable analysis.
Why memory forensics matters in incident response today
A compact RAM dump frequently holds the most actionable evidence for initial incident analysis.Small, fast captures speed triage and often point responders directly at malicious processes, open connections, and injected code.
A RAM image is quicker to collect than full disk imaging and yields high-signal data about a running system. Teams can list running processes, map connections, and spot injected code without wading through terabytes of logs.
Tools like Volatility extract structured output: windows.pslist and pstree show parent-child relationships and pid context, windows.netscan lists Proto, LocalAddr:LocalPort, ForeignAddr:ForeignPort, State, Owner, and Created time, and malfind highlights executable VAD regions.
Version differences matter: Volatility 3 infers the OS and cuts setup time, while older builds need imageinfo and a profile selection. Interpret Created and ExitTime carefully so you do not misattribute long-lived processes.

- Tip: stream large results to files so your team can review output without re-running scans.
Before you begin: volatile data, memory dumps, and forensically sound capture
Evidence in active system RAM disappears on power loss, making prompt capture the top priority. Collecting a reliable image preserves transient process state, open connections, and in-memory files that disk artifacts often do not record.

Volatile data lives in RAM and is gone after a reboot. A memory dump is a byte-for-byte snapshot you can analyze offline. Use trusted tools—Magnet RAM Capture, AVML, or FTK Imager—and document hash values, timestamps, and exact commands.
In virtual environments, coordinate with the hypervisor and note .vmem or snapshot origins, folder paths, and image size. Preserve an immutable copy and work from a duplicate so your original stays pristine.
- Record context: IP, hostname, logged user, and any running services.
- Validate quickly: run basic strings and header checks to confirm the dump is readable before deep scans.
- Plan output folders: avoid overwrites when dumping large files, and log the target folder and filenames.
| Acquisition Tool | Best Use | Metadata to Record | Notes |
|---|---|---|---|
| Magnet RAM Capture | Windows live capture | Hash, time, command line | Low footprint, common in IR |
| AVML | Cross-platform capture | Host, OS, image size | Works well in cloud and VMs |
| FTK Imager | Forensic-grade capture | Chain of custody entries | Trusted in legal contexts |
Tip: Volatility 3 can infer the operating system when you run analysis, but capture steps still differ by platform. Test your workflow in a lab and keep a clear chain of custody for every image and output.
Install and set up Volatility 3 the right way
Start with a predictable Python environment and a verified repository clone. This prevents missing modules and keeps plugin runs reliable when you get started.

Cloning the repo and installing requirements
Run the official clone and install steps on a clean host.
- Clone: git clone https://github.com/volatilityfoundation/volatility3.git
- Install: pip3 install -r requirements.txt
Verifying Python and the CLI
Volatility requires Python 3.8+. Confirm the runtime and then check the CLI with a help command.
Try: python3 vol.py -h. If plugins complain, re-check the virtualenv and requirements installation.
How the tool infers the operating system
Volatility 3 auto-detects the target operating system from the image. That removes manual profile guessing that older versions forced.
“A stable environment is the most reliable way to avoid command failures during triage.”
| Step | Command | Why it matters |
|---|---|---|
| Create venv | python3 -m venv venv | Isolates dependencies |
| Clone repo | git clone …/volatility3.git | Official source, latest fixes |
| Install deps | pip3 install -r requirements.txt | Loads parsing and crypto libs |
Volatility 2 vs Volatility 3: profiles, symbols, and plugin availability
Legacy tooling can save an investigation when a modern parser lacks a mature plugin. Use the newer engine by default, but keep older tools ready when a specific output or plugin is missing.

Volatility 2 relies on prebuilt Windows profiles and a Python 2 runtime. Analysts run imageinfo first, then pass a profile like Win7SP1x64 to most commands.
Volatility 3 replaces profiles with kernel symbols and runs on Python 3. It auto-detects the operating system and often reduces setup time, but some mature plugins remain more stable in the older codebase.
“Keep both toolchains available; one may parse an edge case the other misses.”
- Profiles vs symbols: older builds need a chosen profile; new builds infer symbols automatically.
- Plugin gap: a few legacy plugins have no direct equivalents yet.
- Linux notes: both releases may need custom kernels or symbols for reliable parsing.
| Aspect | Volatility 2 | Volatility 3 |
|---|---|---|
| Runtime | Python 2 (deprecated) | Python 3 (active) |
| OS identification | imageinfo + profile selection | automatic symbol inference |
| Plugin availability | Mature, some unique plugins | Growing set; some gaps remain |
| Linux support | Custom profile builds often required | Symbols needed; actively improving |
Practical rule: default to Volatility 3 for Windows work and speed. Fall back to the older code when a needed plugin or output format is missing. Always record the version used in case notes and evidence files.
How to use Volatility for memory forensics: a step-by-step workflow
Begin with a single, repeatable command that confirms the image parses and returns stable process output. This quick check saves time and proves the tool works against your file before deeper scans.

Pointing at the image and controlling output
Run a basic enumeration first. Try: python3 vol.py -f <image> windows.pslist. That lists core processes and gives an immediate sanity check.
When results grow large, pipe through less or redirect: > pstree_2025-10-07.txt. Redirected files speed sharing and let teammates grep locally.
Exporting large results for faster analysis
Organize outputs by plugin and date. Keep a folder per case and name files with timestamps so you preserve time context while iterating.
- Start broad: pslist and pstree, record PID and creation time.
- Then pivot: netscan, malfind, and targeted dumps.
- Script common sequences so one invocation can produce a bundle of outputs for repeatable runs.
When performance matters, export heavy outputs once and perform simple parsing offline rather than re-querying the image. Track elapsed time for each step so you can improve and report progress during active response.
“Confirm parsing first, then scale your queries — that order preserves speed and clarity.”
Hunting malicious processes with windows.pslist and windows.pstree
Start by listing active processes; the first pass often surfaces the clearest leads. Use the pslist output to record ImageFileName, PID, PPID, CreateTime, and ExitTime.

pslist shows who started what and when. Check ImageFileName and PID for obvious oddities. Note CreateTime spikes near the incident window.
Reading ImageFileName, PID/PPID, CreateTime, ExitTime
Look for missing parents and unexpected ExitTime values. A short ExitTime may mean crash-and-cleanup behavior. Duplicate names like svchost.exe need path and command-line verification.
Parent-child anomalies and masquerading names
Use pstree to visualize lineage; asterisks mark depth and make odd parent-child chains stand out.
- Run pslist first and export the output for review.
- Inspect pstree for children spawned by unusual parents.
- Flag processes with names running from temp folders or mismatched paths.
- Cross-check PID entries with netscan later for network activity.
Document suspicious chains and prioritize candidate processes for dumping. These records become high-value leads during containment and follow-up analysis.
Mapping network connections with windows.netscan
Run a full netscan early to expose live socket activity and remote hosts tied to running processes. This single output often yields quick, high-value leads for containment and hunts.

What to look for in the netscan output
windows.netscan lists Offset, Proto, LocalAddr, LocalPort, ForeignAddr, ForeignPort, State, PID, Owner, and Created. Analysts flag odd protocol/state pairs and unusual remote addresses.
Tie every entry back to the owning PID and process name. Match those PIDs against pslist and pstree to check lineage and context. Note Created times and correlate with process CreateTime for stronger evidence.
Turning findings into IOCs
- Export netscan and filter by PID to build per-process footprints.
- Enrich foreign addresses quickly to separate benign services from likely C2 hosts.
- Convert confirmed bad IPs, domains, or ports into IOCs and push them to detection and blocking systems.
| Field | Why it matters | Action |
|---|---|---|
| ForeignAddr / ForeignPort | Identify external hosts and unusual ports | Enrich, blacklist if malicious |
| State | Shows LISTENING, ESTABLISHED, etc. | Flag persistent or unexpected states |
| PID / Owner | Links connection back to process | Dump process and audit path |
Detecting injected code paths using windows.malfind
Scan for executable, writable regions that suggest in-process code insertion. Malfind flags VAD areas with PAGE_EXECUTE_READWRITE and shows hex and ASCII snippets for quick triage.
An analyst’s quickest signal is a process that owns an unexpected PAGE_EXECUTE_READWRITE region.
windows.malfind prints hex and ASCII samples. The ASCII marker “MZ” (hex 4D 5A) often signals an embedded PE header inside another process. That marker alone is not definitive malware, but it is a strong lead.
Reducing false positives with cross-correlation
Always tie malfind hits back to the owning process, its parent, and the user context. A user-launched app with RWX regions near the incident time is more suspicious than a known system service.
- Check netscan: injected regions with external connections deserve priority.
- Compare timestamps: RWX allocation created during the incident window raises confidence.
- Confirm with dumps: extract the region or the whole process for YARA and offline analysis.
“Treat malfind as a strong signal, not proof; correlation and artifact dumping make the case.”
| Indicator | Why it matters | Action |
|---|---|---|
| PAGE_EXECUTE_READWRITE | Unusual RWX allocations inside a process | Dump region, YARA scan, trace parent PID |
| “MZ” (4D 5A) | Possible in-memory PE header | Extract and compute hashes for detection |
| Owning process user | Privilege level affects risk | Prioritize if running as admin or SYSTEM |
Final note: malfind gives high-value output early in an investigation. Use it with other plugins and document offsets and hashes. Record the volatility version and your steps so findings remain reproducible for later analysis.
Dumping processes and files for deeper analysis
When a process looks suspicious, extracting its runtime image gives your team reproducible evidence for detailed review. This step moves fragile artifacts off the live host and into a controlled analysis workflow.
windows.dumpfiles and procdump by PID
Target the owning PID and run a process dump rather than sweeping the whole system. Use windows.dumpfiles to pull executables and DLLs referenced in RAM. Use procdump-style process extraction to capture a full process image for offline work.
- Tip: record the exact command and output path for traceability.
- Tip: copy extracted file artifacts into a case folder and preserve original hashes.
Running strings and YARA against dumps
Run strings across dumps to find URLs, IP address patterns, registry keys, and filenames quickly. Then apply YARA rules to detect known malware traits and behaviors.
Keep both raw and cleaned outputs. Compress large bundles and include the hash in filenames so integrity and chain of custody remain clear.
| Action | Tool | Why |
|---|---|---|
| Extract in-memory artifacts | windows.dumpfiles | Retrieves executables and on-disk references tied to a PID |
| Full process image | procdump | Preserves command-line, memory, handles for analysis |
| Quick triage | strings | Finds addresses, URLs, and persistence keys fast |
Final note: correlate extracted artifacts back to the original image and PID. Validate findings against threat intel, then prioritize containment and follow-up analysis with clear, documented evidence.
Windows-specific techniques: profiles, envars, edit boxes, and email artifacts
Environment variables and UI text fields sometimes contain the single clue that links a PID to an attacker. These Windows-centric artifacts can reveal temp folder paths, credentials left in clear text, and email stores in volatile regions.
Choosing the correct Windows profile in Volatility 2
When you must run legacy tooling, start with imageinfo and pick the profile name shown (for example, Win7SP1x64). A wrong profile yields garbled offsets and wasted scans.
Mining environment variables and UI artifacts
Run envars per PID to capture environment keys and paths. Then run editbox to recover text typed into common controls. Both can expose commands, addresses, or temporary credentials worth preserving.
Finding PST/OST and extracting mail
Use filescan to locate PST/OST entries inside a memory dump, then call dumpfiles to extract them. If headers are forged, add the unsafe flag (-u) when needed.
- Parse exports with pffexport for messages and attachments.
- Hash attachments and compare them with reputation services.
- Map every recovered artifact back to its owning PID and system context.
| Action | Tool | Why |
|---|---|---|
| Select profile | imageinfo | Accurate offsets |
| Capture UI text | editbox | Possible credentials |
| Extract mail stores | filescan + dumpfiles | Full message parsing |
Linux memory forensics: identifying OS, kernel, and working with symbols
Start investigations by confirming the target Linux distribution and kernel release; that single step directs which parsing symbols you need. Correct symbol selection determines whether structures resolve cleanly and whether plugins return reliable output.
Begin by extracting the kernel string and distro markers from the image. Those values map to symbol sets needed by the analyzer. Without the right symbols, many structures remain unresolved and output will be incomplete.
Practical checks and common plugins
- Identify uname and /etc/* release files in the dump to capture the exact version.
- Load matching symbols for Volatility 3 or prepare a custom profile for older tools if none exists.
- Run linux_psaux to mirror ps aux and capture arguments, owners, and start times.
- Correlate findings with linux_netstat to enumerate sockets and foreign address pairs by PID.
Dump suspicious processes, search bash history remnants, and run strings and YARA on extracted files. Maintain a version-to-symbol map across your fleet and export outputs early for repeatable analysis. For a practical write-up and examples, see the memory analysis write-up.
Practical tips, common mistakes, and time-to-value in cyber security operations
Keep in mind that a memory snapshot captures a single instant; timestamps and context will decide whether an entry is relevant. Align CreateTime, ExitTime, and connection Created stamps with your larger incident timeline before drawing conclusions.
Avoiding misattribution and understanding time context
Absence of evidence is not evidence of absence. If expected artifacts are missing, consider capture timing: the malicious process may not have been active at that time.
Record exact commands, host details, and tool versions so other analysts can reproduce the steps and answer follow-up questions.
Prioritizing triage: processes, connections, and dumped artifacts
Start by enumerating core processes, then map network activity and dump suspicious files. That sequence produces fast, shareable leads your SOC can act on.
- Quick wins: export netscan entries, IPs, domains, and hashes early.
- Validate names: check full paths and parentage before labeling any process malicious processes.
- Use multiple signals: RWX regions plus external connections and odd parents merit rapid containment.
“Balance thoroughness with time-to-value: export heavy outputs once and iterate offline rather than re-scanning the image repeatedly.”
Share IOCs early with detection and response teams so blockers and hunts can run across the environment. Keep this playbook current—capture lessons learned after each incident and update processes and questions that guided your triage.
Conclusion
This guide gives a compact, repeatable playbook that delivers leads fast and keeps evidence reliable.
Follow a short sequence: capture an image, enumerate processes and connections, hunt for injection, and dump artifacts for offline review.
Treat this as a 3–5 min read checklist you can run during an active incident.
Twin goals matter: speed and reproducibility. Implement the workflow, keep legacy tools ready when a plugin is missing, and sharpen skills with practice images.
Quick wins: export netscan entries, extract suspicious processes, and convert findings into IOCs for fast response.
Apply these steps in your daily cyber security drills so questions are answered quickly and teams act with clarity when the next case arrives.