使用或在條件部分

支援的國家/地區:

本文說明如何使用 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 專業人員尋求答案。