Windows应急响应 - 33 事件日志分析工具

事件日志分析工具

前置说明

Windows EVTX 日志是二进制格式,需要专用工具解析和分析

本页覆盖从单机 CLI 到企业级威胁狩猎的全栈工具链

推荐工作流:收集 EVTX → EvtxECmd 解析 → Hayabusa 狩猎 → Timeline Explorer 可视化

关联页面:03-事件日志分析 | 32-Sysmon部署与规则编写 | 28-日志分析工具


一、EvtxECmd — Eric Zimmerman EVTX 解析器

1.1 概述

Eric Zimmerman 开发的命令行 EVTX 解析工具,是 EZ Tools 套件的核心组件之一

将 EVTX 二进制日志转换为 CSV/JSON 格式,便于后续分析

核心优势: Maps 系统可以将 EventData 中的原始字段映射为人类可读的列

下载:https://ericzimmerman.github.io/#!index.md

1.2 基本用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 解析单个 EVTX 文件
EvtxECmd.exe -f "C:\Evidence\Security.evtx" --csv C:\Evidence\parsed\ --csvf security_parsed.csv

# 解析整个 EVTX 目录(最常用)
EvtxECmd.exe -d "C:\Evidence\evtx_files\" --csv C:\Evidence\parsed\ --csvf all_events.csv

# 输出为 JSON(便于程序处理)
EvtxECmd.exe -d "C:\Evidence\evtx_files\" --json C:\Evidence\parsed\ --jsonf all_events.json

# 指定时间范围过滤
EvtxECmd.exe -f "C:\Evidence\Security.evtx" --csv C:\Evidence\parsed\ --csvf filtered.csv `
--sd "2025-01-01 00:00:00" --ed "2025-01-31 23:59:59"
# --sd: start date
# --ed: end date

# 使用 Maps 增强解析
EvtxECmd.exe -d "C:\Evidence\evtx_files\" --csv C:\Evidence\parsed\ --csvf mapped.csv --maps C:\Tools\EvtxECmd\Maps\

1.3 Maps 系统

Maps 是 YAML 格式的映射文件,将 EventData 中的 XML 字段提取到标准 CSV 列

1
2
3
4
5
6
7
8
9
10
# 更新 Maps(同步最新的映射定义)
EvtxECmd.exe --sync

# Maps 存放位置
# C:\Tools\EvtxECmd\Maps\
# ├── Security_4624.map # 登录成功
# ├── Security_4625.map # 登录失败
# ├── Security_4688.map # 进程创建
# ├── Sysmon_1.map # Sysmon 进程创建
# └── ...

有了 Maps,CSV 输出中会包含如 UserNameLogonTypeSourceIP 等直观列

没有 Maps 时,EventData 会作为原始 XML 字符串存储在 Payload 列中

1.4 输出字段说明

字段 说明
TimeCreated 事件时间(UTC)
EventId 事件 ID
Level 级别(Info/Warning/Error/Critical)
Provider 事件来源
Channel 日志通道
Computer 计算机名
MapDescription Maps 映射描述
UserName 用户名(Maps 提取)
PayloadData1-6 Maps 提取的关键字段
Payload 原始 EventData XML

二、Hayabusa — 快速 EVTX 威胁狩猎

2.1 概述

Yamato Security 开发的高速多线程 EVTX 分析器

使用 Rust 编写,速度极快

内置 Sigma 规则支持 + 自定义 Hayabusa 规则

GitHub: https://github.com/Yamato-Security/hayabusa

2.2 主要功能

csv-timeline: 生成时间线 CSV(最常用)

json-timeline: 生成 JSON 时间线

logon-summary: 登录活动汇总

eid-metrics: 事件 ID 统计

pivot-keywords-list: 提取可疑关键词列表

search: 关键词搜索

computer-metrics: 按计算机名统计

2.3 实战用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 生成 CSV 时间线(最常用命令)
hayabusa.exe csv-timeline -d "C:\Evidence\evtx_files\" -o C:\Evidence\hayabusa_timeline.csv

# 只显示高优先级告警(Critical + High)
hayabusa.exe csv-timeline -d "C:\Evidence\evtx_files\" -o C:\Evidence\high_alerts.csv -m high
# -m: 最低等级 (informational, low, medium, high, critical)

# JSON 输出(便于 SIEM 导入)
hayabusa.exe json-timeline -d "C:\Evidence\evtx_files\" -o C:\Evidence\hayabusa_timeline.jsonl

# 登录活动汇总(快速评估谁登录了系统)
hayabusa.exe logon-summary -d "C:\Evidence\evtx_files\" -o C:\Evidence\logon_summary.csv

# 事件 ID 统计(了解日志组成)
hayabusa.exe eid-metrics -d "C:\Evidence\evtx_files\" -o C:\Evidence\eid_metrics.csv

# 关键词搜索
hayabusa.exe search -d "C:\Evidence\evtx_files\" -k "mimikatz" -o C:\Evidence\search_results.csv
hayabusa.exe search -d "C:\Evidence\evtx_files\" -k "powershell -enc" -o C:\Evidence\search_encoded_ps.csv

# 提取可疑关键词(IP、用户名、进程等)
hayabusa.exe pivot-keywords-list -d "C:\Evidence\evtx_files\" -o C:\Evidence\pivot_keywords.txt

# 使用自定义 Sigma 规则
hayabusa.exe csv-timeline -d "C:\Evidence\evtx_files\" -o C:\Evidence\custom_rules.csv `
-r C:\Tools\sigma-rules\

