
APT-Hunter V4.0
APT-Hunter 是一个用于 Windows 事件日志的威胁狩猎工具,采用紫队思维设计,用于检测隐藏在大量 Windows 事件日志中的 APT 活动,从而缩短发现可疑活动的时间。
APT-Hunter
以紫队思维构建的 Windows 事件日志威胁狩猎工具。
APT-Hunter 是一款用于 Windows 事件日志的威胁狩猎工具。它利用预定义的检测规则和日志统计,从海量事件中挖掘隐藏的 APT 活动,缩短发现可疑行为所需的时间。它在入侵评估中尤为有效。
结果以时间线形式输出,可直接在 Excel、Timeline Explorer、Timesketch 等工具中分析,也可在内置的 Web 仪表板中查看,并可选配本地 LLM 进行研判。
目录
功能特性
- 基于规则的检测,覆盖 Security、System、Sysmon、PowerShell、Defender、WinRM、Scheduled Tasks、Terminal Services 等日志;日志类型自动识别。
- 多进程引擎,可快速分析大型日志集。
- 狩猎支持字符串、正则表达式或正则文件,并支持 Sigma 规则。
- Office 365 审计日志狩猎。
- 时间线输出为 Excel、CSV(可直接用于 Timesketch),以及专门的登录、进程执行和对象访问报告。
- Web 仪表板,支持筛选、图表、事件时间线和 IR 报告导出(Markdown / .docx)。
- 本地 LLM 分析,可通过任何兼容 OpenAI 的服务器(Ollama、LM Studio、llama.cpp)进行。数据不会离开你的机器。
- 智能体研判,将数千条告警聚类为一份简短、可审查的发现列表。
安装
从 Releases 页面下载编译好的二进制文件,或从源码运行(Python 3.8+):
git clone https://github.com/ahmedkhlief/APT-Hunter.git
cd APT-Hunter
python3 -m pip install -r requirements.txt
快速开始
python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport
-p 接受一个目录或单个文件。添加 -web 可在分析完成后打开仪表板。





命令行选项
运行 python3 APT-Hunter.py -h 查看完整列表。主要选项:
| 选项 | 描述 |
|---|---|
-p, --path | 要分析的日志文件或文件夹 |
-o, --out | 输出名称 / 目录 |
-start, -end | 限制时间线范围(ISO 格式) |
-tz | 时区(local 或例如 Asia/Dubai) |
-cores | 使用的 CPU 核心数(默认:可用核心数的一半) |
-hunt, -huntfile, -eid | 按字符串/正则、正则文件或 Event ID 进行狩猎 |
-sigma, -rules | 使用转换为 JSON 的 Sigma 规则进行狩猎 |
-o365hunt, -o365rules, -o365raw | Office 365 审计日志狩猎 |
-procexec, -logon, -objaccess, -allreport | 额外报告 |
-web, -webview, -webhost, -webport | 启动 Web 仪表板 |
-llm, -llm-provider, -llm-url, -llm-model, -llm-key, -llm-severity, -llm-batch, -llm-context | 本地 LLM 分析 |
示例
分析一个包含 EVTX 文件的文件夹(日志类型自动识别):
python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport
聚焦某个时间范围:
python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport -start 2022-04-03 -end 2022-04-05T20:56
使用字符串、正则表达式或正则文件进行狩猎:
python3 APT-Hunter.py -hunt "psexec" -p /opt/wineventlogs/ -o Project2
python3 APT-Hunter.py -huntfile "(psexec|psexesvc)" -p /opt/wineventlogs/ -o Project2
python3 APT-Hunter.py -huntfile huntfile.txt -p /opt/wineventlogs/ -o Project2
使用 Sigma 规则进行狩猎:
python3 APT-Hunter.py -sigma -rules rules.json -p /opt/wineventlogs/ -o Project2
获取为 APT-Hunter 转换的最新 Sigma 规则(生成 rules.json):
./Get_Latest_Sigma_Rules.sh
Web 仪表板
在浏览器中浏览生成的报告:筛选、图表、事件时间线和 IR 报告导出。
python3 run_webapp.py <Output>/<Output>_Report.xlsx # 或传入输出目录
python3 APT-Hunter.py -p <logs> -o <Output> -web # 分析后打开仪表板
python3 APT-Hunter.py -webview <Output> # 打开已有报告
接受一条研判发现会将其连同证据固定到事件时间线上,证据以可折叠的子事件形式附加:它们位于表格中该发现的下方,而不是与其他所有内容交错排列,并且不会显示在时间线图表上,以保持图表可读。移除一条发现时,其子事件也会一并移除。
服务器默认绑定到 0.0.0.0:5000。使用 --host / --port(或 -webhost / -webport)更改此设置,例如 --host 127.0.0.1 以保持本地访问。重建报告缓存时,已审查的发现和时间线会被保留。

