conducting-memory-forensics-with-volatility

使用 Volatility 3 执行内存取证分析,从事件响应期间采集的 RAM 转储中提取恶意软件执行、进程注入、网络连接和凭据窃取的证据。涵盖内存采集、进程分析、DLL 检查和恶意软件检测。适用于内存取证、RAM 分析、Volatility 框架、内存转储调查、易失性证据分析或实时内存采集相关请求。

9 stars

Best use case

conducting-memory-forensics-with-volatility is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

使用 Volatility 3 执行内存取证分析,从事件响应期间采集的 RAM 转储中提取恶意软件执行、进程注入、网络连接和凭据窃取的证据。涵盖内存采集、进程分析、DLL 检查和恶意软件检测。适用于内存取证、RAM 分析、Volatility 框架、内存转储调查、易失性证据分析或实时内存采集相关请求。

Teams using conducting-memory-forensics-with-volatility should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/conducting-memory-forensics-with-volatility/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/conducting-memory-forensics-with-volatility/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/conducting-memory-forensics-with-volatility/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How conducting-memory-forensics-with-volatility Compares

Feature / Agentconducting-memory-forensics-with-volatilityStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

使用 Volatility 3 执行内存取证分析,从事件响应期间采集的 RAM 转储中提取恶意软件执行、进程注入、网络连接和凭据窃取的证据。涵盖内存采集、进程分析、DLL 检查和恶意软件检测。适用于内存取证、RAM 分析、Volatility 框架、内存转储调查、易失性证据分析或实时内存采集相关请求。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 使用 Volatility 进行内存取证(Memory Forensics with Volatility)

## 适用场景

- 活跃事件期间端点已被遏制且必须保全易失性证据
- EDR 告警提示仅存在于内存中的进程注入或无文件恶意软件
- 需要从感染勒索软件的系统中恢复加密密钥(在关机前)
- 怀疑存在凭据窃取(Mimikatz、LSASS 转储)且必须确认证据
- 怀疑存在 Rootkit 或内核级攻陷且基于磁盘的分析不足

**不适用于**分析磁盘镜像或文件系统产物;此类任务请使用磁盘取证工具(Autopsy、FTK)。

## 前置条件

- 已部署或可用的内存采集工具:WinPmem、Magnet RAM Capture、DumpIt 或 AVML(Linux)
- 已安装 Volatility 3,配有 Python 3.8+ 和所需符号表
- 充足的内存转储存储空间(等于系统 RAM 大小,通常 8-64 GB)
- 用于内存恶意软件检测的 YARA 规则(Florian Roth 的 signature-base、自定义规则)
- 被分析操作系统版本的正常进程和 DLL 参考基线
- 证据处理的监管链文档

## 工作流程

### 步骤 1:采集内存镜像

使用取证可靠的方法从目标系统采集 RAM:

**Windows(WinPmem):**
```
winpmem_mini_x64.exe output.raw
```

**Windows(Magnet RAM Capture):**
```
MagnetRAMCapture.exe
# 基于图形界面,选择输出路径,生成 .raw 文件
```

**Windows(DumpIt):**
```
DumpIt.exe
# 自动在当前目录创建内存转储
```

**Linux(AVML - Acquire Volatile Memory for Linux):**
```
./avml output.lime
```

记录采集元数据:
```
采集记录:
━━━━━━━━━━━━━━━━━
目标主机:      WKSTN-042
RAM 大小:      16 GB
转储文件:      WKSTN-042_20251115_1445.raw
转储大小:      16,843,612,160 字节
SHA-256:       a4b3c2d1e5f6...
采集工具:      WinPmem 4.0
采集人:        [分析员姓名]
时间戳:        2025-11-15T14:45:00Z
```

### 步骤 2:识别操作系统和配置文件

Volatility 3 自动识别操作系统,但需验证:

