CyberSecAndy/detection-rule-engineering
GitHub: CyberSecAndy/detection-rule-engineering
一个涵盖六大攻击场景的多平台检测规则工程实践库,提供Sigma、Splunk SPL、Elastic KQL和YARA格式的生产级检测规则及配套编写与调优指南。
Stars: 0 | Forks: 0
# 检测规则工程
一份关于创建、测试和验证现代安全运营检测规则的全面指南。本仓库展示了跨多个 SIEM 平台和分析工具的生产级检测规则工程实践。
## 🎯 项目概述
**检测规则工程**是将安全知识转化为可操作检测逻辑的艺术与科学。本项目将教你如何:
- ✅ 理解攻击行为并将其转化为规则
- ✅ 编写 Sigma 规则(厂商无关的检测规则)
- ✅ 将规则转换为 Splunk SPL、Elastic KQL 及其他 SIEM 语言
- ✅ 针对真实攻击数据测试规则
- ✅ 管理误报并调整告警阈值
- ✅ 专业地编写规则文档
- ✅ 将检测映射到 MITRE ATT&CK 框架
## 📚 你将学到的内容
### 核心概念(4-6 小时)
- 检测规则的结构与组成
- Sigma 规则格式与语法
- 查询语言基础
- MITRE ATT&CK 框架
- 误报分析与调优
- 告警调优与阈值优化
### 检测类别(20-25 小时)
本项目涵盖 6 个关键检测规则类别:
#### 1. **凭据转储检测**(3-4 小时)
- Mimikatz 及类似工具检测
- LSASS 进程访问监控
- 注册表访问检测
- 内存转储防护
- **包含的规则**:
- 多种检测方法的 Sigma 规则
- Splunk SPL 查询
- Elastic KQL 查询
- 内存模式的 YARA 签名
#### 2. **PowerShell 滥用检测**(3-4 小时)
- 编码命令检测
- 可疑参数检测
- 反向 Shell 模式
- 混淆技术
- **包含的规则**:
- Base64 解码检测
- 可疑 ExecutionPolicy 变更检测
- 远程执行检测
- 脚本块日志分析
#### 3. **横向移动检测**(3-4 小时)
- Pass-the-hash 检测
- Kerberoasting 识别
- PsExec 和 WMI 检测
- 管理共享访问
- **包含的规则**:
- 异常登录模式
- 服务创建检测
- 计划任务滥用
- SMB 侦察
#### 4. **持久化检测**(3-4 小时)
- 注册表运行键修改
- 计划任务创建
- 服务安装
- 启动文件夹滥用
- **包含的规则**:
- 注册表持久化机制
- 自动启动扩展检测
- WMI 事件订阅滥用
- 登录脚本修改
#### 5. **数据外泄检测**(3-4 小时)
- 异常网络连接
- DNS 隧道
- 云上传检测
- 大数据传输
- **包含的规则**:
- 出站连接异常
- DNS 查询模式分析
- 文件上传检测
- 带宽异常检测
#### 6. **勒索软件检测**(3-4 小时)
- 文件加密模式
- 主引导记录修改
- 卷影副本删除
- 勒索信创建
- **包含的规则**:
- 批量文件重命名检测
- 文件系统加密签名
- 卷影副本删除检测
- 引导扇区修改
## 🏗️ 仓库结构
```
detection-rule-engineering/
│
├── README.md (This file)
├── RULE-GUIDE.md (How to write rules)
├── TESTING-GUIDE.md (How to test rules)
├── LICENSE
├── .gitignore
│
├── detections/ (All detection rules)
│ ├── 001-credential-dumping/
│ │ ├── README.md (Attack explanation)
│ │ ├── sigma-rules.yml (Sigma format)
│ │ ├── splunk-spl.txt (Splunk SPL)
│ │ ├── elastic-kql.txt (Elastic KQL)
│ │ ├── yara-rules.yar (YARA signatures)
│ │ └── notes.md (Tuning & FP info)
│ │
│ ├── 002-powershell-abuse/
│ │ ├── README.md
│ │ ├── sigma-rules.yml
│ │ ├── splunk-spl.txt
│ │ ├── elastic-kql.txt
│ │ └── notes.md
│ │
│ ├── 003-lateral-movement/
│ │ ├── README.md
│ │ ├── sigma-rules.yml
│ │ ├── splunk-spl.txt
│ │ ├── elastic-kql.txt
│ │ └── notes.md
│ │
│ ├── 004-persistence/
│ │ ├── README.md
│ │ ├── sigma-rules.yml
│ │ ├── splunk-spl.txt
│ │ ├── elastic-kql.txt
│ │ └── notes.md
│ │
│ ├── 005-exfiltration/
│ │ ├── README.md
│ │ ├── sigma-rules.yml
│ │ ├── splunk-spl.txt
│ │ ├── elastic-kql.txt
│ │ └── notes.md
│ │
│ └── 006-ransomware/
│ ├── README.md
│ ├── sigma-rules.yml
│ ├── splunk-spl.txt
│ ├── elastic-kql.txt
│ └── notes.md
│
├── resources/ (Reference materials)
│ ├── sigma-syntax-guide.md (Sigma rule format)
│ ├── splunk-query-syntax.md (SPL reference)
│ ├── elastic-query-syntax.md (KQL reference)
│ ├── mitre-attack-mapping.md (MITRE ATT&CK reference)
│ ├── false-positive-guide.md (FP analysis)
│ └── testing-checklist.md (Rule validation)
│
└── examples/ (Real-world examples)
├── sigma-to-splunk-conversion.md
├── sigma-to-elastic-conversion.md
└── rule-tuning-example.md
```
## 🚀 快速开始(15 分钟)
### 1. 选择一个检测类别
从**凭据转储**(001-credential-dumping)开始:
- 最常见的攻击
- 文档完善的模式
- 清晰的 IOC
### 2. 阅读攻击说明
打开 `detections/001-credential-dumping/README.md` 以了解:
- Mimikatz 的功能
- 它如何攻击系统
- 它留下哪些证据
- 为什么需要检测它
### 3. 查看 Sigma 规则
打开 `detections/001-credential-dumping/sigma-rules.yml`:
- 查看厂商无关的规则格式
- 理解检测逻辑
- 学习规则结构
### 4. 转换到你的 SIEM
选择你的平台:
- **Splunk 用户**:查看 `splunk-spl.txt`
- **Elastic 用户**:查看 `elastic-kql.txt`
- **其他**:使用 Sigma 转换工具
### 5. 针对数据测试
将规则加载到你的 SIEM 中:
- 遵循 TESTING-GUIDE.md
- 导入规则
- 针对样本数据运行
- 验证其能检测攻击
- 调优误报
## 📖 学习路径
### 初学者(第一周)
1. 阅读 RULE-GUIDE.md(理解检测理念)
2. 学习 001-credential-dumping(完整类别)
3. 练习:将 Sigma 规则转换为你的 SIEM 语言
4. 测试:针对攻击数据运行规则
5. 文档:编写发现和调优笔记
### 中级(第二周)
1. 学习 002-powershell-abuse(复杂规则模式)
2. 学习误报分析(resources/false-positive-guide.md)
3. 为 PowerShell 检测创建你自己的规则
4. 针对干净系统基线进行测试
5. 验证误报率
### 高级(第三周及以后)
1. 学习其余类别(003-006)
2. 理解规则之间的关联
3. 创建多步检测逻辑
4. 为完整攻击链构建规则集
5. 实施自动化测试
## 🎯 关键指标与成功标准
### 规则质量指标
- **准确性**:规则检测预期行为
- **误报率**:< 5% 为良好,< 1% 为优秀
- **检测延迟**:规则触发速度
- **覆盖率**:检测到多少种攻击变体
### 学习成果
完成本项目后,你应该能够:
- ✅ 理解检测规则基础
- ✅ 编写生产级 Sigma 规则
- ✅ 在 SIEM 平台之间转换规则
- ✅ 分析并减少误报
- ✅ 将检测映射到攻击框架
- ✅ 专业地测试和验证规则
## 🔗 与其他项目的集成
本项目建立并与以下项目集成:
**需要**:
- 🔴 **Home SOC Lab** - 提供攻击数据和日志以供测试
- 🔴 **SIEM Detection & Threat Hunting** - 运营中使用这些规则
**输出到**:
- 🟢 **Incident Response Case Studies** - 记录规则检测的发现
- 🟢 **SOC Automation Scripts** - 自动化规则部署和更新
## 📋 检测规则类别摘要
| 类别 | 威胁行为者 | MITRE 战术 | 难度 | 时间 |
|----------|--------------|--------------|-----------|------|
| **001:凭据转储** | APT、勒索软件 | 凭据访问 | 中等 | 3-4 小时 |
| **002:PowerShell 滥用** | APT、恶意软件 | 执行、混淆 | 中等 | 3-4 小时 |
| **003:横向移动** | APT、内部人员 | 横向移动 | 困难 | 3-4 小时 |
| **004:持久化** | APT、后门 | 持久化 | 困难 | 3-4 小时 |
| **005:外泄** | 间谍活动、内部人员 | 外泄 | 困难 | 3-4 小时 |
| **006:勒索软件** | 勒索软件团伙 | 影响 | 中等 | 3-4 小时 |
## 🛠️ 工具与技术
### 规则编写
- **Sigma** - https://sigma.readthedocs.io/ - 厂商无关的规则格式
- **Splunk SPL** - https://docs.splunk.com/Documentation/SplunkCloud/latest/SearchReference/
- **Elastic KQL** - https://www.elastic.co/guide/en/kibana/current/kuery-query.html
- **YARA** - https://yara.readthedocs.io/ - 恶意软件分析规则
### 规则测试
- **Sigma Converter** - https://github.com/SigmaHQ/sigma
- **Splunk Search** - SPL 查询接口
- **Kibana Lens** - KQL 查询接口
- **YARA CLI** - yara 命令行工具
### 攻击模拟
- **Atomic Red Team** - https://atomicredteam.io/ - 威胁模拟
- **Caldera** - https://caldera.mitre.org/ - 对手模拟
## 📚 资源与参考
### Sigma 规则社区
- **SigmaHQ** - https://github.com/SigmaHQ/sigma
- **公开规则** - https://github.com/SigmaHQ/sigma/tree/master/rules
- **文档** - https://sigma.readthedocs.io/
### MITRE ATT&CK 框架
- **主框架** - https://attack.mitre.org/
- **映射工具** - https://mitre-attack.github.io/attack-navigator/
- **技术** - 本项目中引用的所有技术
### 检测工程资源
- **检测工程指南** - 行业最佳实践
- **Sigma 规则库** - 常见攻击的预构建规则
- **SIEM 文档** - Splunk 和 Elastic 官方文档
- **OSQuery** - https://osquery.io/ - 系统监控
## ❓ 常见问题
### 问:Sigma、SPL 和 KQL 有什么区别?
**答**:
- **Sigma** = 厂商无关的规则格式(描述检测逻辑)
- **SPL** = Splunk 的查询语言(平台特定)
- **KQL** = Elastic 的查询语言(平台特定)
你用 Sigma 编写规则,然后将其转换为平台特定的语言。
### 问:如何针对真实攻击测试规则?
**答**:使用 Home SOC Lab:
1. 部署攻击场景(例如,运行 Mimikatz)
2. 日志流入 SIEM
3. 加载检测规则
4. 验证规则触发
5. 分析检测到的事件
### 问:可接受的误报率是多少?
**答**:
- **初始**:5-10% 是正常的
- **调优后**:< 5% 为良好
- **成熟**:< 1% 为优秀
- **取决于**:告警严重性和业务影响
### 问:如何减少误报?
**答**:
1. 添加更具体的条件(AND 子句)
2. 排除已知良好的应用程序
3. 需要多个指标
4. 建立正常行为基线
5. 对已知进程使用白名单
### 问:我可以贡献规则吗?
**答**:可以!请参阅 CONTRIBUTING.md 了解提交新规则的指南。
## 🎓 高级主题(可选)
### 关联规则
创建多步检测逻辑,能够:
- 跨时间关联事件
- 将多个 IOC 链接在一起
- 检测攻击链
- 通过上下文减少误报
### 行为检测
超越基于签名的检测:
- 建立正常行为基线
- 检测异常
- 用户/实体行为分析
- 机器学习集成
### 威胁情报集成
通过威胁数据增强规则:
- IOC 匹配(IP、域名、哈希)
- 威胁情报源
- 信誉评分
- 动态白名单
## 📈 作品集影响
本项目展示了:
- 🔴 **深厚的技术技能** - 理解 Windows 内部机制和攻击模式
- 🔴 **SIEM 专业知识** - 精通 Splunk、Elastic 和 Sigma
- 🔴 **检测工程** - 将威胁转化为检测的能力
- 🔴 **批判性思维** - 误报分析和调优
- 🔴 **文档编写** - 专业的规则文档和测试
## 📞 支持与故障排除
### 常见问题
**规则未检测到攻击?**
- 验证数据是否正在收集(检查日志是否存在)
- 审查规则逻辑(将规则打印到控制台)
- 检查事件字段名称是否与数据匹配
- 先用更简单的规则测试
**误报率高?**
- 查看误报来源(参见 false-positive-guide.md)
- 为已知良好进程添加排除项
- 增加特异性(添加 AND 条件)
- 首先建立正常行为基线
**规则语法错误?**
- 验证 Sigma YAML 语法
- 检查 SIEM 特定的查询语法
- 使用在线查询验证器
- 查看本仓库中的示例
## 🤝 贡献
贡献检测规则:
1. Fork 仓库
2. 按照模板创建新规则
3. 针对真实攻击数据进行测试
4. 记录误报和调优
5. 提交 pull request,包含:
- 规则文件
- 包含攻击说明的 README.md
- 测试结果
- MITRE ATT&CK 映射
详细指南请参阅 **CONTRIBUTING.md**。
## 📄 许可证
本项目基于 **MIT License** 授权 - 详见 LICENSE 文件。
## 🚀 下一步
1. **阅读 RULE-GUIDE.md** - 理解检测规则基础
2. **从 001-credential-dumping 开始** - 通过实例学习
3. **遵循 TESTING-GUIDE.md** - 正确测试规则
4. **创建你自己的规则** - 应用所学知识
5. **分享你的规则** - 回馈社区
## 📊 项目统计
- **规则总数**:30+ 条检测规则
- **覆盖范围**:6 个关键攻击类别
- **规则格式**:Sigma、Splunk SPL、Elastic KQL、YARA
- **预计学习时间**:完全掌握需 20-30 小时
- **难度级别**:中级到高级
- **前置条件**:基本了解 Windows/Linux 和 SIEM 概念
**状态**:🟢 生产就绪
**最后更新**:2026-05-20
**维护者**:CyberSecAndy
**构建你的检测工程技能!🚀**
标签:AMSI绕过, Cloudflare, DNS信息、DNS暴力破解, Elasticsearch KQL, MITRE ATT&CK, PowerShell安全, Sigma规则, Splunk SPL, YARA规则, 凭证窃取检测, 威胁检测, 安全运营中心, 情报驱动防御, 数据展示, 检测规则工程, 横向移动检测, 目标导入, 红队, 结构化查询, 网络安全, 网络映射, 自动化安全, 隐私保护