executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
re-mem-forensicsVolatility 3 内存取证:进程/内核对象/网络/凭据线索。 触发词:内存取证、Volatility、memdump分析、进程列表、mimikatz线索
Independent GitHub snapshot · Automated classification · Original documentation governs
本技能只读转储文件、不运行样本;涉及动态确认的转 [[re-sandbox]](默认沙箱最高原则,见 [[re-analyze/platform-tips]])。
pip install volatility3(命令为 vol);官方要求 Python 3.8+(README 表述),2026 实测 2.28.0 在 Python 3.14 可安装且插件正常加载——先 python3 --version 确认,版本不匹配用 pyenv/venv 建对应环境再装vol -h;vol -f dump.raw windows.info 能输出镜像信息且不报符号错误symbols/windows/ 下找 ISF;找不到时自动从 Microsoft 符号服务器下载 PDB 并转换为 ISF——这是唯一"能自动在线获取"的一侧(网络受限即失败)dwarf2json(需带调试符号的内核)或 btf2json(用 vmlinuz 的 BTF + System.map,不需要完整调试内核)banners 拿到内核 banner,再按 banner 找或构建对应 ISF;isfinfo 查看已识别符号表,banner 未命中时用 -vvv 确认--offline + 预置符号目录,否则插件报 MissingSymbol 类错误vol --help 里直接缺失),装完 pip install pycryptodome yara-python 重试apt install p7zip-full / dnf install p7zip-plugins / pacman -S 7zipbrew install p7zip7z --helpvol -f dump.raw windows.dumpfiles 出的可疑对象,用 [[re-ghidra]] / [[re-ida]] 分析按顺序执行,每步产物存档(路径 + sha256 + 时间戳,取证要求)。
确认 dump 来源与架构:
file dump.raw # 确认是内存转储(MEMORY_IMAGE 头 / crash dump),不是别的文件
vol -f dump.raw windows.info # Windows 镜像信息;Linux/macOS 无 info 插件——直接跑对应平台插件验证(如 linux.pslist / mac.pslist,符号表就位才正常输出)
windows.*、macOS 用 mac.*、Linux 用 linux.*;volatility3 自动识别 profile(相比 vol2 手选 profile 已简化),但首次运行需下载对应符号文件(见工具准备)-f);休眠文件(hiberfil.sys)无内置层——先转 raw 或专用工具处理进程列表:
vol -f dump.raw windows.pslist # 常规进程列表(含 PID/PPID/时间戳)
vol -f dump.raw windows.psscan # 池扫描,能发现已终止/隐藏进程
vol -f dump.raw windows.pstree # 进程树,看父子关系异常(如 IE 生成了 cmd)
svchost.exe 不在 C:\Windows\System32)windows.cmdline 看进程命令行(混淆的 powershell -enc 参数)、windows.svcscan 服务列表(异常服务常是持久化)、windows.sessions 会话与桌面归属网络连接:
vol -f dump.raw windows.netscan # 网络连接/监听(TCP/UDP,含已关闭连接)
vol -f dump.raw windows.netstat # 备用:通过流表/相关对象推断
注入/异常检测:
vol -f dump.raw windows.dlllist -p <pid> # 进程模块列表,看路径异常(%TEMP%、AD 区)
vol -f dump.raw windows.malfind # 扫描隐藏/注入的可执行内存(MEM_COMMIT + PAGE_EXECUTE_READWRITE 等)
vol -f dump.raw windows.hollowprocesses # 进程镂空检测(替代合法性)
--dump 导出可疑区段(vol -f dump.raw windows.malfind --dump --pid <pid>),提取出的对象存 sha256,转 [[re-binary-core]] 静态深挖凭据线索与可疑对象提取:
vol -f dump.raw windows.registry.hashdump # 本地账户 NT/LM 哈希(改自 SAM + SYSTEM hive、boot key)
vol -f dump.raw windows.registry.lsadump # LSA secrets(SECURITY hive)
vol -f dump.raw windows.registry.cachedump # 域缓存凭据 MS-CACHEv2(SECURITY hive 的 NL$KM 密钥)
# 旧写法 windows.hashdump / windows.lsadump / windows.cachedump 是弃用别名(v2.27 标记 2026-09-25 移除)
windows.dumpfiles(指定文件)或 malfind/pslist --dump(vol -f dump.raw windows.pslist --dump --pid <pid> 导出进程内存);每个对象算 sha256 存档vol -f dump.raw windows.filescan | grep -i <关键词> 找已删除/可疑文件对象,命中后 windows.dumpfiles 提取(配合 windows.svcscan/windows.amcache 交叉确认)vol -f dump.raw yarascan.YaraScan --yara-file <规则.yar> 扫内核内存(进程内扫 VAD 用 windows.vadyarascan.VadYaraScan --yara-file <规则.yar> --pid <pid>;均需 yara-python)——把 [[re-ioc]] 的规则直接作用于转储vol -r csv -f dump.raw timeliner 生成事件时间线(timeliner 是顶级插件,无 windows. 前缀;-r/--renderer 是 vol 级选项,位于插件名之前;-r csv 为 CSV 渲染器),供报告与 [[re-ioc]] 引用vol 报 Missing Symbol / 解析出的进程列表明显荒谬(系统进程缺失、地址全 0);原因——volatility3 会自动选 profile,但符号表(ISF)必须与目标精确匹配:Windows 按 PDB GUID/age(缺失时可自动从 Microsoft 符号服务器取),Linux/macOS 必须匹配 kernel banner 且没有自动获取——依赖社区预构建包或自行用 dwarf2json(需调试内核)/btf2json(vmlinuz BTF + System.map)构建;对策——先 banners 拿内核 banner;Windows 侧网络可及时直接跑 windows.info 触发 PDB 下载,受限环境 --offline + 预置符号目录;Linux/macOS 侧必须先按 banner 找到或构建出对应 ISF,banner 不命中时换版本或构建,别反复重试同一份[vsyscall]/[vdso]/[vvar](见 [[re-analyze/platform-tips]] Linux 内存转储极端段),垃圾页混入;对策——取 dump 阶段就过滤极端段;分析时按地址区间跳过 0xffffffffff6xxxxx,别把垃圾页当证据windows.malfind 命中大量私有执行页,但 dlllist 无异常模块、提取对象跑不了;原因——加载器/垃圾回收器/JIT 的正常 RWX 页也会被判定"异常",malfind 只看内存属性不看执行语义;对策——用 dlllist 路径、hollow 检测、提取对象实际反编译([[re-binary-core]])三重交叉确认后再定论windows.psscan(池扫描找残留对象),取证要求尽量全。vol -r csv -f dump.raw timeliner(顶级插件,无 windows. 前缀;-r/--renderer 是 vol 级选项,位于插件名之前)生成 CSV 时间线,进程/网络/凭据事件按时间归档,作为 [[re-ioc]] 报告证据段EtwEventWrite 前 4 字节 patch 成 ret 14、AmsiScanBuffer 前 3 字节改成 return 0、send 开头跳到匿名私有内存),不产生新执行页也不改页权限,malfind 无感;对策——跑内置 windows.etwpatch(检测 ETW 补丁技术,vol3 2.28 起自带),或把内存中模块 dump 出来与磁盘原始 DLL 对照函数头字节PAGE_NOACCESS/PAGE_READWRITE 并把内容加密,唤醒瞬间才还原执行;对策——用 vadinfo 找权限翻转/NOACCESS 的区段,按轮转密钥还原休眠中的加密页,或配合 [[re-emulation]] 在唤醒点模拟执行抓取明文volatility3-bitlocker 插件跑 windows.bitlocker.BitlockerFVEKScan(--tags FVEc Cngb)提取 FVEK,再用 dislocker -k 挂载解密;v3 插件对旧内核结构报错时回退 Volatility 2 + breppo/Volatility-BitLockervol --help 里没有 windows.registry.hashdump/lsadump/cachedump 或 yarascan;原因——缺 pycryptodome / yara-python 依赖,加载失败的插件被静默跳过(2026 实测 2.28.0 表现);对策——pip install pycryptodome yara-python 后重跑 vol --help 确认条目出现,再跑对应插件windows.hashdump 能跑但告警,或某天直接报找不到插件;原因——volatility3 的插件路径在持续重组(注册表类插件已归入 windows.registry.*,旧名以弃用别名形式保留并标注移除日期,如 windows.hashdump 标记 2026-09-25 移除);对策——用当前路径(见步骤 3),并在报告里记下所用版本;注意区分"源码目录变了"与"命令行调用名变了"——两者不一定同步(如 malfind 源码在 windows/malware/ 下,但调用名仍是 windows.malfind)