N OF-Syntax mit Ereignisvariablen verwenden

Unterstützt in:

In diesem Dokument wird erläutert, wie Sie mit der N OF-Syntax flexible und bedingte Logik im condition-Abschnitt Ihrer Abfrage schreiben.

Mit der N OF-Syntax können Sie mehrere Bedingungen kombinieren und so die Gesamtkomplexität Ihrer Abfragesyntax verringern:

  • Ermöglicht es, anzugeben, dass eine Mindestanzahl von booleschen Ausdrücken aus einer bestimmten Liste als „true“ ausgewertet werden muss.
  • Dadurch müssen nicht alle möglichen Kombinationen angegeben werden, was Fehler und Aufwand reduziert.

N OF-Syntax

Die Syntax für eine N OF-Anweisung ist eine durch Kommas getrennte Liste von booleschen Ausdrücken, die so aussehen:

[expr1, expr2, … , exprN], wobei [expr1, expr2, … , exprN]

In den folgenden Abschnitten werden einige Varianten der N OF-Syntax gezeigt.

EINE DER FOLGENDEN

Im folgenden Beispiel wird geprüft, ob mindestens ein Ausdruck in der Liste „wahr“ ist. Dies entspricht dem Verknüpfen aller Ausdrücke mit or.

condition:
  ANY OF [$e1, #e2 > 5, $outcome1 = "FAILED"]

ALLE

Wenn alle Ausdrücke in der folgenden Liste wahr sind, ist das Beispiel wahr. Dies entspricht dem Verknüpfen aller Ausdrücke mit and.

condition:
  ALL OF [$e1, $e2, $outcome1 = "SUCCESS"]

N von X

Der Ausdruck wird als „true“ ausgewertet, wenn mindestens N Ausdrücke aus der Liste „true“ sind.

condition:
  2 of [$e1, $e2 > 0, $e3, arrays.contains($outcome_ips, "1.2.3.4")]

Beispielregel: Zugriff auf vertrauliche Dateien kennzeichnen

Mit der folgenden Regel wird ein Nutzer gekennzeichnet, wenn er sich erfolgreich anmeldet ($e1). Anschließend wird geprüft, ob die Sitzung auch eines von zwei Kriterien erfüllt: Auf eine vertrauliche Datei wird zugegriffen ($e2) oder die Gesamtzahl der eindeutigen vertraulichen Dateien, auf die zugegriffen wird, überschreitet 3.

rule MultiEventNOf {
  meta:
    author = "google-secops"
    description = "Detects user login followed by sensitive file access or multiple sensitive files."
  events:
    $e1.principal.user.userid = $user
    $e1.metadata.event_type = "USER_LOGIN"

    $e2.principal.user.userid = $user
    $e2.metadata.event_type = "FILE_OPEN"
    re.regex($e2.target.file.full_path, `^/cns/sensitive/`)

  match:
    $user over 1h
  outcome:
    $sensitive_file_count = count_distinct($e2.target.file.full_path)
  condition:
    $e1 and ANY OF [$e2, $sensitive_file_count > 3]
  }

Beispiel für die Suche: Flag sensitive file access (Sensibler Dateizugriff kennzeichnen)

Im folgenden Beispiel sehen Sie, wie Sie die Beispielregel als Suchanfrage neu formatieren können.

$e1.principal.user.userid = $user
$e1.metadata.event_type = "USER_LOGIN"
$e2.principal.user.userid = $user
$e2.metadata.event_type = "FILE_OPEN"
re.regex($e2.target.file.full_path, `^/cns/sensitive/`)

match:
  $user over 1h
outcome:
  $sensitive_file_count = count_distinct($e2.target.file.full_path)
condition:
  $e1 and ANY OF [$e2, $sensitive_file_count > 3]

Bekannte Einschränkungen

  • Erforderliche Ereignisexistenz: Ausdrücke vom Typ „N OF“ können nicht unbegrenzt sein. Das Vorhandensein des Ereignisses muss eine Voraussetzung dafür sein, dass die Klausel zutrifft (z. B. $e1 oder #e1 > 0).

  • Mischen von Variablentypen: Sie können Nicht-UDM-Variablen nicht mit UDM-Ereignisvariablen in derselben N-OF-Liste kombinieren.

  • Einschränkung für Fenster: Sie können keine gleitenden Fenster mit der N OF-Syntax verwenden.

Nächste Schritte

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten