你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将 QRadar 检测规则迁移到 Microsoft Sentinel

本文介绍如何识别、比较 QRadar 检测规则并将其迁移到 Microsoft Sentinel 内置规则。

识别和迁移规则

Microsoft Sentinel 使用机器学习分析来创建高保真的且可处理的事件,某些现有检测在 Microsoft Sentinel 中可能是多余的。 因此,请不要盲目地迁移所有检测和分析规则。 在识别现有检测规则时请查看这些注意事项。

  • 确保选择能够证明规则迁移合理的用例,同时考虑业务优先级和效率。
  • 确认你是否了解 Microsoft Sentinel 规则类型
  • 确认你是否理解规则术语
  • 查看过去 6-12 个月未触发任何警报的任何规则,并确定这些规则是否仍然相关。
  • 消除你在日常中会忽略的低级别威胁或警报。
  • 使用现有功能,并检查 Microsoft Sentinel 的内置分析规则是否可以解决你当前用例的需求。 由于 Microsoft Sentinel 使用机器学习分析来生成高保真且可操作的事件,因此可能不再需要某些现有检测。
  • 确认连接的数据源并查看数据连接方法。 重新访问数据收集对话,确保打算检测的用例的数据深度和广度足够。
  • 浏览社区资源(例如 SOC Prime Threat Detection Marketplace),以检查你的规则是否可用。
  • 考虑 Uncoder.io 等联机查询转换器是否适用于你的规则。
  • 如果规则不可用或无法转换,则需要使用 KQL 查询手动创建规则。 查看规则映射以创建新查询。

详细了解迁移检测规则的最佳做法

若要将分析规则迁移到 Microsoft Sentinel,请执行以下操作:

  1. 验证是否为要迁移的每个规则准备好了一个测试系统。

    1. 为迁移的规则准备验证过程,包括完整测试方案和脚本。

    2. 确保团队具有有用的资源可用于测试迁移的规则。

    3. 确认已连接全部所需的数据源,并检查数据连接方法。

  2. 验证你的检测是否是作为 Microsoft Sentinel 中的内置模板提供的:

    • 如果内置规则足以满足需求,请使用内置规则模板为你自己的工作区创建规则。

      在 Microsoft Sentinel 中,转到“配置”>“分析”>“规则模板”选项卡,然后创建并更新每个相关的分析规则。

      有关详细信息,请参阅直接检测威胁

    • 如果 Microsoft Sentinel 内置规则未涵盖你的检测,请尝试使用联机查询转换器(例如 Uncoder.io)将查询转换为 KQL。

      确定触发条件和规则操作,然后构建并检查 KQL 查询。

    • 如果内置规则和联机规则转换器都不足以满足需求,则需要手动创建规则。 在这种情况下,请使用以下步骤开始创建规则:

      1. 确定要在规则中使用的数据源。 需要在 Microsoft Sentinel 中的数据源与数据表之间创建一个映射表,以标识要查询的表。

      2. 确定数据中的要在规则中使用的任何属性、字段或实体。

      3. 确定规则条件和逻辑。 在此阶段,可以使用规则模板作为示例来了解如何构造 KQL 查询。

        考虑筛选器、关联规则、活动列表、参考集、监视列表、检测异常情况、聚合等。 可以使用旧式 SIEM 提供的参考来了解如何以最佳方式映射查询语法

      4. 确定触发条件和规则操作,然后构建并检查 KQL 查询。 检查查询时,请考虑 KQL 优化指导资源。

  3. 使用每个相关用例来测试规则。 如果该规则未提供预期的结果,可以检查 KQL 并再次测试。

  4. 如果对结果满意时,可以考虑迁移该规则。 根据需要为规则操作创建一个 playbook。 有关详细信息,请参阅使用 Microsoft Sentinel 中的 playbook 自动响应威胁

详细了解分析规则:

比较规则术语

下表澄清了 Microsoft Sentinel 与 QRadar 中的规则概念的差别。

QRadar Microsoft Sentinel
规则类型 • 事件
• 流
• 通用
• 进攻
• 异常情况检测规则
• 计划的查询
• 融合
• Microsoft 安全
• 机器学习 (ML) 行为分析
条件 在测试条件中定义 在 KQL 中定义
触发器条件 在规则中定义 阈值:查询结果数
操作 • 创建进攻
• 调度新事件
• 添加到引用集或数据
• 等等
• 创建警报或事件
• 与逻辑应用集成

映射和比较规则示例

在各种方案中使用这些示例来比较 QRadar 和 Microsoft Sentinel 中的规则并相互映射这些规则。

