Syntax des Abschnitts „match“
In YARA-L 2.0 bietet der Abschnitt match den Mechanismus für die Korrelation mehrerer Ereignisse. Er definiert die Logik zum Gruppieren von Ereignissen zu einer einzelnen Erkennung, indem gemeinsame Attribute wie Nutzer, IP-Adressen oder Dateihashes innerhalb einer bestimmten zeitlichen Begrenzung verknüpft werden.
Sie verwenden den Abschnitt match für die folgenden Anwendungsfälle:
- Verknüpfen Sie zwei oder mehr unterschiedliche Ereignisse innerhalb einer Regel.
- Aggregieren Sie Daten in der Suche und in Dashboards, z. B. um die Anzahl der fehlgeschlagenen Anmeldeversuche in einem bestimmten Zeitraum zu ermitteln.
Korrelationskriterien definieren
Definieren Sie die Kriterien für diese Korrelation, indem Sie Folgendes angeben:
Gruppierungsfelder (Schlüssel): Variablen (z. B.
$useroder$ip), die in allen Ereignissen (definiert im Abschnittevents) identische Werte haben müssen, um eine Übereinstimmung auszulösen.Zeitliche Einschränkung: Der Zeitraum, in dem gruppierte Ereignisse auftreten müssen, damit die Regel oder Aggregation erfüllt ist. In Regeln definiert dies das Erkennungsfenster. In der Suche und in Dashboards definiert dies das Aggregations- oder Korrelationsfenster.
Vergleich der Funktionsanforderungen
In der folgenden Tabelle werden die Vergleiche für Regeln mit der Suche und Dashboards aufgeführt.
| Funktion | Anforderung für Regeln | Unterstützung für Suche und Dashboards |
|---|---|---|
| Variablentypen | Es müssen Platzhalter verwendet werden, die im Abschnitt events definiert sind. |
Unterstützt sowohl Platzhalter als auch direkte UDM-Felder. |
| Zeitfenster | Definiert die Erkennungsgrenze. | Definiert den Bucket für die Aggregation oder Korrelation. |
| Syntax | over <number><m/h/d> (z. B. 10m, 2h, 1d) |
over <number><m/h/d> |
| Limits | Min.: 1m / Max.: 48h |
Min.: 1m / Max.: 48h |
Unterstützte Fenstertypen
In YARA-L 2.0 werden verschiedene Fensterverhaltensweisen verwendet, um zu bestimmen, wie die Zeit unterteilt und wie Ereignisse gruppiert werden. Sie können Ereignisfelder und Platzhalter im Abschnitt match nach einer bestimmten Zeitgranularität gruppieren, indem Sie eines der folgenden unterstützten Fenster verwenden.
Weitere Informationen zu den von YARA-L 2.0 unterstützten Fenstertypen finden Sie unter Fensterlogik von YARA-L 2.0.
Zeitliche Begrenzung
Im Abschnitt match werden Ereignisse anhand Ihrer Gruppierungsschlüssel in Gruppen unterteilt. Die angegebene Dauer definiert die zeitliche Begrenzung für jede Gruppe:
- Einschluss: Nur Ereignisse innerhalb des Fensters werden zur
conditionAuswertung für diese bestimmte Übereinstimmung weitergeleitet. - Ausschluss: Ereignisse außerhalb des Fensters werden für diese bestimmte Übereinstimmungsgruppe ignoriert, wodurch verhindert wird, dass nicht verwandte Ereignisse ein falsch positives Ergebnis auslösen.
Nullwerte im Abschnitt match
In Google SecOps werden Nullwerte für alle Platzhalter, die im Abschnitt match verwendet werden, implizit herausgefiltert ("" für String, 0 für Zahlen, false für boolesche Werte, der Wert an Position 0 für Aufzählungstypen).
Beispiel: Nullwerte herausfiltern
Das folgende Beispiel zeigt Abfragen, die die Nullwerte herausfiltern.
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
}Wenn ein Platzhalter jedoch einer Funktion zugewiesen ist, werden die Nullwerte von Platzhaltern, die im Abschnitt match verwendet werden, nicht implizit herausgefiltert.
Wenn Sie die implizite Filterung von Nullwerten deaktivieren möchten,
können Sie im Abschnitt „options“ die Option allow_zero_values verwenden. Die Option allow_zero_values ist nur in Regeln verfügbar.
Beispiel: Nullwerte zulassen
Das folgende Beispiel zeigt Abfragen, die die Nullwerte von Platzhaltern, die im Abschnitt match verwendet werden, nicht implizit herausfiltern:
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
}Nächste Schritte
In den folgenden Ressourcen finden Sie weitere Informationen zur YARA-L-Logik oder zu erweiterten Abfragefunktionen:
Syntax und Logik
Referenzen und Beispiele
- In YARA-L 2.0 verwendete Ausdrücke, Operatoren und Konstrukte
- Funktionen in YARA-L 2.0
- Zusammengesetzte Erkennungsregeln erstellen
- Beispiele: YARA-L 2.0-Abfragen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten