Syntax „N VON“ mit Ereignisvariablen verwenden
In diesem Dokument wird erläutert, wie Sie die N-OF-Syntax verwenden, um flexible und bedingte Logik im Abschnitt condition Ihrer Abfrage zu schreiben.
Mit der N OF-Syntax können Sie mehrere Bedingungen kombinieren und so die Gesamtkomplexität Ihrer Abfragesyntax reduzieren:
- Ermöglicht es, anzugeben, dass eine Mindestanzahl von booleschen Ausdrücken aus einer bestimmten Liste als „true“ ausgewertet werden muss.
- Sie müssen nicht jede mögliche Kombination angeben, 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.
Das 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
Wird mit „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 melden
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 Suche: Sensiblen 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
Erforderliches Vorhandensein von Ereignissen: Ausdrücke mit der Syntax „N VON“ dürfen nicht unbegrenzt sein. Das Vorhandensein des Ereignisses muss eine Voraussetzung dafür sein, dass die Klausel zutrifft (z. B.
$e1oder#e1 > 0).Mischen von Variablentypen: Sie können keine Nicht-UDM-Variablen mit UDM-Ereignisvariablen in derselben N-OF-Liste kombinieren.
Einschränkung für rollierende Fenster: Sie können keine rollierenden Fenster mit der N OF-Syntax verwenden.
Nächste Schritte
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten