在 Microsoft Sentinel 中创建和自定义分析规则
将数据源连接到 Microsoft Sentinel 后,需创建自定义分析规则,帮助发现环境中的威胁和异常行为。
分析规则将在你的整个环境中搜索特定事件或事件集,在达到特定事件阈值或条件时发出警报,生成故障事件以供 SOC 进行会审和调查,并通过自动化跟踪和修正流程来响应威胁。
使用计划查询创建自定义分析规则
从 Microsoft Sentinel 导航菜单中,选择“分析”。
在顶部的操作栏中,选择“+创建”,然后选择“计划查询规则”。 这样会打开“分析规则向导”。
分析规则向导 -“常规”选项卡
- 提供一个唯一的“名称”和“说明”。
- 在“策略和技术”字段中,可以从攻击类别中进行选择,对规则进行分类。 这些类别基于 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 个以上的警报,该规则将使用与初始故障事件详细信息同样的内容生成一个新故障事件,并将超出数目的警报分组到这个新的故障事件。
设置自动响应并创建规则
在“自动化响应”选项卡中,可以使用自动化规则将自动化响应设为在以下三种情形之一出现时触发:
- 当此分析规则生成警报时。
- 当创建了包含由此分析规则生成的警报的事件时。
- 当更新了包含由此分析规则生成的警报的事件时。
“自动化规则”下显示的网格将显示已应用于此分析规则的自动化规则(因为它满足这些规则中定义的条件)。 可以通过选择每行末尾的省略号来编辑其中的任一规则。 或者,可以创建新的自动化规则。
使用自动化规则执行基本会审、分配、工作流和事件关闭。
通过从这些自动化规则调用 playbook 来自动执行更复杂的任务并调用来自远程系统的响应以修正威胁。 可以针对事件和单个警报执行此操作。
- 在屏幕底部的“警报自动化(经典)”下,你将看到已配置为在使用旧方法生成警报时自动运行的任何 playbook。
- 自 2023 年 6 月起,你无法再向此列表添加 playbook。 此处已列出的 playbook 将继续运行,直到此方法在 2026 年 3 月被弃用。
- 如果你仍有此处列出的任何 playbook,则应改为基于“警报创建的触发器”创建自动化规则,并从那里调用 playbook。 完成此操作后,选择此处列出的 playbook 行尾的省略号,然后选择“删除”。
选择“查看和创建”,以查看新分析规则的所有设置。 在出现“已通过验证”消息时,选择“创建”。
查看规则及其输出
- 可以在“分析”主屏幕上“活动规则”选项卡下的表格中找到新创建的自定义规则(类型为“已计划”)。 你可以从此列表启用、禁用或删除每个规则。
- 若要查看创建的分析规则的结果,请转到“事件”页,可以在其中对事件进行会审、调查事件并修复威胁。
- 你可以更新规则查询以排除误报。