# 更新内置规则
hayabusa.exe update-rules

2.4 输出分析

Hayabusa CSV 输出的关键列:

Timestamp: 事件时间

RuleTitle: 触发的规则名称

Level: 告警级别(info/low/med/high/crit)

Computer: 计算机名

Channel: 日志通道

EventID: 事件 ID

Details: 事件摘要

MitreTactics / MitreTags: MITRE ATT&CK 映射

建议用 Timeline Explorer 或 Excel 打开 CSV,按 Level 降序排列

2.5 与 Sigma 规则的关系

Hayabusa 内置了大量 Sigma 规则(来自 SigmaHQ 仓库)

Sigma 是日志检测规则的通用格式,类似安全界的 “YARA for logs”

Hayabusa 将 Sigma 规则编译为高效的检测引擎

可以添加自定义 Sigma 规则到 rules/ 目录


三、Chainsaw — Sigma 规则扫描器

3.1 概述

WithSecure(原 F-Secure)开发的快速 EVTX 分析工具

Rust 编写,专注于使用 Sigma 规则和自定义规则扫描日志

GitHub: https://github.com/WithSecureLabs/chainsaw

3.2 使用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 使用 Sigma 规则扫描 EVTX 目录
chainsaw.exe hunt "C:\Evidence\evtx_files\" `
-s "C:\Tools\sigma\rules\windows\" `
--mapping "C:\Tools\chainsaw\mappings\sigma-event-logs-all.yml"

# 使用 Chainsaw 自带规则
chainsaw.exe hunt "C:\Evidence\evtx_files\" `
-r "C:\Tools\chainsaw\rules\"

