Bobby-Okafor/DetectionLab

GitHub: Bobby-Okafor/DetectionLab

一个基于「检测即代码」理念的检测工程作品集,通过 Python 管道、Atomic Red Team 对抗验证和多格式检测规则输出,实现端到端的检测规则开发、验证与部署流程。

Stars: 0 | Forks: 0

# Detection-Lab **检测即代码(Detection as Code)作品集** — 使用 Atomic Red Team 对抗模拟、Python 规范化管道以及部署在兼容 Microsoft Sentinel 架构上的基于 KQL 的检测逻辑,跨端点、身份和网络遥测构建并验证的检测项目。 本仓库中的每一个检测都是针对受控遥测数据开发的,通过基于重放的测试进行了验证,并在提交前附有真实的阳性证据记录。 ## 仓库理念 检测被视为可度量的系统,而非孤立的规则。每个检测具备: - 基于特定对手行为的假设 - 映射了具有字段级 schema 要求的数据源 - 来自 Atomic Red Team 执行的验证证据 - 来自纯净环境重放的误报基线 - 可通过管道追踪的版本化检测 ID ## ATT&CK 覆盖矩阵 | Detection ID | Technique | Sub-Technique | Behaviour | Data Source | Status | |---|---|---|---|---|---| | DET-ENDPOINT-T1059.001-EncodedPS-v1 | T1059 | T1059.001 | 编码的 PowerShell 执行 | Sysmon EID 1, WinSec 4688 | ✅ 已验证 | | DET-ENDPOINT-T1218.011-LOLBin-v1 | T1218 | T1218.011 | rundll32 LOLBin 执行 | Sysmon EID 1, WinSec 4688 | ✅ 已验证 | | DET-CHAIN-T1059.001-T1218.011-v1 | T1059 + T1218 | .001 + .011 | 编码 PS → rundll32 链式执行 | Sysmon EID 1, WinSec 4688 | ✅ 已验证 | | DET-IDENTITY-T1110.001-BruteForce-v1 | T1110 | T1110.001 | 单一来源的失败登录激增 | WinSec 4625 | ✅ 已验证 | | DET-IDENTITY-T1078-PrivLogon-v1 | T1078 | T1078.002 | 特权账户登录异常 | WinSec 4624 | ✅ 已验证 | | DET-NETWORK-T1071.001-C2Beacon-v1 | T1071 | T1071.001 | 进程到网络的 C2 模式 | Sysmon EID 3 | 🔄 进行中 | | DET-PERSIST-T1053.005-SchedTask-v1 | T1053 | T1053.005 | 通过 PS 创建计划任务 | WinSec 4698, Sysmon EID 1 | 🔄 进行中 | | DET-PERSIST-T1547.001-RunKey-v1 | T1547 | T1547.001 | 注册表 Run Key 持久化 | Sysmon EID 13 | 📋 已计划 | **覆盖率:** 5 已验证 · 2 进行中 · 1 已计划 ## 仓库结构 ``` Detection-Lab/ │ ├── Detections/ # Detection rule definitions (Python + metadata) │ ├── DET-ENDPOINT-T1059.001-EncodedPS-v1/ │ ├── DET-ENDPOINT-T1218.011-LOLBin-v1/ │ ├── DET-CHAIN-T1059.001-T1218.011-v1/ │ ├── DET-IDENTITY-T1110.001-BruteForce-v1/ │ └── DET-IDENTITY-T1078-PrivLogon-v1/ │ ├── Pipeline/ # Normalisation, validation, and alert engine │ ├── ingest.py # Multi-encoding log ingestion │ ├── normalize.py # Field extraction and schema enforcement │ ├── schema_validator.py # Schema contract assertions │ ├── detect.py # Stateful detection engine │ ├── alert_schema.py # Structured alert output model │ ├── replay_harness.py # Regression test runner │ └── run_pipeline.py # CLI entry point │ ├── telemetry/ # Raw and normalised log samples │ ├── raw/ # Unprocessed Sysmon + WinSec JSON │ └── normalised/ # Post-pipeline schema-aligned output │ ├── attack_runs/ # Atomic Red Team execution records │ ├── T1059.001/ │ ├── T1110.001/ │ └── T1218.011/ │ ├── reports/ # Validation reports per detection │ ├── sigma/ # Sigma rule definitions │ ├── kql/ # KQL queries for Microsoft Sentinel │ ├── spl/ # SPL equivalents for Splunk portability │ ├── playbooks/ # Analyst response playbooks │ └── .github/ └── workflows/ └── validate_pipeline.yml # CI validation on push ``` ## 管道架构 ``` Raw Log (JSON) │ ▼ [ ingest.py ] ←── multi-encoding, list/dict normalisation │ ▼ [ normalize.py ] ←── field extraction, timestamp unification, host enrichment │ ▼ [ schema_validator.py ] ←── required field assertions, drift detection │ ▼ [ detect.py ] ←── stateful correlation engine, windowed chain detection │ ▼ [ alert_schema.py ] ←── structured alert with detection ID, MITRE mapping, evidence │ ▼ Alerts JSON ──► replay_harness.py (regression validation) ──► reports/ (validation documentation) ──► Sentinel DCR / SIEM ingest (production path) ``` ## Atomic Red Team 验证方法论 每个检测在被标记为已验证之前,都会遵循此验证周期: 1. **模拟** — 针对实验室端点执行相关的 Atomic Red Team 测试 2. **遥测捕获** — 收集原始 Sysmon 和 Windows 安全事件 JSON 3. **管道重放** — 将原始日志输入规范化和检测管道 4. **真阳性断言** — 确认预期的警报触发并包含正确的字段 5. **误报基线** — 重放纯净环境日志并确认零警报 6. **文档化** — 将所有结果记录在 `reports/` 中,包含时间戳增量和证据 ## 检测命名规范 ``` DET-{SCOPE}-{TECHNIQUE}.{SUBTECHNIQUE}-{BEHAVIOUR}-v{VERSION} DET-ENDPOINT-T1059.001-EncodedPS-v1 │ │ │ │ │ │ │ │ │ └─ Version │ │ │ └───────── Short behaviour label │ │ └──────────────────── MITRE technique + sub-technique │ └─────────────────────────────── Telemetry scope └──────────────────────────────────── Detection prefix ``` ## 快速开始 ``` # 克隆 repository git clone https://github.com/Bobby-Okafor/Detection-Lab.git cd Detection-Lab # 安装 dependencies pip install -r requirements.txt # 针对 telemetry 样本运行 pipeline python Pipeline/run_pipeline.py \ --input telemetry/raw/sample_4688_sysmon.json \ --output reports/pipeline_run_output.json \ --window 60 # 运行 regression 验证 python Pipeline/replay_harness.py --suite all ``` ## 工具和数据源 | 层级 | 工具 / 来源 | |---|---| | 对手模拟 | Atomic Red Team (Invoke-AtomicRedTeam) | | 端点遥测 | Sysmon (SwiftOnSecurity config), Windows Security Auditing | | SIEM / 检测语言 | Microsoft Sentinel, KQL | | 规范化管道 | Python 3.11+ | | 检测格式 | Python 规则 + Sigma | | 版本控制 | Git, GitHub Actions CI | ## 作者 **Bobby Okafor** 检测工程师 — 端点、身份和网络遥测 [GitHub](https://github.com/Bobby-Okafor) · [LinkedIn](https://www.linkedin.com/in/bobby-okafor-40a521380)
标签:adversary simulation, AMSI绕过, Atomic Red Team, Detection as Code, EDR, IP 地址批量处理, KQL, Kusto Query Language, Microsoft Sentinel, Python, Sigma规则, Sysmon, URL发现, Windows事件日志, 威胁检测, 安全工具集合, 安全工程, 安全检测, 安全运营, 对手模拟, 开源安全项目, 扫描框架, 数据泄露检测, 无后门, 检测即代码, 目标导入, 知识库安全, 端点检测, 紫队, 网络安全, 网络检测, 脆弱性评估, 身份检测, 逆向工具, 隐私保护