```bash
# 获取系统信息
vol -f WKSTN-042_20251115_1445.raw windows.info

# 输出包含:
# OS: Windows 10 22H2(Build 19045.3693)
# Kernel Base: 0xf8066c200000
# DTB: 0x1aa000
# Symbols: ntkrnlmp.pdb
```

### 步骤 3:分析运行中的进程

检查进程树以发现可疑活动:

```bash
# 列出所有运行中的进程
vol -f memory.raw windows.pslist

# 显示进程树(父子关系)
vol -f memory.raw windows.pstree

# 扫描隐藏/未链接的进程(Rootkit 检测)
vol -f memory.raw windows.psscan

# 比较 pslist 与 psscan 以找出隐藏进程
# psscan 中有但 pslist 中没有的进程可能被 Rootkit 隐藏
```

进程分析中的关键失陷指标:
- 运行时没有 `-k` 参数或父进程错误的 `svchost.exe`(应为 `services.exe`)
- 父进程异常的 `csrss.exe` 或 `lsass.exe`
- 名称拼写错误的进程(`scvhost.exe`、`lssas.exe`)
- 由 `outlook.exe`、`winword.exe` 或 `excel.exe` 生成的异常进程
- 应为单例的进程出现多个实例(`lsass.exe`、`smss.exe`)

### 步骤 4:调查网络连接

提取活跃和最近关闭的网络连接:

```bash
# 列出所有网络连接
vol -f memory.raw windows.netscan

# 关注输出字段:
# Offset    Proto  LocalAddr     LocalPort  ForeignAddr    ForeignPort  State     PID  Owner
# 0xe10...  TCPv4  10.1.5.42     49721     185.220.101.42  443         ESTAB     3847  update.exe
```

将可疑连接与进程树交叉引用以识别 C2 通信。注意:
- 意外进程与外部 IP 的连接
- 非浏览器进程通过高端口号连接至 443/80 端口
- `svchost.exe` 或系统进程与外部 IP 的连接

### 步骤 5:检测进程注入和恶意软件

使用 malfind 识别注入代码和内存驻留恶意软件:

```bash
# 检测进程中的注入代码
vol -f memory.raw windows.malfind

# 输出显示:
# PID  Process       Start      End        Tag  Protection  Hexdump/Disassembly
# 3847 explorer.exe  0x2a10000  0x2a14000  VadS PAGE_EXECUTE_READWRITE
# MZ header detected - injected PE

# 转储可疑进程内存
vol -f memory.raw windows.memmap --pid 3847 --dump

# 列出可疑进程加载的 DLL
vol -f memory.raw windows.dlllist --pid 3847

# 用 YARA 规则扫描内存
vol -f memory.raw windows.yarascan --yara-file malware_rules.yar
```

### 步骤 6:提取凭据和产物

从内存中恢复敏感数据:

```bash
# 从内存转储注册表配置单元(用于密码哈希提取)
vol -f memory.raw windows.registry.hivelist
vol -f memory.raw windows.hashdump

# 提取命令行历史
vol -f memory.raw windows.cmdline

# 列出句柄(文件、注册表键、互斥量)
vol -f memory.raw windows.handles --pid 3847

# 提取剪贴板内容
vol -f memory.raw windows.clipboard

# 从内存转储缓存的文件
vol -f memory.raw windows.dumpfiles --pid 3847
```

### 步骤 7:生成取证报告

将调查结果汇编成结构化分析报告,记录从内存中提取的所有证据:

- 带 PID、父进程和时间戳的进程异常
- 带关联进程上下文的网络连接
- 带内存保护标志的注入代码区域
- 提取的 IOC(哈希、IP、域名、互斥量、注册表键)
- YARA 规则匹配(规则名称和匹配偏移量)
- 凭据暴露情况(发现的哈希、面临风险的账号)

## 核心概念

