Erste Schritte mit YARA-L
YARA-L 2.0 ist die einzigartige, hochstrukturierte Abfragesprache, die Google Security Operations für alle Suchvorgänge, Dashboards und regelbasierte Bedrohungserkennung unterstützt. In diesem Dokument wird die grundlegende Struktur von YARA-L erläutert. Außerdem finden Sie hier praktische Schritte für die Verwendung, unabhängig davon, ob Sie als Sicherheitsanalyst nach Bedrohungen suchen oder als Detection Engineer robuste neue Logik entwickeln.
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, die nach komplexen Mustern sucht, ausdrücken können. Verwenden Sie die Abschnitte in einer YARA-L-Abfrage, um Aggregationsfunktionen und Bedingungslogik zu unterstützen und Kontext durch Joins, Musterabgleich und mehr hinzuzufügen.
Hinweis
- Prüfen Sie, ob Sie Zugriff auf die Google SecOps-Plattform haben.
- Datenaufnahme mit Testregeln prüfen
- Sie müssen ein grundlegendes Verständnis von Sicherheitskonzepten und Protokolldaten haben.
- In diesem Dokument wird davon ausgegangen, dass Daten in Ihre Google SecOps-Instanz aufgenommen und in das Unified Data Model (UDM) normalisiert werden.
- Eine Starthilfe für die Migration von Abfragen finden Sie im Leitfaden Von SPL zu YARA-L 2.0 wechseln. Dort werden gängige SPL-Befehle wie
stats,evalundlookupin YARA-L-outcomes- undmatch-Bedingungen übersetzt.
YARA-L-Struktur
Jede YARA-L-Abfrage ist in verschiedene benannte Abschnitte unterteilt, die das Verhalten der Abfrage bestimmen.
Diese Struktur ermöglicht die mehrstufige Analyse und Korrelation.
| Auftrag | Bereich | Regeln | Suche/Dashboards | Beschreibung |
|---|---|---|---|---|
| 1 | meta |
Erforderlich | Optional | Legt beschreibende Metadaten für die Regel fest, z. B. Autor, Beschreibung und Schweregrad. Beispiele: Autor (security team), Beschreibung (Detects multiple failed user logins within 10-minute windows) und Schweregrad (High).Weitere Informationen finden Sie unter Abschnittssyntax für meta. |
| 2 | events |
Erforderlich | Erforderlich | Definiert und filtert die Ereignisse, die erfasst werden müssen: Nutzeranmeldungen, fehlgeschlagene Nutzeranmeldungen (Ereignisvariablen) und Links zur Variable für den Nutzerabgleich (Platzhaltervariablen). Deklariert alle zu berücksichtigenden Datenquellen (hauptsächlich Ereignisse) und filtert sie mithilfe von UDM-Feldern. Siehe Syntax des Abschnitts events. |
| 3 | match |
Erforderlich | Optional | Gruppiert nach Ereignissen und ermöglicht es Ihnen, das unterstützte Zeitfenster anzugeben (z. B. by 5m). In einigen Fällen für statistische Suchanfragen erforderlich, bei denen eine Aggregation erfolgt. Erforderlich für Abfragen zur Korrelation mehrerer Ereignisse. Die Zeitangabe ist für Regeln in match erforderlich und für die Suche und Dashboards optional. Weitere Informationen finden Sie unter Syntax für match-Abschnitte.Hinweis: Wenn Sie einen match-Abschnitt ausschließen, kann die Regel mit einem einzelnen Ereignis übereinstimmen. |
| 4 | outcome |
Optional | Optional | Berechnet wichtige Messwerte und ruft Statistiken ab, z. B. count() und avg(). Weitere Informationen finden Sie unter Syntax für outcome-Abschnitte. |
| 5 | condition |
Erforderlich | Optional | Definiert die Logik, die erfüllt sein muss, um entweder Ergebnisse zurückzugeben (bei der Suche) oder einen Alarm auszulösen (in einer Regel). Hiermit werden die Kriterien für die Abfragevariable ausgewertet, um festzustellen, ob ein Ergebnis zutrifft (z. B. $event >5). Weitere Informationen finden Sie unter Syntax für den Abschnitt condition. |
| 6 | options |
Optional | Optional | Ermöglicht das Aktivieren oder Deaktivieren bestimmter Regeln. Weitere Informationen finden Sie unter Syntax für den Abschnitt options. |
| 7 | dedup |
– | Optional | Entfernt doppelte Ereignisse, indem sie anhand von Schlüsselvariablen oder Ereignispfaden gruppiert werden (z. B. target.user.userid, target.ip, principal.hostname oder Variablen wie $host, $user). Weitere Informationen zu Ereignisvariablen und zur Verwendung der Deduplizierung in Search und Dashboards |
| 8 | order |
– | Optional | Sortiert Ergebnisse, die durch bestimmte Felder definiert werden (z. B. asc). Weitere Informationen zu Ereignisvariablen Optional (gilt nur, wenn match verwendet wird). |
| 9 | limit |
– | Optional | Beschränkt die maximale Anzahl der von der Abfrage zurückgegebenen Ereignisse. |
| 10 | select |
– | Optional | Gibt die Liste der UDM-Felder an, die in die Abfrageergebnisse einbezogen werden sollen. |
| 11 | unselect |
– | Optional | Gibt die Liste der UDM-Felder an, die aus den Abfrageergebnissen ausgeschlossen werden sollen. |
Verfügbarkeit von YARA-L-Datenquellen
YARA-L hat je nach Bereich der Plattform Zugriff auf verschiedene Datenquellen. Ereignisse, Entitäten (ECG) und Datentabellen sind in der Suche, in Dashboards und in Regeln vollständig verfügbar. Weitere Informationen zu Beispielabfragen finden Sie unter Unterstützte Datenquellen.
In der folgenden Tabelle sind die in YARA-L verfügbaren Funktionen aufgeführt:
| Funktion | Verfügbar in |
|---|---|
| Fälle und Fallverlauf | Dashboards |
| Datentabellen | Suche, Dashboards, Regeln |
| Entitäten (EKG) | Suche, Dashboards, Regeln |
| Messwerte zur Aufnahme | Dashboards |
| IOC-Übereinstimmungen | Dashboards |
| Regelerkennungen | Dashboards, Regeln |
| Regelsätze | Dashboards |
| Ereignisse | Suche, Dashboards, Regeln |
| UEBA-Messwerte | Suche, Dashboards |
Erste YARA-L-Suche erstellen
Alle Daten in Google SecOps werden mit zwei primären Methoden durchsucht, je nachdem, was Sie erreichen möchten: Filtersuche und statistische Suche (Aggregationen).
Suche filtern (Ereignisfilterung)
Mit der Methode Filtersuche können Sie bestimmte Ereignisse aus dem breiteren Telemetriestream isolieren, ohne den Aufwand einer statistischen Aggregation. Bei dieser Methode werden Kriterien verwendet, um große Mengen an Sicherheitsdaten wie Protokolle oder Netzwerkverkehr in ein gezieltes Ergebnis-Set einzugrenzen. Für die Logik müssen Sie nur Ereignisse im Abschnitt events angeben.
So erstellen Sie Ihre erste YARA-L-Filtersuche, um nach Nutzern mit fehlgeschlagenen Anmeldungen zu suchen:
- Rufen Sie in Google SecOps die Seite Suche auf.
-
Filtern Sie nach Anmeldeereignissen:
metadata.event_type = "USER_LOGIN"
Tipp: Sie können die Abschnittsüberschrift
events:bei Ihren Suchanfragen weglassen. Standardmäßig ist dieser Abschnitt in der Suchsyntax enthalten. event-Aktionen für fehlgeschlagene Anmeldungen von Nutzern hinzufügen, die keine leereuseridhaben.metadata.event_type = "USER_LOGIN" security_result.action = "FAIL" principal.user.userid != ""- Führen Sie diese Suche aus, um die Ergebnisse zu sehen.
Platzhaltervariablen verwenden
Mit Platzhaltervariablen können Sie bestimmte Werte aus Ihren Ereignissen extrahieren, z. B. einen Nutzernamen oder eine IP-Adresse. Diese Variablen dienen als temporäre Anker, mit denen Sie Daten für verschiedene Ereignisse vergleichen oder diese Werte in der endgültigen Ausgabe anzeigen können.
Sie wenden Platzhaltervariablen an, um Folgendes zu tun:
- Brückendaten: Verwenden Sie Platzhalter wie
$useridoder$ip, um Übereinstimmungen zwischen verschiedenen Ereignisvariablen zu finden. Mit$useridkönnen Sie beispielsweise die Nutzer-ID für An- und Abmeldeereignisse verknüpfen. - Ergebnisse gruppieren: Verwenden Sie im Abschnitt
matchPlatzhaltervariablen, um das Fenster Ihrer Abfrageausgabe zu definieren, z. B.match: $userid over 1h. - Ergebnisse erstellen: Verwenden Sie Platzhalter, um bestimmte Datenpunkte in der Abfrageausgabe zu erfassen und anzuzeigen.
Wenn Sie beispielsweise $user = principal.user.userid zuweisen, enthält die Variable $user jetzt den spezifischen Wert, der aus dem Ereignis extrahiert wurde. Anschließend verwenden Sie $user im Abschnitt match, um alle Aktivitäten zu gruppieren, die mit diesem Nutzer zusammenhängen.
Statistische Suche (Aggregation)
Mit der Methode Statistische Suche können Sie Statistiken, Trends oder Anomalien ermitteln, indem Sie Berechnungen für Ereignissätze durchführen. Statt einer Liste mit einzelnen Protokollen werden aggregierte Zusammenfassungen Ihrer Daten bereitgestellt. Die Logik verwendet den Bereich match (für die Gruppierung) und den Bereich outcome (für Berechnungen). Im Abschnitt outcome werden Aggregationsfunktionen wie count(), sum(), avg(), max(), min() und stddev() unterstützt.
Im folgenden Beispiel wird die folgende Abfragelogik verwendet:
events: Filtert die Rohdaten nach fehlgeschlagenen Anmeldeversuchen.match: Definiert die Gruppierungsereignisse (nachuserid).outcome: Führt die statistische Aggregation (Ereignisanzahl pro Nutzer) durch.
Beispiel: Fehlgeschlagene Anmeldeaktivitäten mit outcome-Funktionen aggregieren
Im folgenden Beispiel werden die Aggregatfunktionen des outcome-Abschnitts (z. B. count() oder sum()) verwendet, um fehlgeschlagene Anmeldeversuche zusammenzufassen.
Verwenden Sie den Abschnitt
match, um die Ereignisse für fehlgeschlagene Anmeldungen nachuseridzu gruppieren:metadata.event_type = "USER_LOGIN" security_result.action = "FAIL" principal.user.userid != "" match: principal.user.useridVerwenden Sie die
countfehlgeschlagener Log-ins für jeden Nutzer ($failed_login_count), die durch die Variableoutcomedefiniert wird:metadata.event_type = "USER_LOGIN" security_result.action = "FAIL" principal.user.userid != "" match: principal.user.userid outcome: $failed_login_count = count(metadata.id)Führen Sie diese Suche aus, um die Ergebnisse zu sehen.
Optional: Fügen Sie dem Abschnitt
matchein Zeitelement hinzu (in diesem Fallday). Aktualisieren Sie dann die Variableoutcome, damit sie expliziter ist ($daily_failed_login_count):metadata.event_type = "USER_LOGIN" security_result.action = "FAIL" principal.user.userid != "" $user = principal.user.userid match: $user by day outcome: $daily_failed_login_count = count(metadata.id)
Dashboard-Widget aus Ihrer Suche erstellen
Sie können ein Dashboard-Widget aus aggregierten Suchanfragen erstellen, wie im Beispiel zum Erstellen der ersten Suche gezeigt.
Nachdem die Suche validiert wurde, können Sie sie als Widget speichern und Ihrem Dashboard hinzufügen:
- Wenn die Ergebnisse angezeigt werden, klicken Sie auf den Tab Visualisieren > Zum Dashboard hinzufügen.
- Widget konfigurieren:
- Geben Sie dem Widget einen Namen (z. B.
"Daily Failed Login"). - Zeitraum auswählen.
- Wählen Sie aus, ob Sie es einem vorhandenen oder neuen Dashboard hinzufügen möchten.
- Klicken Sie auf Hinzufügen.
- Geben Sie dem Widget einen Namen (z. B.
- Optional: Sie können Abfragen direkt in Ihre Dashboards einfügen. Alternativ können Sie kuratierte Dashboards kopieren und die Änderungen an den darin enthaltenen Abfragen als Ausgangspunkt verwenden.
- Optional: Sie können ein benutzerdefiniertes Dashboard erstellen und mit YARA-L Widgets hinzufügen. Weitere Informationen finden Sie unter Benutzerdefiniertes Dashboard erstellen.
Dashboard konfigurieren
Wenn Sie ein neues Dashboard erstellen, ist der Bereich events ein erforderlicher Ausgangspunkt. Dort können Sie match (zum Gruppieren von Ergebnissen) oder outcome (zum Berechnen von Ausgaben und Aggregationen) verwenden.
Sie können beispielsweise ein Dashboard mit den Abschnitten events und match haben, in dem der Schweregrad ($severity) der erkannten Probleme nach by hour-Buckets gruppiert ist.
Beispiel: Zeitreihen nach Schweregrad aggregieren
Sie können ein Dashboard mit den Abschnitten
eventsundmatcherstellen, um den Schweregrad ($severity) von Erkennungen anzuzeigen, die inhour-Buckets gruppiert sind:detection.detection.severity != "UNKNOWN_SEVERITY" $severity = detection.detection.severity match: $severity by hour
Beispiel: Gesamtauswirkung von kritischen Problemen zusammenfassen
Sie können auch ein Dashboard mit den Abschnitten
eventsundoutcomeerstellen, um Erkennungen mit hohem Schweregrad zu verfolgen:detection.detection.severity = "CRITICAL" $severity = detection.detection.severity outcome: $detection_count = count_distinct($severity)
Beispiel: Erkennungsvolumen nach Schweregrad im Zeitverlauf visualisieren
Im folgenden Beispiel können Sie kritische Erkennungen zählen und den Zeitraum über die Console angeben. In vielen Fällen verwenden Sie beim Erstellen einer Visualisierung in einem Dashboard sowohl die Abschnitte
matchals auchoutcome:detection.detection.severity != "UNKNOWN_SEVERITY" $severity = detection.detection.severity match: $severity by hour outcome: $detection_count = count_distinct(detection.id)
Beispiel: Häufigkeit der Nutzeranmeldung berechnen
Im folgenden Beispiel wird der
login_countfür bestimmte Nutzer mithilfe der Abschnittematchundoutcomeberechnet:events: metadata.event_type = "USER_LOGIN" match: target.user.userid outcome: $login_count = count(metadata.id)
Regel erstellen
Eine Regel erfordert die folgenden Abschnitte:
meta: Enthält den Namen der Regel und beschreibende Details.events: Definiert Ihre Datenquellen und Filter mithilfe von Ereignisvariablen.condition: Gibt an, welche Ereignisvariablen vorhanden sein müssen, damit die Regel ausgelöst wird.
Ereignisvariablen definieren und verwenden
Ereignisvariablen dienen als logischer Container, in dem Ihre Filter gruppiert werden. So können Sie in Ihrer Suche, Regel oder Ihrem Dashboard auf diese bestimmte Aktivität verweisen.
Wenn Sie Logik im Abschnitt events definieren, können Sie Ereignisvariablen (z. B. $e) verwenden, um ein bestimmtes Ereignis oder eine Gruppe von Ereignissen darzustellen, die Ihren Kriterien entsprechen.
Beispiel: Ereignisvariablen definieren und filtern
Wenn Sie eine Ereignisvariable (z. B.
$e) definieren möchten, verwenden Sie ein Präfix im AbschnitteventsIhrer Abfrage. Damit wird festgelegt, dass diese Ereignisse durch die Variable dargestellt werden. Der Ausdruck$e.principal.hostname = "dev"wertet beispielsweise jedes Ereignis aus, um festzustellen, ob der Hostname genau übereinstimmt.$e.principal.hostname = "dev" $e.metadata.event_type = "USER_LOGIN"
Sie können diese Variable dann in anderen Abschnitten der Abfrage verwenden, um auf diese bestimmte Gruppe von Ereignissen (in den Abschnitten match, outcome, condition) und ihre Datenfelder zu verweisen.
Regelstruktur und ‑syntax organisieren
Verwenden Sie die folgende Regelstruktur und ‑syntax, um Ihre Variablen, die Gruppierungslogik und die Trigger-Grenzwerte zu definieren:
| Element | Beschreibung | Beispiel |
|---|---|---|
| Regelstruktur | Ihre Abfrage wird in einen rule-Block eingeschlossen und es wird ein eindeutiger Name zugewiesen, um die Erkennung zu identifizieren. |
rule DailyFailedLoginAttempts { } |
meta-Abschnitt |
Erforderlich. Enthält beschreibende Metadaten (z. B. „author“, „description“, „severity“), um die Regelverwaltung zu verbessern und Ihrem Team Kontext zu bieten. Empfohlene Best Practice für die Regelverwaltung. | author = "Alex"severity = "Medium" |
| Ereignisvariable | In einer Regeln-Abfrage wird jedem Feld im Abschnitt events eine Ereignisvariable (z. B. $e) vorangestellt, um ein bestimmtes Ereignis (oder eine Gruppe von Ereignissen) darzustellen, das Ihren Kriterien entspricht. Sie dienen als logische Gruppierungen von Filtern. Im Beispiel Convert your search to a YARA-L rule (Suchanfrage in eine YARA-L-Regel umwandeln) steht $e für alle fehlgeschlagenen Nutzeranmeldungen. |
$e.metadata.event_type = "USER_LOGIN" |
| Platzhaltervariable | Weist einem Ereignis einen gemeinsamen Namen zu, auf den Sie später in der Abfrage verweisen können. Weitere Informationen finden Sie unter Platzhaltervariablen verwenden. | $userid = $e.principal.user.userid |
match-Abschnitt |
Definiert Ihre Gruppierungen und gibt ein unterstütztes Zeitfenster an. Im Beispiel Suchanfrage in eine YARA-L-Regel umwandeln werden die Ereignisse mit der Gruppierung match: $userid over day korrekt nach der Nutzer-ID innerhalb jedes 24-Stunden-Zeitraums (1d) gruppiert. Wenn Sie eine Regel schreiben, müssen Sie ein unterstütztes Zeitfenster angeben, um den Rückschauzeitraum zu definieren. Je nach Ihren logischen Anforderungen können Sie ein Hop-, Sliding- oder Tumbling-Fenster implementieren. Mit dem Operator over wird explizit ein springendes Fenster erstellt. |
$userid over 1d |
outcome-Abschnitt |
Führt statistische Aggregationen durch oder erfasst bestimmte Variablen, um die resultierenden Benachrichtigungen informativer zu gestalten. Verwenden Sie die Funktion count() für $e.metadata.id, um Ereignisse in jeder match-Gruppe zu aggregieren. Sie können auch Variablen wie $userid zuweisen, um bestimmte UDM-Felder zu erfassen und mehr Kontext in der resultierenden Erkennungsausgabe bereitzustellen. |
$failed_count = count($e.metadata.id) |
condition-Abschnitt |
Erforderlich, damit eine Regel eine Erkennung generiert. Definiert den Erkennungsgrenzwert im Abschnitt condition. Wenn Sie beispielsweise #e > 5 verwenden, muss die Ereignisanzahl fünf (5) überschreiten, damit eine Benachrichtigung ausgelöst wird. Auch wenn Sie keine Berechnungen durchführen, benötigen Sie einen condition-Abschnitt und müssen die Existenz der Ereignisvariable angeben (z. B. #e). Analysieren Sie die Baseline Ihrer Umgebung, um Schwellenwerte festzulegen, die verdächtige Aktivitäten erkennen und gleichzeitig falsch positive Ergebnisse minimieren. Auch wenn Sie keine Berechnungen durchführen, benötigen Sie einen condition-Abschnitt und müssen die Existenz der Ereignisvariablen angeben, z. B. #e. |
#e > 5 oder $e |
Das folgende Beispiel veranschaulicht die Funktionsweise dieser Struktur.
Beispiel: Brute-Force-Angriff erkennen (mehrere fehlgeschlagene Anmeldungen)
Im folgenden Beispiel werden mehrere fehlgeschlagene Anmeldeversuche für einen einzelnen Nutzer innerhalb eines Zeitraums von 24 Stunden erkannt:
rule DailyFailedLoginAttempts { meta: author = "Alex" description = "Detects multiple failed login attempts for a single user within a day." severity = "Medium" events: $e.metadata.event_type = "USER_LOGIN" $e.security_result.action = "FAIL" $e.principal.user.userid != "" $userid = $e.principal.user.userid match: $userid over 1d outcome: $daily_failed_login_count = count($e.metadata.id) condition: $daily_failed_login_count > 5 }
Suche in eine YARA-L-Regel umwandeln
So wandeln Sie eine endgültige Suchanfrage in eine zuverlässige Regel zum Generieren von erkannten Inhalten um:
- Rufen Sie in Google SecOps den Regeleditor auf.
- Neue Regel erstellen
- Fügen Sie die Suchanfrage ein und passen Sie sie an die Regelstruktur an. Dazu gehört Folgendes:
- Abschnitt
meta: Definiert die Metadatenregel, einschließlich des Regelnamens, des Autors und des Schweregrads. - Abschnitt
event: Erforderlich. Im Gegensatz zur Suche müssen Sie eine benannteevent-Abschnittsüberschrift haben. - Ereignisvariablen: Deklarieren und verweisen auf bestimmte Ereignisse (oder Gruppen von Ereignissen) in Ihrer Logik.
- Abschnitt
matchmit unterstützten Zeiträumen: Hier werden die Gruppierungsschlüssel und die Zeitparameter (z. B.5moder1d) angegeben. Hinweis: Wenn Sie in Regeln einen Abschnittmatchverwenden, müssen Sie einen Zeitraum hinzufügen. - Abschnitt
condition: Hier wird die endgültige Logik oder der Schwellenwert definiert, der erfüllt sein muss, damit eine Regel ausgelöst wird.
- Abschnitt
Erweitert: Regel für mehrere Ereignisse erstellen
Mit einer Regel für mehrere Ereignisse können Sie verschiedene Arten von Aktivitäten, die innerhalb eines bestimmten Zeitrahmens stattfinden, in Beziehung setzen. Anstatt ein einzelnes Ereignis zu betrachten, verknüpfen Sie mehrere Ereignisse, z. B. die Anmeldung eines Nutzers und den anschließenden ungewöhnlichen Dateidownload, um komplexe Bedrohungen zu identifizieren.
Für eine Regel für mehrere Ereignisse sind die folgenden Abschnitte erforderlich:
meta: Enthält den Regelnamen und beschreibende Details.events: Definiert Ihre Datenquellen und Filter mithilfe von Ereignisvariablen.match: Legt den Zeitraum und die Platzhaltervariable fest, die zum Überbrücken Ihrer Ereignisse verwendet wird.outcomeErfasst zusätzlichen Kontext für die Benachrichtigung. Regeln für mehrere Ereignisse erfordern eine Aggregationsfunktion.condition: Gibt an, welche Ereignisvariablen vorhanden sein müssen, damit die Regel ausgelöst wird.
So erstellen Sie eine Regel mit mehreren Ereignissen:
- Ereignisvariablen definieren: Definieren Sie im Abschnitt „Ereignisse“
$e1, um"PROCESS_LAUNCH"-Ereignisse zu erfassen, und$e2, um bestimmte schädliche Dateihashes zu erfassen. - Mit Platzhaltern korrelieren: Verwenden Sie die Platzhaltervariable
$user, um diese beiden unterschiedlichen Ereignisstreams über eine gemeinsame Hauptnutzer-ID (z. B.$user = $e1.principal.user.userid and $user = $e2.principal.user.userid) zu verbinden. - Übereinstimmung gruppieren: Im Abschnitt
matchgeben Sie an, dass diese Ereignisse für dieselbe$userinnerhalb eines bestimmten Zeitfensters, z. B. 5 Minuten (5m), eintreten müssen.
Beispiel: Regel für mehrere Ereignisse erstellen
Im folgenden Beispiel steht
$e1für einPROCESS_LAUNCH-Ereignis und$e2für ein Ereignis mit einem bestimmten schädlichen Hash. Die Platzhaltervariable$userkorreliert diese Ereignisse anhand derselben primären User-ID.rule MultiEventExample { meta: author = "Alex" description = "Detects a bad hash execution or a process launch from a specific IP for the same user." events: $e1.principal.ip = "1.1.1.1" $e1.metadata.event_type = "PROCESS_LAUNCH" $e2.target.file.sha256 = "badhash..." $user = $e1.principal.user.userid $user = $e2.principal.user.userid match: $user over 5m condition: $e1 or $e2 }
Die folgenden Regelkomponenten beschreiben die im Beispiel verwendete Logik:
- Ereignisvariablen: Es wurden zwei Ereignisvariablen definiert,
$e1und$e2. Die Platzhaltervariable$userwurde verwendet, um diese Ereignisse über das gemeinsame Felduseridzu verknüpfen. - Abschnitt
match: Für diese Regel mit mehreren Ereignissen wurde ein Abschnittmatcheingefügt, um die Ereignisse nach Nutzer zu gruppieren und ein Hop-Zeitfenster von fünf Minuten (5m) anzugeben, um die Ereignisse zu korrelieren. - Abschnitt
condition: Hier wird die Logik zum Auslösen der Benachrichtigung definiert. In diesem Beispiel wird ein Alarm ausgelöst, wenn das erste oder das zweite Ereignis vorhanden ist.
Andere Tools zum Erstellen Ihrer Abfrage verwenden
Diese Tools sind wichtige Hilfsmittel zum Schreiben, Validieren und Beschleunigen der Einführung von YARA-L:
- UDM-Suchtool: Sie können direkt in der Benutzeroberfläche nach UDM-Feldnamen, ‑Definitionen und ‑Datentypen suchen und darauf verweisen. Wenn die Feld-ID unbekannt ist, sollten Sie diese Referenz zuerst prüfen.
- Suche mit natürlicher Sprache nach YARA-L: Geben Sie in der Suchleiste Beschreibungen ein, um Ihre erste Abfrage zu erstellen oder entsprechende YARA-L-Vorschläge zu erhalten oder zu übersetzen.
- SPL → YARA-L Translator (Labs-Tool): Wenn Sie von Plattformen von Mitbewerbern wechseln, können Sie mit diesem Tool (im Bereich Labs verfügbar) alte Splunk-SPL-Abfragen in YARA-L konvertieren. So wird ein strukturierter Ausgangspunkt geschaffen, der die Migration beschleunigt und die Erkennungslogik optimiert. Wenn Sie das Labs-Tool verwenden möchten, rufen Sie in Google SecOps IhrInstanzname.chronicle.security/labs auf.
Nächste Schritte
- Vollständige YARA-L 2.0-Syntax
- Funktionen in YARA-L 2.0
- Beispiele finden Sie in den folgenden Ressourcen:
- Beispiele: YARA-L 2.0-Abfragen
- Google SecOps-Community)
- Weitere Informationen zu den folgenden YARA-L-Ressourcen:
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten