cybercode-dev/HawkEye-V2
GitHub: cybercode-dev/HawkEye-V2
一个基于 Flask 的迷你 SIEM 平台,提供多格式日志解析、规则检测、告警关联、MITRE ATT&CK 映射和 AI 辅助分析,帮助用户高效完成 Linux 安全日志审计与事件响应。
Stars: 0 | Forks: 0
# HawkEye v2 — 迷你 SIEM 平台
一个 Linux 身份验证日志分析器,现已升级为可运行的迷你 SIEM 平台:流式
多格式日志解析、基于规则的攻击检测、告警关联、MITRE
ATT&CK 映射、IOC 提取、事件响应剧本、PDF/CSV/HTML
报告、扫描历史记录,以及具备上下文感知能力的 AI 安全助手。
## 设置
```
pip install -r requirements.txt
python app.py
```
打开 http://127.0.0.1:5000
可选:在您的环境中设置 `ANTHROPIC_API_KEY`,将 AI
助手从基于规则的回答升级为自由生成的 LLM 回答(如果没有此项,系统
也能完全正常工作——请参阅下文的模块 7)。
## 页面
- `/` — 上传并分析 (.log, .txt, .csv, .json, .gz)
- `/history` — 扫描历史记录(持久化存储到 SQLite)
- `/mitre` — MITRE ATT&CK 探索器
- `/assistant` — AI 安全助手聊天
- `/settings` — 实时配置视图
## 模块映射
| 模块 | 文件 | 功能描述 |
|---|---|---|
| 1. 智能日志处理 | `parser.py`, `utils.py` | 针对 `.log/.txt/.csv/.json/.gz` 的流式(绝不使用 `file.read()` 一次性全读)解析器,自动检测格式,提取时间戳/用户/IP/事件类型/结果/主机名/进程 |
| 2. 检测引擎 | `detector.py` | 10 个基于规则的检测器,各自包含严重性/置信度/风险评分/证据 |
| 3. 关联引擎 | `correlation.py` | 将相关告警(相同 IP/用户名、时间窗口内)串联升级为安全事件 |
| 4. MITRE ATT&CK 映射 | `mitre.py` | 每个检测规则都映射到真实的 technique ID/tactic/描述/参考信息 |
| 5. IOC 提取 | `ioc.py` | 源 IP、用户名、主机名、进程 — 包含尝试次数以及首次/最后发现时间 |
| 6. 事件响应 | `incident_response.py` | 每个规则包含描述、根本原因、业务影响、真实的 Linux 缓解命令、恢复步骤、预防和建议的控制措施 |
| 7. AI 安全助手 | `ai_assistant.py` | 基于上下文的问答(基于规则,始终有效)+ 可选的 Claude API 增强 |
| 8. 仪表板 | `templates/result.html`, `templates/history.html` | 威胁评分、风险等级、告警、事件、IOC 表格、图表 |
| 9. 报告生成 | `reports.py`, `report_generator.py` | PDF (ReportLab) + CSV + HTML 报告,全部包含 MITRE/IOC/建议 |
| 10. 数据库 | `history.py`, `database.py` | SQLite 扫描历史记录:文件名、告警、事件、MITRE 结果、威胁评分、报告路径 |
| 11. 项目结构 | (以上所有文件) | 符合目标结构的模块化文件布局 |
| 12. UI | 所有模板, `static/css/style.css` | 深色 SOC 主题,响应式,新页面(MITRE Explorer、AI Assistant、Settings) |
## 向后兼容性
- `.log`/`.txt` 上传仍使用原始经过测试的 `analyzer.py` 正则表达式
路径来获取汇总数据(失败/成功/威胁评分等)——这些
数字与原始的 HawkEye 保持一致。
- `.csv`/`.json`/`.gz` 上传(新格式)通过
`engine.summary_from_events()` 获取相同格式的汇总数据,该数据由新解析器的标准化
事件计算得出,因此每种格式都能获得完全相同的仪表板。
- 所有原始路由、下载链接和历史记录行为仍然有效。
## 已知限制(已记录,非隐藏)
- 上传的文件字节在移交给流式解析器之前,仍会在内存中缓冲(`app.py` 中的 `file.read()`)——*解析器*
本身绝不会将整个文件作为一个字符串实体化,但要真正以恒定内存
处理数 GB 的上传,需要直接从磁盘上的 Werkzeug 临时文件进行流式传输。这对于目前配置的 20 MB 上限来说没有问题;如果需要处理更大的文件,请调高 `MAX_CONTENT_LENGTH` 并切换到
基于磁盘的流式传输。
- 地理定位功能(`geolocation.py`,用于 IOC/头部 IP 位置列)
通过普通的 HTTP 调用免费的 `ip-api.com` 批量 endpoint,限制为每分钟 45 次请求且无需 API key——适合演示/个人使用,若要在生产环境中大量使用,请替换为付费的提供商。
- AI 助手的规则层级是针对一组固定的
问题类型(解释告警 / 为何风险高 / 解释 MITRE / 如何修复 / 如何预防 / 解释 IP)进行意图模式匹配,而不是一个通用的聊天机器人。
它诚实且基于真实数据,而非追求对话的流畅性——请设置 `ANTHROPIC_API_KEY`,以便基于相同的真实数据获得更自然的自由生成的回答。
## 已执行的测试
每个模块在构建时都进行了独立的测试,并在最终集成后的应用程序上通过 Flask 的测试
客户端运行了包含 24 项检查的完整回归测试套件,涵盖:所有 5 种文件格式、PDF/CSV/HTML 报告生成、
告警/事件/IOC 渲染、MITRE 映射、事件响应剧本、
错误处理(错误的扩展名/空文件/垃圾文件)、扫描历史记录持久化
+ 在内存中“重启”后恢复归档报告,以及所有新
页面(assistant/mitre/settings)。所有 24 项检查均已通过。
要自己重新运行快速的冒烟测试:
```
python3 -c "
import app as hawkeye_app
client = hawkeye_app.app.test_client()
print(client.get('/').status_code) # 200
print(client.get('/mitre').status_code) # 200
print(client.get('/assistant').status_code) # 200
print(client.get('/settings').status_code) # 200
"
```
标签:AMSI绕过, DLL 劫持, 大语言模型, 威胁检测, 安全运营, 扫描框架, 逆向工具