| 术语 | 定义 |
|------|------|
| **易失性证据(Volatile Evidence)** | 仅存在于 RAM 中、系统断电后即丢失的数据;包括运行中的进程、网络连接、加密密钥 |
| **进程注入(Process Injection)** | 恶意软件将代码插入合法进程内存空间以规避检测的技术(malfind 可检测此行为) |
| **EPROCESS** | 代表进程的 Windows 内核数据结构;psscan 即使在进程从活跃进程列表中取消链接后仍会搜索这些结构 |
| **VAD(Virtual Address Descriptor,虚拟地址描述符)** | 跟踪分配给进程的内存区域的 Windows 内核结构;malfind 检查 VAD 中可执行但非文件支持的区域 |
| **符号表(Symbol Tables)** | Volatility 3 用于解析内存的特定操作系统数据结构;根据检测到的操作系统版本自动下载 |
| **PAGE_EXECUTE_READWRITE** | 表示区域可读、可写和可执行的内存保护标志;注入恶意代码的常见指标 |
| **内存驻留恶意软件(Memory-Resident Malware)** | 完全在 RAM 中运行而不向磁盘写入持久文件的恶意软件,使其对传统基于磁盘的杀毒软件不可见 |

## 工具与系统

- **Volatility 3**:主要的开源内存取证框架;Python 3 重写版,具有自动符号解析功能
- **WinPmem / DumpIt / Magnet RAM Capture**:Windows 系统的内存采集工具
- **AVML(Acquire Volatile Memory for Linux)**:微软的开源 Linux 内存采集工具
- **YARA**:用于将内存转储与恶意软件签名和行为规则进行匹配的模式匹配引擎
- **MemProcFS**:将内存呈现为虚拟文件系统以供直观浏览的内存分析工具

## 常见场景

### 场景:检测内存中的 Cobalt Strike Beacon

**背景**:EDR 检测到可疑的命名管道活动但无法识别来源。从可疑端点采集内存转储进行分析。

**处理方法**:
1. 运行 `windows.pstree` 识别进程层次结构并发现异常的父子关系
2. 运行 `windows.malfind` 检测注入代码区域,特别是在 `svchost.exe` 或 `rundll32.exe` 中
3. 转储注入的内存区域并使用 YARA 规则扫描 Cobalt Strike Beacon 签名
4. 运行 `windows.netscan` 识别 C2 连接并与注入进程 PID 关联
5. 使用 CobaltStrikeParser 提取 Beacon 配置(C2 URL、睡眠时间、抖动、水印)
6. 运行 `windows.cmdline` 识别已执行的后渗透命令

**常见陷阱**:
- 只分析进程列表而不运行 malfind(遗漏合法进程中的注入代码)
- 在隔离端点前未采集内存(EDR 遏制可能触发恶意软件自删除)
- 在较新版本 Windows 上使用 Volatility 2 配置文件而非 Volatility 3 自动符号解析

## 输出格式

```
内存取证分析报告
==================================
事件:          INC-2025-1547
证据文件:      WKSTN-042_20251115_1445.raw
SHA-256:       a4b3c2d1e5f6...
已识别操作系统:Windows 10 22H2(Build 19045)
分析工具:      Volatility 3.2.0

进程异常
PID    进程名          父进程       异常
3847   update.exe      powershell   Temp 目录中的可疑可执行文件
5102   svchost.exe     explorer     错误的父进程(应为 services.exe)
---    [隐藏]          ---          在 psscan 中存在但 pslist 中不存在

注入代码
PID    进程名        地址范围                  保护                    发现
5102   svchost.exe   0x00A10000-0x00A14       PAGE_EXECUTE_READWRITE  MZ 头(PE 注入)

网络连接
PID    进程名       本地                   远程                  状态
3847   update.exe   10.1.5.42:49721        185.220.101.42:443    ESTABLISHED
5102   svchost.exe  10.1.5.42:51003        91.215.85.17:8443     ESTABLISHED

YARA 匹配
规则: CobaltStrike_Beacon_x64
匹配 PID: 5102(svchost.exe)
偏移量: 0x00A10240

提取的 IOC
哈希:     [转储的注入代码的 SHA-256]
C2 IP:    185.220.101.42, 91.215.85.17
C2 域名:  [从 Beacon 配置提取]
互斥量:   Global\MSCTF.Shared.MUTEX.ZRQ
```

