srkyn/splunk-detection-content
GitHub: srkyn/splunk-detection-content
一份按 MITRE ATT&CK 战术组织的 Splunk SPL 检测手册,每条规则附带完整的行为分析、数据源假设、误报调优说明和分析师后续调查步骤,适用于蓝队学习和检测工程参考。
Stars: 0 | Forks: 0
# Splunk 检测内容

一个按 [MITRE ATT&CK](https://attack.mitre.org/) 战术组织的 Splunk SPL 搜索检测手册。这些内容是为以 Windows 为中心、包含 Active Directory、Sysmon、PowerShell 日志记录和标准 Windows 安全事件的实验室环境编写的。
这个仓库的目的不是为了堆砌搜索语句,也不是为了声称达到了生产级别的覆盖率。每项检测都被写成了分析师笔记:它寻找什么行为,它假设了什么数据,通常什么情况会产生误报,以及在升级上报之前我会接下来检查什么。
这些搜索语句基于实验室实践、公开的攻击技术研究以及经过脱敏处理的检测编写练习。它们旨在展示安全运营的思维逻辑:行为分析、前提假设、规则调优和分类上下文。
每个查询包含:
- **检测内容** — 正在狩猎的行为或指标
- **ATT&CK 映射** — 战术和技术参考
- **所需数据源** — index/sourcetype 假设
- **SPL** — 可直接复制粘贴,并指明了字段假设条件
- **调优说明** — 已知的 FP 来源以及如何减少噪音
- **分析师后续步骤** — 在确认某事可疑之前我会使用的切入点
## 范围
这是一个作品集检测手册,而不是一个托管的检测产品。
使用它来了解:
- 我如何将攻击者行为转化为 SPL
- 每个搜索语句假设了什么数据源
- 误报可能出现在哪里
- 在升级上报之前我会检查什么
- 实验室和 TryHackMe 风格的练习如何转化为文档化的检测逻辑
不要在部署前不调整 index、sourcetype、字段名、基线和允许列表的情况下,直接在真实的 Splunk 环境中原样使用它们。
## 我如何审查检测
1. 从行为开始,而不是工具名称。
2. 确认数据源确实能够观察到该行为。
3. 编写第一个 SPL 版本作为可见性搜索。
4. 添加分组、阈值和有助于人工判定的字段。
5. 在不隐藏罕见活动的情况下,调优已知的正常管理员活动。
6. 记录下一步要检查什么,这样警报就不会停留在“有趣”这一步。
最后一部分很重要。一个不能告诉下一位分析师去哪里深入调查的检测只完成了一半。
## 数据源假设
| 日志源 | Sourcetype | 备注 |
|---|---|---|
| Windows 安全事件 | `WinEventLog:Security` | 审计策略:登录、账户管理、对象访问 |
| Sysmon | `XmlWinEventLog:Microsoft-Windows-Sysmon/Operational` | 配置:SwiftOnSecurity 或 olafhartong |
| PowerShell | `WinEventLog:Microsoft-Windows-PowerShell/Operational` | 已启用脚本块日志记录 |
| Windows 系统 | `WinEventLog:System` | 服务安装、任务计划程序 |
| DNS | `stream:dns` 或特定供应商 | 正向和反向查找 |
## 查询索引
| 文件 | 战术 | 涵盖的技术 |
|---|---|---|
| [persistence.md](queries/persistence.md) | 持久化 | T1053.005, T1547.001, T1543.003 |
| [credential-access.md](queries/credential-access.md) | 凭证访问 | T1110.001, T1558.003, T1003.001 |
| [lateral-movement.md](queries/lateral-movement.md) | 横向移动 | T1021.002, T1021.006, T1550.002 |
| [defense-evasion.md](queries/defense-evasion.md) | 防御规避 | T1070.001, T1562.001, T1036.005 |
| [discovery.md](queries/discovery.md) | 发现 | T1135, T1087.002, T1046 |
| [execution.md](queries/execution.md) | 执行 | T1059.001, T1204, T1105, T1218 |
| [initial-access.md](queries/initial-access.md) | 初始访问 | T1566.001, T1566.002 |
| [exfiltration.md](queries/exfiltration.md) | 数据窃取 | T1041, T1567.002 |
## 用法
所有查询均以 `index=wineventlog` 或 `index=sysmon` 基线为目标。在部署之前,请调整索引名称和字段映射以匹配您的环境。
查询是为 **Splunk Enterprise** 和 **Splunk Cloud** 编写的,并在可能的情况下使用了标准的 CIM 风格字段命名。
推荐工作流:
```
| stats count dc(host) as host_count values(host) as hosts by user, Image, CommandLine
| sort - count
```
首先使用宽泛版本以了解正常活动,然后再收紧查询条件。在理解误报路径之前,不要将检测转化为警报。
## 作品集说明
这是一个防御性内容仓库。这些搜索语句旨在展示什么信号重要、需要什么上下文,以及在分类期间我接下来会做什么。
我避免使用特定于环境的允许列表、真实的主机名、内部域名、用户名、工单号以及来自私有系统的屏幕截图。
有关实验室出处和持续的实践笔记,请参阅[实践日志](docs/practice-log.md)。
## 验证
该仓库包含一个轻量级验证脚本,用于检查每个查询编写是否包含预期的分析师部分、MITRE ATT&CK 技术 ID 以及封闭的 SPL 代码块:
```
python scripts/validate_queries.py
```
## 作者
David Sarkisyan · 网络安全分析师 · 纽约市
[srkyn.com](https://srkyn.com) · [github.com/srkyn](https://github.com/srkyn) · Splunk Core User
标签:Active Directory, ATT&CK框架, Cloudflare, Conpot, MITRE ATT&CK, OpenCanary, Plaso, PowerShell日志, SPL, Sysmon, TryHackMe, URL发现, Windows安全, 子域名变形, 安全剧本, 安全实验室, 安全检测, 安全研究笔记, 安全运营, 扫描框架, 端口项目, 网络安全, 误报调优, 逆向工具, 隐私保护