Mihir-Choudhary/EventHawk
GitHub: Mihir-Choudhary/EventHawk
EventHawk 是面向 DFIR 的高效 Windows EVTX 分析工具,解决海量事件日志的快速解析、关联与异常检测问题。
Stars: 11 | Forks: 2
EventHawk
Windows Event Log analysis built for DFIR — fast, scalable, and practical
## 为什么要使用 EventHawk?
### 针对大规模解析
✅ **多进程 Rust 解析器** — 每个工作线程由 `pyevtx-rs` 承担繁重工作。核心越多 = 并行解析的文件越多。资源监控器会在 CPU 或内存压力过高时限速工作线程,保持系统响应。
✅ **Juggernaut 模式** — 列式引擎(Arrow + DuckDB)无论事件数量多少都能保持内存平稳。原始事件 XML 保留在磁盘上;只有提取的元数据列驻留内存。无需 I/O 即可滚动浏览千万级事件。
✅ **20 种内置 DFIR 配置文件** — 在解析时进行过滤,而非事后过滤。根据调查类型仅加载相关事件,完全跳过噪声。
### 用于分析与调查
✅ **273+ 事件 ID 描述** — EventHawk 将原始事件数据翻译成通俗英语。点击事件 4624,看到的是 *“登录:john@CORP — 交互式(类型 2)来自 192.168.1.5”*,而不是原始 XML。
✅ **4 层过滤栈** — 可按事件 ID、级别、时间范围、计算机、提供商、用户、通道以及自由文本(包括原始事件数据)同时过滤,全部一键清除。
✅ **ATT&CK 映射与 IOC 提取** — 每次解析自动将事件映射到 MITRE ATT&CK 技术,提取 IP、文件路径、哈希、域名和用户账号,并关联成多步骤攻击链。
✅ **Hayabusa 集成** — 指向 EventHawk 的 Hayabusa 二进制文件,即可对已加载文件评估约 3,000 条社区 Sigma 规则,结果合并到 ATT&CK 标签页中。
✅ **PowerShell 历史提取** — 从加载的 EVTX 文件中重建每个 PowerShell 会话、命令和脚本块。重新组装多片段脚本块,检测 ATT&CK 技术和混淆模式,并导出五类工件:会话时间线、单个脚本块文件、摘要、JSON 导出以及带可点击超链接的 Excel 时间线。
### 针对未知威胁
✅ **Sentinel 异常引擎** — 基于已知良好基线构建统计频率模型 + 进程祖先树 + 融合筛选器。对每个可疑捕获中的进程创建事件进行评分。Tier 4 告警意味着发生了基线中从未出现的行为,即使没有对应的 Sigma 规则。
✅ **自然语言说明** — 每个 Tier 3/4 发现都附带英文解释:*“wscript.exe 在基线中从未触发 powershell.exe(0 次出现)。未在基线中观察到编码命令模式。”*
### 用于输出与报告
✅ **8 种格式导出** — JSON、CSV、XML、自包含 HTML、PDF 调查报告、STIX 2.1、OpenIOC、根据观察到的 IOC 生成的 YARA 规则。
✅ **完整 CLI + TUI** — 所有 GUI 功能均可通过无头 CLI 脚本化、自动化,并在服务器环境中使用。丰富的终端仪表板可实时显示解析进度。
## 快速开始
```
REM Launch the GUI
EventHawk.exe
REM — or from source —
py -3 evtx_tool.py gui
REM Parse a folder, apply a DFIR profile, export to JSON
py -3 evtx_tool.py parse C:\Logs --profile "Logon/Logoff Activity" --output results.json
REM Large dataset — Juggernaut Mode keeps RAM flat regardless of event count
py -3 evtx_tool.py parse C:\LargeCapture --juggernaut --workers 8
REM Sentinel — build a behaviour baseline, then score a suspect capture
python -m sentinel.cli build --evtx C:\Baseline --output baseline/ --sigma C:\sigma\rules\windows
python -m sentinel.cli analyze --evtx C:\Target --baseline baseline/ --sigma C:\sigma\rules\windows
```
## 包含内容
| | |
|---|---|
| **两种解析模式** | 常规模式适用于日常数据集(内存内,即时访问)。Juggernaut 模式适用于大型捕获 — Arrow 表仅保存元数据列;原始事件 XML 保留在磁盘上,点击行时惰性加载。 |
| **20 种内置 DFIR 配置文件** | 登录/注销、进程创建、横向移动、权限提升、PowerShell、RDP、Defender 告警以及另外 13 种。在解析前加载一个,立即减少噪声。 |
| **273+ 事件 ID 描述** | EventHawk 知道 4624、7045、1116 等含义。点击行即可获得通俗英语描述,而非原始 XML。 |
| **4 层过滤栈** | 高级筛选、快速筛选芯片、全文搜索(包括原始事件数据)以及记录 ID 枢纽 — 可组合使用,一键清除。 |
| **威胁分析** | MITRE ATT&CK 映射、IOC 提取、攻击链关联。 |
| **Hayabusa 集成** | 指向你的 Hayabusa 二进制文件,自动运行约 3,000 条社区 Sigma 规则,并将结果合并到 ATT&CK 标签页。 |
| **PowerShell 历史提取** | 重建 PS 会话、命令和脚本块(事件 ID 400/403/600/800/4103/4104)。重新组装多片段脚本块,映射 ATT&CK 技术,并导出会话时间线、单个脚本文件、JSON 和带可点击超链接的 Excel 工作簿。 |
| **Sentinel 异常引擎** | 从已知良好基线构建频率模型 + 进程祖先树 + 融合筛选器。对可疑捕获中的每个进程创建事件进行评分,并将发现分为 4 个等级(从 T1 正常到 T4 严重)。 |
| **到处导出** | JSON、CSV、XML、HTML、PDF 报告、STIX 2.1、OpenIOC、YARA。 |
| **CLI + TUI** | 完整的无头 CLI 用于脚本和自动化,丰富的终端仪表板用于实时解析进度。 |
## 文档
### 入门
| | |
|---|---|
| [安装](docs/01-installation.md) | 预构建 EXE 与从源码编译,GPU 加速,依赖项故障排除 |
| [GUI 概览](docs/02-gui-overview.md) | 窗口布局、面板描述、如何启动 |
### 解析模式
| | |
|---|---|
| [常规模式](docs/03-normal-mode.md) | 工作原理、适用时机、分步说明、性能与限制 |
| [Juggernaut 模式](docs/04-juggernaut-mode.md) | Arrow + DuckDB 列式引擎、内存架构、临时文件、规模 |
### 查看事件
| | |
|---|---|
| [事件详情面板](docs/05-event-detail-panel.md) | 简要 / XML / 十六进制视图模式、273+ 事件 ID 描述、JM 惰性加载行为 |
### 筛选与显示
| | |
|---|---|
| [高级筛选](docs/06-advanced-filter.md) | 所有筛选字段、文本搜索、正则表达式、4 层过滤栈、JM 两阶段搜索 |
| [快速筛选](docs/07-quick-filters.md) | 一键预设筛选常用 DFIR 事件子集 |
| [列筛选弹出框](docs/08-column-filters.md) | 右键点击任意列标题浏览并选择唯一值 |
| [时区显示](docs/06b-timezone.md) | 本地 / UTC / IANA 命名 / 自定义偏移 — 即时重显示,无需重新解析 |
### 分析
| | |
|---|---|
| [分析标签页](docs/09-analysis-tabs.md) | ATT&CK 映射、IOC 提取、攻击链、案例笔记 |
| [缺失记录 ID 分析](docs/09b-missing-record-ids.md) | 通过扫描 EventRecordID 序列中的间隔检测日志篡改 |
| [Hayabusa 集成](docs/10-hayabusa.md) | 下载、配置、运行 Hayabusa — 自动检测路径并更新规则,结果合并到 ATT&CK 标签页 |
| [PowerShell 历史提取](docs/10b-ps-extract.md) | PS 会话/命令/脚本块重建 — 输出文件、ATT&CK 检测、先决条件 |
| [查看登录会话](docs/10c-logon-sessions.md) | 重建 Windows 登录会话到特定会话,检测 LUID 重用,关联的 UAC 对 |
### 输出
| | |
|---|---|
| [导出](docs/11-exporting.md) | JSON、CSV、XML、HTML、PDF 调查报告、STIX 2.1、OpenIOC、根据观察到的 IOC 生成的 YARA 规则 — 格式指南与限制 |
### 命令行
| | |
|---|---|
| [CLI 模式](docs/12-cli.md) | `parse`、`diff`、`profiles`、`benchmark`、`interactive`、`gui` — 完整选项参考 |
| [TUI 模式](docs/13-tui.md) | 解析期间丰富的实时仪表板 — CPU/RAM 仪表、吞吐量、进度 |
### 配置文件
| | |
|---|---
| [DFIR 配置文件](docs/14-profiles.md) | 所有 20 种内置配置文件、自定义配置文件架构、配置文件编辑器、CLI 用法 |
### Sentinel — 基线异常检测
| | |
|---|---
| [Sentinel 概述](docs/15-sentinel-overview.md) | 它的作用、两阶段架构、等级分类、与 EventHawk 的适用场景对比 |
| [构建基线](docs/16-sentinel-baseline.md) | 语料库要求、8 步构建、稳定性检查、工件格式、重建 |
| [运行分析](docs/17-sentinel-analysis.md) | CLI 参考、评分管线、输出阅读(终端 + JSON)、GUI 用法 |
| [Sigma 规则设置](docs/18-sentinel-sigma.md) | 下载 SigmaHQ 规则、配置路径、如何通过标签提升输出 |
### 参考
| | |
|---|---|
| [性能与规模](docs/19-performance.md) | 内存预算、筛选行为、滚动性能、规模限制 |
| [构建发布版本](docs/20-building-release.md) | 编译 EXE、创建 ZIP、发布 GitHub Release、版本命名 |
## 系统要求
| | |
|---|---|
| 操作系统 | Windows 10 / 11(64 位) |
| Python | 3.10 或更高版本 |
| 内存 | 最低 4 GB;建议在 Juggernaut 模式下处理大型捕获时使用 8 GB |
| 磁盘 | 需要足够空闲空间用于 Parquet 临时分片(约占原始 EVTX 文件的 40%),在 JM 解析期间使用 |
## 常见问题
**Q:常规模式与 Juggernaut 模式有什么区别?**
A:常规模式将所有匹配的事件加载到内存中 —— 快速简单,但内存占用随事件数量增长。Juggernaut 模式在解析时将事件写入磁盘上的 Parquet 分片,仅将元数据列加载到内存中的 Arrow 表。原始事件 XML 仅在点击行时从 Parquet 惰性加载。常规模式适用于大多数调查;数据集很大或内存有限时切换到 Juggernaut 模式。
**Q:是否必须使用 Hayabusa 才能工作?**
A:否。Hayabusa 完全可选。EventHawk 自身的 ATT&CK 映射、IOC 提取和攻击链关联无需 Hayabusa 即可运行。如果安装了 Hayabusa 二进制文件并配置好,它会额外提供基于 Sigma 规则的检测层。
**Q:是否必须使用 Sentinel / 基线才能使用 EventHawk?**
A:否。Sentinel 是一个可选组件。EventHawk 的核心解析、筛选和分析在没有基线的情况下也能正常工作。仅当你希望在规则检测之上进行统计异常检测时,才需要 Sentinel。
**Q:能否取消正在进行的解析?**
A:可以。点击解析进度对话框中的 **取消** 按钮。EventHawk 会干净地关闭所有工作进程,不会留下孤立进程或锁定的文件。
**Q:EventHawk 是否适用于任何 Windows 版本的 EVTX 文件?**
A:是的。`pyevtx-rs` 解析器支持从 Windows Vista 开始的标准 Windows EVTX 二进制格式(包括 Vista、7、8、8.1、10、11 和 Server 2008–2022)。旧的 Windows XP 及更早版本使用的 `.evt` 文件采用不同的二进制格式,不支持。
**Q:是否需要管理员权限?**
A:运行 EventHawk 或解析你已有访问权限的 EVTX 文件不需要管理员权限。如果要解析 `C:\Windows\System32\winevt\Logs\` 中的实时系统日志,则需要以管理员身份运行或先复制文件 —— Windows 会限制非管理员用户直接读取活动日志文件。
**Q:为什么在大型文件夹上解析速度很慢?**
A:最常见的原因有:(1) 工作线程太少 —— 使用 `--workers N` 增加至物理核心数;(2) 机械硬盘 —— EVTX 解析在大量工作线程下 I/O 密集,HDD 比 SSD 慢得多;(3) 资源限速 —— 内置资源监控器会在 CPU 超过 85% 时降低工作线程吞吐量以保持系统可用性。使用 TUI 仪表板(`--tui`)查看实时 CPU、内存和每个文件的进度。
**Q:Juggernaut 模式在加载后会删除 Parquet 分片吗?**
A:不会 —— 分片在会话期间保留在磁盘上,因为它们用于全文搜索和事件详情的惰性加载。会在开始新解析时清理。如果 EventHawk 意外关闭,旧分片可能仍留在 `%TEMP%\eventhawk_jm_*` 中,可手动安全删除。
**Q:能否在不使用 GUI 的情况下从命令行使用 EventHawk?**
A:可以。完整的 CLI(`py -3 evtx_tool.py parse / diff / profiles / benchmark / interactive`)支持所有解析、筛选、分析与导出功能,无需启动 GUI。请参阅 [CLI 模式](docs/12-cli.md) 获取完整参考。
**Q:是否有无需安装 Python 的便携版本?**
A:发布页面提供的预构建 `EventHawk.exe` 是一个启动器,会查找系统中的 Python。仍然需要安装 Python 3.10+ —— 它不一定要在 PATH 中,但必须存在于本机。完全无需 Python 的自包含包已在路线图中。
## v1.2 的新功能
### Juggernaut 模式 —— 全面架构重写
Juggernaut 模式已从底层围绕 **内存中的 Arrow 表 + 单个 DuckDB 过滤线程** 模型重建。旧方法为每个滚动事件打开多个并发的 DuckDB 文件连接,导致内存崩溃、文件锁冲突以及大型数据集下的陈旧工作线程错误。新架构消除了所有这些问题:
| | v1.1 | v1.2 |
|---|---|---|
| 滚动 I/O | 每个页面查询 DuckDB 文件 | 零 —— 纯 Arrow 切片 |
| 过滤线程模型 | 多个并发 QRunnables | 单个后台 `_FilterThread` |
| 文件锁冲突 | 频繁(DuckDB 单写者) | 已消除 —— 仅内存内 |
| “清除筛选器后 0 行”错误 | 存在 | 已修复 |
**内部变更:**
- `engine.py` — 移除 `_build_persistent_db()`。新增 `load_arrow_table()` 在解析后将所有 Parquet 分片读入字典编码的 Arrow 表。
- `heavyweight_model.py` — 完全替换为 `ArrowTableModel` + `_FilterThread`。保持相同的公共 API —— 无需更改其余 GUI 代码。
- `jm_col_worker.py` — `ColValueWorker` 现在直接接收 Arrow 表,而非 Parquet 目录路径。
- 滚动:`table.slice(start, count).to_pydict()` —— O(1),任何位置均无磁盘 I/O。
- 筛选:对已注册的 Arrow 表进行向量化 DuckDB SQL,600 万行下 20–120 毫秒。
- 事件详情:`event_data_json` 在点击行时从 Parquet 惰性加载(SSD 上 <20 毫秒),并使用 LRU 缓存重复点击。
### PowerShell 历史提取 —— v1.3 新增
新增 **分析 → PowerShell 历史** 菜单项,可在无额外工具的情况下从加载的 EVTX 文件重建完整的 PowerShell 取证画面。
**输出内容:**
| 文件 | 内容 |
|------|------
| `ps_commands.txt` | 按时间排序的会话/命令时间线(含脚本块预览) |
| `scriptblock_
用 ❤️ 为数字取证与事件响应社区构建。
如果你发现 EventHawk 有用,请在 GitHub 上点个 ⭐。
标签:10M+ 事件, Arrow, DuckDB, EVTX 解析, IOC 提取, Juggernaut 模式, Parquet, PyArrow, Qt GUI, Rust 解析引擎, Sentinel 分析, Windows 日志分析, 内存映射, 可视化界面, 多进程, 大事件处理, 并行解析, 异常检测, 性能优化, 数字取证, 日志取证, 日志可视化, 日志平台, 日志过滤, 时间线关联, 检测绕过, 横向移动检测, 统计基线, 自动化脚本, 资源监控, 逆向工具