在 Microsoft Sentinel 中启用分析规则

已完成

将数据源连接到 Microsoft Sentinel 后,需创建自定义分析规则,帮助发现环境中的威胁和异常行为。

分析规则将在你的整个环境中搜索特定事件或事件集,在达到特定事件阈值或条件时发出警报,生成故障事件以供 SOC 进行会审和调查,并通过自动化跟踪和修正流程来应对威胁。

使用计划查询创建自定义分析规则

  1. 从 Microsoft Sentinel 导航菜单中,选择“分析”
  2. 在顶部的操作栏中,选择“+创建”,然后选择“计划内查询规则”。 此时会打开“分析规则向导”。

该屏幕截图显示了有关如何运行计划的查询的示例。

分析规则向导 -“常规”选项卡

  • 提供一个唯一的“名称”和“说明”。

  • 在“策略和技术”字段中,可以从攻击类别中进行选择,以对规则进行分类。 这些类别基于 MITRE ATT&CK 框架的策略和技术生成。

  • 如果故障事件是根据映射到 MITRE ATT&CK 策略和技术的规则所检测到的警报创建的,则会自动继承该规则的映射。

  • 根据需要设置警报“严重性”。

    • 信息性。 对系统没有影响,但信息可能表明威胁行动者打算执行的未来步骤。
    • 低。 直接影响将是微乎其微的。 威胁行动者可能需要执行多个步骤,才能对环境产生影响。
    • 中。 威胁行动者可能通过此活动对环境产生一些影响,但影响范围有限或需要其他活动。
    • 高。 确定的活动将由对环境的影响触发,或者为威胁行动者提供广泛的访问权限以便其对环境执行操作。
  • 严重性级别默认值不能保证当前或环境影响级别。 请自定义警报详细信息,从而使用查询输出中任何相关字段的值自定义给定警报实例的严重性、策略和其他属性。

  • Microsoft Sentinel 分析规则模板的严重性定义仅与分析规则所创建的警报相关。 对于从其他服务引入的警报,严重性由源安全服务定义。

  • 在你创建规则时,默认情况下规则的“状态”为“已启用”,这意味着它将在你完成创建后立即运行。 如果你不需要让此规则立即运行,请选择“已禁用”,这样就会将它添加到“活动规则”选项卡中,你可以在需要运行此规则时从该选项卡中启用它。

该屏幕截图显示了有关如何创建新规则的示例。

定义规则查询逻辑并配置设置

在“设置规则逻辑”选项卡中,你可以直接在“规则查询”字段中编写查询,也可以在 Log Analytics 中创建查询,然后将创建的查询复制并粘贴到此处。

  • 采用 Kusto 查询语言 (KQL) 编写查询。
  • 此屏幕截图中展示的示例将查询 SecurityEvent 表,以显示一种失败的 Windows 登录事件。

该屏幕截图显示了有关如何设置规则逻辑的示例。

下面提供了另一个示例查询,此查询将在 Azure 活动中创建的资源数异常时发出警报。

Kusto

AzureActivity

| 其中 OperationNameValue == "MICROSOFT.COMPUTE/VIRTUALMACHINES/WRITE" 或 OperationNameValue == "MICROSOFT.RESOURCES/DEPLOYMENTS/WRITE"

| 其中 ActivityStatusValue == "Succeeded"

| make-series dcount(ResourceId) default=0 on EventSubmissionTimestamp in range(ago(7d), now(), 1d) by Caller

重要说明

建议查询使用高级安全信息模型 (ASIM) 分析程序,而不是本机表。 这将确保查询支持任何当前或未来的相关数据源,而不是单个数据源。

规则查询最佳做法:

  • 查询长度应介于 1 到 10,000 个字符之间,不能包含 search *union *。 你可以使用用户定义的函数来克服查询长度限制。

  • 不支持在 Log Analytics 查询窗口内部使用 ADX 函数创建 Azure 数据资源管理器查询。

  • 在查询中使用 bag_unpack 函数时,如果使用 project field1 将列投影为字段,并且该列不存在,则查询将失败。 为了防止发生这种情况,必须按以下方式对列进行投影:

    • project field1 = column_ifexists("field1","")

