Erste Schritte: YARA-L 2.0 in SecOps

Unterstützt in:

YARA-L 2.0 ist die einzigartige, hochstrukturierte Abfragesprache, die Google Security Operations für alle Suchvorgänge, Dashboards und regelbasierten Bedrohungserkennungen zugrunde liegt. 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.
  • Informationen zum Einstieg in die Abfragemigration 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-Bedingungen (outcomes und match) übersetzt.

YARA-L-Struktur

Jede YARA-L-Abfrage ist in verschiedene benannte Abschnitte unterteilt, die das Verhalten der Abfrage bestimmen.

Diese Struktur ermöglicht eine 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. Beispiel: Autor (security team), Beschreibung (Detects multiple failed user logins within 10-minute windows) und Schweregrad (High).Weitere Informationen finden Sie unter Syntax des Abschnitts 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. Weitere Informationen finden Sie unter Syntax für den Abschnitt 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 im Abschnitt 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 liefert Statistiken (z. B. count(), avg()). Weitere Informationen finden Sie im Abschnitt Syntax für den Abschnitt outcome.
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 (EKG) 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. Die Logik erfordert nur, dass Sie 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. Nach Anmeldeereignissen filtern:
    metadata.event_type = "USER_LOGIN"

    Tipp: Sie können die Abschnittsüberschrift events: bei Ihren Suchanfragen weglassen. Standardmäßig wird dieser Abschnitt von der Suchsyntax impliziert.

  3. Fügen Sie event-Aktionen für fehlgeschlagene Anmeldungen von Nutzern hinzu, 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: Mit Platzhaltern können Sie bestimmte Datenpunkte in der Ausgabe Ihrer Anfrage erfassen und anzeigen.

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 Gruppen von Ereignissen 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) aus.

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 fehlgeschlagenen Anmeldeereignisse 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 der fehlgeschlagenen Anmeldungen 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.

Sobald 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: Erstellen Sie Abfragen direkt in Ihren Dashboards. Alternativ können Sie kuratierte Dashboards kopieren und die darin enthaltenen Abfragen als Ausgangspunkt bearbeiten.
  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 Abschnitt events ein erforderlicher Ausgangspunkt. Anschließend 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

  • In ähnlicher Weise können Sie 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 die Berechnung von login_count für bestimmte Nutzer mithilfe der Abschnitte match und outcome veranschaulicht:

    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 Regelnamen 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 fungieren 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 deklariert, 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 Die Abfrage wird in einen rule-Block eingeschlossen und der Erkennung wird ein eindeutiger Name zugewiesen. 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 allgemeinen 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. Durch die explizite Verwendung des Operators over wird ein springendes Fenster erstellt.
$userid over 1d
Abschnitt „outcome“ 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 abgeschlossene Suchanfrage in eine zuverlässige Regel zum Generieren von Erkennungen 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:
    • meta-Abschnitt: Definiert die Metadatenregel, einschließlich Regelname, Autor und Schweregrad
    • Abschnitt event: Erforderlich. Anders als bei der Suche muss es eine benannte event-Abschnittsüberschrift geben.
    • Ereignisvariablen: Deklarieren und verweisen auf bestimmte Ereignisse (oder Gruppen von Ereignissen) in Ihrer Logik.
    • match-Abschnitt mit unterstützten Zeitfenstern: Gibt Ihre Gruppierungsschlüssel an und definiert die Zeitparameter (z. B. 5m oder 1d). Hinweis: Wenn Sie einen match-Abschnitt in Regeln verwenden, müssen Sie ein Zeitfenster hinzufügen.
    • Abschnitt condition: Definiert die endgültige Logik oder den Schwellenwert, der erfüllt sein muss, um eine Regel auszulösen.

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 sich ein einzelnes Ereignis anzusehen, verknüpfen Sie mehrere Ereignisse, z. B. wenn sich ein Nutzer anmeldet und dann sofort einen ungewöhnlichen Dateidownload durchführt, um komplexe Bedrohungen zu erkennen.

Für eine Regel für mehrere Ereignisse sind die folgenden Abschnitte erforderlich:

  • meta: Enthält den Namen der Regel 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 Hashes schädlicher Dateien zu erfassen.
  2. Mit Platzhaltern korrelieren: Verwenden Sie die Platzhaltervariable $user, um diese beiden unterschiedlichen Ereignisstreams über eine gemeinsame primäre User-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 unerlässlich, um YARA-L zu schreiben, zu validieren und die Einführung zu beschleunigen:

  • 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 zuerst diese Referenz prüfen.
  • Suche in natürlicher Sprache in 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