| name | performing-windows-artifact-analysis-with-eric-zimmerman-tools |
| description | 使用 Eric Zimmerman 的开源 EZ Tools 套件(包括 KAPE、MFTECmd、PECmd、LECmd、JLECmd 和 Timeline Explorer)执行全面的 Windows 取证制品分析,解析注册表 hive、预取文件、事件日志和文件系统元数据。 |
| domain | cybersecurity |
| subdomain | digital-forensics |
| tags | ["eric-zimmerman","ez-tools","kape","mftecmd","pecmd","lecmd","jlecmd","registry-forensics","windows-forensics","timeline-explorer","dfir","artifact-analysis"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
使用 Eric Zimmerman 工具执行 Windows 制品分析
概述
Eric Zimmerman 的 EZ Tools 套件是一组开源取证工具,已成为 Windows 数字取证调查的全球标准。这些工具最初由一位前 FBI 特工(现任 SANS 讲师)开发,用于解析和分析关键 Windows 制品,包括主文件表(Master File Table,$MFT)、注册表 hive、预取文件(Prefetch)、事件日志、快捷方式(LNK)文件和跳转列表(Jump List)。该套件与 KAPE(Kroll Artifact Parser and Extractor)集成,实现制品的自动化收集和处理,生成结构化 CSV 输出,可导入 Timeline Explorer 进行可视化分析。EZ Tools 被全球各地的执法机构、企业事件响应人员和取证顾问广泛使用。
前置条件
- Windows 10/11 或 Windows Server 2016+ 分析工作站
- 已安装 .NET 6 运行时(EZ Tools v2.x+ 必需)
- 分析工作站上的管理员权限
- 目标系统的取证磁盘镜像或分类采集数据
- 至少 8 GB 内存(大型数据集建议 16 GB)
- 熟悉 NTFS 文件系统结构和 Windows 内部机制
工具套件组件
KAPE(Kroll Artifact Parser and Extractor)
KAPE 是主要的编排工具,通过配置文件(.tkape 和 .mkape)自动化制品收集(Targets)和处理(Modules),定义要收集的制品以及要对其运行的 EZ Tools。
安装和设置:
# 从 https://www.kroll.com/en/services/cyber-risk/incident-response-litigation-support/kroll-artifact-parser-extractor-kape 下载 KAPE
# 解压到 C:\Tools\KAPE
# 更新 KAPE Targets 和 Modules
C:\Tools\KAPE\gkape.exe # GUI 版本
C:\Tools\KAPE\kape.exe # CLI 版本
# 同步最新 EZ Tools 二进制文件
C:\Tools\KAPE\Get-KAPEUpdate.ps1
运行 KAPE 收集和处理:
# 从挂载的取证镜像 E: 盘收集制品并使用 EZ Tools 处理
kape.exe --tsource E: --tdest C:\Cases\Case001\Collection --target KapeTriage --mdest C:\Cases\Case001\Processed --module !EZParser
# 收集特定制品类别
kape.exe --tsource E: --tdest C:\Cases\Case001\Collection --target FileSystem,RegistryHives,EventLogs --mdest C:\Cases\Case001\Processed --module MFTECmd,RECmd,EvtxECmd
# 实时系统分类采集(以管理员身份运行)
kape.exe --tsource C: --tdest D:\LiveTriage\Collection --target KapeTriage --mdest D:\LiveTriage\Processed --module !EZParser --vhdx LiveTriageImage
MFTECmd - 主文件表解析器
MFTECmd 将 NTFS $MFT、$J(USN 日志)、$Boot、$SDS 和 $LogFile 解析为人类可读的 CSV 格式。
# 解析 $MFT 文件
MFTECmd.exe -f "C:\Cases\Evidence\$MFT" --csv C:\Cases\Output --csvf MFT_output.csv
# 解析 USN 日志($J)
MFTECmd.exe -f "C:\Cases\Evidence\$J" --csv C:\Cases\Output --csvf USNJournal_output.csv
# 解析 $Boot 获取卷信息
MFTECmd.exe -f "C:\Cases\Evidence\$Boot" --csv C:\Cases\Output --csvf Boot_output.csv
# 解析 $SDS 获取安全描述符
MFTECmd.exe -f "C:\Cases\Evidence\$SDS" --csv C:\Cases\Output --csvf SDS_output.csv
MFT 输出关键字段:
| 字段 | 描述 |
|---|
| EntryNumber | MFT 记录编号 |
| ParentEntryNumber | 父目录 MFT 记录 |
| InUse | 记录是否处于活跃或已删除状态 |
| FileName | 文件或目录名称 |
| Created0x10 | $STANDARD_INFORMATION 创建时间戳 |
| Created0x30 | $FILE_NAME 创建时间戳 |
| LastModified0x10 | $STANDARD_INFORMATION 修改时间戳 |
| IsDirectory | 布尔值,指示目录或文件 |
| FileSize | 逻辑文件大小(字节) |
| Extension | 文件扩展名 |
PECmd - 预取文件解析器
PECmd 解析 Windows 预取文件(.pf),提供程序执行证据,包括运行次数和时间戳。
# 解析目录中所有预取文件
PECmd.exe -d "C:\Cases\Evidence\Windows\Prefetch" --csv C:\Cases\Output --csvf Prefetch_output.csv
# 解析单个预取文件并输出详细信息
PECmd.exe -f "C:\Cases\Evidence\Windows\Prefetch\CMD.EXE-4A81B364.pf" --json C:\Cases\Output
# 使用关键词过滤解析预取文件
PECmd.exe -d "C:\Cases\Evidence\Windows\Prefetch" -k "powershell,cmd,wscript,cscript,mshta" --csv C:\Cases\Output --csvf SuspiciousExec.csv
RECmd - 注册表资源管理器命令行
RECmd 使用批处理文件处理 Windows 注册表 hive,批处理文件定义要提取的键和值。
# 使用默认批处理文件处理所有注册表 hive
RECmd.exe --bn C:\Tools\KAPE\Modules\bin\RECmd\BatchExamples\RECmd_Batch_MC.reb -d "C:\Cases\Evidence\Registry" --csv C:\Cases\Output --csvf Registry_output.csv
# 处理单个 NTUSER.DAT hive
RECmd.exe -f "C:\Cases\Evidence\Users\suspect\NTUSER.DAT" --bn C:\Tools\KAPE\Modules\bin\RECmd\BatchExamples\RECmd_Batch_MC.reb --csv C:\Cases\Output
# 处理 SYSTEM hive 获取 USB 设备历史
RECmd.exe -f "C:\Cases\Evidence\Registry\SYSTEM" --bn C:\Tools\KAPE\Modules\bin\RECmd\BatchExamples\RECmd_Batch_MC.reb --csv C:\Cases\Output
EvtxECmd - Windows 事件日志解析器
EvtxECmd 将 Windows 事件日志(.evtx)文件解析为结构化 CSV 格式,支持可定制的事件 ID 映射。
# 解析目录中所有事件日志
EvtxECmd.exe -d "C:\Cases\Evidence\Windows\System32\winevt\Logs" --csv C:\Cases\Output --csvf EventLogs_output.csv
# 解析单个事件日志
EvtxECmd.exe -f "C:\Cases\Evidence\Security.evtx" --csv C:\Cases\Output --csvf Security_output.csv
# 使用自定义映射增强字段提取
EvtxECmd.exe -d "C:\Cases\Evidence\Logs" --csv C:\Cases\Output --maps C:\Tools\KAPE\Modules\bin\EvtxECmd\Maps
LECmd 和 JLECmd - 快捷方式和跳转列表解析器
# 解析 Recent 目录中的 LNK 文件
LECmd.exe -d "C:\Cases\Evidence\Users\suspect\AppData\Roaming\Microsoft\Windows\Recent" --csv C:\Cases\Output --csvf LNK_output.csv
# 解析跳转列表(自动目标)
JLECmd.exe -d "C:\Cases\Evidence\Users\suspect\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations" --csv C:\Cases\Output --csvf JumpLists_auto.csv
# 解析跳转列表(自定义目标)
JLECmd.exe -d "C:\Cases\Evidence\Users\suspect\AppData\Roaming\Microsoft\Windows\Recent\CustomDestinations" --csv C:\Cases\Output --csvf JumpLists_custom.csv
SBECmd - ShellBag 资源管理器命令行
# 从注册表 hive 目录解析 ShellBag
SBECmd.exe -d "C:\Cases\Evidence\Registry" --csv C:\Cases\Output --csvf Shellbags_output.csv
# 从实时系统解析 ShellBag(需要管理员权限)
SBECmd.exe --live --csv C:\Cases\Output --csvf LiveShellbags_output.csv
Timeline Explorer - 可视化分析
Timeline Explorer 是用于分析所有 EZ Tools CSV 输出的 GUI 工具,支持过滤、排序、列分组和条件格式化。
# 启动 Timeline Explorer 并打开 CSV 输出
TimelineExplorer.exe "C:\Cases\Output\MFT_output.csv"
Timeline Explorer 关键功能:
- 支持正则表达式的列级过滤
- 时间戳异常的条件格式化
- 用于时间顺序分析的多列排序
- 将过滤结果导出为新 CSV 文件
- 对感兴趣的行添加书签
调查工作流程
步骤 1:使用 KAPE 收集制品
# 从挂载在 E: 的取证镜像进行完整分类采集
kape.exe --tsource E: --tdest C:\Cases\Case001\Collected --target KapeTriage --vhdx TriageImage --zv false
步骤 2:使用 EZ Tools 处理制品
# 处理所有已收集的制品
kape.exe --msource C:\Cases\Case001\Collected --mdest C:\Cases\Case001\Processed --module !EZParser
步骤 3:时间线分析
- 在 Timeline Explorer 中打开已处理的 CSV 文件
- 按时间戳列排序以建立时间顺序
- 按特定文件扩展名、路径或事件 ID 过滤
- 交叉参考 MFT 时间戳与事件日志条目
- 通过比较 $SI 和 $FN 时间戳识别时间戳篡改(Timestomping)
- 使用书签和导出的过滤视图记录发现
步骤 4:时间戳篡改检测
# 在 Timeline Explorer 中比较以下列:
# Created0x10($STANDARD_INFORMATION)vs Created0x30($FILE_NAME)
# 若 Created0x10 < Created0x30,则表明存在时间戳篡改
# $FILE_NAME 时间戳比 $STANDARD_INFORMATION 更难被篡改
取证制品参考
| 工具 | 制品 | 位置 |
|---|
| MFTECmd | $MFT | NTFS 卷根目录 |
| MFTECmd | $J(USN 日志) | $Extend$UsnJrnl:$J |
| PECmd | 预取文件 | C:\Windows\Prefetch*.pf |
| RECmd | NTUSER.DAT | C:\Users{user}\NTUSER.DAT |
| RECmd | SYSTEM hive | C:\Windows\System32\config\SYSTEM |
| RECmd | SAM hive | C:\Windows\System32\config\SAM |
| RECmd | SOFTWARE hive | C:\Windows\System32\config\SOFTWARE |
| EvtxECmd | 事件日志 | C:\Windows\System32\winevt\Logs*.evtx |
| LECmd | LNK 文件 | C:\Users{user}\AppData\Roaming\Microsoft\Windows\Recent\ |
| JLECmd | 跳转列表 | C:\Users{user}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\ |
| SBECmd | ShellBag | NTUSER.DAT 和 UsrClass.dat 注册表 hive |
常见调查场景
恶意软件执行证据
- 使用 PECmd 解析预取文件以识别已执行的二进制文件
- 与 MFT 交叉参考以获取文件创建时间戳
- 使用 RECmd 检查 Amcache.hve 获取可执行文件的 SHA1 哈希值
- 与事件日志中的进程创建条目关联(事件 ID 4688)
数据渗出调查
- 使用 MFTECmd 解析 USN 日志以获取文件重命名/删除操作
- 使用 LECmd 分析 LNK 文件以获取最近访问的文档
- 使用 SBECmd 审查 ShellBag 以获取目录浏览活动
- 使用 RECmd 检查 SYSTEM 注册表中的 USB 设备连接记录
横向移动检测
- 使用 EvtxECmd 解析 Security.evtx 获取登录事件(4624、4625)
- 分析 RDP 相关事件日志(Microsoft-Windows-TerminalServices)
- 与 SMB 日志中的网络共享访问交叉参考
- 审查计划任务和服务以发现持久化机制
输出格式与集成
所有 EZ Tools 生成的 CSV 输出均可:
- 在 Timeline Explorer 中进行可视化调查分析
- 导入 Splunk、Elastic 或其他 SIEM 平台
- 通过 Python/PowerShell 脚本进行自动化分析
- 使用 log2timeline/Plaso 整合为超级时间线
参考资料