# 输出为 CSV
chainsaw.exe hunt "C:\Evidence\evtx_files\" `
-s "C:\Tools\sigma\rules\windows\" `
--mapping "C:\Tools\chainsaw\mappings\sigma-event-logs-all.yml" `
--csv --output C:\Evidence\chainsaw_results.csv

# 输出为 JSON
chainsaw.exe hunt "C:\Evidence\evtx_files\" `
-s "C:\Tools\sigma\rules\windows\" `
--mapping "C:\Tools\chainsaw\mappings\sigma-event-logs-all.yml" `
--json --output C:\Evidence\chainsaw_results.json

# 关键词搜索
chainsaw.exe search "C:\Evidence\evtx_files\" -s "mimikatz"
chainsaw.exe search "C:\Evidence\evtx_files\" -s "192.168.1.100"

# 指定时间范围
chainsaw.exe hunt "C:\Evidence\evtx_files\" `
-s "C:\Tools\sigma\rules\" `
--mapping "C:\Tools\chainsaw\mappings\sigma-event-logs-all.yml" `
--from "2025-01-01T00:00:00" --to "2025-01-31T23:59:59"

3.3 Chainsaw vs Hayabusa

特性 Chainsaw Hayabusa
开发者 WithSecure Yamato Security
语言 Rust Rust
Sigma 支持 外部加载 内置 + 外部
自有规则 Chainsaw rules Hayabusa rules
时间线生成 基础 丰富(多种格式)
登录分析 logon-summary
统计功能 eid-metrics, computer-metrics
输出格式 Table/CSV/JSON CSV/JSON/JSONL
速度

建议:两者都运行一次,交叉验证结果


四、LogParser 与 LogParser Studio

4.1 LogParser 概述

Microsoft 出品的日志查询工具,使用类 SQL 语法查询各种日志格式

支持:EVTX、CSV、TSV、XML、W3C(IIS)、Registry、ETL 等

下载:Microsoft Download Center 搜索 “Log Parser 2.2”

4.2 常用查询示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 查询登录失败事件(Event ID 4625)
LogParser.exe "SELECT TimeGenerated, EXTRACT_TOKEN(Strings, 5, '|') AS TargetUser,
EXTRACT_TOKEN(Strings, 10, '|') AS FailureReason,
EXTRACT_TOKEN(Strings, 19, '|') AS SourceIP
FROM 'C:\Evidence\Security.evtx'
WHERE EventID = 4625
ORDER BY TimeGenerated DESC" -i:EVT -o:CSV > C:\Evidence\failed_logons.csv

# 查询新创建的服务(Event ID 7045)
LogParser.exe "SELECT TimeGenerated,
EXTRACT_TOKEN(Strings, 0, '|') AS ServiceName,
EXTRACT_TOKEN(Strings, 1, '|') AS ImagePath,
EXTRACT_TOKEN(Strings, 4, '|') AS StartType
FROM 'C:\Evidence\System.evtx'
WHERE EventID = 7045
ORDER BY TimeGenerated DESC" -i:EVT -o:CSV > C:\Evidence\new_services.csv

# 统计每天的事件数量
LogParser.exe "SELECT QUANTIZE(TimeGenerated, 86400) AS Day, COUNT(*) AS EventCount
FROM 'C:\Evidence\Security.evtx'
GROUP BY Day
ORDER BY Day" -i:EVT -o:CSV

# 查找特定时间段的所有事件
LogParser.exe "SELECT TimeGenerated, EventID, SourceName, Message
FROM 'C:\Evidence\Security.evtx'
WHERE TimeGenerated > '2025-01-15 08:00:00'
AND TimeGenerated < '2025-01-15 20:00:00'
ORDER BY TimeGenerated" -i:EVT -o:CSV > C:\Evidence\timerange.csv

# 统计 RDP 连接源 IP Top 10
LogParser.exe "SELECT TOP 10 EXTRACT_TOKEN(Strings, 19, '|') AS SourceIP,
COUNT(*) AS LoginCount
FROM 'C:\Evidence\Security.evtx'
WHERE EventID = 4624 AND EXTRACT_TOKEN(Strings, 8, '|') = '10'
GROUP BY SourceIP
ORDER BY LoginCount DESC" -i:EVT

4.3 LogParser Studio

LogParser 的 GUI 前端,提供:

可视化查询编辑器

预置查询模板库(含常见 IR 查询)

图表输出(柱状图、饼图、折线图)

多数据源联合查询

适合不熟悉命令行的分析师使用

下载:Microsoft Download Center 搜索 “Log Parser Studio”


五、DeepBlueCLI — PowerShell 威胁狩猎

5.1 概述

SANS 开发的 PowerShell 脚本,专门用于 Windows 事件日志威胁狩猎

GitHub: https://github.com/sans-blue-team/DeepBlueCLI

无需安装,直接运行 PowerShell 脚本

5.2 使用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 分析本地 Security 日志
.\DeepBlue.ps1 -log Security

# 分析本地 System 日志
.\DeepBlue.ps1 -log System

# 分析本地 PowerShell 日志
.\DeepBlue.ps1 -log "Microsoft-Windows-PowerShell/Operational"

# 分析离线 EVTX 文件
.\DeepBlue.ps1 "C:\Evidence\Security.evtx"
.\DeepBlue.ps1 "C:\Evidence\System.evtx"
.\DeepBlue.ps1 "C:\Evidence\Microsoft-Windows-PowerShell%4Operational.evtx"

# 输出为 CSV
.\DeepBlue.ps1 "C:\Evidence\Security.evtx" | Export-Csv C:\Evidence\deepblue_results.csv -NoTypeInformation

5.3 检测能力

检测项 数据源
暴力破解(多次登录失败) Security 4625
Password Spray Security 4625
用户添加到管理员组 Security 4732
新服务安装 System 7045
可疑的服务命令行 System 7045
PowerShell 混淆命令 PowerShell 4104
PowerShell 下载 cradle PowerShell 4104
Mimikatz 使用 Security 4624 (LogonType 9)
日志清除 Security 1102

六、APT-Hunter

6.1 概述

自动化 Windows 事件日志分析工具,专注于 APT 攻击检测

GitHub: https://github.com/ahmedkhlief/APT-Hunter

Python 编写,支持离线 EVTX 分析

6.2 使用方法

1
2
3
4
5
6
7
8
# 基本用法
python APT-Hunter.py -p "C:\Evidence\evtx_files\" -o C:\Evidence\apthunter_output\ -allreport

# 指定特定日志类型
python APT-Hunter.py -p "C:\Evidence\evtx_files\" -o C:\Evidence\apthunter_output\ -t Security

# 生成 Excel 报告
python APT-Hunter.py -p "C:\Evidence\evtx_files\" -o C:\Evidence\apthunter_output\ -allreport --excel

6.3 特点

内置 APT 攻击模式检测(不依赖 Sigma)

自动生成 HTML 报告

按风险等级分类告警

支持 MITRE ATT&CK 映射

适合快速获取全面的分析报告


七、Timeline Explorer — CSV 可视化分析

7.1 概述

Eric Zimmerman 开发的 CSV 可视化分析工具

专为大型 CSV 文件设计(百万行级别也能流畅)

支持过滤、排序、搜索、列重排等操作

7.2 使用方法

直接打开 EvtxECmd、Hayabusa、KAPE 等工具生成的 CSV 文件

关键功能:

列过滤器: 右键列标题 → Filter → 输入过滤条件

搜索高亮: Ctrl+F 搜索关键词

排序: 点击列标题排序

时间线视图: 按时间排列所有事件

导出筛选结果: File → Export 导出过滤后的数据

IR 工作流:

打开 Hayabusa 或 EvtxECmd 的 CSV 输出

按 Level/Severity 降序排列

过滤关注的时间范围

搜索特定 IP、用户名或进程名

导出筛选结果用于报告

7.3 性能特点

基于 .NET WPF 开发

使用虚拟化渲染,即使打开百万行 CSV 也很流畅

支持 Excel-like 的列操作

远优于 Excel 处理大型 CSV(Excel 有 1,048,576 行限制)


八、EvtxExplorer — GUI 浏览器

8.1 概述

GUI 工具,用于直观浏览 EVTX 文件内容

提供树形结构、事件详情面板、XML 视图

适合手动检查特定事件的完整 XML 数据

8.2 适用场景

需要查看事件的完整 XML 结构时

调试 Maps 映射或 Sigma 规则时

手动分析单个可疑事件时

不适合大规模分析(此时应使用 Hayabusa/EvtxECmd)


九、工具对比总结

9.1 功能对比表

工具 类型 速度 Sigma 支持 输出格式 上手难度 最佳场景
EvtxECmd CLI 解析器 否(Maps) CSV/JSON EVTX → CSV 转换
Hayabusa CLI 威胁狩猎 极快 CSV/JSON 大规模威胁狩猎
Chainsaw CLI 规则扫描 极快 CSV/JSON/Table Sigma 规则扫描
LogParser CLI SQL 查询 CSV/Table/Chart 灵活的自定义查询
DeepBlueCLI PowerShell PowerShell 对象 极低 快速本地检查
APT-Hunter Python 分析器 HTML/Excel 自动化报告生成
Timeline Explorer GUI 可视化 - 极低 CSV 浏览与过滤
EvtxExplorer GUI 浏览器 - 极低 单事件详情查看

9.2 推荐工具组合

最小化工具包(U 盘 IR):

EvtxECmd + Hayabusa + Timeline Explorer

全面分析工具包:

EvtxECmd + Hayabusa + Chainsaw + Timeline Explorer + DeepBlueCLI

自动化管线:

KAPE (收集) → EvtxECmd (解析) → Hayabusa (狩猎) → Timeline Explorer (可视化)


十、实战工作流

10.1 完整分析管线

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# === Phase 1: 收集 EVTX ===
# 从目标机器复制日志(或使用 KAPE)
robocopy "\\target\C$\Windows\System32\winevt\Logs" "C:\Evidence\evtx\" *.evtx /MT:4

# === Phase 2: EvtxECmd 解析 ===
EvtxECmd.exe -d "C:\Evidence\evtx\" --csv "C:\Evidence\parsed\" --csvf all_events.csv

# === Phase 3: Hayabusa 威胁狩猎 ===
# 生成时间线
hayabusa.exe csv-timeline -d "C:\Evidence\evtx\" -o "C:\Evidence\hayabusa_timeline.csv"
# 查看高优先级告警
hayabusa.exe csv-timeline -d "C:\Evidence\evtx\" -o "C:\Evidence\high_alerts.csv" -m high
# 登录分析
hayabusa.exe logon-summary -d "C:\Evidence\evtx\" -o "C:\Evidence\logon_summary.csv"

# === Phase 4: Chainsaw 交叉验证 ===
chainsaw.exe hunt "C:\Evidence\evtx\" -s sigma_rules\windows\ `
--mapping mappings\sigma-event-logs-all.yml --csv --output "C:\Evidence\chainsaw_results.csv"

