boredchilada/cyfar-detections
GitHub: boredchilada/cyfar-detections
一套从安全授课报告中提炼的可部署威胁检测规则库,包含 Suricata 网络规则、YARA 文件规则、主机狩猎命令及自动化测试验证框架。
Stars: 0 | Forks: 0
# cyfar-detections
来自 [cyfar.ca](https://cyfar.ca) 授课报告的检测规则。包含 Suricata、YARA 和主机级别的狩猎(hunt)命令,以及用于网络规则的测试夹具。
每条规则都可以追溯到博客上的某次具体授课。报告提供了背景上下文,而这里的规则是可部署的产物。
## 包含内容
```
suricata/ .rules files, one per engagement
yara/ YARA rules for file-level detection
host/ Shell hunt commands for post-compromise triage
tests/
fixtures/ YAML test cases (positive + negative) per Suricata rule
validate.py Test runner: builds pcaps, replays through Suricata, checks SIDs
craft_pcap.py Generates pcaps from YAML specs
Dockerfile Suricata 7.0 container for the runner
```
## 当前规则
### Ivanti Sentry CVE-2026-10520
[十个攻击者,一个 Ivanti Sentry 命令注入 Endpoint](https://cyfar.ca/engagements/ten-operators-one-ivanti-sentry-command-injection-endpoint)
| 文件 | 类型 | 规则 |
|------|------|-------|
| `suricata/ivanti-sentry-cve-2026-10520.rules` | Suricata | 1 (预认证 MICS handleMessage POST) |
| `yara/ivanti-sentry-cve-2026-10520.yar` | YARA | 2 (JSP + PHP webshell) |
| `host/ivanti-sentry-cve-2026-10520.sh` | 主机 | 1 (UID-0 后门、webshell、清除历史记录) |
### VoidLink DDoS-for-hire 僵尸网络 + Docker Engine API 滥用
[自我阻断的 Docker API 滥用投递 VoidLink 租用型 DDoS 僵尸网络](https://cyfar.ca/engagements/self-blocking-docker-api-abuse-delivers-the-voidlink-ddos-for-hire-botnet)
| 文件 | 类型 | 规则 |
|------|------|-------|
| `suricata/voidlink-ddos-botnet-docker-abuse.rules` | Suricata | 13 (Docker API 滥用、宿主机逃逸、C2 注册、二进制文件下载、引导程序获取) |
| `yara/voidlink-ddos-botnet-docker-abuse.yar` | YARA | 4 (DockerPwn 持久化脚本、VoidLink 集群 agent、引导投放器、libhide rootkit) |
| `host/voidlink-ddos-botnet-docker-abuse.sh` | 主机 | 8 (SSH 标记、systemd 覆盖配置、rootkit 钩子、磁盘上的遗留物) |
### 跨服务凭证重放
[跨服务凭证重放:攻击者利用窃取的 LLM Endpoint 机密攻击 Hypervisor](https://cyfar.ca/engagements/cross-service-credential-replay-operator-targets-hypervisor-using-harvested-llm)
| 文件 | 类型 | 规则 |
|------|------|-------|
| `suricata/cross-service-credential-replay.rules` | Suricata | 1 (prompt 注入导致环境变量泄露) |
**总计:** 15 条 Suricata 规则,6 条 YARA 规则,9 条主机狩猎命令。随着新授课报告的发布,将会有更多规则加入。
## 使用规则
**Suricata:** 将 `.rules` 文件复制到您的规则目录中,并在 `suricata.yaml` 中引用它们。所有规则均使用标准的 `$HOME_NET` / `$EXTERNAL_NET` 变量。
**YARA:** 将您的扫描器指向 `yara/` 目录。这些规则是自包含的,没有导入或模块依赖。
**主机:** `.sh` 文件是狩猎命令的集合,而不是可以盲目执行的脚本。请阅读它们,理解每条命令检查的内容,并在您怀疑可能遭到入侵的主机上运行相关的命令。
## 运行 Suricata 测试
测试运行器分两步验证每一条 Suricata 规则。首先,它运行 `suricata -T` 以确认规则能够正确解析且没有语法错误。接着,它根据夹具的 HTTP 请求规范生成一个合成 pcap,通过 Suricata 重放,并检查 `eve.json` 中是否出现了预期的告警 SID。正向测试确认规则会在匹配检测特征的流量上触发。反向测试发送相似但无害的流量,并确认规则保持静默。
需要 Docker。它将构建一个带有 scapy 用于生成 pcap 的 Suricata 7.0 容器。
```
cd tests
docker compose build
docker compose run --rm validator
```
### 夹具格式
每个 YAML 夹具都是自包含的:它包含规则文本以及一个或多个测试用例。测试用例描述了一个 HTTP 请求(方法、URI、主机名、请求头、请求体),并列出应该触发或不触发的 SID。运行器会将该规范转换为包含完整 TCP 握手 + HTTP 交互的 pcap,因此无需捕获或存储真实的流量。
```
name: "Ivanti Sentry CVE-2026-10520 pre-auth command injection"
rule: >-
alert http $EXTERNAL_NET any -> $HOME_NET 8443 (msg:"IVANTI SENTRY CVE-2026-10520
MICS handleMessage POST"; flow:to_server,established; http.method; content:"POST";
http.uri; content:"/mics/"; content:"/handleMessage"; sid:1000844001; rev:1;)
tests:
- name: "positive-handlemessage-external-post"
expected_sids: [1000844001]
request:
method: POST
uri: /mics/api/v2/sentry/mics-config/handleMessage
host: 198.51.100.10
port: 8443
headers:
Content-Type: application/xml
body: "id "
- name: "negative-get-not-post"
expected_sids: []
request:
method: GET
uri: /mics/api/v2/sentry/mics-config/handleMessage
host: 198.51.100.10
port: 8443
```
如果您编写了自己的 Suricata 规则,可以添加一个夹具并运行相同的验证器来测试它们。
## 来源
请参阅 [ENGAGEMENTS.md](./ENGAGEMENTS.md) 了解哪些规则来自哪份报告。
此仓库是所有已发布检测规则的权威来源。博客文章中嵌入的是固定在特定 commit 的版本,并链接到此处。修复将首先发布在这里。
## 许可证
Apache 2.0
标签:AMSI绕过, Cutter, Metaprompt, Suricata, YARA, 云资产可视化, 入侵检测系统, 威胁检测, 安全数据湖, 版权保护, 现代安全运营, 网络安全, 请求拦截, 逆向工具, 隐私保护