jayelbotvibe-web/purple-loop
GitHub: jayelbotvibe-web/purple-loop
Purple Loop 在隔离实验室中模拟 ATT&CK 技术并验证 Sigma 检测规则是否真正触发,为蓝队提供有据可查的检测覆盖率报告。
Stars: 1 | Forks: 0
# Purple Loop
[](https://github.com/jayelbotvibe-web/purple-loop/actions/workflows/ci.yml)
[](https://github.com/jayelbotvibe-web/purple-loop/releases)
[](https://go.dev)
[](LICENSE)
## 为什么开发此工具
红队负责寻找漏洞。蓝队负责编写检测规则。但是,几乎没有工具能够*证明*一条 Sigma 规则能针对当前正在被
利用的技术(如 CISA KEV 列表、频频登上头条的 CVE)真正触发告警。Purple Loop 闭合了这一闭环:给定一
个优先排序的 ATT&CK 技术列表(来自 [threat-intel-arbiter](https://github.com/jayelbotvibe-web/threat-intel-arbiter)),它会在隔离的实验室中模拟
这些技术,收集真实的遥测数据,评估 Sigma 规则,并生成一份有据可查的覆盖率报告。不靠猜测,也不使用
基于存在感的虚假数据。
## 工作原理

*[查看更详细的视图 → 交互式架构图](https://jayelbotvibe-web.github.io/purple-loop/)*
1. **Feed** 从计划、arbiter 导出文件或模拟脚本中加载技术
2. **Execute** 在实验室目标机上(Docker Linux + VMware Windows)运行 Atomic Red Team 测试
3. **Collect** 在执行时间窗口内查询 Wazuh 存档以获取原始遥测数据
4. **Evaluate** 规范化事件,并使用原生 Go 解析器将其与 Sigma 规则进行匹配
5. **Report** 生成 JSON、HTML 覆盖率网格或 ATT&CK Navigator 图层导出文件
## Pipeline Canary(阳性对照)
在任何真实技术运行之前,Purple Loop 会触发一个 **pipeline canary** —— 一个精心设计的、已知无害且极
易被检测到的命令。它能在信任任何测试结果之前,*按平台*证明整个 pipeline(执行 -> 遥测 -> 收集 ->
规范化 -> 匹配)处于健康状态。
```
make canary
# Canary 标记: purpleloop-canary-a1b2c3d4
# Canary: 在 windows 上检测到 (证据: 4 个事件)
```
**行为契约:**
- **Canary 被检测到 (DETECTED)** -> pipeline 健康;该次运行中出现的每个 `MISSED` 都是真实的检测盲区
- **Canary 未被检测到 (NOT detected)** -> 运行结果为 `INCONCLUSIVE`;不报告覆盖率;pipeline 发生故障
这消除了导致 v1.0 版本出现虚假 100% 覆盖率的歧义 —— 现在你可以信任你的盲区了。
## 测试结果 *(v1.2 — 真正的 Sigma 匹配,而非基于存在感)*

- **Windows:** canary `DETECTED` — Sysmon Event ID 1 正在产生数据,pipeline 健康
- **Linux:** `NO_TELEMETRY` — Sysmon-for-Linux 尚在推进中(auditd 事件缺乏进程创建字段)
- **覆盖率:**真实且非零。Windows 检测已确认;Linux 盲区已记录在案
```
{
"technique_id": "T1059.004",
"verdict": "DETECTED",
"rule_matched": "detections/windows/win_proc_create.yml",
"events_collected": 73,
"evidence": [{"id": "win-1", "rule": "win_proc_create", "matched": true}]
}
```
运行:`purpleloop serve` 启动**本地 Web dashboard**,访问 `http://127.0.0.1:8787` 即可查看所有历史运行
记录。[GitHub Pages 上的在线 dashboard](https://jayelbotvibe-web.github.io/purple-loop/dashboard.html)。
## 快速开始
```
git clone https://github.com/jayelbotvibe-web/purple-loop.git && cd purple-loop
bash scripts/startup.sh
```
完整指南:[STARTUP.md](STARTUP.md) — 涵盖实验室环境、Windows VM、arbiter 连接、测试活动及故障排查。
```
# 运行 pipeline canary (验证 telemetry → detect 是否正常工作)
make canary
# 运行一个 campaign
go run ./cmd/purpleloop run --plan plans/discovery.yml
# 基于 threat-intel-arbiter 按优先级排序
go run ./cmd/purpleloop run --arbiter testdata/arbiter-live.json --output report.html
# 多阶段 actor emulation
go run ./cmd/purpleloop run --emulation emulation/apt29-subset.yml
```
## 双仓库 Pipeline
Purple Loop 与 **[threat-intel-arbiter](https://github.com/jayelbotvibe-web/threat-intel-arbiter)** 配合使用:arbiter 接收
MISP/KEV 数据源,使用 SSVC 对威胁进行评分,将其映射到 ATT&CK 技术,并导出按优先级排序的计划。
Purple Loop 负责执行该计划 —— 在实验室中模拟每项技术,并验证相应的行为(TTP)检测规则是否触发。
指标级(IOC)匹配不在范围之内;arbiter 传递的是技术,而不是哈希值或 IP。
[`threat-intel-arbiter -> arbiter-live.json -> purple-loop run --arbiter`]
## 设计决策 / 范围
**设计上的行为(TTP)验证。** Purple Loop 验证的是 ATT&CK 技术检测,而不是单个指标。这是有意为之:
在痛苦金字塔中,对手可以轻易更改哈希值和 IP,而更改 TTP 的成本很高。因此,验证技术覆盖率才是
持久且具有更高价值的目标。IOC 级别的验证(例如,针对实验室 sinkhole 的网络指标验证)可能是
未来的一个方向,但目前不在范围内;哈希“检查”只是内容覆盖率的查找,而不是真正的检测测试。
CISA KEV 和 MISP 决定了需要优先处理哪些 ATT&CK 技术;随后 Purple Loop 会验证这些技术的
行为检测 —— 指标级(IOC)匹配不在范围之内。
## 架构
完整架构请参阅 [DESIGN.md](DESIGN.md)。引擎构建在五个可插拔的 Go 接口之上:
`Executor`、`Collector`、`Evaluator`、`Feed`、`Reporter` —— 无需更改编排器即可替换任何组件。实验室
隔离运行在 `purpleloop-lab` Docker 网络中。
## 检测即代码
每条 Sigma 规则都包含**正向 + 负向 fixtures**。CI 强制要求:
- 所有正向 fixtures 必须匹配
- 所有负向 fixtures 必须拒绝
- 损坏的规则会导致 `go test ./internal/...` 失败,并使 CI 报错
```
go test ./internal/evaluator/ -v -run Regression
# 回归: 已测试 10 条规则,所有正/负向 fixtures 均正确
```
## 支持的 Sigma 子集
原生 Go 匹配器支持进程创建规则所需的 Sigma 规范子集:字段修饰符
(`contains`、`startswith`、`endswith`、`|all`),条件语法(`and`/`or`/`not`/括号/`1 of them`/
`all of them`)以及不区分大小写的匹配。尚不支持:正则表达式、聚合表达式、`near` 和关联规则。
## 局限性
- **仅限于实验环境。** 切勿针对 `purpleloop-lab` 之外的生产环境或目标运行。
- **Linux Sysmon 盲区。** Linux 目标机具有命令输出遥测功能,但没有 Sysmon 进程创建事件。
这是一个已知的盲区;Windows Sysmon 检测已确认正常工作。
- **SSVC 映射。** Arbiter 使用映射到 SSVC v2.1 等效项的预 SSVC 标签(Schedule/Monitor/Track)。
## 许可证
MIT — 详见 [LICENSE](LICENSE)。
标签:EVTX分析, Go, Ruby工具, Wazuh, 安全有效性验证, 日志审计, 紫队, 请求拦截