JP13007/Detection-Engineering-Lab
GitHub: JP13007/Detection-Engineering-Lab
一套基于 Sigma 规范的攻击检测规则集合,配合 Atomic Red Team 进行实测验证与误报调优,演示完整的检测工程工作流程。
Stars: 0 | Forks: 0
# 检测工程实验室:Sigma 规则与 Atomic Red Team 测试
为常见攻击技术构建生产级检测规则。本实验室演示了如何编写 Sigma 检测规则,通过真实的攻击模拟对其进行测试,并进行调优以减少误报。
## 🎯 项目概述
**什么是检测工程?**
检测工程是构建自动化规则以在攻击得逞前捕获它们的实践。检测工程师不再手动狩猎威胁(被动响应),而是构建能够自动告警的规则(主动防御)。
本实验室演示了完整的工作流程:
1. **识别攻击技术**(来自你的 SOC 调查实验室)
2. **编写 Sigma 检测规则**(行业标准格式)
3. **针对真实攻击进行测试**(使用 Atomic Red Team)
4. **针对误报进行调优**(调整阈值,添加条件)
5. **记录发现**(哪些有效,哪些无效,经验教训)
## 📋 包含的 Sigma 规则
针对 SOC 调查实验室中技术的五条检测规则:
| # | 技术 | MITRE ID | Sigma 规则 |
|---|-----------|----------|-----------|
| 1 | 可疑下载与执行 | T1204.002 | rule_1_suspicious_download_execution.yml |
| 2 | C2 回连检测 | T1071.001 | rule_2_c2_callback.yml |
| 3 | 失败的权限提升 | T1548.002 | rule_3_failed_privilege_escalation.yml |
| 4 | 用户/系统枚举 | T1033 | rule_4_user_enumeration.yml |
| 5 | 可疑的父子进程 | T1059.003 | rule_5_suspicious_process_parent.yml |
## 🔧 规则详情
### 规则 1:可疑下载与执行 (T1204.002)
**检测内容:** 下载到 Downloads 文件夹的文件,立即被用户执行
**重要性:** 网络钓鱼和水坑攻击使用此模式 —— 攻击者发送恶意文件,用户运行它
**Sigma 逻辑:** Image 以 `.exe` 结尾,父进程是 `explorer.exe`,路径包含 `Downloads`
**误报:** 下载并运行的合法软件安装程序(例如,Slack、Discord setup.exe)
**调优:** 添加时间阈值 —— 如果文件在执行前下载已超过 1 小时,则可能是合法的
### 规则 2:C2 回连检测 (T1071.001)
**检测内容:** 进程在非常见端口(例如,4444)上连接到外部 IP
**重要性:** 反弹 shell 和 C2 beacon 会建立到攻击者基础设施的出站连接
**Sigma 逻辑:** EventID=3(网络连接),DestinationPort 为 4444,DestinationIp 为外部
**误报:** 合法的开发工具(测试框架,远程调试)
**调优:** 白名单已知的安全端口(443、80 是合法的)和已知的安全目标
### 规则 3:失败的权限提升 (T1548.002)
**检测内容:** 短时间内连续多次失败的 `net user` 或 `net localgroup` 命令
**重要性:** 攻击者尝试创建帐户和更改组成员身份以进行权限维持
**Sigma 逻辑:** CommandLine 包含 `net user` 或 `net localgroup`,并且 60 秒内发生多个事件
**误报:** 运行批量用户管理脚本的系统管理员
**调优:** 对你的环境中的预期命令频率进行基线评估(例如,如果管理员经常运行此命令,请调整告警阈值)
### 规则 4:用户/系统枚举 (T1033)
**检测内容:** 顺序执行多个发现命令(`whoami /all`、`net user`、`systeminfo`)
**重要性:** 获取访问权限后,攻击者会枚举系统以计划下一步行动
**Sigma 逻辑:** CommandLine 匹配枚举模式,来自同一进程的多个命令
**误报:** 合法的故障排除脚本,合规性扫描工具
**调优:** 添加进程上下文 —— 如果命令来自系统管理工具(SCCM、Puppet),请将其加入白名单
### 规则 5:可疑的父子进程 (T1059.003)
**检测内容:** 不常见的父子进程关系(例如,notepad.exe → cmd.exe)
**重要性:** 攻击者使用合法程序作为启动器来逃避检测
**Sigma 逻辑:** ParentImage 为 `notepad.exe`、`explorer.exe`、`winword.exe`;子进程为 `cmd.exe`、`powershell.exe`
**误报:** 某些软件合法地从意外的父进程生成 cmd/PowerShell
**调优:** 白名单已知软件,使用文件哈希识别子进程是否已签名/受信任
## 🧪 测试与调优结果
有关每条规则的详细测试文档,请参阅 `test_results/` 文件夹:
- **执行的测试命令**(我们运行了哪些命令来触发规则)
- **预期与实际结果**(规则是否触发?是否有误报?)
- **调优调整**(我们做了哪些更改以减少误报)
- **检测率**(捕获攻击的百分比)
## 🚀 如何使用这些规则
### 在 Splunk 中
将 Sigma 转换为 Splunk SPL:
1. 使用 [sigma-cli](https://github.com/SigmaHQ/sigma-cli) 或 [sigmac](https://github.com/SigmaHQ/sigma/tree/master/tools) 将 YAML 转换为 SPL
2. 作为保存的搜索或关联搜索导入 Splunk
3. 配置在规则匹配时触发的告警
### 在其他 SIEM 中
大多数企业 SIEM 都支持 Sigma:
- **Elastic/ELK** — 内置 Sigma 支持
- **Microsoft Sentinel** — 提供 Sigma 集成
- **Splunk** — 使用 sigma-cli 转换为 SPL
- **ArcSight** — 提供社区转换器
### 本地测试
在你自己的实验室环境中测试规则:
1. 从你的 Windows 目标导出 Sysmon 事件(EventID 1、3、5 等)
2. 导入 Splunk 或 Elastic
3. 将每个 Sigma 规则作为 SPL/KQL 查询运行
4. 记录结果
## 📊 关键发现
### 有效的方面
- **规则 2(C2 回连)** — 检测到 100% 的到非常见端口的出站连接。将开发工具加入白名单后零误报。
- **规则 1(可疑下载)** — 捕获了 update.exe 的执行。需要调整以忽略在下载后 1 小时内运行的软件安装程序。
- **规则 5(进程父子关系)** — 有效标记了 notepad → cmd 场景。大多数误报来自管理工具。
### 需要调优的方面
- **规则 3(失败的提权)** — 如果管理员运行批量用户脚本,误报率很高。需要针对每个环境进行基线调优。
- **规则 4(枚举)** — 多种合法工具使用枚举命令。需要调优:按进程签名进行白名单。
### 经验教训
1. **上下文很重要** — 相同的命令(net user)在一种上下文中(攻击者后期利用)是恶意的,但在另一种上下文中(管理员自动化)是合法的。规则需要上下文。
2. **误报会扼杀检测** — 如果规则经常对良性活动触发,分析师会忽略它(告警疲劳)。调优至关重要。
3. **白名单是必不可少的** — 不要阻止工具,将已知的安全项列入白名单。你的检测应该对运行枚举命令的*未知*可执行文件发出告警,而不是所有的枚举。
4. **特定环境** — 在一家公司有效的规则在另一家公司无效。保险公司的基线与技术公司的基线不同。务必进行调优。
## 📁 仓库结构
```
Detection-Engineering-Lab/
├── README.md (this file)
├── sigma_rules/
│ ├── rule_1_suspicious_download_execution.yml
│ ├── rule_2_c2_callback.yml
│ ├── rule_3_failed_privilege_escalation.yml
│ ├── rule_4_user_enumeration.yml
│ └── rule_5_suspicious_process_parent.yml
└── test_results/
├── rule_1_test_results.md
├── rule_2_test_results.md
├── rule_3_test_results.md
├── rule_4_test_results.md
└── rule_5_test_results.md
```
## 🔗 关联到 SOC 调查实验室
该项目建立在我的 SOC 调查实验室中确定的攻击技术基础之上 (https://github.com/JP13007/SOC-Investigation-Lab)。每条规则都针对该事件中的特定技术:
- **规则 1** — 检测 update.exe 恶意软件分发 (T1204)
- **规则 2** — 检测到 Kali 的反弹 shell 回连 (T1071)
- **规则 3** — 检测失败的权限维持尝试 (T1548)
- **规则 4** — 检测被攻陷后的枚举 (T1033)
- **规则 5** — 检测可疑的进程执行 (T1059)
## 📚 参考资料
- [Sigma 文档](https://sigma.readthedocs.io/)
- [Atomic Red Team](https://atomicredteam.io/) — 自动化攻击模拟
- [MITRE ATT&CK 框架](https://attack.mitre.org/)
- [Sigma 规则仓库](https://github.com/SigmaHQ/sigma/tree/master/rules)
## 💡 展示技能
- Sigma 检测规则编写
- 攻击技术理解 (MITRE ATT&CK)
- 误报调优和基线建立
- 日志分析和取证调查
- 安全工具集成 (Splunk, Atomic Red Team)
- 技术文档和沟通
**作者:** JP13007
**状态:** 完成 — 5 条规则已完成编写、测试和调优
**测试环境:** 来自 SOC 调查实验室的 Sysmon 和 Windows 安全日志
标签:CSV导出, IP 地址批量处理, Sigma规则, TGT, 安全运营, 扫描框架, 搜索语句(dork), 攻防演练, 目标导入