警报扩充

  • 使用“实体映射配置”部分将查询结果中的参数映射到 Microsoft Sentinel 识别的实体。 实体将扩充规则的输出(警报和故障事件),在其中添加后续调查过程和补救操作所需的基本信息。 它们也是可以用于在“故障事件设置”选项卡中将警报组合到故障事件中的标准。
  • 使用“自定义详细信息”配置部分,从查询中提取事件数据项,并将其显示在此规则所生成的警报中,这样你就可以从警报和故障事件中迅速了解事件内容。
  • 在“警报详细信息”配置部分中,使用基础查询结果中的详细信息替代警报中属性的默认值。 通过警报详细信息,你可以在警报的标题中显示攻击者的 IP 地址或帐户名称等信息,使其显示在你的故障事件队列中,以便更详细、更清晰地了解威胁状况。

注意

整个警报的大小限制为 64 KB

  • 增长超过 64 KB 的警报将被截断。 标识实体时,它们会逐个添加到警报,直到警报大小达到 64 KB,并从警报中删除所有剩余实体。
  • 其他警报扩充也会影响警报的大小。
  • 要减小警报的大小,请在查询中使用 project-away 运算符移除任何不需要的字段。 (如果只需要保留几个字段,还可以考虑使用 project 运算符。)

查询计划和警报阈值

  • 在“查询计划”部分中,设置以下参数:

该屏幕截图显示了创建新的计划规则的示例。

  • 设置“运行查询的间隔”,以控制运行查询的频率。它可以很频繁(比如每 5 分钟一次),也可以间隔很长时间(比如每 14 天一次)。

  • 设置“查找数据的过去时段”,以确定查询所覆盖数据的时段 - 例如,可以查询过去 10 分钟的数据,也可以查询过去 6 小时的数据。 最大值为 14 天。

  • 对于新的“开始运行”设置(处于预览状态):

    • 将其设置为“自动”可继续原始行为:规则将在创建后立即首次运行,然后按照“运行查询的间隔”设置中设置的时间间隔运行。
    • 如果想要确定规则首次运行的时间,请将开关切换到“在特定时间”,
    • 而不是让它立即运行。 然后使用日历选取器选择日期,并按所示的示例格式输入时间。

该屏幕截图显示了有关如何配置查询计划参数的示例。

规则在首次运行后,未来将按指定的间隔运行。

“开始运行”设置下的文本行(其左侧带有信息图标)汇总了当前查询计划和回溯设置。

查询间隔和回溯时段

这两个设置在某种程度上相互独立。 可以按较短的间隔运行长于该间隔的查询(实际上具有重叠查询),但不能按超出覆盖期的间隔运行查询,否则整个查询覆盖范围会出现间隙。

引入延迟

为了应对在源中生成事件与将事件引入 Microsoft Sentinel 之间可能出现的延迟,并确保实现完全覆盖而又不出现数据重复,Microsoft Sentinel 从计划的时间起延迟五分钟运行计划的分析规则。

使用“警报阈值”部分定义规则的敏感度级别。 例如,如果希望规则每次运行时只在查询返回超过 1000 个结果时生成警报,则将“在以下情况下生成警报: 查询结果数”设置为“大于”,并输入数字 1000。 这是一个必填字段,因此如果你不需要设置阈值(也就是说,你希望警报注册每一个事件),请在数字字段中输入 0。

配置事件创建设置

在“故障事件设置”选项卡中,你可以选择 Microsoft Sentinel 是否以及如何将警报转化为可操作的故障事件。 如果保留此选项卡不变,Microsoft Sentinel 将基于每个警报创建一个单独的故障事件。 你可以选择更改此选项卡中的设置,不创建任何故障事件,或者将几个警报分组到一个故障事件中。

事件设置

在“故障事件设置”部分中,“根据此分析规则触发的警报创建故障事件”将默认设置为“已启用”,这意味着 Microsoft Sentinel 将基于该规则触发的每一个警报单独创建一个故障事件。

  • 如果你不需要让此规则生成任何故障事件(例如,在此规则只用于收集信息以供以后进行分析的情况下),请将此设为“已禁用”。
  • 如果想要基于一组警报创建单个故障事件,而不是针对每一个警报生成一个故障事件,请参阅下一部分。

警报分组

