Übersicht über YARA-L 2.0
YARA-L 2.0 ist eine spezielle Sprache in Google Security Operations, die auf Unternehmenslogdaten basiert und es Sicherheitsexperten ermöglicht, diese Daten zu analysieren, Bedrohungen zu untersuchen und Erkennungsregeln zu erstellen.
In diesem Dokument werden YARA-L und die zugehörige Syntax erläutert. Außerdem wird gezeigt, wie Sie damit alles von einer einfachen Filterabfrage bis hin zu einer Regel ausdrücken können, die nach komplexen Mustern sucht. Verwenden Sie die Abschnitte in einer YARA-L-Abfrage, um aggregierte Funktionen und Bedingungslogik zu unterstützen und Kontext durch Joins, Mustervergleich und mehr hinzuzufügen.
YARA-L 2.0 – Syntaxübersicht
Wenn Sie eine YARA-L-Regel oder ‑Abfrage erstellen möchten, empfehlen wir Ihnen, sich mit der Struktur und Syntax für die Angabe von Variablendeklarationen, ‑definitionen und ‑verwendungen vertraut zu machen.
Regelstruktur
YARA-L-Regeln enthalten die folgenden Abschnitte und müssen in der folgenden Reihenfolge angegeben werden:
| Auftrag | Bereich | Regeln | Suche/Dashboards | Beschreibung |
|---|---|---|---|---|
| 1 | Meta | Erforderlich | – | Beschreibt die Regel und kann Werte wie Autor, Schweregrad, Beschreibung und Priorität enthalten. Weitere Informationen zur Syntax des Meta-Abschnitts |
| 2 | ansehen | Erforderlich | Erforderlich | Definiert, wie Ereignisse gefiltert und verknüpft werden. Weitere Informationen finden Sie unter Syntax des Abschnitts „Ereignisse“. |
| 3 | Übereinstimmung | Optional | Optional | Gibt an, nach welchen Feldern die Ergebnisse bei der Aggregation gruppiert werden sollen. Weitere Informationen finden Sie unter Syntax für den Abschnitt „Abgleich“. Hinweis: Wenn Sie einen match-Abschnitt ausschließen, kann die Regel mit einem einzelnen Ereignis übereinstimmen. |
| 4 | Ergebnis | Optional | Optional | Definiert, welche Daten ausgegeben werden sollen, wenn eine Regel ausgeführt oder ausgelöst wird. Weitere Informationen finden Sie unter Syntax für Ergebnisabschnitte. |
| 5 | Bedingung | Erforderlich | Optional | Enthält die Logik, die bestimmt, ob eine Regel ausgelöst wird. Weitere Informationen finden Sie unter Syntax für den Abschnitt „Bedingung“. |
| 6 | Options | Optional | Optional | Ermöglicht das Aktivieren oder Deaktivieren bestimmter Regeln. Weitere Informationen finden Sie unter Syntax des Abschnitts „Optionen“. |
Das folgende Beispiel veranschaulicht die allgemeine Struktur einer Regel:
rule <rule name>
{
meta:
// Stores arbitrary key-value pairs of the rule details, such as who wrote
// it, what it detects on, version control, etc.
events:
// Defines which events to filter and the relationship between events.
match:
// Values to return when matches are found.
outcome:
// Define the output of each rule and security alert.
condition:
// Condition to check events and the variables used to find matches.
options:
// Options to turn on or off while executing this rule. The `options` syntax is only valid for rules.
}
Wenn Sie Regeln erstellen, führt Google SecOps eine Typüberprüfung für Ihre YARA-L-Syntax durch und zeigt die Fehler an, damit Sie die Regel so überarbeiten können, dass sie richtig funktioniert. Die folgenden Beispiele zeigen die Fehler, die bei Verwendung ungültiger Syntax angezeigt werden:
// $e.target.port is of type integer which cannot be compared to a string.
$e.target.port = "80"
// "LOGIN" is not a valid event_type enum value.
$e.metadata.event_type = "LOGIN"
Diese Beispielregel findet fünf aufeinanderfolgende fehlgeschlagene Anmeldungen pro Nutzer innerhalb von 10 Minuten.
rule failed_logins
{
meta:
author = "Security Team"
description = "Detects multiple failed user logins within 10-minute windows."
severity = "HIGH"
events:
$e.metadata.event_type = "USER_LOGIN"
$e.security_result.action = "FAIL"
$user = $e.target.user.userid
match:
$user over 10m
outcome:
$failed_login_count = count($e.metadata.id)
$first_fail_time = min($e.metadata.event_timestamp.seconds)
condition:
#e >= 5
}
Die Regel ist so definiert:
- Im Abschnitt
metawerden der Autor der Regel (Security team), die Beschreibung (Detects multiple failed user logins within 10-minute windows.) und der Schweregrad (High) definiert.
Erkennt mehrere fehlgeschlagene Nutzeranmeldungen innerhalb von 10 Minuten
Im Abschnitt
eventswerden die Ereignisse definiert, die erfasst werden müssen: Nutzeranmeldungen, fehlgeschlagene Nutzeranmeldungen (Ereignisvariablen) und Links zuruser-Abgleichsvariable (Platzhaltervariablen).Im Abschnitt
outcomewerden die Berechnungen definiert, die für das Ereignis und die Platzhaltervariablen ausgeführt werden sollen: die Anzahl der fehlgeschlagenen Anmeldungen und die Uhrzeit des ersten Fehlers.Im Abschnitt
matchwird die Variable definiert, nach der die Ereignisse gruppiert werden ($user), und der Zeitraum (10m), in dem diese Ereignisse stattfinden müssen, um als Übereinstimmung betrachtet zu werden.Im Abschnitt
conditionwird angegeben, dass nur Nutzer zurückgegeben werden sollen, die mehr als fünf fehlgeschlagene Anmeldungen haben.
Nächste Schritte
- Syntax für den Meta-Abschnitt
- Syntax des Bereichs „Ereignisse“
- Syntax für den Abgleich von Abschnitten
- Syntax des Ergebnisbereichs
- Syntax des Bedingungsabschnitts
- Syntax des Optionsbereichs
Weitere Informationen
- 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