SSH-PuR66/detect-lab

GitHub: SSH-PuR66/detect-lab

一个将 MITRE ATT&CK 映射的 Sigma 风格检测规则与精确率/召回率评估闭环结合的小型威胁检测引擎,解决检测规则难以量化验证质量的问题。

Stars: 0 | Forks: 0

# Detect Lab **一个小巧、可测试的检测引擎:基于事件日志的 Sigma 风格规则,映射至 MITRE ATT&CK,并配备准确率/召回率评估工具。** **v0.2** — 六条映射至 ATT&CK 的检测规则(无状态签名 + 有状态 滑动窗口聚合),一个用于评估事件流的引擎,以及 一个在 `(event, technique)` 级别根据标注的真值数据对检测结果进行评分的 评估工具。F1 指标在 CI 中设有关卡。每一次规则变更都由 数据决定,而非凭感觉。 ## 为什么会有这个项目 编写检测规则很容易。但了解它是否*真正有效* —— 既能 捕获真实威胁,又不会让分析师淹没在海量误报中 —— 才是真正核心的工作。这个项目 以它应有的方式对待检测工程:将其视为带有测试和 可衡量质量标准的代码。它直接映射到 MITRE ATT&CK 矩阵,即 现代威胁检测的通用语言。 ## 检测内容 | 技术 | ATT&CK | 规则 | 类型 | |---|---|---|---| | 编码的 PowerShell | T1059.001 | `-enc`/`-EncodedCommand` + base64 blob | 无状态 | | 入口工具传输 | T1105 | `certutil -urlcache` 下载 | 无状态 | | 损害防御 | T1562.001 | 禁用 Defender / 防火墙 / `sc stop windefend` | 无状态 | | 网络服务发现 | T1046 | 扫描工具或扫描语法 | 无状态 | | 暴力破解 | T1110 | 每 (用户, 主机) 在 120 秒内出现 ≥5 次失败登录 | **聚合** | | C2 beaconing | T1071 | 300 秒内向可疑端口发起 ≥4 次连接 | **聚合** | ## 快速开始 ``` pip install -e ".[dev]" # 对样本 event log 运行所有 rule python -m detect_lab.cli run # 对标注的 ground truth 评估 detection 得分(在 F1 gate 下会失败) python -m detect_lab.cli eval --min-f1 0.9 ``` ``` precision 1.0 · recall 1.0 · F1 1.0 (9 detections / 29 events, 0 false positives) ``` ## 工作原理 ``` events.jsonl ─► Engine.run() ─► detections ─┐ ▲ │ rules/*.yml (YAML, ATT&CK-mapped) ├─► evaluate() vs eval/labels.json │ │ precision / recall / F1 matchers (eq, regex, in, gt, aggregation) ▼ per-technique, CI-gated ``` - **无状态规则** 根据单个事件(进程、命令行、网络元组)做出判断。 - **聚合规则** 为每个分组保留一个滑动时间窗口,并在超过阈值时触发 —— 比如暴力破解、beaconing —— 随后重置,确保一次爆发只产生一条告警。 - **评估工具** 才是核心:输入标注的事件,输出准确率/召回率/F1,并在 CI 中设卡拦截,从而确保那些错误地将 `docker run -p 8080` 标记为异常的规则 在合并前被拦截。 ## 测试 `pytest` 覆盖了匹配器、规则加载、无状态检测、有状态窗口 驱逐以及端到端评估关卡。CI 会在每次推送时运行 ruff + pytest。 请参阅 [docs/CRITIQUE.md](docs/CRITIQUE.md) —— 每个版本都会进行一次对抗性审查, 审查发现的问题将推动下一个版本的迭代。在测试证明没有问题之前,请始终假定它是存在缺陷的。
标签:Cloudflare, IP 地址批量处理, MITRE ATT&CK, OpenCanary, Python, Sigma规则, 安全, 安全规则引擎, 安全运营, 扫描框架, 插件系统, 无后门, 检测引擎, 目标导入, 网络信息收集, 超时处理, 逆向工具