Windows内存取证基础

内存镜像格式识别

当拿到 dmp、lsass.DMP、dump、mem、raw 等无法直接识别版本的内存镜像时,需要按格式选择对应的处理方式。

通用思路

直接使用 010 手搓或者用 Strings 命令把可打印字符保存到文本文件中再手搓

需要从内存中找到 AES 解密的 key 的情况:可以使用 findaes.exe 工具辅助查找

dmp 文件

  1. 拉入Passware Kit Forensic-Memory Analysis进行分析(用户名和密码)
  2. 使用vol分析

lsass.DMP 文件

直接使用mimikatz或者pypykatz分析

sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords
pypykatz lsa minidump lsass.DMP

dump 文件

“dmp” 通常特指 Windows 的崩溃转储文件,而 “dump” 是一个更为通用的术语,可以用于描述各种数据转储操作或文件。

取证方法大致和dmp文件相同

mem 文件

vol.py -f mem imageinfo

raw 文件

可以直接使用 vol2 或者 vol3 进行内存取证

系统信息识别

在正式敲入复杂命令前,确认镜像类型和提取基础信息是重中之重。

核心实战法则

  • 工具选择策略:非 Windows 10 镜像可直接使用 Vol_all_in_one 进行一键自动化分析,极大提高效率。

  • Vol3 的不可替代性:面对 Windows 10 的内存镜像,Vol2 的某些功能(如系统识别、特定进程抓取)可能会失效,此时必须切换至 Volatility 3(如:2023 安洵杯 dacongのWindows)。

  • 黄金线索点:取证过程中一定要记得优先查看镜像桌面上的文件!

系统信息获取命令

  • Vol2 识别操作系统信息:vol.py mem.dump imageinfo

  • Vol3 识别内存系统版本:vol3.py -f dacong.raw banners.Banners(注意:有时 Vol3 识别不出,但 Vol2 可以,两者需互补使用)。


进程与服务分析

寻找异常程序、隐藏进程和恶意服务的核心环节。

进程全景扫描

  • Vol2 查看基础进程:vol.py -f OtterCTF.vmem --profile=Win7SP1x64 pslist
  • Vol3 查看基础进程:vol3.py -f dacong.raw windows.pslist
  • Vol2 查看隐藏/解链进程(进程树):vol.py -f OtterCTF.vmem --profile=Win7SP1x64 pstree
  • Vol3 查看进程树:vol3.py -f dacong.raw windows.pstree

进程深度提取与服务探测

  • Vol2 爆破提取指定进程:vol.py -f OtterCTF.vmem --profile=Win7SP1x64 memdump -p 3036 --dump-dir=./(通过 PID 导出 .dmp 文件进行后续分析)。
  • Vol2 扫描镜像服务:vol.py --plugins=/home/kali/volatility/volatility/plugins -f mem.raw --profile=Win7SP1x64 svcscan

文件系统遍历与数据榨取

从海量内存碎片中精准定位并提取关键文件。

文件全局扫描

  • Vol2 扫描进程缓存文件:vol.py -f memory.raw --profile=Win7SP1x64 filescan
  • Vol3 扫描镜像文件:vol3.py -f dacong.raw windows.filescan

过滤与精准定位技巧

  • Vol2 查找特定后缀文档:vol.py -f example.raw --profile=Win7SP1x64 filescan | grep -E 'txt|png|jpg|gif|zip|rar|7z|pdf|doc'
  • Vol2 查找指定文件夹内容:volatility -f example.raw --profile=Win7SP1x64 filescan | grep TMP_User
  • Vol3 快速定位桌面文件:vol3.py -f dacong.raw windows.filescan | grep Desktop

文件物理提取与恢复

  • Vol2 爆破提取文件内容:vol.py -f OtterCTF.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007e410890 --dump-dir=./
  • Vol3 根据虚拟地址提取文件:vol3.py -f mem.raw windows.dumpfiles --virtaddr="0x0000e0007ad17f20"
  • Vol2 恢复被删除的文件:vol.py -f 1.vmem --profile=Win7SP1x64 mftparser

命令行、环境变量与网络状态

还原黑客的终端操作和网络后门连接特征。

终端指令与环境排查

  • Vol2 扫描进程环境变量:vol.py -f memory.raw --profile=Win7SP1x64 envars
  • Vol2 扫描进程命令行参数:vol.py -f memory.raw --profile=Win7SP1x64 cmdscan
  • Vol2 扫描命令行记录:vol.py -f memory.raw --profile=Win7SP1x64 cmdline
  • Vol3 扫描命令行记录:vol3.py -f dacong.raw windows.cmdline

网络连接与流量分析

  • Vol2 查看网络连接状态(基础):vol.py -f memory.raw --profile=Win7SP1x64 connscan
  • Vol2 扫描网络端口与连接:vol.py --plugins=... -f mem.raw --profile=Win7SP1x64 netscan
  • Vol2 提取详细网络连接:vol.py --plugins=... -f mem.raw --profile=Win7SP1x64 connections
  • Vol3 查看网络与端口占用:vol3.py -f dacong.raw windows.netscan
  • Vol3 详细网络状态统计:vol3.py -f dacong.raw windows.netstat
  • Vol2 搜索内核网络流量包信息:vol.py --plugins=... -f OtterCTF.vmem --profile=Win7SP1x64 ndispktscan

