Erste Schritte mit YARA-L

Unterstützt in:

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, eval und lookup in YARA-L-outcomes- und match-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

Alle Daten in Google SecOps werden mit zwei primären Methoden durchsucht, je nachdem, was Sie erreichen möchten: Filtersuche und statistische Suche (Aggregationen).

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:

  1. Rufen Sie in Google SecOps die Seite Suche auf.
  2. 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.

  3. event-Aktionen für fehlgeschlagene Anmeldungen von Nutzern hinzufügen, die keine leere userid haben.
    metadata.event_type = "USER_LOGIN"
    security_result.action = "FAIL"
    principal.user.userid != ""
  4. 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 $userid oder $ip, um Übereinstimmungen zwischen verschiedenen Ereignisvariablen zu finden. Mit $userid können Sie beispielsweise die Nutzer-ID für An- und Abmeldeereignisse verknüpfen.
  • Ergebnisse gruppieren: Verwenden Sie im Abschnitt match Platzhaltervariablen, 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.

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 (nach userid).
  • 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.

  1. Verwenden Sie den Abschnitt match, um die Ereignisse für fehlgeschlagene Anmeldungen nach userid zu gruppieren:

    metadata.event_type = "USER_LOGIN"
    security_result.action = "FAIL"
    principal.user.userid != ""
    
    match:
      principal.user.userid
    
  2. Verwenden Sie die count fehlgeschlagener Log-ins für jeden Nutzer ($failed_login_count), die durch die Variable outcome definiert wird:

    metadata.event_type = "USER_LOGIN"
    security_result.action = "FAIL"
    principal.user.userid != ""
    
    match:
      principal.user.userid
    
    outcome:
      $failed_login_count = count(metadata.id)
    
  3. Führen Sie diese Suche aus, um die Ergebnisse zu sehen.

  4. Optional: Fügen Sie dem Abschnitt match ein Zeitelement hinzu (in diesem Fall day). Aktualisieren Sie dann die Variable outcome, 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:

  1. Wenn die Ergebnisse angezeigt werden, klicken Sie auf den Tab Visualisieren > Zum Dashboard hinzufügen.
  2. Widget konfigurieren:
    1. Geben Sie dem Widget einen Namen (z. B. "Daily Failed Login").
    2. Zeitraum auswählen.
    3. Wählen Sie aus, ob Sie es einem vorhandenen oder neuen Dashboard hinzufügen möchten.
    4. Klicken Sie auf Hinzufügen.
  3. 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.
  4. 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 events und match erstellen, um den Schweregrad ($severity) von Erkennungen anzuzeigen, die in hour-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 events und outcome erstellen, 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 match als auch outcome:

    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_count für bestimmte Nutzer mithilfe der Abschnitte match und outcome berechnet:

    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 Abschnitt events Ihrer 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
    }
    

So wandeln Sie eine endgültige Suchanfrage in eine zuverlässige Regel zum Generieren von erkannten Inhalten um:

  1. Rufen Sie in Google SecOps den Regeleditor auf.
  2. Neue Regel erstellen
  3. 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 benannte event-Abschnittsüberschrift haben.
    • Ereignisvariablen: Deklarieren und verweisen auf bestimmte Ereignisse (oder Gruppen von Ereignissen) in Ihrer Logik.
    • Abschnitt match mit unterstützten Zeiträumen: Hier werden die Gruppierungsschlüssel und die Zeitparameter (z. B. 5m oder 1d) angegeben. Hinweis: Wenn Sie in Regeln einen Abschnitt match verwenden, 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.

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:

  1. Ereignisvariablen definieren: Definieren Sie im Abschnitt „Ereignisse“ $e1, um "PROCESS_LAUNCH"-Ereignisse zu erfassen, und $e2, um bestimmte schädliche Dateihashes zu erfassen.
  2. 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.
  3. Übereinstimmung gruppieren: Im Abschnitt match geben Sie an, dass diese Ereignisse für dieselbe $user innerhalb eines bestimmten Zeitfensters, z. B. 5 Minuten (5m), eintreten müssen.

Beispiel: Regel für mehrere Ereignisse erstellen

  • Im folgenden Beispiel steht $e1 für ein PROCESS_LAUNCH-Ereignis und $e2 für ein Ereignis mit einem bestimmten schädlichen Hash. Die Platzhaltervariable $user korreliert 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, $e1 und $e2. Die Platzhaltervariable $user wurde verwendet, um diese Ereignisse über das gemeinsame Feld userid zu verknüpfen.
  • Abschnitt match: Für diese Regel mit mehreren Ereignissen wurde ein Abschnitt match eingefü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

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