SuperAPI AI 工具集

sentinel-detection-engineering

安全与审计

查看项目

更新于 10-16 02:23

技能介绍

用途

Sentinel 检测工程是构建高保真、经过调优、可维护的检测与响应自动化的学科。本技能覆盖检测内容的生命周期——内容来源、编写、验证、自动化与版本管理,而非更广泛的 SIEM 架构。

适用场景:在 Microsoft Sentinel 中编写或成熟化分析规则、狩猎查询、自动化规则和 Playbook;KQL 检测模式、MITRE 对齐、内容中心与自定义选择、检测即代码落地。

不适用场景:Sentinel 入门/架构(sentinel)、Defender XDR 独立自定义检测(defender-xdr)、与检测无关的通用 KQL 学习。

内容来源(按此顺序使用)

  1. 内容中心解决方案——Microsoft 与合作伙伴发布、带版本的捆绑包,包含数据连接器、分析规则、狩猎查询、工作簿、Playbook。始终从这里开始。安装解决方案;在 Active 中启用规则。
  2. Microsoft Sentinel GitHub——尚未进入解决方案的社区贡献查询。审查后提升到自己的仓库。
  3. 自定义检测——针对自有数据源或特定业务逻辑编写的领域特定检测。

经验法则:如果 Microsoft 解决方案覆盖 80% 的用例,安装解决方案并在仓库中覆盖剩余 20%——不要从零开始分叉。

选择分析规则类型

  • 计划(Scheduled):大多数情况;基于 KQL 窗口。延迟 5 分钟 – 24 小时。
  • 近实时(NRT):高优先级、单事件检测(如特权角色分配)。延迟 <1 分钟。
  • Microsoft Security(旧版):将 Defender 警报转发为 Sentinel 事件。即时。
  • Fusion:多阶段攻击关联(内置 ML)。延迟可变。
  • 异常(Anomalies):行为基线(内置 ML)。每小时。
  • 威胁情报(Threat Intelligence):TI 指标 → 日志匹配。按计划。

NRT 有约束(单表、无法连接大多数引用表)——选择前请验证。

方法

  1. 从用例出发,而非查询。将检测表述为:“在 <数据源> 上检测 <行为>,使用 <逻辑>。”在打开 KQL 编辑器前映射到 MITRE ATT&CK 技术 ID。
  2. 确认数据覆盖。连接器是否发出所需字段?先运行 take 100,查看架构,检查该表的摄取延迟。
  3. 使用检测模式编写 KQL:
    • 尽早过滤,延迟投影。
    • 对基于速率的检测使用 summarize + bin(TimeGenerated, 5m)。
    • 对连接中间结果使用一次 materialize()。
    • 对查找密集型规则(允许列表、资产关键性),通过 _GetWatchlist("name") 使用监视列表。
    • 避免在巨大表上使用 * 连接——预先过滤两侧。
  4. 映射实体。在规则 UI 中设置 User、Host、IP、FileHash、Url 实体,使事件图和调查体验可用。没有实体映射,Sentinel 事件就是扁平块。
  5. 审慎设置事件创建。对具有突发行为的高容量规则,使用“将此规则触发的所有警报分组到单个事件”将警报分组为单个事件;或对“每用户一事件”使用按实体分组。
  6. 验证。在 7 天历史窗口上运行规则的 KQL。查看:
    • 平均警报/天 → 必须可分类(高严重性目标 <10)。
    • 误报样本——如果 50% 是 FP,调优;不要发布。
    • 覆盖——它是否真的在已知攻击场景上触发?使用 Attack Simulation Training 日志或重放导出的红队事件。
  7. 接入自动化。
    • 自动化规则(无代码)用于分配、严重性调整、抑制窗口、批量关闭。
    • Playbook(Logic App)用于操作——禁用用户、隔离设备(通过 Defender for Endpoint)、从 MDTI 丰富、发布到 Teams/Slack、打开 ITSM 工单。
    • 对任何具有共享上下文的内容,使用事件触发 Playbook(每个事件运行一次)而非警报触发。
  8. 检测即代码。通过 Repositories 功能将 Sentinel 连接到 GitHub 或 Azure DevOps 仓库。事实来源是仓库;部署是管道。分支保护 + PR 审查 = 不再有“有人在门户中调整了规则”。
  9. 生命周期。
    • 在元数据中用版本和所有者标记规则。
    • 每季度重新验证:数据源架构变化会静默破坏检测。
    • 退役持续零警报且无 FN 覆盖的规则。

护栏

  • 没有 7 天回溯测试就不要发布规则。“在编辑器中看起来正确” → 生产中的噪音风暴。
  • 高容量表(SecurityEvent、Syslog、CommonSecurityLog)——尽早过滤。全表扫描花费 LA 费用且运行缓慢。
  • NRT 有限制。不要试图将 5 表连接的检测硬塞进 NRT;使用计划。
  • 始终映射实体。没有实体 = 没有调查图 = 分析师痛苦。
  • 不要从低置信度规则自动禁用用户。SOAR 力量 × 低保真度 = 中断。仅与高保真规则配对。
  • 监视列表不是仅追加日志。它们有行限制(约 10 MB / 100 万行,视情况而定)。对大型参考数据使用 Log Analytics 表。
  • Microsoft 发布的规则通过解决方案更新。如果通过就地编辑分叉,会失去更新。克隆/重命名或在仓库中覆盖。
  • Defender XDR 自定义检测 vs Sentinel 规则——在数据所在处编写。如果数据仅 XDR 且分类在 XDR 中进行,则在 XDR 中做自定义检测;不要重复。

常见反模式

  • “写了 200 条规则,全部 P2 严重性”——无意义的优先级。严重性反映业务影响 + 保真度,而非数量。
  • “在 5 分钟计划规则中使用 where TimeGenerated > ago(90d)”——破坏成本。将回溯与规则节奏匹配。
  • “仅在门户中编写检测,无源代码控制”——变更历史、回滚和审查都没了。
  • “对嘈杂规则使用全部分组”——单个巨型事件包含数千条警报;无法分类。
  • “第一天检测就自动隔离设备 Playbook”——误报中断。先审计模式 SOAR。
  • “威胁情报匹配规则针对每个 IOC”——TB 级指标 × 数百万日志行。按指标类型/置信度过滤并限定表范围。
  • “跳过 MITRE 映射因为‘我们知道它做什么’”——阻碍覆盖分析和利益相关者报告。

示例提示

  • 使用 SigninLogs 编写一个 Sentinel 计划规则检测不可能旅行,并正确映射实体。
  • 通过调优和分组将嘈杂检测(平均 800 警报/天)转换为可操作形式。
  • 构建 Playbook 在 Sentinel 事件上隔离 Defender for Endpoint 设备,并在 Teams 中设置审批步骤。
  • 设置 Sentinel Repositories 以通过 PR 从 GitHub 部署分析规则。
  • 编写一个 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