主仪表板:事件总数和严重性计数、严重性分布、触发最多的检测规则,以及每日事件量。侧边栏列出报告中的每个事件日志和汇总表。

事件时间线:已固定的发现按时间绘制,并按严重性以颜色区分。可缩放和平移进入繁忙时段,生成 AI 执行摘要,并导出 IR 报告或 CSV。

按时间顺序的时间线:一条攻击链展开为其子事件,详情面板显示叙述、MITRE 技术和评分。
事件时间线图表可缩放,因此相隔数分钟或数秒的事件爆发仍保持可读:在图表上拖动可缩放至某个时段,Shift+拖动可平移,Ctrl/Cmd+滚轮可围绕光标缩放,或使用下方的概览条。标签永不重叠;放不下的标签会被隐藏,将鼠标悬停在某个点上会列出堆叠在该点上的所有事件。
本地 LLM 分析
使用本地模型对检测到的事件进行恶意性评分,从命令行执行:
python3 APT-Hunter.py -p <logs> -o <Output> -llm -llm-provider ollama -llm-model llama3 -llm-severity High
或在仪表板中按事件执行(检查、解释、关联)。在仪表板的 Settings 页面配置提供商(Ollama / LM Studio / llama.cpp)、模型、URL 和超时。任何兼容 OpenAI 的本地服务器均可使用;不会向云服务发送任何数据。
智能体研判
仪表板侧边栏中的 Agentic Triage 可将数千条告警转化为一份简短的发现列表:
- 聚类。 所选范围(最低严重性、计算机、时间窗口)内的告警按规则、主机、事件 ID 和消息形态分组。一份包含约 13.5k 条告警的报告通常可压缩为几十个聚类。
- 首轮判定。 LLM 对每个聚类恰好判定一次。这一轮成本低且覆盖全面,可确保不遗漏任何内容。
- 调查。 智能体使用工具处理存活的线索:搜索告警、读取告警背后的原始事件日志、围绕某个时刻浏览时间线,并将其发现关联成攻击链。它只能提出发现;绝不会自行写入时间线。
- 审查。 发现会出现在队列中,附带评分、判定、MITRE 技术、证据和智能体的调查轨迹。接受会将一条发现添加到事件时间线(以及 IR 报告 / .docx 导出);拒绝会将其丢弃。可在 Settings 中(或每次运行时)设置自动添加阈值,以自动接受高分发现。
调查阶段需要一个支持工具调用的 LLM。如果你的模型不支持,APT-Hunter 会回退到固定的透视/关联流水线。两种方式的覆盖率完全相同,因为智能体只是在首轮之上增加深度。工具轮次和挂钟时间限制可在 Settings 中设置上限。

智能体研判:运行历史显示每次运行的范围、告警和聚类数量、发现和 LLM 调用次数。此处一台主机上的 91 条严重告警压缩为 32 个聚类和一条高分攻击链。

发现详情:叙述、MITRE 技术、证据和完整的调查轨迹(智能体读取的每个事件、时间线窗口和告警搜索),因此每个结论都可审计。
注意: LLM 输出是研判辅助,而非最终判定。在依赖发现之前请先审查。推理模型可能需要将请求超时提高到远超默认的 200 秒。
输出示例
| 示例 | 描述 |
|---|---|
| Sample_TimeSketch.csv | 可上传到 Timesketch 的时间线,用于查看攻击的全貌 |
| Sample_Report.xlsx | 所有提供的 Windows 日志中检测到的每个事件 |
| Sample_Logon_Events.csv | 所有登录事件及其解析字段(日期、用户、源 IP、登录进程、工作站、登录类型、设备、原始日志) |
| Sample_Process_Execution_Events.csv | 从事件日志中捕获的所有进程执行 |
| Sample_Object_Access_Events.csv | 从 Event 4663 捕获的对象访问 |
| Sample_Collected-SIDS.csv | 用户及其 SID,有助于调查 |
| EventID_Frequency_Analysis.xls | 事件 ID 频率分析 |
作者
Twitter: @ahmed_khlief · LinkedIn: Ahmed Khlief
许可证
基于 GNU GPL v3 分发。参见 LICENSE。
致谢
感谢 Joe Maccry 在 Sysmon 用例方面的杰出贡献(Joe 添加了 100 多个用例)