projetseyes-dev/Threat-Hunting---Sigma-Rules--D-fense-
GitHub: projetseyes-dev/Threat-Hunting---Sigma-Rules--D-fense-
基于 Sigma 标准的端到端检测工程框架,整合规则编写、验证、多 SIEM 转换、Playbook 响应和 Purple Team 测试,实现从威胁狩猎到事件响应的全流程标准化。
Stars: 0 | Forks: 0
# 威胁狩猎与 Sigma 规则 - 检测库
## 概述
该库展示了一种 **Detection-as-Code** 方法:将检测规则视为代码处理(通过验证保证质量,通过 Sigma 实现互操作性,通过模拟进行测试,通过 playbook 编写文档,并通过 CI 实现集成)。
为什么这对于现代 SOC 来说是必不可少的?
– 规则保持 **一致性**、可追溯和版本控制:减少临时操作,改善变更治理。
– 借助 playbook,调查变得 **标准化**:N1 分诊,N2/N3 分析,遏制,根除和恢复。
– 响应时间缩短,因为分析师可以随时使用现成的程序和查询:有望改善 **MTTR (Mean Time To Respond)**(通过 MTTD/MTTR/FP rate 等 KPI 衡量)。
结果:从“孤立的”检测转变为完整的 **检测 → 验证 → 响应 → 经验教训 (RETEX)** 流水线,并与 **MITRE ATT&CK** 保持一致。
## Sentinel 展示实验室(5个关键场景)
对于演示(无活动 SIEM),该项目包含一个“展示”实验室:
– `detections/`:5个关键场景,包含 **Sigma(与 SIEM 无关)** 规则 + **Microsoft Sentinel (KQL)** 查询。
– `playbooks/`:5个用于调查/修复的 Markdown playbook。
– `samples/`:模拟攻击并 **触发** 对应 KQL 规则的合成 JSON 日志。
– `scripts/validate_sigma.py`:自动验证 Sigma 规则的脚本。
验证(Detection-as-Code):
```
python scripts/validate_sigma.py --strict
```
审查指南:
1. 打开 `detections//sentinel_rule.kql`
2. 打开 `samples//trigger_logs.json`
3. 阅读 `playbooks//Incident Response Playbook.md`
## 1. 检测愿景与理念
孤立的检测毫无价值,如果没有:
1. **攻击上下文**(MITRE ATT&CK 的 TTP)。
2. **可执行的调查与修复 playbook**。
3. **保证检测代码质量的验证机制**。
4. **经过测试的 SIEM 集成**。
本库应用了 **Detection Engineering as Code** 模型:每条规则都被视为软件工件(审查、测试、CI、版本控制)。
## 2. 威胁狩猎方法论 (MITRE ATT&CK)
### 2.1 适配的 PEAK 循环
我们遵循受 **PEAK** 框架(准备、执行、知识应用)启发并结合 David Bianco 的 **Pyramid of Pain(痛苦金字塔)** 的循环:
```
┌─────────────────────────────────────────────────────┐
│ 1. THREAT MODELING (CTI + ATT&CK Navigator) │
│ 2. HYPOTHÈSE (TTP-Driven Hunt) │
│ 3. COLLECTE (Logs, EDR, Netflow) │
│ 4. INVESTIGATION (Pivot, Stack Counting) │
│ 5. DÉTECTION (Sigma Rule) │
│ 6. RÉPONSE (Playbook IR) │
│ 7. RETEX (Tuning, Purple Team) │
└─────────────────────────────────────────────────────┘
```
### 2.2 目标 Pyramid of Pain 级别
| 级别 | 指标 | 攻击者成本 | 覆盖范围 |
|--------|-----------|------------------|------------|
| Hash values | 易变的 IOC | 微不足道 | 低优先级 |
| IP / Domain | 网络 IOC | 容易 | 补充 |
| 主机工件 | 文件、互斥体、注册表键 | 中等 | 中等 |
| 工具 | Mimikatz, Cobalt Strike | 高 | 高 |
| **TTPs** | **ATT&CK 行为** | **非常高** | **主要目标** |
**我们的所有规则均优先针对 TTPs**,旨在给攻击者造成最大程度的痛苦。
### 2.3 当前 ATT&CK 覆盖范围
| 规则 | 平台 | 战术 | 技术 |
|-------|-----------|----------|-----------|
| Process Hollowing | Windows | Defense Evasion / Privilege Escalation | T1055.012 |
| RDP Brute Force | Windows | Credential Access / Initial Access | T1110.001 |
| DNS Exfiltration | Windows | Exfiltration / C2 | T1048.003 / T1071.004 |
| Credential Dumping LSASS | Windows | Credential Access | T1003.001 |
| Encoded PowerShell | Windows | Execution / Defense Evasion | T1059.001 / T1027 |
| Linux Reverse Shell | Linux | Execution / C2 | T1059.004 |
| macOS LaunchAgent Persistence | macOS | Persistence / PrivEsc | T1543.001 / T1543.004 |
| AWS IAM Persistence | AWS / Cloud | Persistence / PrivEsc | T1098.001 / T1136.003 |
| Azure AAD Privileged Role | Azure / M365 | Persistence / PrivEsc | T1098.003 |
| Kubernetes Privileged Pod | Kubernetes | Privilege Escalation / Defense Evasion | T1611 / T1610 |
覆盖范围自动生成,可在 **MITRE ATT&CK Navigator** 中查看:
```
python generate_navigator_layer.py rules/ --out coverage/attack_navigator_layer.json
```
然后导入 `coverage/attack_navigator_layer.json` 至 。
## 3. 仓库结构
```
.
├── README.md # Ce document
├── requirements.txt # Dépendances Python
├── validate_sigma.py # Validateur de schéma Sigma
├── convert_rules.py # Conversion multi-SIEM (sigma-cli)
├── generate_navigator_layer.py # Génération couche ATT&CK Navigator
├── .github/workflows/sigma-ci.yml # Pipeline CI complet
├── coverage/
│ └── attack_navigator_layer.json # (généré) couverture ATT&CK
├── dettect/
│ ├── data_sources.yaml # Visibilité par data source
│ └── README.md # Doc DeTT&CT
├── caldera/
│ ├── adversary_profiles/ # Profils adversaires Purple Team
│ ├── abilities/ # Abilities Caldera par OS
│ └── README.md # Workflow Purple Team trimestriel
├── ml/
│ ├── dns_anomaly_detector.py # UEBA DNS (entropie, volume, QType)
│ ├── logon_anomaly_detector.py # UEBA logon (IsolationForest)
│ └── README.md # Pipeline MLOps minimal
└── rules/
├── process_hollowing/ # T1055.012 (Windows)
│ ├── process_hollowing.yml
│ ├── playbook.md
│ └── tests/atomic.yaml
├── rdp_brute_force/ # T1110.001 (Windows)
│ ├── rdp_brute_force.yml
│ ├── playbook.md
│ └── tests/atomic.yaml
├── dns_exfiltration/ # T1048.003 (Windows)
│ ├── dns_exfiltration.yml
│ ├── playbook.md
│ └── tests/atomic.yaml
├── credential_dumping_lsass/ # T1003.001 (Windows)
│ ├── credential_dumping_lsass.yml
│ ├── playbook.md
│ └── tests/atomic.yaml
├── suspicious_powershell_encoded/ # T1059.001 (Windows)
│ ├── suspicious_powershell_encoded.yml
│ ├── playbook.md
│ └── tests/atomic.yaml
├── linux_reverse_shell/ # T1059.004 (Linux)
│ ├── linux_reverse_shell.yml
│ ├── playbook.md
│ └── tests/atomic.yaml
├── macos_launchagent_persistence/ # T1543.001 / T1543.004 (macOS)
│ ├── macos_launchagent_persistence.yml
│ ├── playbook.md
│ └── tests/atomic.yaml
├── aws_iam_persistence/ # T1098.001 (AWS)
│ ├── aws_iam_persistence.yml
│ ├── playbook.md
│ └── tests/atomic.yaml
├── azure_privileged_role_assignment/ # T1098.003 (Azure / M365)
│ ├── azure_privileged_role_assignment.yml
│ ├── playbook.md
│ └── tests/atomic.yaml
└── k8s_privileged_pod_creation/ # T1611 / T1610 (Kubernetes)
├── k8s_privileged_pod_creation.yml
├── playbook.md
└── tests/atomic.yaml
```
每个规则文件夹都是 **自包含** 的:
– `*.yml` - Sigma 格式的检测规则。
– `playbook.md` - 事件响应程序。
– `tests/atomic.yaml` - 用于在实验室中验证规则的 Atomic Red Team 测试。
## 4. Sigma 格式 - 为什么?
[Sigma](https://github.com/SigmaHQ/sigma) 是 **开放标准** 的检测规则描述语言,与 SIEM 无关。一次编写的规则可编译为:
– Splunk SPL (`splunk`)
– Microsoft Sentinel KQL (`microsoft365defender`, `azuremonitor`)
– Elastic ES|QL / EQL
– CrowdStrike, QRadar, Chronicle 等。
通过 **`sigma-cli`**(基于 pySigma)进行转换。
## 5. SIEM 集成
### 自动转换(所有规则)
```
pip install sigma-cli pysigma-backend-splunk pysigma-backend-kusto \
pysigma-pipeline-windows pysigma-pipeline-sysmon
python convert_rules.py rules/ --out build/
```
输出:
```
build/
├── splunk/.spl # SPL prêt à coller dans Splunk Search
├── sentinel/.kql # KQL prêt à coller dans Sentinel Analytics Rules
└── conversion_report.md # Statut OK/FAIL par règle et par cible
```
### 5.1 Splunk
```
sigma convert -t splunk -p splunk_windows \
rules/process_hollowing/process_hollowing.yml
```
预期摄取流水线示例:
| 来源 | Splunk TA | Sourcetype |
|--------|-----------|------------|
| Sysmon | Splunk_TA_microsoft-sysmon | `xmlwineventlog:microsoft-windows-sysmon/operational` |
| Windows Security | Splunk_TA_windows | `wineventlog:security` |
| DNS Server | Splunk_TA_dns-ms | `MSAD:NT6:DNS` |
| Zeek | TA-zeek | `bro:dns:json`, `bro:conn:json` |
推荐部署:Enterprise Security (ES) → **Correlation Searches** + **Notable Events** + **Risk-Based Alerting (RBA)**。
### 5.2 Microsoft Sentinel
```
sigma convert -t microsoft365defender \
rules/credential_dumping_lsass/credential_dumping_lsass.yml
```
使用的 KQL 表:
| 数据 | Sentinel / MDE 表 |
|--------|----------------------|
| 进程 | `DeviceProcessEvents`, `SecurityEvent` (4688) |
| 网络 | `DeviceNetworkEvents`, `CommonSecurityLog` |
| DNS | `DnsEvents`, `DeviceNetworkEvents` (ActionType=DnsQueryResponse) |
| 认证 | `SigninLogs`, `SecurityEvent` (4624/4625) |
通过 **Logic Apps / Playbooks Sentinel** (SOAR) 的响应工作流,由从 Sigma 生成的 **Analytics Rules** 触发。
## 6. 规则验证
Python 脚本 (`validate_sigma.py`) 根据...检查每个 YAML:
– 官方 Sigma 架构(必填字段、类型、允许的 `level` 值等)。
– `id` (UUID v4) 的唯一性。
– MITRE ATT&CK 标签 (`attack.tXXXX`) 的存在。
– `logsource` ↔ `detection.condition` 的一致性。
执行:
```
pip install -r requirements.txt
python validate_sigma.py rules/
```
预期输出:
```
[OK] rules/process_hollowing/process_hollowing.yml
[OK] rules/rdp_brute_force/rdp_brute_force.yml
...
=== 5/5 règles valides ===
```
## 7. CI 流水线
工作流 `.github/workflows/sigma-ci.yml` 在每次 push/PR 时自动运行:
| 作业 | 角色 |
|-----|------|
| `lint-yaml` | 通过 `yamllint` 进行 Lint(风格 + 一致性) |
| `validate-sigma` | Sigma 架构 + 唯一 UUID + ATT&CK 标签 (`--strict`) |
| `convert-multi-siem` | 转换为 Splunk SPL + Sentinel KQL,上传工件 |
| `generate-coverage` | ATT&CK Navigator JSON 层,上传工件 |
| `pr-summary` | 在 PR 上自动评论,总结覆盖范围 |
合并前门控:如果任何规则无效,则对 `main` 分支的任何合并都会被 **阻止**。
## 8. Atomic Red Team 测试
每条规则都包含一个 `tests/atomic.yaml` 文件,其中描述了:
– **先决条件**(日志、EDR 模式、隔离实验室)。
– 使用不同变体重现 TTP 的多个 **测试**。
– 用于确认警报已触发的 **验证查询** Splunk SPL 和 Sentinel KQL。
– ATT&CK 参考 + 上游 Atomic Red Team。
示例:`rules/credential_dumping_lsass/tests/atomic.yaml` 涵盖了 3 种方法(comsvcs.dll、ProcDump、任务管理器)。
## 9. 可见性测量 (DeTT&CT)
`dettect/` 文件夹包含一个 `data_sources.yaml` 文件,列出了每个数据源的质量:
– 进程创建、进程访问、命令执行、登录会话、网络流量、域名、云服务修改。
– 对 `device_completeness`、`data_field_completeness`、`timeliness`、`consistency`、`retention` 进行 0-5 的评分。
交叉比对 **检测 × 可见性** 有助于避免 **虚假覆盖**(写出了规则但缺少数据源)。参见 `dettect/README.md`。
## 10. 规则生命周期
```
Hypothèse de hunt ──► PoC en lab (Atomic Red Team / Caldera)
│ │
▼ ▼
Détection écrite (Sigma) ──► Validation (CI)
│ │
▼ ▼
Tuning sur données réelles ──► Production SIEM
│ │
▼ ▼
Playbook IR documenté ──► Mesure : MTTD / MTTR / FP rate
│
▼
Purple Team review trimestrielle
```
跟踪的 KPIs:
– 每条规则的 **MTTD** (Mean Time To Detect)
– **MTTR** (Mean Time To Respond)
– **FP rate**(目标 < 5%)
– 按战术划分的 **ATT&CK 覆盖范围**(目标:在 Defense Evasion / Credential Access / Lateral Movement 上 > 70%)
## 11. Caldera 与 Purple Team
`caldera/` 文件夹包含:
– 一个 **对手配置文件** (`soc-detection-coverage.yml`),用于重放所有覆盖的 TTPs。
– 按操作系统(Windows、Linux、macOS、AWS、Azure、Kubernetes)划分并与 Sigma 规则 1:1 映射的 **能力**。
– 记录有 KPI(检测覆盖率、MTTD、FN/FP 率)的季度 **Purple Team** 工作流。
```
# 导入 abilities 和 profile 到 Caldera 实例
cp -r caldera/abilities/* /opt/caldera/plugins/stockpile/data/abilities/
cp caldera/adversary_profiles/soc-detection-coverage.yml \
/opt/caldera/plugins/stockpile/data/adversaries/
```
允许一键编排 **端到端** 验证(Caldera 执行 → SIEM 检测 → 调优)。
## 12. ML / UEBA
两个行为检测器补充了基于特征的规则:
| 模块 | 目标 | 方法 |
|--------|-------|----------|
| `ml/dns_anomaly_detector.py` | DNS 隧道 / 渗透 | Shannon 熵 + 复合评分(数量、QType、长度、多样性) |
| `ml/logon_anomaly_detector.py` | 异常登录 | 按用户的 IsolationForest + 不可能旅行 + 非工作时间 |
输出格式为 **JSON Lines**,可作为新数据源重新导入 SIEM。有关 MLOps 流水线,请参见 `ml/README.md`。
```
pip install scikit-learn numpy pandas
python ml/dns_anomaly_detector.py --input dns_logs.csv --threshold 7.5
python ml/logon_anomaly_detector.py --train events_30d.csv --score events_today.csv
```
## 13. 利用 (DEX):如何使用该程序
下面的 DEX 流程展示了如何从 **检测** 转向 **验证/受控执行**,然后再转向 **SOC 利用**。
1. **D - 检测 (Sigma + Playbooks)**
– 每个 TTP 在 `rules/*/*.yml` 中以 Sigma 格式描述,并附带一个 `playbook.md`。
– 架构质量由 `validate_sigma.py` 保证。
2. **E - 受控利用 (Purple Team 模拟)**
– 每条规则都有一个 `tests/atomic.yaml`(实验室中的 PoC + SIEM 验证查询)。
– 对于编排执行:导入 Caldera(`caldera/` 文件夹),然后运行 `soc-detection-coverage` 以重放所有功能。
3. **X - SOC 利用 (分诊、修复、调优)**
– 对于每个警报:应用 playbook(N1 → N2/N3 → 遏制 → 根除 → 恢复)。
– 调整阈值/允许列表,并通过 Navigator 覆盖范围(理想情况下包括 DeTT&CT)衡量改进。
### 快速命令(本地)
```
# 1) 质量 / Sigma schema
python validate_sigma.py rules/ --strict
# 2) ATT&CK Navigator 覆盖
python generate_navigator_layer.py rules/ --out coverage/attack_navigator_layer.json
# 3) (可选) 转换至 SIEM (Splunk SPL + Sentinel KQL)
pip install sigma-cli pysigma-backend-splunk pysigma-backend-kusto \
pysigma-pipeline-windows pysigma-pipeline-sysmon
python convert_rules.py rules/ --out build/
# 4) (可选) UEBA / ML
pip install scikit-learn numpy pandas
python ml/dns_anomaly_detector.py --input dns_logs.csv --threshold 7.5
python ml/logon_anomaly_detector.py --train events_30d.csv --score events_today.csv
```
### Purple Team 执行 (Caldera)
```
# 导入 abilities (至 Caldera / Stockpile)
cp -r caldera/abilities/* /opt/caldera/plugins/stockpile/data/abilities/
# 导入 multi-TTP profile
cp caldera/adversary_profiles/soc-detection-coverage.yml \
/opt/caldera/plugins/stockpile/data/adversaries/
```
然后,从 Caldera UI:
1. 在实验室端点上部署代理,
2. 启动操作 `soc-detection-coverage`,
3. 比较 Caldera 结果(已执行的能力)与 SIEM 警报,
4. 进行调优并总结经验教训 (RETEX)。
## 14. 路线图
– [x] 为每条规则添加 Atomic Red Team 测试 (`tests/atomic.yaml`)。
– [x] 自动生成 ATT&CK 覆盖层。
– [x] GitHub Actions 流水线(lint + 验证 + 多 SIEM 转换)。
– [x] 集成 **DeTT&CT** 进行可见性评分。
– [x] Linux (auditd) 和 Cloud (AWS CloudTrail) 规则。
– [x] Azure Activity Log / Microsoft Graph 规则 (T1098.003)。
– [x] Kubernetes 规则(审计日志,T1611 / T1610)。
– [x] macOS ESF 规则 (T1543.001 / T1543.004)。
– [x] 集成 **Caldera** 进行 Purple Team 编排。
– [x] DNS 和异常登录的 ML/UEBA 检测。
– [ ] Caldera CI 流水线(workflow_dispatch + 自动 SIEM 关联)。
– [ ] ML 模型版本控制 + 漂移监控。
– [ ] ATT&CK ICS / Mobile 覆盖范围。
## 15. 参考
– MITRE ATT&CK :
– SigmaHQ :
– Sigma 规范 :
– Pyramid of Pain (D. Bianco) :
– PEAK 框架 :
– Atomic Red Team :
– MITRE Caldera :
– DeTT&CT :
– IsolationForest (Liu, 2008) :
– Stratus Red Team (Cloud TTPs) :
– Objective-See (macOS 工具) :
## 16. 许可证
规则在 **Detection Rule License (DRL) 1.1** 下发布 - 允许在注明出处的情况下自由重用。
标签:CIDR扫描, Cloudflare, Detection-as-Code, DevSecOps, Incident Response, JSON, KQL, Kusto查询语言, Log Analytics, Microsoft Sentinel, MITRE ATT&CK, MTTD, MTTR, Playbook, Python, Reconnaissance, Sigma规则, SOC分析师, Threat Hunting, 上游代理, 代码化安全, 威胁情报, 子域名变形, 安全剧本, 安全合规, 安全运营中心, 实验室环境, 开发者工具, 恶意行为检测, 无后门, 检测即代码, 漏洞响应, 目标导入, 网络代理, 网络安全, 网络映射, 逆向工具, 防御策略, 隐私保护