Syntax für den Abschnitt „Übereinstimmung“
In YARA-L 2.0 bietet der Abschnitt match den Mechanismus für die Korrelation mehrerer Ereignisse. Sie definiert die Logik für die Gruppierung von Ereignissen in einem einzelnen Fund, 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 in einer Regel.
- Aggregierte Daten in der Suche und in Dashboards, z. B. das Zählen fehlgeschlagener Anmeldeversuche über einen bestimmten Zeitraum hinweg.
Korrelationskriterien definieren
Damit können Sie die Kriterien für diese Korrelation definieren, indem Sie Folgendes angeben:
Gruppierungsfelder (Schlüssel): Variablen (z. B.
$useroder$ip), die für alle Ereignisse (im Abschnitteventsdefiniert) identische Werte haben müssen, damit eine Übereinstimmung ausgelöst wird.Zeitbeschränkung: Der Zeitraum, in dem gruppierte Ereignisse auftreten müssen, damit die Regel oder Aggregation erfüllt wird. In Regeln wird damit das Erkennungsfenster definiert. In der Suche und in Dashboards wird damit das Aggregations- oder Korrelationsfenster definiert.
Anforderungen für Funktionen vergleichen
In der folgenden Tabelle werden die Vergleiche für Regeln für die 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
YARA-L 2.0 verwendet verschiedene Windowing-Verhaltensweisen, um zu bestimmen, wie die Zeit aufgeteilt und Ereignisse gruppiert werden. Sie können Ereignisfelder und Platzhalter im Abschnitt match nach einem bestimmten zeitlichen Detaillierungsgrad gruppieren. Verwenden Sie dazu eines der folgenden unterstützten Zeitfenster.
Weitere Informationen zu den von YARA-L 2.0 unterstützten Fenstertypen finden Sie unter YARA-L 2.0-Fensterlogik.
Zeitliche Grenze
Im Abschnitt match werden Ereignisse basierend auf Ihren Gruppierungsschlüsseln in Gruppen unterteilt. Die angegebene Dauer definiert die zeitliche Grenze für jede Gruppe:
- Einbeziehung: Nur Ereignisse innerhalb des Zeitraums werden für den jeweiligen Abgleich an die
condition-Auswertung übergeben. - Ausschluss: Ereignisse außerhalb des Zeitfensters werden für diese bestimmte Übereinstimmungsgruppe ignoriert, um zu verhindern, dass nicht relevante Ereignisse ein falsch positives Ergebnis auslösen.
Nullwerte im Abschnitt „match“
Google SecOps filtert implizit Nullwerte für alle Platzhalter heraus, die im Abschnitt match verwendet werden ("" für String, 0 für Zahlen, false für boolesche Werte, der Wert an Position 0 für aufgezählte Typen).
Beispiel: Nullwerte herausfiltern
Das folgende Beispiel zeigt Abfragen, mit denen die Nullwerte herausgefiltert werden.
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 einem Platzhalter jedoch eine Funktion zugewiesen ist, werden die Nullwerte von Platzhaltern, die im Abschnitt match verwendet werden, nicht implizit aus Abfragen herausgefiltert.
Wenn Sie das implizite Filtern von Nullwerten deaktivieren möchten, können Sie die Option allow_zero_values im Abschnitt „Optionen“ verwenden. Die Option allow_zero_values ist nur in Regeln verfügbar.
Beispiel: Nullwerte zulassen
Das folgende Beispiel zeigt Abfragen, bei denen die Nullwerte von Platzhaltern, die im Abschnitt match verwendet werden, nicht implizit herausgefiltert werden:
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
- Ausdrücke, Operatoren und Konstrukte in YARA-L 2.0
- 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