Syntax des Abschnitts „Match“

Unterstützt in:

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 einer einzelnen Erkennung, indem sie gemeinsame Attribute wie Nutzer, IP-Adressen oder Datei-Hashes innerhalb einer bestimmten zeitlichen Grenze verknüpft.

Sie verwenden den Abschnitt match für die folgenden Anwendungsfälle:

  • Zwei oder mehr unterschiedliche Ereignisse innerhalb einer Regel verknüpfen.
  • Daten in der Suche und in Dashboards aggregieren, z. B. die Anzahl der fehlgeschlagenen Anmeldeversuche in einem bestimmten Zeitraum zählen.

Korrelationskriterien definieren

Damit können Sie die Kriterien für diese Korrelation definieren, indem Sie Folgendes angeben:

  • Gruppierungsfelder (Schlüssel): Variablen (z. B. $user oder $ip), die in allen Ereignissen (definiert im Abschnitt events) identische Werte haben müssen, um eine Übereinstimmung auszulösen.

  • Zeitliche Einschränkung: Das Zeitfenster, in dem gruppierte Ereignisse auftreten müssen, um die Regel oder Aggregation zu erfüllen. 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 mit der Suche und Dashboards aufgeführt.

Funktion Anforderungen an 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 Aggregations- oder Korrelations-Bucket.
Syntax
  • over <number><m/h/d> (z. B. 10m, 2h, 1d)
  • by <number><m/h/d>
  • over <number><m/h/d> [before|after] $pivot
  • over <number><m/h/d>
  • by <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 die condition-Bewertung für diese bestimmte Übereinstimmung berücksichtigt.
  • 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 Strings, 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, bei 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 Feature jedoch ein Platzhalter 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 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 können Sie sich weiter mit der YARA-L-Logik vertraut machen oder sich mit erweiterten Abfragefunktionen beschäftigen:

Syntax und Logik

Referenzen und Beispiele

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