# === Phase 5: DeepBlueCLI 补充检查 ===
.\DeepBlue.ps1 "C:\Evidence\evtx\Security.evtx" | Export-Csv "C:\Evidence\deepblue_security.csv" -NoTypeInformation
.\DeepBlue.ps1 "C:\Evidence\evtx\System.evtx" | Export-Csv "C:\Evidence\deepblue_system.csv" -NoTypeInformation

# === Phase 6: 用 Timeline Explorer 打开 CSV 进行人工分析 ===
# 打开 hayabusa_timeline.csv
# 按 Level 降序排列
# 过滤可疑时间段
# 关联 EvtxECmd 的完整事件数据

10.2 自动化脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 一键日志分析脚本
param(
[Parameter(Mandatory=$true)]
[string]$EvtxDir,
[string]$OutputDir = "C:\Evidence\Analysis_$(Get-Date -Format 'yyyyMMdd_HHmmss')"
)

$toolsDir = "C:\Tools"
New-Item -ItemType Directory -Path $OutputDir -Force | Out-Null

Write-Host "[*] Starting automated EVTX analysis pipeline..." -ForegroundColor Cyan
Write-Host "[*] Input: $EvtxDir" -ForegroundColor Cyan
Write-Host "[*] Output: $OutputDir" -ForegroundColor Cyan