用户凭证与注册表挖掘

获取系统控制权与核心配置参数的必经之路(注:注册表功能通常 Vol2 表现更优)。

注册表键值读取

  • Vol2 查看注册表配置单元:vol.py -f memory.raw --profile=Win7SP1x64 hivelist
  • Vol3 扫描注册表配置单元:vol3.py -f dacong.raw windows.registry.hivelist
  • Vol2 查看注册表键名:vol.py -f memory.raw --profile=Win7SP1x64 hivedump -o 0xfffff8a001cce010
  • Vol2 查看注册表键值:vol.py -f OtterCTF.vmem --profile=Win7SP1x64 printkey
  • Vol3 扫描注册表键值:vol3.py -f dacong.raw windows.registry.printkey

用户账户与密码获取

  • Vol2 提取当前镜像用户列表:vol.py --plugins=... -f mem.raw --profile=Win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names"
  • Vol2 提取用户 NTLM/LM Hash:vol.py -f OtterCTF.vmem --profile=Win7SP1x64 hashdump
  • Vol2 使用 Mimikatz 提取明文密码:vol.py --plugins=... -f mem.dump --profile=Win7SP1x64 mimikatz

行为轨迹与图形界面还原

直接重现用户操作的历史痕迹和屏幕画面。

界面与剪贴板审查

  • Vol2 获取系统屏幕截图:vol.py -f 1.vmem --profile=Win7SP1x64 screenshot --dump-dir=./
  • Vol2 导出 Windows 窗口信息:vol.py -f 1.vmem --profile=Win7SP1x64 windows
  • Vol2 查看剪贴板简略信息:vol.py -f 1.vmem --profile=Win7SP1x64 clipboard
  • Vol2 查看剪贴板详细内容:vol.py -f 1.vmem --profile=Win7SP1x64 clipboard -v

文本记录与应用历史

  • Vol2 查看浏览器历史记录:vol.py -f 1.vmem --profile=Win7SP1x64 iehistory
  • Vol2 显示编辑控件信息(输入框):vol.py -f 1.vmem --profile=Win7SP1x64 editbox
  • Vol2 查看记事本展示内容:vol.py -f 1.vmem --profile=Win7SP1x64 notepad
  • Vol2 查看程序运行记录(最后更新/运行次数):vol.py -f 1.vmem --profile=Win7SP1x64 userassist
  • Vol2 全局最大化提取时间线信息:vol.py -f 1.vmem --profile=Win7SP1x64 timeliner

恶意软件检测与高级取证分析

针对无文件攻击、注入、外设异常等高级威胁的排查。

模块注入与木马检测

  • Vol2 扫描进程动态库 (DLL) 列表:vol.py -f memory.img --profile=Win2003SP1x86 dlllist
  • Vol2 扫描未链接/隐藏模块:vol.py -f memory.img --profile=Win2003SP1x86 ldrmodules
  • Vol2 扫描注入代码与恶意软件:vol.py -f memory.img --profile=Win2003SP1x86 malfind
  • Vol2 基于 VolDiff 的恶意软件检测:vol.py --plugins=... -f OtterCTF.vmem --profile=Win7SP1x64 voldiff

硬件与加密设备

  • Vol2 获取 USB 历史连接信息:vol.py --plugins=... -f OtterCTF.vmem --profile=Win7SP1x64 usbstor
  • Vol2 提取 Bitlocker 加密密钥:vol.py --plugins=... -f OtterCTF.vmem --profile=Win7SP1x64 bitlocker

特殊进程与疑难文件处置技巧

常规命令失效时的高阶实战策略。

经典特殊进程破解

  • 画图进程 (mspaint.exe):使用 memdump 导出 dmp 文件,修改后缀为 .data。随后拖入 GIMP 软件中,通过调整位移和分辨率来还原图像。在提取前使用 screenshot 获取截图信息,有助于提前确立屏幕分辨率参数。此方法同样适用于其他涉及图形渲染的进程(例:2024 NKCTF)。
  • 便签进程 (StikyNot.exe):在路径 C:\Users\XXX\AppData\Roaming\Microsoft\Sticky Notes\ 提取出对应的 .snt 文件。该文件无法直接阅读,必须导入 Win7 原生便签环境或强制使用记事本打开。
  • 联系人进程 (wab.exe):在文件中重点搜索 .contact 后缀的文件并提取。

疑难文件强制提取

  • 系统日志排查:重点搜索并导出后缀为 .evtx 的 Windows 系统日志文件。
  • 数据文件导出报错 (.dat 等):如果 Vol2 提取失败,可以加上 -u 参数绕过。示例命令:volatility -f mem.data dumpfiles -r pdf$ -i --name -D dumpfiles/ -u。如果 Vol2 依然无法提取但 Vol3 可以时,直接换用 Vol3;如果两者均失效,可挂载镜像使用 R-Studio 强行提取。