Skip to content

如何从运行中的 Windows 主机收集 .evtx 日志(4 种方法)

从在线 Windows 主机抓取 .evtx 的四种方式 —— wevtutil、FTK Imager、KAPE、原始 NTFS —— 各自的取证链权衡,以及实际用得上的命令。

发布于 1 约 {n} 分钟阅读

事件日志调查的第一道难关不是解析,而是把文件拿到手。在运行中的 Windows 主机上,EventLog 服务对 C:\Windows\System32\winevt\Logs\ 下活动的 .evtx 文件持有打开的句柄,简单 copy 会失败。下面这四种方法基本覆盖所有场景。

内置方案:wevtutil / Get-WinEvent

最简单的方法是通过有文档支持的 API 导出记录(而不是文件):

wevtutil epl Security C:\triage\Security.evtx

这会生成一个封装好的 .evtx,其中包含日志中目前所有的记录。快速、无需第三方工具、以管理员身份运行。缺点是它只采集当前活动的 .evtx,不抓取已归档(轮转后)的文件。

PowerShell 等价命令:

Get-WinEvent -LogName Security |
  Export-Csv triage.csv

Get-WinEvent 返回的是解析后的记录而不是文件。适合快速分诊导 CSV,但失去了深度取证所需的二进制保真度 —— 块级恢复、脏块检查、雕刻(carving)都做不了。

FTK Imager

要进行完整磁盘或文件系统级别的获取,FTK Imager 是行业标准。把在线磁盘作为证据加入(Physical Drive 或 Logical Drive),定位到 \Windows\System32\winevt\Logs\,右键通道文件,然后 Export Files。FTK 直接读取底层 NTFS 结构,绕过 EventLog 服务持有的文件系统锁。它还能导出 wevtutil 不会触及的归档 *.evtx 文件(那些文件名带时间戳的)。

代价是 FTK 读到的文件可能正在写入 —— 生成的 .evtx 末尾可能出现一个脏块。大多数解析器(包括本工具)都能优雅处理,但值得验证。

KAPE

对于规模化的应急响应,Kroll Artifact Parser and Extractor(KAPE)能在一次操作中自动收集所有取证相关文件:

kape.exe --tsource C: --target EventLogs --tdest C:\triage

EventLogs target 会抓取 winevt\Logs\ 下所有 .evtx 以及相关的事件跟踪文件。配合 WindowsEventLogs module 还能立刻执行解析,在原始文件旁边生成一份 CSV。任何涉及多台主机的 IR 任务都推荐使用。

原始 NTFS 读取

追求最高保真度 —— 怀疑文件系统 API 被劫持,或需要逐位获取时 —— 应在文件系统层之下读取卷。诸如 The Sleuth Kit(tsk_recovericat)或 Eric Zimmerman 的 RawCopy.exe 通过 \\.\PhysicalDriveN\\.\C: 打开卷,遍历 MFT,逐字节输出文件内容。EventLog 服务无法阻止这条路径,因为读取完全绕过了文件系统层。

什么场景用哪种

  • 单机快速分诊,你已有管理员权限:wevtutil
  • 完整取证获取,已经有磁盘镜像:对镜像使用 FTK Imager 或 tsk_recover
  • 多台主机的 IR 任务:KAPE。
  • 怀疑 rootkit 或活跃篡改:在主机网络隔离的前提下,对在线卷使用 RawCopy 或 TSK 走原始 NTFS。

无论选哪种,都要记录方法。证据链在事件报告里很重要 —— 一份解析后的 CSV 并不能说明它来自正在运行 EventLog 服务的在线主机,还是来自一份封装好的镜像。