关于 sentinel-detection-engineering
用于构建和维护 Microsoft Sentinel 检测、威胁搜寻查询及响应自动化的技能。涵盖 KQL 编写、验证、MITRE 映射和检测即代码实践。
主要功能
- 01KQL 检测编写
- 02分析规则类型选择
- 03回测与调优
- 04MITRE ATT&CK 映射
- 05自动化与 playbook
- 06检测即代码生命周期管理
适用场景
- 01创建带实体映射的 Sentinel 规则
- 02调优嘈杂的分析规则及事件分组
- 03通过 GitHub 仓库部署规则
- 04审查并退役不再触发的检测
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ vinayaklatthe/ microsoft-security-skills --skill sentinel-detection-engineering安装后在 Claude Code 中输入/sentinel-detection-engineering确认已加载。
详细介绍
Sentinel 检测工程
Sentinel 检测工程是一门构建高保真、经过精细调优且易于维护的检测与响应自动化的学科。这项技能涵盖检测的整个生命周期——内容来源、编写、验证、自动化和版本管理——而非更广泛的 SIEM 架构。
适用场景
在 Microsoft Sentinel 中编写或改进分析规则、威胁搜寻查询、自动化规则和 playbook。适用于 KQL 检测模式、MITRE 对齐、Content Hub 与自定义内容的选择,以及检测即代码的部署。
请勿将此技能用于 Sentinel 入门和架构设计(sentinel)、单独的 Defender XDR 自定义检测(defender-xdr),或与检测无关的一般 KQL 学习。
内容来源(按以下顺序使用)
-
Content Hub 解决方案 — 由 Microsoft 和合作伙伴发布的、经过版本管理的内容包,包含数据连接器、分析规则、威胁搜寻查询、工作簿和 playbook。务必从这里开始。安装解决方案;在 Active 中启用规则。
-
Microsoft Sentinel GitHub — 社区贡献的查询,这些查询尚未(或暂未)纳入解决方案。审核后,将其纳入你的代码库。
-
自定义检测 — 基于你自己的数据源或特定业务逻辑编写的领域专属检测。
经验法则: 如果 Microsoft 解决方案覆盖了 80% 的使用场景,就安装该解决方案,并在你的代码库中补充剩余的 20%——不要从头开始分叉。
选择分析规则类型
| 规则类型 | 适用场景 | 延迟 |
|---|---|---|
| Scheduled | 大多数场景;基于时间窗口的 KQL | 5 分钟 – 24 小时 |
| Near-real-time (NRT) | 高优先级的单事件检测(例如,特权角色分配) | <1 分钟 |
| Microsoft Security(旧版) | 将 Defender 警报转发为 Sentinel 事件 | 即时 |
| Fusion | 多阶段攻击关联(内置 ML) | 可变 |
| Anomalies | 行为基线(内置 ML) | 每小时 |
| Threat Intelligence | TI 指标 → 日志匹配 | 按计划运行 |
NRT 存在一些限制(仅支持单个表,且无法与大多数引用表联接)——选择前请先确认。
方法
-
从使用场景出发,而不是从查询出发。 将检测描述为:“使用 <预期保真度> 在 <数据源> 上检测 <攻击者行为>。” 在打开 KQL 编辑器之前,先映射到 MITRE ATT&CK 技术 ID。
-
确认数据覆盖范围。 连接器是否会生成你需要的字段?先运行
take 100,查看架构,并检查该表的数据引入延迟。 -
按照检测模式编写 KQL:
- 尽早筛选,延后投影。
- 对基于速率的检测使用
summarize+bin(TimeGenerated, 5m)。 - 对联接后的中间结果使用一次
materialize()。 - 对富含查找数据的规则(允许列表、资产关键性),通过
_GetWatchlist("name")使用 监视列表。 - 避免在大型表上使用
*联接——先筛选双方数据。
-
映射实体。 在规则 UI 中设置 User、Host、IP、FileHash、Url 实体,以便事件图和调查体验正常运作。没有实体映射,Sentinel 事件就只是一团扁平数据。
-
审慎设置事件创建方式。 对于行为突发的高流量规则,使用
Group all alerts triggered by this rule into a single incident,将警报分组到单个事件中;对于“每位用户一个事件”,则按实体分组。 -
验证。 在过去 7 天的历史时间范围内运行规则的 KQL。查看:
- 每日平均警报数 → 必须可供分诊(高严重性规则的目标为 <10)。
- 误报样本——如果 50% 是 FP,就调整规则;不要直接上线。
- 覆盖范围——它是否真的会在已知攻击场景中触发?使用 攻击模拟训练日志,或重放导出的红队事件。
-
接入自动化。
- 自动化规则(无代码),用于分配、调整严重性、设置抑制时段和批量关闭。
- Playbook(Logic App),用于执行操作——禁用用户、隔离设备(通过 Defender for Endpoint)、从 MDTI 补充信息、发布到 Teams/Slack、创建 ITSM 工单。
- 对任何需要共享上下文的场景,使用 事件触发 Playbook(每个事件运行一次),而不是警报触发 Playbook。
-
将检测作为代码管理。 通过 存储库功能,将 Sentinel 连接到 GitHub 或 Azure DevOps 存储库。存储库是事实来源;部署通过管道进行。分支保护 + PR 审查 = 不再出现“有人在门户中调整了规则”的情况。
-
生命周期。
- 在规则中标记版本(在元数据中)和负责人。
- 每季度重新验证:数据源架构变更可能会导致检测无声失效。
- 对持续没有警报且没有 FN 覆盖的规则予以退役。
防护措施
- 未经 7 天回测,不要发布规则。 “在编辑器里看起来没问题” → 可能在生产环境中引发噪声风暴。
- 高流量表(
SecurityEvent、Syslog、CommonSecurityLog)——尽早筛选。 扫描整个表会耗费 LA 资源,且运行缓慢。 - NRT 有限制。 不要试图将涉及 5 个表联接的检测硬塞进 NRT;应使用计划任务。
- 始终映射实体。 没有实体 = 没有调查图 = 分析师的痛苦。
- 不要根据低置信度规则自动禁用用户。 SOAR 能力 × 低保真度 = 服务中断。只将其与高保真度规则搭配使用。
- 监视列表不是只追加的日志。 它们有行数限制(视情况约为 10 MB / 100 万行)。对于大型参考数据,请使用 Log Analytics 表。
- Microsoft 发布的规则通过解决方案更新。 如果通过原地编辑分叉规则,就会失去更新。请克隆并重命名,或在存储库中覆盖。
- Defender XDR 自定义检测与 Sentinel 规则——在哪里有数据,就在哪里编写。如果数据仅存在于 XDR 中,且分诊在 XDR 中进行,就在 XDR 中创建自定义检测;不要重复创建。
常见反模式
- “编写了 200 条规则,严重性全是 P2” — 这种优先级划分毫无意义。严重性反映的是 业务影响和保真度,而不是数量。
- “在 5 分钟定时规则中使用了
where TimeGenerated > ago(90d)” — 会导致 成本失控。回溯时间应与规则频率相匹配。 - “只在门户中编写检测规则,没有源代码管理” — 变更历史、 回滚和审查都无从谈起。
- “对嘈杂的规则使用 Group-all-alerts” — 会产生包含数千条警报的超大型事件; 无法进行分类处理。
- “在检测上线第一天就使用 Auto-isolate-device playbook” — 误报会导致服务中断。 应先以 SOAR 审计模式运行。
- “针对每个 IOC 都运行威胁情报匹配规则” — 数 TB 的指标 × 数百万行 日志。应按指标类型/置信度进行筛选,并限定表的范围。
- “因为‘我们知道它的作用’,所以跳过了 MITRE 映射” — 这会妨碍覆盖率分析 和利益相关者报告。
示例提示词
使用 SigninLogs 编写一条 Sentinel 定时规则来检测不可能的旅行,并正确映射实体。通过调优和分组,将一条嘈杂的检测规则(日均 800 条警报)改造成可执行的规则。构建一个 playbook,在 Sentinel 事件中隔离 Defender for Endpoint 设备, 并在 Teams 中加入审批步骤。设置 Sentinel Repositories,通过 PR 从 GitHub 部署分析规则。为新添加的 Global Administrator 编写一条 NRT 规则,并在 1 分钟内触发。将自定义检测映射到 MITRE ATT&CK 技术,并验证覆盖缺口。构建一个狩猎工作簿,用于跨终结点调查就地取材二进制文件的使用情况。季度内容审查:找出零警报规则,验证它们并非悄然失效,并将其退役或重构。
Microsoft Learn
- 检测生命周期:https://learn.microsoft.com/azure/sentinel/threat-detection
- 分析规则类型:https://learn.microsoft.com/azure/sentinel/detect-threats-built-in
- 自定义分析规则:https://learn.microsoft.com/azure/sentinel/detect-threats-custom
- NRT 规则:https://learn.microsoft.com/azure/sentinel/near-real-time-rules
- 实体映射:https://learn.microsoft.com/azure/sentinel/map-data-fields-to-entities
- 自动化规则:https://learn.microsoft.com/azure/sentinel/automate-incident-handling-with-automation-rules
- Playbook(Logic Apps):https://learn.microsoft.com/azure/sentinel/automate-responses-with-playbooks
- 监视列表:https://learn.microsoft.com/azure/sentinel/watchlists
- Repositories(CI/CD):https://learn.microsoft.com/azure/sentinel/ci-cd
- 内容中心:https://learn.microsoft.com/azure/sentinel/sentinel-solutions
- KQL 参考:https://learn.microsoft.com/kusto/query/
- Sentinel 中的 MITRE ATT&CK:https://learn.microsoft.com/azure/sentinel/mitre-coverage