Related Skills

performing-sqlite-database-forensics

9
from killvxk/cybersecurity-skills-zh

对 SQLite 数据库执行取证分析,从空闲列表(Freelist)和 WAL 文件中恢复已删除记录,解码编码时间戳,并从浏览器历史、即时通讯应用和移动设备数据库中提取证据。

performing-network-forensics-with-wireshark

9
from killvxk/cybersecurity-skills-zh

使用 Wireshark 和 tshark 捕获并分析网络流量,重建网络事件、提取制品并识别恶意通信。

performing-mobile-device-forensics-with-cellebrite

9
from killvxk/cybersecurity-skills-zh

使用 Cellebrite UFED 和开源工具获取和分析移动设备数据,提取通信记录、位置数据和应用程序制品。

performing-memory-forensics-with-volatility3

9
from killvxk/cybersecurity-skills-zh

使用 Volatility 3 分析易失性内存转储,以提取运行中的进程、网络连接、加载的模块以及恶意活动的证据。

performing-memory-forensics-with-volatility3-plugins

9
from killvxk/cybersecurity-skills-zh

使用 Volatility3 插件分析内存转储,检测 Windows、Linux 和 macOS 内存镜像中的注入代码、Rootkit、凭据窃取和恶意软件痕迹。

performing-linux-log-forensics-investigation

9
from killvxk/cybersecurity-skills-zh

对 Linux 系统日志(包括 syslog、auth.log、systemd journal、kern.log 和应用程序日志)进行取证调查,以重建用户活动、检测未授权访问并在被入侵的 Linux 系统上建立事件时间线。

performing-endpoint-forensics-investigation

9
from killvxk/cybersecurity-skills-zh

对受损端点执行数字取证调查,包括内存获取、磁盘镜像、工件分析和时间线重建。 适用于调查安全事件、为法律诉讼收集证据或分析端点受损范围的场景。 适用于涉及端点取证、内存分析、磁盘取证或事件调查的请求。

performing-disk-forensics-investigation

9
from killvxk/cybersecurity-skills-zh

使用取证镜像、文件系统分析、产物恢复和时间线重建进行磁盘取证调查,以支持事件响应案例。 使用 FTK Imager、Autopsy 和 The Sleuth Kit 等工具进行证据采集、已删除文件恢复和产物检查。 适用于磁盘取证、硬盘分析、取证镜像、文件恢复、证据采集或数字取证调查等请求场景。

performing-cloud-native-forensics-with-falco

9
from killvxk/cybersecurity-skills-zh

使用 Falco YAML 规则在容器和 Kubernetes 中进行运行时威胁检测,监控系统调用以检测 shell 生成、文件篡改、网络异常和权限提升。通过 Falco gRPC API 管理 Falco 规则并解析 Falco 告警输出。适用于构建容器运行时安全或调查 k8s 集群入侵。

performing-cloud-forensics-with-aws-cloudtrail

9
from killvxk/cybersecurity-skills-zh

使用 CloudTrail 日志对 AWS 环境执行取证调查,重建攻击者活动、识别受损凭据并分析 API 调用模式。

performing-cloud-forensics-investigation

9
from killvxk/cybersecurity-skills-zh

通过收集和分析来自 AWS、Azure 和 GCP 服务的日志、快照和元数据,在云环境中开展取证调查。

implementing-memory-protection-with-dep-aslr

9
from killvxk/cybersecurity-skills-zh

实施内存保护机制,包括 DEP(数据执行防护)、ASLR(地址空间布局随机化)、 CFG(控制流防护)和其他漏洞利用缓解措施,以防御内存损坏攻击。适用于加固端点 以抵御缓冲区溢出利用、ROP 链和代码注入的场景。适用于涉及内存保护、漏洞利用缓解、 DEP、ASLR 或 CFG 配置的请求。