规则 语法 示例检测规则 (ArcSight) 示例 KQL 查询 资源
常见属性测试 QRadar 语法 正则表达式示例
AQL 筛选器查询示例
等于/不等于示例
正则表达式示例
AQL 筛选器查询示例
等于/不等于示例
• 正则表达式:匹配 regex
• AQL 筛选器查询:字符串运算符
• 等于/不等于:字符串运算符
日期/时间测试 QRadar 语法 所选月份日期示例
所选星期几示例
之后之前/在示例
所选月份日期示例
所选星期几示例
之后之前/在示例
日期和时间运算符
• 所选月份日期: dayofmonth ()
• 所选星期几:dayofweek()
• 之后之前/在:format_datetime()
事件属性测试 QRadar 语法 IP 协议示例
事件有效负载字符串示例
IP 协议示例
事件有效负载字符串示例
• IP 协议:字符串运算符
事件有效负载字符串示例
函数:计数器 QRadar 语法 事件属性和时间示例 事件属性和时间示例 summarize
函数:负条件 QRadar 语法 负条件示例 负条件示例 join()
字符串运算符
数值运算符
函数:简单 QRadar 语法 简单条件示例 简单条件示例 or
IP/端口测试 QRadar 语法 源端口示例
源 IP 示例
源端口示例
源 IP 示例
日志源测试 QRadar 语法 日志源示例 日志源示例

常见属性测试语法

下面是常见属性测试规则的 QRadar 语法。

说明常见属性测试规则语法的示意图。

常见属性测试:正则表达式示例 (QRadar)

下面是使用正则表达式的示例 QRadar 常见属性测试规则的语法:

when any of <these properties> match <this regular expression>

下面是 QRadar 中的示例规则。

说明使用正则表达式的常见属性测试规则的示意图。

常见属性测试:正则表达式示例 (KQL)

下面是具有 KQL 中的正则表达式的常见属性测试规则。

CommonSecurityLog
| where tostring(SourcePort) matches regex @"\d{1,5}" or tostring(DestinationPort) matches regex @"\d{1,5}"

常见属性测试:AQL 筛选器查询示例 (QRadar)

下面是使用 AQL 筛选器查询的示例 QRadar 常见属性测试规则的语法。

when the event matches <this> AQL filter query

下面是 QRadar 中的示例规则。

说明使用 A Q L 筛选器查询的常见属性测试规则的示意图。

常见属性测试:AQL 筛选器查询示例 (KQL)

下面是具有 KQL 中的 AQL 筛选器查询的常见属性测试规则。

CommonSecurityLog
| where SourceIP == '10.1.1.10'

常见属性测试:等于/不等于示例 (QRadar)

下面是使用 equalsnot equals 运算符的示例 QRadar 常见属性测试规则的语法。

and when <this property> <equals/not equals> <this property>

下面是 QRadar 中的示例规则。

说明使用 equals/not equals 的常见属性测试规则的示意图。

常见属性测试:等于/不等于示例 (KQL)

下面是具有 KQL 中的 equalsnot equals 运算符的常见属性测试规则。

CommonSecurityLog
| where SourceIP == DestinationIP

日期/时间测试语法

下面是日期/时间测试规则的 QRadar 语法。

说明日期/时间测试规则语法的示意图。

日期/时间测试:所选月份日期示例 (QRadar)

下面是使用所选月份的示例 QRadar 日期/时间测试规则的语法。

and when the event(s) occur <on/after/before> the <selected> day of the month

下面是 QRadar 中的示例规则。

说明使用所选日期的日期/时间测试规则的示意图。

日期/时间测试:所选月份日期示例 (KQL)

下面是日期/时间测试规则,其中包含 KQL 中所选月份的日期/时间。

SecurityEvent
 | where dayofmonth(TimeGenerated) < 4

日期/时间测试:所选星期几示例 (QRadar)

下面是使用所选星期几的示例 QRadar 日期/时间测试规则的语法。

and when the event(s) occur on any of <these days of the week{Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}>

下面是 QRadar 中的示例规则。

说明使用所选星期的日期/时间测试规则的示意图。

日期/时间测试:所选星期几示例 (KQL)

下面是日期/时间测试规则,其中包含 KQL 中所选星期几的日期/时间。

SecurityEvent
 | where dayofweek(TimeGenerated) between (3d .. 5d)

日期/时间测试:之后之前/在示例 (QRadar)

下面是使用 afterbeforeat 运算符的示例 QRadar 日期/属性测试规则的语法。

and when the event(s) occur <after/before/at> <this time{12.00AM, 12.05AM, ...11.50PM, 11.55PM}>

下面是 QRadar 中的示例规则。

说明使用 after/before/at 运算符的日期/时间测试规则的示意图。

日期/时间测试:之后之前/在示例 (KQL)

下面是使用 KQL 中的 afterbeforeat 的日期/时间测试规则。

SecurityEvent
| where format_datetime(TimeGenerated,'HH:mm')=="23:55"

