匹配部分语法
在 YARA-L 2.0 中,match 部分提供了多事件关联机制。它定义了将事件分组到单个检测中的逻辑,方法是在特定时间边界内关联常见属性(例如用户、IP 地址或文件哈希)。
您可以在以下使用场景中使用 match 部分:
- 在规则中关联两个或多个不同的事件。
- 搜索和信息中心内的汇总数据,例如在特定时间范围内统计的登录失败尝试次数。
定义关联条件
您可以使用它来指定以下内容,从而定义相应关联的标准:
分组字段(键):在不同事件(在
events部分中定义)中必须具有相同值才能触发匹配的变量(例如$user或$ip)。时间限制:分组事件必须在某个时长窗口内发生,才能满足规则或聚合条件。在“规则”中,此参数定义检测窗口;在“搜索”和“信息中心”中,此参数定义聚合或关联窗口。
比较功能要求
下表详细比较了规则与搜索和信息中心。
| 功能 | 规则要求 | 搜索和信息中心支持 |
|---|---|---|
| 变量类型 | 必须使用在 events 部分中定义的占位符。 |
同时支持占位符和直接 UDM 字段。 |
| 时间窗口 | 定义检测边界。 | 定义聚合或相关性分桶。 |
| 语法 | over <number><m/h/d>(例如 10m、2h、1d) |
over <number><m/h/d> |
| 限制 | 最小值:1m / 最大值:48h |
最小值:1m / 最大值:48h |
支持的窗口类型
YARA-L 2.0 使用不同的窗口行为来确定时间切片方式和事件分组方式。您可以使用以下受支持的时间范围之一,按指定的时间粒度对 match 部分中的事件字段和占位符进行分组。
如需详细了解 YARA-L 2.0 支持的窗口类型,请参阅 YARA-L 2.0 窗口逻辑。
了解时间边界
match 部分会根据您的分组键将事件划分为不同的组。指定的时长定义了每个组的时间边界:
- 纳入:只有时间范围内的事件才会传递给
condition,以评估该特定匹配。 - 排除:系统会忽略窗口之外的事件,以防止不相关的事件触发假正例。
match 部分中的值为零
Google SecOps 会隐式过滤掉 match 部分中使用的所有占位符的零值("" 表示字符串,0 表示数字,false 表示布尔值,枚举类型表示位置 0 中的值)。
示例:过滤掉零值
以下示例展示了过滤掉零值的查询。
rule ZeroValuePlaceholderExample {
events:
// Because $host is used in the match section, the query behaves
// as if the following predicate was added to the events section:
// $host != ""
$host = $e.principal.hostname
// Because $otherPlaceholder was not used in the match,
// there is no implicit filtering of zero values for $otherPlaceholder.
$otherPlaceholder = $e.principal.ip
match:
$host over 5m
condition:
$e
}不过,如果为函数分配了占位变量,查询不会隐式过滤掉 match 部分中使用的占位变量的零值。
如需停用对零值的隐式过滤,您可以在“选项”部分中使用 allow_zero_values 选项。allow_zero_values 选项仅在规则中可用。
示例:允许零值
以下示例展示了不会隐式过滤掉 match 部分中使用的占位符的零值的查询:
rule AllowZeroValuesExample {
events:
// Because allow_zero_values is set to true, there is no implicit filtering
// of zero values for $host.
$host = $e.principal.hostname
// Because $otherPlaceholder was not used in the match,
// there is no implicit filtering of zero values for $otherPlaceholder.
$otherPlaceholder = $e.principal.ip
match:
$host over 5m
condition:
$e
options:
allow_zero_values = true
}后续步骤
探索以下资源,继续学习 YARA-L 逻辑或深入了解高级查询函数:
语法和逻辑
参考文档和示例
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。