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规则, 凭证窃取检测, 威胁检测, 安全运营中心, 情报驱动防御, 数据展示, 检测规则工程, 横向移动检测, 目标导入, 红队, 结构化查询, 网络安全, 网络映射, 自动化安全, 隐私保护