# Step 1: EvtxECmd
Write-Host "[+] Phase 1: Parsing with EvtxECmd..."
& "$toolsDir\EvtxECmd\EvtxECmd.exe" -d $EvtxDir --csv $OutputDir --csvf "evtxecmd_parsed.csv"

# Step 2: Hayabusa
Write-Host "[+] Phase 2: Threat hunting with Hayabusa..."
& "$toolsDir\hayabusa\hayabusa.exe" csv-timeline -d $EvtxDir -o "$OutputDir\hayabusa_timeline.csv"
& "$toolsDir\hayabusa\hayabusa.exe" csv-timeline -d $EvtxDir -o "$OutputDir\hayabusa_high.csv" -m high
& "$toolsDir\hayabusa\hayabusa.exe" logon-summary -d $EvtxDir -o "$OutputDir\logon_summary.csv"
& "$toolsDir\hayabusa\hayabusa.exe" eid-metrics -d $EvtxDir -o "$OutputDir\eid_metrics.csv"

# Step 3: Chainsaw
Write-Host "[+] Phase 3: Sigma scanning with Chainsaw..."
& "$toolsDir\chainsaw\chainsaw.exe" hunt $EvtxDir `
-s "$toolsDir\sigma\rules\windows\" `
--mapping "$toolsDir\chainsaw\mappings\sigma-event-logs-all.yml" `
--csv --output "$OutputDir\chainsaw_results.csv"

Write-Host "[*] Analysis complete!" -ForegroundColor Green
Write-Host "[*] Results in: $OutputDir" -ForegroundColor Green
Get-ChildItem $OutputDir -File | Format-Table Name, @{N='SizeMB';E={[math]::Round($_.Length/1MB,2)}} -AutoSize

参考链接

Eric Zimmerman Tools

Hayabusa GitHub

Chainsaw GitHub

SigmaHQ Rules

DeepBlueCLI

APT-Hunter

关联页面:03-事件日志分析 | 32-Sysmon部署与规则编写 | 28-日志分析工具


上一章 目录 下一章
32-Sysmon部署与规则编写 Windows应急响应 34-内存取证-Volatility