petercwilson/cyber_lab_detection_rules

GitHub: petercwilson/cyber_lab_detection_rules

一套为网络安全实验室环境构建的高保真检测规则集合,覆盖典型攻击链并优化以最小化误报。

Stars: 0 | Forks: 0

# 网络安全实验室检测规则 [![Lint & Validate](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/315c3cfa5d144945.svg)](https://github.com/petercwilson/cyber_lab_detection_rules/actions/workflows/lint.yml) 这是一套为网络安全实验室环境构建的高保真检测规则集合。每条规则针对模拟恶意软件执行链中的特定阶段进行了设计,并经过优化以最小化误报。 ## 快速开始 ``` # 安装验证依赖项 pip install yamllint sigma-cli pySigma-backend-splunk # (可选)安装 pre-commit 钩子,以便在每次提交前自动运行检查 pip install pre-commit pre-commit install # 在本地运行所有验证检查 bash scripts/validate.sh ``` ## 规则概览 | # | 规则 | 平台 | MITRE 技术 | 文件 | |---|------|----------|-----------------|------| | 1 | 注册表运行键持久化 | **Sigma (Sysmon EID 13)** | T1547.001 | [`sigma/persistence/registry_run_key_persistence.yml`](sigma/persistence/registry_run_key_persistence.yml) | | 2 | DNS 回调至 C2 域 | **Splunk SPL (Sysmon EID 22)** | T1071.004 | [`splunk/dns_c2_beaconing.spl`](splunk/dns_c2_beaconing.spl) | | 3 | 可疑侦察进程执行 | **Kusto / KQL (Sysmon EID 1)** | T1033, T1016 | [`kql/suspicious_recon_process_execution.kql`](kql/suspicious_recon_process_execution.kql) | | 4 | LSASS 内存转储 | **Sigma (Sysmon EID 10)** | T1003.001 | [`sigma/credential_access/lsass_memory_dump.yml`](sigma/credential_access/lsass_memory_dump.yml) | | 5 | PowerShell 编码命令执行 | **Sigma (Sysmon EID 1)** | T1059.001 | [`sigma/execution/powershell_encoded_command.yml`](sigma/execution/powershell_encoded_command.yml) | ## 规则详情 ### 1 · 注册表运行键持久化(Sigma) **文件:** `sigma/persistence/registry_run_key_persistence.yml` **日志来源:** Windows / Sysmon 事件 ID 13(注册表事件 – 值已设置) **技术:** [T1547.001 – 启动或登录自动执行:注册表运行键](https://attack.mitre.org/techniques/T1547/001/) 检测向以下路径写入的新值: ``` HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\ ``` 一份已知合法应用程序(OneDrive、Teams、Slack 等)的筛选列表会抑制最常见的良性来源。请根据环境基线扩展筛选列表。 ### 2 · DNS 回调至可疑域(Splunk SPL) **文件:** `splunk/dns_c2_beaconing.spl` **日志来源:** Sysmon 事件 ID 22(DNSQuery) **技术:** [T1071.004 – 应用层协议:DNS](https://attack.mitre.org/techniques/T1071/004/) 提供三个递进的查询: 1. **通配符匹配** – 使用 `LIKE "%evil-c2-callback.%"` 捕获精确域名及其任意子域名前缀(例如 `sub.evil-c2-callback.local`),同时排除无关字符串。 2. **聚合视图** – 按主机/域名/进程组合统计查询次数,以展示环境范围内的覆盖情况。 3. **回调模式** – 标记在任意 10 分钟窗口内对同一主机查询该域名 ≥ 3 次的行为,表明自动化的 C2 回调行为。 ### 3 · 可疑侦察进程执行(KQL) **文件:** `kql/suspicious_recon_process_execution.kql` **日志来源:** Sysmon 事件 ID 1(进程创建)导入 Microsoft Sentinel **或** Microsoft Defender for Endpoint `DeviceProcessEvents`(可选方案 B,注释中) **技术:** [T1033 – 系统所有者/用户发现](https://attack.mitre.org/techniques/T1033/) · [T1016 – 系统网络配置发现](https://attack.mitre.org/techniques/T1016/) 关联在可配置 5 分钟窗口内由同一父进程同时触发的 **`whoami.exe`** 与 **`ipconfig.exe`** 执行。强制同时存在这两个命令相比单独触发任一命令能显著降低噪音。 ### 4 · LSASS 内存转储(Sigma) **文件:** `sigma/credential_access/lsass_memory_dump.yml` **日志来源:** Windows / Sysmon 事件 ID 10(ProcessAccess) **技术:** [T1003.001 – OS 凭据转储:LSASS 内存](https://attack.mitre.org/techniques/T1003/001/) 检测进程访问事件,其中非系统进程以内存读取权限(如 `0x1fffff`、`0x1010`)打开 `lsass.exe`。这是使用 Mimikatz 或 ProcDump 等工具进行凭据提取的先决步骤。一份已知合法安全产品的筛选列表可减少误报;请根据 EDR 基线进行扩展。 ### 5 · PowerShell 编码命令执行(Sigma) **文件:** `sigma/execution/powershell_encoded_command.yml` **日志来源:** Windows / Sysmon 事件 ID 1(进程创建) **技术:** [T1059.001 – 命令和脚本解释器:PowerShell](https://attack.mitre.org/techniques/T1059/001/) 检测以 `-EncodedCommand` 标志(及常见别名 `-enc`、`-en`、`-ec`)启动的 `powershell.exe` 或 `pwsh.exe`。编码是 dropper、loader 和后利用框架常用的混淆技术,用于隐藏有效载荷内容。一份已知合法管理进程的筛选列表可减少噪音。 ## 模拟恶意软件行为 上述规则旨在检测以下 Python 模拟的恶意软件操作: ``` 1. Registry persistence → HKCU\...\Run key write 2. DNS C2 beacon → DNS query for evil-c2-callback.local 3. Reconnaissance → whoami + ipconfig output saved to a hidden folder ``` ## 工具与转换 可使用 [sigma-cli](https://github.com/SigmaHQ/sigma-cli) 将 Sigma 规则转换为其他 SIEM 查询语言: ``` # 安装 sigma-cli 和 Splunk 后端 pip install sigma-cli pySigma-backend-splunk # 转换为 Splunk SPL(使用 Splunk Windows 管道进行字段映射) sigma convert -t splunk -p splunk_windows sigma/persistence/registry_run_key_persistence.yml # 一次性将所有 Sigma 规则转换为 Splunk SPL find sigma/ -name "*.yml" | xargs sigma convert -t splunk -p splunk_windows # 转换为 KQL(Microsoft Sentinel)— 需要 pySigma-backend-microsoft365defender sigma convert -t microsoft365defender sigma/persistence/registry_run_key_persistence.yml # 转换为 Elastic(EQL)— 需要 pySigma-backend-elasticsearch sigma convert -t es-eql sigma/persistence/registry_run_key_persistence.yml ``` ## 功能路线图 以下改进按优先级顺序规划: | 优先级 | 功能 | 描述 | |----------|---------|-------------| | 🔴 高 | **规则测试框架** | 与每条 Sigma 规则配对的样本日志事件(JSON)及 pytest 运行器,用于断言对检测逻辑的命中/未命中情况。 | | 🔴 高 | **更多 Sigma 规则** | 扩展覆盖完整模拟攻击链:横向移动(PsExec、WMI)、防御规避(事件日志清除、AMSI 绕过)以及数据外传。 | | 🟠 中 | **ATT&CK 覆盖矩阵** | 使用 [attack-navigator](https://github.com/mitre-attack/attack-navigator) 层 JSON 从规则元数据自动生成覆盖技术热图。 | | 🟠 中 | **规则目录页面** | 基于规则 YAML 自动生成的 GitHub Pages 站点——可搜索的表格,支持按严重性、技术和平台筛选。 | | 🟠 中 | **多后端 CI 导出** | 扩展 CI 以将每条 Sigma 规则导出为 Splunk、Elastic 和 Sentinel 格式,并作为构建产物上传。 | | 🟡 低 | **重复 ID 防护** | CI 检查确保每条规则的 `id` 在整个仓库中全局唯一。 | | 🟡 低 | **语义化版本控制** | 采用 SemVer(`v1.2.3`)而非基于日期的变更日志版本;为规则元数据添加 `version` 字段。 | | 🟡 低 | **预提交 sigma-cli 钩子** | 添加预提交钩子,在每次提交前对更改的 `.yml` 文件运行 `sigma convert`。
标签:AMSI绕过, Cloudflare, DAST, KQL, MITRE ATT&CK, OpenCanary, Pre-commit, Sigma规则, Splunk SPL, Sysmon, YAML校验, 后渗透, 威胁检测, 平台覆盖, 开源框架, 恶意软件分析, 持续集成, 检测规则, 目标导入, 网络安全实验室, 网络资产发现, 自动化验证, 规则开发, 规则汇总, 逆向工具