ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

内存取证与 Volatility 3 实战:基于 agents24 memory-forensics 技能的内存镜像分析完整指南

2026/9/11 21:42:39 拓冰建站 浏览量
内存取证与 Volatility 3 实战:基于 agents24 memory-forensics 技能的内存镜像分析完整指南 内存取证与 Volatility 3 实战基于 agents24 memory-forensics 技能的内存镜像分析完整指南【免费下载链接】agentsMulti-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity项目地址: https://gitcode.com/GitHub_Trending/agents24/agents内存取证Memory Forensics是应急响应与恶意软件分析中不可替代的一环——攻击者驻留内存的文件型恶意软件、注入的 shellcode、已建立的 C2 连接往往在磁盘上不留痕迹却完整地留在 RAM 里。本文以本仓库reverse-engineering插件中 memory-forensics 技能及其 详细参考文档 为骨架系统讲解基于 Volatility 3 的内存镜像分析从环境搭建、符号表配置到进程、网络、DLL、注册表、文件系统等核心插件族的逐条用法再到 Linux/macOS 跨平台分析与恶意软件检测工作流。读完本文你将掌握一套可直接落地的内存取证命令集并能把采集、分析、提取、验证的完整流程应用到实际入侵调查场景。技能定位什么场景下该做内存取证在reverse-engineering插件中memory-forensics技能用于以下典型场景见 SKILL.md应急响应或入侵调查中执行内存分析从 RAM 镜像中提取恶意软件工件进程、注入代码、网络连接在系统关机前从存活的 Windows/Linux/macOS 主机采集易失性内存使用 Volatility 3 / Rekall 对内存镜像进行分流排查triage从进程内存中恢复凭据、浏览器会话或打开的文件。它与同插件下的 binary-analysis-patternsELF/PE/Mach-O 静态动态分析、anti-reversing-techniques反调试、反虚拟机与混淆对抗以及 malware-analyst 智能体恶意软件分类、沙箱分析、IOC 提取互为补充内存取证负责从运行态找证据其余技能负责把证据拆到字节级。一个值得注意的仓库设计细节本技能正文原本包含约 2680 字节的 Volatility 3 章节因 Codex 对SKILL.md正文有 8 KB 硬截断限制已被移至references/details.md由SKILL.md按需加载。这正是本仓库遵循的渐进式披露内容组织模式详见 docs/authoring.md——正文负责导航与快速上手references/承载深度细节。Volatility 3 框架安装与符号表配置Volatility 3 是当前内存取证的主流开源框架采用 Python 实现去除了 Volatility 2 依赖内存配置文件profile的繁琐流程改为按需下载符号表。核心安装与使用命令如下来自 references/details.md# 安装 Volatility 3 pip install volatility3 # 安装符号表Windows # 从官方符号表下载地址获取symbols 目录下的 zip 包 # 基本用法 vol -f memory.raw plugin # 指定符号表路径 vol -f memory.raw -s /path/to/symbols windows.pslist参数与使用要点-f memory.raw指定内存镜像文件Volatility 3 会自动识别镜像格式raw、E01、VMware.vmem、VirtualBox core dump 等-s /path/to/symbols显式指定符号表目录。Windows 符号表按 OS 版本与构建号区分如windows-10-19041-x64.zip建议提前下载对应版本并集中存放符号表匹配至关重要符号缺失或版本不匹配时多数 Windows 插件无法解析内核结构会直接报 Unsupported OS version 类错误。这是 Windows 内存分析最常遇到的坑对应 SKILL.md 最佳实践章节的 Symbol issues: Ensure correct symbol files for OS version 提示。Windows 核心插件族逐项详解references/details.md将 Windows 分析插件按功能划分为六组。下表与命令均可直接复制使用PID替换为实际进程号。进程分析# 列出进程 vol -f memory.raw windows.pslist # 进程树父-子关系 vol -f memory.raw windows.pstree # 隐藏进程检测按对象池扫描 vol -f memory.raw windows.psscan # 进程内存转储 vol -f memory.raw windows.memmap --pid PID --dump # 进程环境变量 vol -f memory.raw windows.envars --pid PID # 命令行参数 vol -f memory.raw windows.cmdline辨析三者的底层差异pslist遍历内核的ActiveProcessLinks双向链表速度最快但rootkit 通过 DKOMDirect Kernel Object Manipulation摘链后即可隐藏进程psscan则直接扫描物理内存中的EPROCESS对象池不依赖链表因此能发现被摘链的隐藏进程pstree在pslist基础上重建父子层级便于识别合法父进程派生异常子进程的投放模式。网络分析# 网络连接 vol -f memory.raw windows.netscan # 网络连接状态 vol -f memory.raw windows.netstatnetscan是 Windows 上的首选它同时扫描 TCP/UDP 端点表与 TCP 控制块能列出连接两端地址、端口与状态是确认 C2 回连、横向移动跳板最直接的证据来源。DLL 与模块分析# 每个进程加载的 DLL 列表 vol -f memory.raw windows.dlllist --pid PID # 查找隐藏/注入的 DLL vol -f memory.raw windows.ldrmodules # 内核模块 vol -f memory.raw windows.modules # 模块转储 vol -f memory.raw windows.moddump --pid PIDldrmodules的检测原理值得说明它对比每个 DLL 在内核VadRootVAD 树、PEB-Ldr加载器链表与内存映射三处的记录一致性。若某 DLL 在 PEB 链表中被摘除但 VAD 中仍存在即为典型的反射式注入reflective DLL injection痕迹——这正是恶意软件隐藏自身模块的惯用手法。内存注入检测# 检测代码注入 vol -f memory.raw windows.malfind # VAD虚拟地址描述符分析 vol -f memory.raw windows.vadinfo --pid PID # 对可疑内存区域执行 YARA 扫描 vol -f memory.raw windows.vadyarascan --yara-rules rules.yarmalfind是注入检测的核心武器它遍历每个进程的 VAD找出标记为可执行且无文件映射即私有、非映像内存的区域检查其中是否存在 MZ 头、可执行标志或 shellcode 特征。结合 SKILL.md 中的注入判定指标内存保护属性为PAGE_EXECUTE_READWRITE可写可执行本身即高度可疑正常映像区几乎不会出现非映像 VAD 区域中出现 MZ 头分配起始位置出现 shellcode 特征字节。配合这些指标malfind的输出能直接定位哪个进程、哪块内存、什么注入手法。常见注入手法见 SKILL.md 检测模式章节包括经典 DLL 注入VirtualAllocExWriteProcessMemoryCreateRemoteThread进程镂空Process HollowingCreateProcess(SUSPENDED)NtUnmapViewOfSectionWriteProcessMemoryAPC 注入向可告警线程排队QueueUserAPC线程执行劫持SuspendThreadSetThreadContextResumeThread。注册表分析# 列出注册表配置单元hives vol -f memory.raw windows.registry.hivelist # 打印注册表键值 vol -f memory.raw windows.registry.printkey --key Software\Microsoft\Windows\CurrentVersion\Run # 转储注册表配置单元 vol -f memory.raw windows.registry.hivescan --dump注册表在内存中的证据价值极高printkey直接打印Run键可快速定位自启动持久化hivescan --dump将内存中的 SYSTEM/SAM/SECURITY 等配置单元整体导出供后续离线解析。注意windows.hashdump等凭据提取插件依赖先执行hivelist定位配置单元见 SKILL.md 凭据提取章节。文件系统工件# 扫描文件对象 vol -f memory.raw windows.filescan # 从内存转储文件 vol -f memory.raw windows.dumpfiles --pid PID # MFT 分析 vol -f memory.raw windows.mftscan内存中驻留的文件对象包括已被删除但仍被进程占用的文件可通过filescan定位dumpfiles将其还原为磁盘文件——这是恢复删除即销毁证据的关键能力。mftscan扫描 NTFS 主文件表记录提供文件创建、修改、删除的时间线索。Linux 内存分析Linux 内存镜像LiME 格式或 ELF core 格式同样可直接交给 Volatility 3常用插件# 进程列表 vol -f memory.raw linux.pslist # 进程树 vol -f memory.raw linux.pstree # Bash 历史 vol -f memory.raw linux.bash # 网络连接 vol -f memory.raw linux.sockstat # 已加载内核模块 vol -f memory.raw linux.lsmod # 挂载点 vol -f memory.raw linux.mount # 环境变量 vol -f memory.raw linux.envarslinux.bash能从 bash 进程内存中恢复已执行的命令历史即使历史文件被清空是 Linux 主机入侵调查的高价值插件linux.lsmod对照内核模块加载记录可发现隐藏的内核级 rootkit 模块如 LKM 型植入。macOS 内存分析# 进程列表 vol -f memory.raw mac.pslist # 进程树 vol -f memory.raw mac.pstree # 网络连接 vol -f memory.raw mac.netstat # 内核扩展 vol -f memory.raw mac.lsmodmacOS 侧插件命名以mac.前缀区分mac.lsmod对应内核扩展kext枚举用于排查以内核扩展方式驻留的恶意负载。整体功能面比 Windows 窄但覆盖了进程与网络两大核心维度。从采集到分析两条可落地的完整工作流仅掌握插件命令还不够SKILL.md给出了两条端到端流程可与上述插件族串联使用。内存采集Acquisition分析的前提是拿到镜像。Windows 侧推荐 WinPmem命令行直接输出 raw 格式备选 DumpIt、Belkasoft RAM Capturer、Magnet RAM Capture后两者为 GUILinux 侧推荐 LiME 内核模块sudo insmod lime.ko path/tmp/memory.lime formatlime亦可用受限的/dev/memsudo dd if/dev/mem ofmemory.raw bs1M或 ELF 格式的/proc/kcoremacOS 侧使用 osxpmemsudo ./osxpmem -o memory.raw或商业工具 MacQuisition。虚拟机内存则直接取宿主侧文件VMware 的.vmem即 raw 镜像VirtualBox 用vboxmanage debugvm VMName dumpvmcore --filename memory.elfQEMU/KVM 用virsh dump domain memory.raw --memory-onlyHyper-V 则从检查点中获取内存状态。恶意软件分析工作流# 1. 初始进程普查 vol -f memory.raw windows.pstree processes.txt vol -f memory.raw windows.pslist pslist.txt # 2. 网络连接 vol -f memory.raw windows.netscan network.txt # 3. 检测注入 vol -f memory.raw windows.malfind malfind.txt # 4. 分析可疑进程 vol -f memory.raw windows.dlllist --pid PID vol -f memory.raw windows.handles --pid PID # 5. 转储可疑可执行文件 vol -f memory.raw windows.pslist --pid PID --dump # 6. 从转储中提取字符串 strings -a pid.PID.exe strings.txt # 7. YARA 扫描 vol -f memory.raw windows.yarascan --yara-rules malware.yar应急响应工作流# 1. 事件时间线 vol -f memory.raw windows.timeliner timeline.csv # 2. 用户活动 vol -f memory.raw windows.cmdline vol -f memory.raw windows.consoles # 3. 持久化机制 vol -f memory.raw windows.registry.printkey \ --key Software\Microsoft\Windows\CurrentVersion\Run # 4. 服务 vol -f memory.raw windows.svcscan # 5. 计划任务 vol -f memory.raw windows.scheduled_tasks # 6. 近期文件 vol -f memory.raw windows.filescan | grep -i recent底层原理理解内核数据结构才能看懂插件输出references/details.md的下半部分深入 Windows 内核数据结构这是解读插件输出的理论基础也与前文的进程/注入分析逻辑一一对应。EPROCESS 与 PEBEPROCESS是 Windows 内核的进程控制块ActiveProcessLinks双向链表连接所有活动进程pslist即遍历此链表UniqueProcessId记录 PIDPeb指针指向用户态进程环境块typedef struct _EPROCESS { KPROCESS Pcb; // 内核进程块 EX_PUSH_LOCK ProcessLock; LARGE_INTEGER CreateTime; LARGE_INTEGER ExitTime; LIST_ENTRY ActiveProcessLinks; // 双向链表 ULONG_PTR UniqueProcessId; // PID PEB* Peb; // 进程环境块 } EPROCESS;PEB中的关键字段BeingDebugged是反调试检查位与 anti-reversing-techniques 中讨论的 PEB 反调试检测直接相关ImageBaseAddress是可执行映像基址Ldr指向加载器数据即 DLL 链表dlllist/ldrmodules的数据来源typedef struct _PEB { BOOLEAN InheritedAddressSpace; BOOLEAN ReadImageFileExecOptions; BOOLEAN BeingDebugged; // 反调试检查 PVOID ImageBaseAddress; // 可执行文件基址 PPEB_LDR_DATA Ldr; // 加载器数据DLL 列表 PRTL_USER_PROCESS_PARAMETERS ProcessParameters; } PEB;VAD 与内存保护标志MMVAD内存虚拟地址描述符描述进程地址空间的每个内存区域malfind/vadinfo正是围绕它工作。FileObject字段标识该区域是否有文件映射——无文件映射的可执行区域即注入的强信号typedef struct _MMVAD { MMVAD_SHORT Core; union { ULONG LongFlags; MMVAD_FLAGS VadFlags; } u; PVOID FirstPrototypePte; PVOID LastContiguousPte; PFILE_OBJECT FileObject; } MMVAD;配合内存保护标志常量理解malfind的判定逻辑——PAGE_EXECUTE_READWRITE (0x40)等可写可执行组合在正常映像中几乎不存在#define PAGE_EXECUTE 0x10 #define PAGE_EXECUTE_READ 0x20 #define PAGE_EXECUTE_READWRITE 0x40 #define PAGE_EXECUTE_WRITECOPY 0x80检测模式Rootkit 与凭据提取Rootkit 检测# 对比进程列表发现隐藏进程 vol -f memory.raw windows.pslist pslist.txt vol -f memory.raw windows.psscan psscan.txt diff pslist.txt psscan.txt # 隐藏进程 # 检查 DKOM直接内核对象操作 vol -f memory.raw windows.callbacks # 检测被挂钩的系统调用 vol -f memory.raw windows.ssdt # 系统服务描述符表 # 驱动分析 vol -f memory.raw windows.driverscan vol -f memory.raw windows.driverirppslist与psscan的 diff 是最直观的隐藏进程检出法ssdt检查系统服务描述符表是否被改写inline hook 的典型位置driverirp检查驱动的 IRP 分发例程是否被重定向。凭据提取# 转储哈希需先执行 hivelist vol -f memory.raw windows.hashdump # LSA 机密 vol -f memory.raw windows.lsadump # 缓存的域凭据 vol -f memory.raw windows.cachedump # Mimikatz 风格提取依赖特定插件/工具这类插件直接面向横向移动与提权凭据的取证属于敏感能力应严格限定在已获授权的调查与防御性研究场景。YARA 集成与字符串分析内存 YARA 规则YARA 可将威胁情报特征直接投向内存。references/details.md提供了两种典型规则范式通用注入特征MZ 头 shellcode 前缀 API hash 调用序列与已知工具特征Cobalt Strike Beacon 配置字节与关键字符串rule Suspicious_Injection { meta: description Detects common injection shellcode strings: $mz { 4D 5A } $shellcode1 { 55 8B EC 83 EC } // 函数序言 $api_hash { 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 } // push hash, call condition: $mz at 0 or any of ($shellcode*) } rule Cobalt_Strike_Beacon { meta: description Detects Cobalt Strike beacon in memory strings: $config { 00 01 00 01 00 02 } $sleep sleeptime $beacon %s (admin) wide condition: 2 of them }扫描执行方式三种粒度# 扫描所有进程内存 vol -f memory.raw windows.yarascan --yara-rules rules.yar # 扫描特定进程 vol -f memory.raw windows.yarascan --yara-rules rules.yar --pid 1234 # 扫描内核内存 vol -f memory.raw windows.yarascan --yara-rules rules.yar --kernel字符串与 FLOSS# 基础字符串提取 strings -a memory.raw all_strings.txt # Unicode 字符串 strings -el memory.raw all_strings.txt # 针对进程转储的定向提取 vol -f memory.raw windows.memmap --pid 1234 --dump strings -a pid.1234.dmp process_strings.txt # 模式匹配URL / IP grep -E (https?://|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}) all_strings.txt # FLOSS 提取混淆字符串含解码后的 floss malware.exe floss_output.txt floss pid.1234.dmp对于经过字符串加密/混淆的样本FLOSSFireEye Labs Obfuscated String Solver能自动定位并解码 FLOSS 可识别的编码字符串弥补strings的盲区。最佳实践与常见误区采集阶段最小化足迹使用轻量采集工具避免在被取证主机上加载重型软件污染内存全程记录记录采集时间、所用工具与版本、镜像哈希即时校验完整性采集后立即计算镜像哈希维护监管链保证取证处理链条完整可审计。分析阶段先宽后深先做全局概览进程树、netscan再对可疑目标深挖交叉验证同一数据用多个插件互相印证如 pslist vs psscan时间线关联将内存发现与磁盘、网络日志关联定位攻击时序记录留痕保存详细笔记与截图作为证据多重验证关键结论通过多种方法复核。常见误区见 SKILL.md数据过期内存易失应尽快分析而非拖延归档镜像不完整核对镜像大小是否与目标机内存容量相符符号问题必须匹配正确的 OS 版本符号文件Smear 效应采集过程中内存仍在变化可能引入轻微不一致加密数据部分数据在内存中可能以加密形式存在无法直接读取明文。仓库资源导航如需在真实调查任务中调用本文所述能力可继续深入以下仓库文件memory-forensics 技能正文采集工具、工作流、数据结构、YARA、最佳实践的完整入口memory-forensics 详细参考本文核心依据Volatility 3 插件命令全集malware-analyst 智能体恶意软件分类、动静分析、IOC 提取与报告框架reverse-engineer 智能体二进制分析、反汇编/反编译方法论anti-reversing-techniques 技能与内存取证互补的保护对抗知识binary-analysis-patterns 技能ELF/PE/Mach-O 分析工作流docs/authoring.md了解references/渐进式披露模式与多平台技能分发的仓库约定。需要注意内存取证工具涉及敏感能力使用范围应严格限定于已获授权的应急响应、防御性恶意软件研究与教育场景与仓库内各智能体文档中声明的授权边界保持一致。【免费下载链接】agentsMulti-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity项目地址: https://gitcode.com/GitHub_Trending/agents24/agents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考