MetaMaaz/sigma-detection-rules

GitHub: MetaMaaz/sigma-detection-rules

一个包含 16 条经过双向测试的 Sigma 安全检测规则仓库,覆盖多平台日志并映射 MITRE ATT&CK,每条规则通过 pytest 与 CI 验证真阳性与真阴性。

Stars: 0 | Forks: 0

# Sigma 检测规则 ![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg) 16 条经过测试的 Sigma 检测规则,涵盖 Windows、Linux、Web 服务器和 AWS CloudTrail 日志。每条规则都配有一个必须捕获的恶意日志样本, 以及一个必须忽略的良性样本,这由 pytest 和 CI 在每次推送时强制执行。 ## 实战示例 `win_lsass_memory_dump` 规则用于捕获凭据窃取 (T1003.001) — 攻击者通过转储 LSASS 内存来窃取密码哈希。以下是针对两条 真实进程创建日志的检测结果: **恶意日志** — 使用 comsvcs.dll MiniDump 技巧转储 LSASS: ``` { "CommandLine": "rundll32.exe comsvcs.dll, MiniDump 624 C:\\temp\\lsass.dmp full" } ``` ``` → MATCH — alert fires (target 'lsass' + tool 'MiniDump' both present) ``` **良性日志** — procdump 正常用于普通应用程序(PID 1337,而非 LSASS): ``` { "CommandLine": "procdump.exe -ma 1337 C:\\temp\\myapp.dmp" } ``` ``` → no match — the dump tool is present, but the target isn't LSASS, so no alert ``` 第二种情况才是关键:该规则要求*同时*满足 LSASS 目标和 转储工具,因此管理员转储自己的应用程序时不会在凌晨 2 点惊动 SOC。 本仓库中的每条规则都遵循同样的双向测试标准。 ## 覆盖范围 16 条规则 · 15 项 MITRE ATT&CK 技术 · 8 种战术 — 完整表格见 [MITRE-COVERAGE.md](MITRE-COVERAGE.md),或加载 [layer.json](layer.json) 到 [ATT&CK Navigator](https://mitre-attack.github.io/attack-navigator/) 以生成热力图(使用 `python scripts/navigator_layer.py > layer.json` 重新生成)。 重点: | 规则 | ATT&CK | 平台 | |------|--------|----------| | 通过 Procdump 或 Comsvcs 进行的 LSASS 内存转储 | T1003.001 | Windows | | 删除卷影副本 (勒索软件) | T1490 | Windows | | 执行 PowerShell 编码命令 | T1059.001 | Windows | | 通过 /dev/tcp 进行的 Bash 反向 Shell | T1059.004 | Linux | | 向上传目录上传 Web Shell | T1505.003 | Web | | Web 请求中的 SQL 注入模式 | T1190 | Web | | AWS Root 账户活动 | T1078.004 | AWS | ## 每条规则的测试方式 `rules/` 中的每条规则都通过文件名与两个日志样本配对: ``` rules/linux/lnx_reverse_shell_devtcp.yml # the detection tests/logs/true/lnx_reverse_shell_devtcp.json # malicious log — MUST match tests/logs/false/lnx_reverse_shell_devtcp.json # benign log — MUST NOT match ``` `tests/test_rules.py` 对每条规则运行三项检查: 1. **解析** — pysigma 验证该规则是否为合法的 Sigma 规则。 2. **真阳性** — 规则的检测逻辑能够匹配恶意样本。 3. **真阴性** — 它*不*匹配良性样本,因此范围过于宽泛的 规则(即经典的、会对所有内容触发的 `contains`)会导致构建失败。 ``` pip install -r requirements.txt pytest -v # 65 tests, all green ``` 每条规则还会在一个包含约 30 条 常规事件(管理员查询、部署脚本、正常 Web 流量)的共享良性语料库 ([tests/logs/benign_corpus.json](tests/logs/benign_corpus.json))上运行。如果某条规则 对其中任何事件触发,构建就会失败。这能防止规则成为 嘈杂告警的来源。 ## CI pipeline 每次推送都会运行三道关卡([ci.yml](.github/workflows/ci.yml)): 1. `sigma check rules/` — lint 每条规则(语法、唯一的 UUID、有效的标签) 2. 转换冒烟测试 — 每条规则必须能编译为 Splunk SPL 和 Elastic Lucene 查询 3. `pytest` — 每条规则必须捕获对应的恶意样本,并忽略 对应的良性样本 ## 从 Sigma 到你的 SIEM 规则与 SIEM 无关;查询是自动生成的,而非手写的: ``` sigma convert -t splunk --without-pipeline rules/windows/win_lsass_memory_dump.yml # → CommandLine="*lsass*" CommandLine IN ("*procdump*", "*comsvcs.dll*", "*MiniDump*") ``` 更多示例(Splunk、Elastic、Sentinel/KQL)请见 [config/convert.md](config/convert.md)。 ## 仓库结构 ``` rules/ # Sigma rules by platform: windows/ linux/ web/ cloud/ tests/logs/true/ # one malicious sample per rule (same filename stem) tests/logs/false/ # one benign sample per rule tests/test_rules.py config/convert.md # SIEM conversion guide + example output scripts/navigator_layer.py # generates layer.json for ATT&CK Navigator MITRE-COVERAGE.md # full ATT&CK coverage table .github/workflows/ci.yml ``` ## 添加规则 1. 在 `rules//` 下编写规则,包含唯一的 UUID4 `id` 和 ATT&CK 标签。 2. 添加 `tests/logs/true/.json` 和 `tests/logs/false/.json`。 3. `pytest -v` — 如果匹配到了良性样本,说明规则过于宽松;请收紧条件。 4. 推送。剩下的交由 CI 处理。 ## 许可证 [MIT](LICENSE)
标签:AMSI绕过, OpenCanary, Sigma规则, 威胁检测, 安全, 安全规则引擎, 目标导入, 超时处理, 逆向工具