1. SIEM检测规则开发工程导论
在安全运营中心(SOC)的日常工作中,SIEM(安全信息与事件管理系统)承担着日志汇聚、关联分析与告警生成的核心职责。然而,SIEM 本身只是一个平台,它不会自动识别攻击。真正让 SIEM 产生价值的,是运行在其上的检测规则。本课程的目标,是帮助学员建立一套可复用的工程化方法,把"写规则"从依赖个人经验的零散行为,转变为可设计、可测试、可维护、可度量的工程实践。
课程目标
完成本课程后,学员应能够独立完成一条检测规则从需求到上线的完整过程,具体包括:
- 理解检测工程的定义与边界,区分"检测"与"告警""监控""日志采集"等相邻概念;
- 掌握规则开发生命周期的各个阶段及其交付物;
- 能够根据攻击技术(如 MITRE ATT&CK 中的 T1059 命令执行、T1110 暴力破解)拆解出可观测的日志字段与检测逻辑;
- 能够编写、测试、调优规则,并对其误报率、覆盖率进行量化评估;
- 理解规则与 SOC 流程(分级、响应、复盘)之间的衔接关系。
什么是检测工程
检测工程(Detection Engineering)是一门把"我们希望发现什么威胁"转化为"系统能够稳定、准确识别该威胁的规则与逻辑"的学科。它介于威胁情报、日志工程与安全运营之间,核心关注三个问题:检测什么(威胁假设)、用什么数据检测(日志与字段)、如何判断(逻辑与阈值)。
检测工程与几个相邻概念容易混淆,需要明确区分:
| 概念 | 关注点 | 典型产出 |
|---|---|---|
| 日志采集 | 数据是否完整、及时到达 | 采集器配置、解析规则 |
| 检测工程 | 能否从数据中识别威胁行为 | 检测规则、测试用例、评估指标 |
| 告警运营 | 告警是否被正确处理 | 分级结论、处置记录 |
| 威胁狩猎 | 主动寻找未被规则覆盖的行为 | 狩猎假设、新检测需求 |
可以看到,检测工程是连接"数据"与"运营"的中间环节。没有检测工程,日志只是堆积的数据,告警运营也无从下手。
规则开发生命周期
一条规则的生命不是"写完即结束",而是持续迭代的闭环。一个完整的规则开发生命周期通常包含以下阶段:
- 需求来源:来自威胁情报、ATT&CK 覆盖缺口、狩猎发现、事件复盘或合规要求。例如情报显示某组织近期使用
certutil -urlcache下载载荷,这就是一个明确的检测需求。 - 威胁建模与数据可行性分析:确认该行为会在哪些日志中留下痕迹。以
certutil下载为例,进程创建日志(如 Sysmon Event ID 1 或 Windows 4688)会记录命令行,这是可用的数据源。若日志未采集,则需先补采集。 - 检测逻辑设计:把行为翻译成字段条件。示例逻辑:进程名为
certutil.exe,命令行包含-urlcache或-verifyctl,且包含http前缀。这里要明确字段名、匹配方式(精确/包含/正则)与大小写处理。 - 规则实现:在 SIEM 中落地为具体规则。以类 Splunk 语法为例:
index=win EventCode=1 Image="*\\certutil.exe"
| where match(CommandLine, "(?i)-urlcache|-verifyctl")
| where match(CommandLine, "(?i)https?://")
| table _time, ComputerName, User, CommandLine
- 测试与验证:用真实或构造的样本验证规则能否命中。测试用例应包含正样本(应告警)与负样本(不应告警),例如正常的
certutil -hashfile不应触发。 - 调优与降噪:上线后观察误报。若某运维脚本频繁使用
certutil -urlcache更新内部证书,可加入白名单或排除特定父进程。 - 上线与监控:规则进入生产,同时监控其触发频率、命中率与告警质量。
- 复盘与迭代:定期评估规则是否仍有效,攻击者是否已改变手法,是否需要调整阈值或字段。
这个生命周期不是线性的,而是循环的。每一次事件复盘都可能产生新的检测需求,回到第 1 步。
与安全运营中心的关系
SOC 的运转依赖"检测—分级—响应—复盘"的闭环,而检测工程正是这个闭环的起点和持续输入源。规则质量直接决定 SOC 的效率:规则过松,告警泛滥,分析师被淹没;规则过严,攻击被漏过,风险敞口扩大。因此,检测工程师需要与 SOC 分析师保持紧密反馈:分析师在处置中发现的误报、漏报、上下文缺失,都应回流为规则的调优依据。
下面这张图概括了本节的核心关系:检测需求如何经过工程化处理,最终进入 SOC 运营闭环,并形成反馈回路。
从图中可以看到,检测工程并非孤立环节:它从需求出发,经过数据、逻辑、实现、测试、调优、上线,最终服务于 SOC 的告警与响应;而 SOC 在运营中产生的误报、漏报与新发现,又通过反馈回路回到需求端,驱动规则持续迭代。理解这一闭环,是后续学习规则编写、测试与调优的基础。