TimeGenerated以 UTC/GMT 为单位。

事件属性测试语法

下面是事件属性测试规则的 QRadar 语法。

说明事件属性测试规则语法的示意图。

事件属性测试:IP 协议示例 (QRadar)

下面是使用 IP 协议的示例 QRadar 事件属性测试规则的语法。

and when the IP protocol is one of the following <protocols>

下面是 QRadar 中的示例规则。

说明使用 IP 协议的事件属性测试规则的示意图。

事件属性测试:IP 协议示例 (KQL)

CommonSecurityLog
| where Protocol in ("UDP","ICMP")

事件属性测试:事件有效负载字符串示例 (QRadar)

下面是使用 Event Payload 字符串值的示例 QRadar 事件属性测试规则的语法。

and when the Event Payload contains <this string>

下面是 QRadar 中的示例规则。

说明使用事件负载字符串的事件属性测试规则的示意图。

事件属性测试:事件有效负载字符串示例 (KQL)

CommonSecurityLog
| where DeviceVendor has "Palo Alto"

search "Palo Alto"

若要优化性能,请避免使用 search 命令(如果已知道表名称)。

函数:计数器语法

下面是使用计数器的函数规则的 QRadar 语法。

说明使用计数器的函数规则的语法的示意图。

计数器:事件属性和时间示例 (QRadar)

下面是示例 QRadar 函数规则的语法,该规则在定义的分钟数中使用定义的事件属性数。

and when at least <this many> events are seen with the same <event properties> in <this many> <minutes>

下面是 QRadar 中的示例规则。

说明使用事件属性的函数规则的示意图。

计数器:事件属性和时间示例 (KQL)

CommonSecurityLog
| summarize Count = count() by SourceIP, DestinationIP
| where Count >= 5

函数:负条件语法

下面是使用负条件的函数规则的 QRadar 语法。

说明使用否定条件的函数规则的语法的示意图。

负条件示例 (QRadar)

下面是使用负条件的示例 QRadar 函数的语法。

and when none of <these rules> match in <this many> <minutes> after <these rules> match with the same <event properties>

下面是 QRadar 中的两个定义规则。 负条件将基于这些规则。

说明要用于否定条件规则的事件属性测试规则的示意图。

说明要用于否定条件规则的常见属性测试规则的示意图。

下面是基于上述规则的负面条件规则的示例。

说明具有否定条件的函数规则的示意图。

负条件示例 (KQL)

let spanoftime = 10m;
let Test2 = (
CommonSecurityLog
| where Protocol !in ("UDP","ICMP")
| where TimeGenerated > ago(spanoftime)
);
let Test6 = (
CommonSecurityLog
| where SourceIP == DestinationIP
);
Test2
| join kind=rightanti Test6 on $left. SourceIP == $right. SourceIP and $left. Protocol ==$right. Protocol

函数:简单条件语法

下面是使用简单条件的函数规则的 QRadar 语法。

说明使用简单条件的函数规则的语法的示意图。

简单条件示例 (QRadar)

下面是使用简单条件的示例 QRadar 函数的语法。

and when an event matches <any|all> of the following <rules>

下面是 QRadar 中的示例规则。

说明具有简单条件的函数规则的示意图。

简单条件示例 (KQL)

CommonSecurityLog
| where Protocol !in ("UDP","ICMP") or SourceIP == DestinationIP

IP/端口测试语法

下面是 IP/端口测试规则的 QRadar 语法。

说明 IP/端口测试规则的语法的示意图。

IP/端口测试:源端口示例 (QRadar)

下面是指定源端口的示例 QRadar 规则的语法。

and when the source port is one of the following <ports>

下面是 QRadar 中的示例规则。

说明指定源端口的规则的示意图。

IP/端口测试:源端口示例 (KQL)

CommonSecurityLog
| where SourcePort == 20

IP/端口测试:源 IP 示例 (QRadar)

下面是指定源 IP 的示例 QRadar 规则的语法。

and when the source IP is one of the following <IP addresses>

下面是 QRadar 中的示例规则。

说明指定源 IP 地址的规则的示意图。

IP/端口测试:源 IP 示例 (KQL)

CommonSecurityLog
| where SourceIP in (“10.1.1.1”,”10.2.2.2”)

日志源测试语法

下面是日志源测试规则的 QRadar 语法。

说明日志源测试规则的语法的示意图。

日志源示例 (QRadar)

下面是指定日志源的示例 QRadar 规则的语法。

and when the event(s) were detected by one or more of these <log source types>

下面是 QRadar 中的示例规则。

说明指定日志源的规则的示意图。

日志源示例 (KQL)

OfficeActivity
| where OfficeWorkload == "Exchange"

后续步骤

在本文中,你已了解如何将迁移规则从 QRadar 映射到 Microsoft Sentinel。