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规则, 安全, 安全规则引擎, 安全运营, 扫描框架, 插件系统, 无后门, 检测引擎, 目标导入, 网络信息收集, 超时处理, 逆向工具