SeifMoussa/offline-alert-triage-lab

GitHub: SeifMoussa/offline-alert-triage-lab

一个纯离线、基于确定性规则的防御性安全告警分诊教学工具,帮助蓝队初级分析师学习如何将合成告警自动分类、映射、分组并生成脱敏报告。

Stars: 0 | Forks: 0

# AI 辅助安全告警分诊实验室 防御性离线告警分诊实验室,用于处理合成安全告警,支持确定性 分类、MITRE ATT&CK 映射、事件分组、脱敏以及 Markdown/JSON 报告生成。 ## 安全免责声明 本项目仅用于防御。它处理包含合成告警数据的本地文件,不执行任何网络调用、无实时扫描、无漏洞利用代码、无 攻击自动化、无恶意软件行为,且无外部威胁情报 查询。 “AI 辅助”的标签具有有意且狭义、诚实的范围限制: - 确定性基于规则的引擎。 - 无 LLM。 - 无外部 AI API。 - 无 API 密钥。 - 无随机性输出。 - 每个决策均可通过本地规则、映射和模板进行追踪。 ## 项目目标 该实验室演示了初级安全自动化或蓝队工作流如何 在保持严格安全边界的同时,将原始合成告警 转化为可供分析师直接使用的分诊输出。它专为作品集审查、本地学习和 可重复的质量检查而设计。 目标岗位: - SOC 分析师。 - 网络安全分析师。 - 蓝队分析师。 - 检测工程实习生。 - 事件响应实习生。 - 初级安全自动化岗位。 ## 演示内容 - 安全的本地安全工具设计。 - Schema 验证与结构化错误处理。 - 具有透明规则追踪的确定性严重性分类。 - 无需外部查询的本地 MITRE ATT&CK 映射。 - 无需 LLM 即可生成分析师风格的解释。 - 防御性分诊 playbook 选择。 - 事件分组与严重性汇总。 - 适合报告的脱敏处理与输出验证。 - JSON 与 Markdown 报告生成。 - Python 打包、pytest、覆盖率门控、Ruff、GitHub Actions、CodeQL 和 Dependabot 配置。 ## Pipeline 概览 ``` local synthetic alerts -> alert ingestion -> validation -> severity classification -> MITRE ATT&CK mapping -> analyst-style explanations -> triage playbooks -> incident grouping -> redaction -> Markdown/JSON reports ``` 已实现的阶段: - 从本地 JSON 数组、单个 JSON 对象和简单的 NDJSON 中提取告警。 - Pydantic 验证和结构化的解析错误输出。 - 基于本地 YAML 规则的确定性严重性分类。 - 基于本地静态 YAML 表的 MITRE ATT&CK 映射。 - 基于确定性模板的分析师风格解释。 - 基于本地 playbook 的防御性分诊建议。 - 基于本地确定性关联规则的事件分组。 - 在输出报告前对原始消息、IP、用户名、敏感标记和 疑似凭据的模式进行脱敏。 - 在 `reports/examples` 下生成 Markdown 和 JSON 报告。 ## 安全模型 允许的数据仅限于本地合成告警。示例使用私有实验室 地址段、保留的文档 IP 地址段、`example.com`、`example.org`、 `example.net` 和 `.test` 域名。 应用程序会拒绝 URL 输入、网络路径以及针对 CLI 文件路径的父目录 遍历。它不提供 API 密钥、外部 富化、实时扫描或 SIEM 集成的选项。 报告不包含 `raw_message`、原始源 IP 值、原始目标 IP 值、原始用户名、批准的虚假标记常量或疑似凭据的 赋值。 ## 技术栈 - Python 3.11+。 - Pydantic。 - PyYAML。 - argparse CLI。 - pytest 和 pytest-cov。 - Ruff linting 和格式化。 - 在本地配置的 GitHub Actions 工作流文件。 - 在本地配置的 CodeQL 工作流。 - 在本地配置的 Dependabot。 ## CLI 示例 在仓库根目录下运行。通过可编辑安装,`triage-lab` 也可 作为控制台脚本使用;以下示例使用 `python -m triage_lab` 进行直接的本地执行。 ``` python -m triage_lab --help python -m triage_lab --version python -m triage_lab inventory --input alerts --format json python -m triage_lab validate-alerts --input alerts/sample_alerts.json --format json python -m triage_lab validate-alerts --input alerts/sample_alerts.json --format text python -m triage_lab classify-alerts --input alerts/sample_alerts.json --format json python -m triage_lab classify-alerts --input alerts/sample_alerts.json --format text python -m triage_lab map-mitre --input alerts/sample_alerts.json --format json python -m triage_lab map-mitre --input alerts/sample_alerts.json --format text python -m triage_lab explain-alerts --input alerts/sample_alerts.json --format json python -m triage_lab explain-alerts --input alerts/sample_alerts.json --format text python -m triage_lab group-incidents --input alerts/sample_alerts.json --format json python -m triage_lab group-incidents --input alerts/sample_alerts.json --format text python -m triage_lab redact-check --input alerts/sample_alerts.json --format json python -m triage_lab report --input alerts/sample_alerts.json --output reports/examples --format both python -m triage_lab report --input alerts/sample_alerts.json --output reports/examples --format json python -m triage_lab report --input alerts/sample_alerts.json --output reports/examples --format markdown ``` ## 示例报告 - [JSON 示例报告](reports/examples/security_alert_triage_report.json) - [Markdown 示例报告](reports/examples/security_alert_triage_report.md) 这两份报告均由 `alerts/sample_alerts.json` 生成,仅使用本地合成 数据,包含仅限离线的免责声明,并通过了报告安全 扫描。 ## 测试与质量状态 当前已验证的本地状态: - 256 个测试通过。 - 97.29% 覆盖率。 - 97% 覆盖率门控通过。 - Ruff 检查通过。 - Ruff 格式检查通过。 - 文档安全检查通过。 - CLI 冒烟测试通过。 - 生成的报告及相关 CLI 输出扫描通过。 质量命令: ``` python -m pytest python -m pytest --cov=triage_lab --cov-report=term-missing --cov-fail-under=97 python -m ruff check . python -m ruff format --check . python scripts/check-docs.py python -m py_compile scripts/check-docs.py ``` CI、CodeQL 和 Dependabot 均在本地进行了配置。由于尚未发布仓库,目前尚未验证托管的 GitHub CI 和 CodeQL。 ## 项目结构 ``` alerts/ synthetic alert fixtures config/ local YAML rules, MITRE mappings, playbooks, grouping rules docs/ schema, safety, reporting, testing, and release docs reports/examples/ generated redacted JSON and Markdown reports scripts/check-docs.py documentation and report safety checks src/triage_lab/ application package tests/ pytest suite ``` 关键包区域: - `ingestion`:本地 JSON 加载、清单和路径安全。 - `classification`:严重性规则、修饰符、覆盖和追踪。 - `mitre`:本地静态 ATT&CK 映射。 - `explanations`:确定性的分析师风格文本。 - `triage`:防御性 playbook 选择。 - `grouping`:确定性事件关联。 - `redaction`:适合报告的序列化和验证。 - `reporting`:报告模型、pipeline、渲染器和写入器。 ## 局限性 - 仅作为教学实验室;并非生产级 SOC 平台。 - 仅限合成告警数据。 - 侧重于 JSON 提取;在 v0.1.0 版本中故意将 CSV 提取排除在 范围之外。 - 本地静态 MITRE 示例并非实时的 ATT&CK 数据同步。 - 无 SIEM、EDR、云、工单系统、LLM 或外部威胁情报 集成。 - 在发布之前,托管的 CI、托管的 CodeQL、分支保护、标签和发布验证 仍处于待办状态。 ## 路线图 - 在获得明确批准后发布仓库。 - 在发布后验证托管的 GitHub Actions 和托管的 CodeQL。 - 审查代码扫描、机密扫描和 Dependabot 结果。 - 在存在托管检查后配置分支保护。 - 在最终批准后创建 v0.1.0 标签和 GitHub Release。 - 考虑为作品集展示添加额外的合成测试数据和报告截图。 ## 许可证 MIT 许可证。详见 [LICENSE](LICENSE)。
标签:Cloudflare, MITRE ATT&CK, Python, 云计算, 告警分诊, 安全规则引擎, 安全运营, 恶意代码分类, 扫描框架, 无后门, 规则引擎, 逆向工具