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, 上游代理, 代码化安全, 威胁情报, 子域名变形, 安全剧本, 安全合规, 安全运营中心, 实验室环境, 开发者工具, 恶意行为检测, 无后门, 检测即代码, 漏洞响应, 目标导入, 网络代理, 网络安全, 网络映射, 逆向工具, 防御策略, 隐私保护