使用情况或状况部分

支持的平台:

本文档介绍了如何使用 or 运算符在查询的 condition 部分中编写灵活简洁的检测逻辑。

在事件变量或占位符变量之间使用 or 可让您组合多个条件,从而降低查询语法的总体复杂性:

  • 检查是否存在任一指定变量。例如,$e1 or $e2 需要至少一个 $e1 实例或一个 $e2 实例。

条件部分中的 or 语法

直接在变量之间使用 or 关键字。以下示例与 COUNT($e1)>0 or COUNT($e2)>0 等效:

condition:
  $e1 or $e2  // True if $e1 exists or $e2 exists

规则示例:存在风险的 IP 或不良哈希执行

以下示例规则会在检测到来自风险 IP 地址的进程启动或执行已知不良哈希时检测到威胁:

rule MultiEventOr {
  meta:
    author = "google-secops"
  events:
    $e1.principal.ip = "1.1.1.1"
    $e1.metadata.event_type = "PROCESS_LAUNCH"
    $e2.target.file.sha256 = "badhash..."
    $user = $e1.principal.user.userid
    $user = $e2.principal.user.userid
  match:
    $user over 5m
  condition:
    $e1 or $e2
}

搜索示例:有风险的 IP 或不良哈希执行

以下示例展示了如何将示例规则重新格式化为搜索查询。

$e1.principal.ip = "1.1.1.1"
$e1.metadata.event_type = "PROCESS_LAUNCH"
$e2.target.file.sha256 = "badhash..."
$user = $e1.principal.user.userid
$user = $e2.principal.user.userid

match:
  $user over 5m

condition:
  $e1 or $e2

已知限制

  • 资源消耗:在事件变量之间使用 or 比使用 and 消耗更多资源,并可能导致查询执行时间更长。

  • 事件变量限制:对于搜索和信息中心,您可以在多事件 or 语法中使用最多 3 个事件。对于规则,您可以在多事件 or 语法中使用最多 2 个事件。

  • 必需的事件存在:使用 or 的表达式不能是不受限的。事件的存在必须是子句为 true 的必要条件(例如,$e1#e1 > 0)。

  • 变量类型混合:您无法在同一 or 列表中将非 UDM 变量与 UDM 事件变量结合使用。

  • 窗口限制:您无法将滚动窗口与 or 语法搭配使用。

后续步骤

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。