在“警报分组”部分中,如果需要基于一组相似警报或重复警报(最多 150 个)生成一个故障事件(请参阅注释),请将“将此分析规则触发的相关警报分组到故障事件中”设置为“已启用”,并设置以下参数。

  • 将组限制为在选定时间范围内创建的警报:确定将哪个时段内的相似警报或重复警报组合在一起。 此时间范围内的所有相应警报将共同生成一个或一组故障事件(具体取决于下面的分组设置)。 此时间范围之外的警报将单独生成一个或一组故障事件。
  • 将此分析规则触发的警报分组到单个故障事件的依据:选择用于将警报组合在一起的依据:
选项 描述
如果所有实体都匹配,则将警报分组为单个故障事件 如果警报中每个映射实体(在上面的“设置规则逻辑”选项卡中定义)的值都相同,则将警报组合在一起。 建议使用此设置。
将此规则触发的所有警报分组到单个故障事件中 将此规则生成的所有警报都组合在一起,即使这些警报的相关值并不相同也是如此。
如果所选实体和详细信息匹配,则将警报分组到单个故障事件中 对于从相应下拉列表中选择的所有映射实体、警报详细信息和自定义详细信息,如果警报的值都相同,则将警报组合在一起。

例如,如果你想要基于源或目标 IP 地址创建单独的故障事件,或者想要将匹配特定实体和严重性的警报分为一组,则可能需要使用此设置。

注意:如果选择此选项,则必须至少为该规则选择一个实体类型或字段。 否则,规则验证将失败,系统不会创建规则。
  • 重新打开已关闭的匹配故障事件:当某个故障事件已解决并已关闭,而稍后系统又生成了应属于该故障事件的另一个警报时,如果要重新打开这个已关闭的故障事件,请将此设置设为“已启用”,如果希望该警报创建一个新的故障事件,请将此设置保留为“已禁用”。

注意

最多可将 150 个警报分组到一个故障事件。

  • 只有在生成所有警报后才会创建故障事件。 所有警报都将在故障事件创建后立即添加到故障事件中。
  • 如果将警报分组到一个故障事件的规则生成了 150 个以上的警报,系统将使用与初始故障事件相同的详细信息生成一个新故障事件,并将超出数目的警报分组到这个新的故障事件。

设置自动响应并创建规则

在“自动化响应”选项卡中,可以使用自动化规则将自动化响应设为在以下三种情形之一出现时触发:

  1. 当此分析规则生成警报时。
  2. 当基于此分析规则生成的警报创建故障事件时。
  3. 当基于此分析规则生成的警报更新故障事件时。

“自动化规则”下显示的网格将显示已应用于此分析规则的自动化规则(由于它满足这些规则中定义的条件)。 你可以通过选择每行末尾的省略号来编辑其中的任一规则。 或者,可以创建新的自动化规则。

使用自动化规则执行对故障事件的基本会审、分配、工作流和关闭。

通过调用这些自动化规则中的 playbook,自动执行更复杂的任务并调用来自远程系统的响应以修复威胁。 你可以针对故障事件和各个警报执行此操作。

该屏幕截图显示了有关如何配置自动化响应的示例。

  • 在屏幕底部的“警报自动化(经典)”下,你将看到已配置为在使用旧方法生成警报时自动运行的任何 playbook。

    • 自 2023 年 6 月起,你无法再向此列表添加 playbook。 此处已列出的 playbook 将继续运行,直到此方法在 2026 年 3 月被弃用。
    • 如果你仍有此处列出的任何 playbook,则应改为基于警报创建的触发器创建一个自动化规则,并从那里调用 playbook。 完成此操作后,选择此处列出的 playbook 行尾的省略号,然后选择“移除”。

选择“查看和创建”,以查看新分析规则的所有设置。 在出现“已通过验证”消息时,选择“创建”。

查看规则及其输出

  • 你可以在“分析”主屏幕的“活动规则”选项卡下的表格中找到新创建的自定义规则(类型为“已计划”)。 你可以从此列表启用、禁用或删除各个规则。
  • 若要查看创建的分析规则的结果,请转到“故障事件”页面,你可以在其中对故障事件进行会审和调查并修复相应威胁。
  • 你可以更新规则查询以排除误报。