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 劫持, 大语言模型, 威胁检测, 安全运营, 扫描框架, 逆向工具