Best Practices für YARA-L
In diesem Dokument werden die von Google Security Operations empfohlenen Best Practices zum Erstellen von Regeln in YARA-L beschrieben.
Nullwerte herausfiltern
Felder werden möglicherweise automatisch aus den Ereignissen entfernt, auf die Sie Ihre Regeln anwenden. Wenn Felder weggelassen werden, werden standardmäßig Nullwerte verwendet.
Wenn ein Stringwert beispielsweise weggelassen wird, wird standardmäßig ""
verwendet.
Wenn Sie zwei Felder gleichsetzen, die beide weggelassen werden, werden sie möglicherweise beide standardmäßig auf Null gesetzt. Dies kann zu unbeabsichtigten Übereinstimmungen führen, wenn zwei Felder übereinstimmen, weil sie beide Nullwerte haben. Sie können dieses Verhalten vermeiden, indem Sie den Nullwert explizit angeben.
Wenn Sie beispielsweise eine Regel haben, die zwei Ereignisse anhand von zwei Feldern gleichsetzt, besteht die Möglichkeit, dass beide Felder leer sind, was zu einer Übereinstimmung führt:
$e1.field1 = $e2.field2
Wenn sowohl e1.field1
als auch e2.field2
in den Daten fehlen, ist "" = ""
wahr und es kommt zu einer Übereinstimmung.
Mit den folgenden Vergleichsausdrücken wird sichergestellt, dass keine Übereinstimmung gefunden wird, da e1.field1
und e2.field2
keine Daten enthalten:
$e1.field1 = $e2.field2
$e1.field != ""
Nullwerte und anreicherungsabhängige Regeln
Wenn eine Regel von angereicherten Daten abhängt, die noch nicht aktualisiert wurden, ist der Wert möglicherweise „null“ oder „0“. Daher empfiehlt es sich, Null-Werte (Null-Prüfungen) bei anreicherungsabhängigen Regeln heraus zu filtern. Weitere Informationen dazu, wie Google Security Operations Ereignis- und Entitätsdaten anreichert und wie Sie kontextbezogene Daten in Regeln verwenden
Filter für Ereignistyp hinzufügen
Im folgenden Beispiel werden die IP-Adressen für jedes UDM-Ereignis mit der Referenzliste abgeglichen, was viele Ressourcen verbraucht:
events:
// For every UDM event, check if the target.ip is listed in
// the suspicious_ip_addresses reference list.
$e.target.ip in %suspicious_ip_addresses
Wenn Ihre YARA-L-Regel nur UDM-Ereignisse eines bestimmten Ereignistyps erkennt, kann das Hinzufügen eines Ereignistypfilters dazu beitragen, Ihre Regel zu optimieren, indem die Anzahl der Ereignisse reduziert wird, die von der Regel ausgewertet werden müssen.
events: // Prüfen Sie für jedes UDM-Ereignis vom Typ NETWORK_DNS, ob die target.ip in der Referenzliste suspicious_ip_addresses aufgeführt ist. $e.metadata.event_type = "NETWORK_DNS" $e.target.ip in %suspicious_ip_addresses
Fügen Sie diese Filter am Anfang des Abschnitts „Ereignisse“ hinzu. Außerdem sollten Sie Gleichheitsfilter vor Regex- oder anderen Vergleichen platzieren. Filter werden in der Reihenfolge angewendet, in der sie in der Regel erscheinen.
Community-Blogs zur Arbeit mit YARA-L:
- Grundlagen von YARA-L
- YARA-L-Regelvariablen
- YARA-L-Operatoren und ‑Modifikatoren
- Regel für ein einzelnes Ereignis mit einem regulären Ausdruck erstellen
- Ereignisse in Regeln aggregieren
- Schwellenwert in Bedingungen festlegen
- Navigation im Regeleditor
- YARA-L-Regeloptionen
- Regel für einzelne Ereignisse erstellen – Stringabgleich
- Mehrere Ereignisse in einer Regel kombinieren – Ereignisse zusammenführen
- Mehrere Ereignisse in einer Regel kombinieren – Ereignisse sortieren
- Mehrere Ereignisse in einer Regel verwenden – mehrere Zusammenführungen und Zählungen in Bedingungen
- Regel für mehrere Ereignisse erstellen – Gleitende Zeitfenster
- Ergebnisse in einer einzelnen Ereignisregel
- Ergebnisse in einer Regel für mehrere Ereignisse – Zählungen
- Ergebnisse in Regeln für mehrere Ereignisse – Arrays
- Ergebnisse in einer Regel für mehrere Ereignisse – Max., Min., Summe
- Ergebnisse – Risikobewertung, bedingte Logik und mathematische Operatoren
- Funktionen – strings.concat
- Funktionen – strings.coalesce
- Funktionen – Netzwerk
- Literaturverzeichnis
- CIDR-Referenzlisten
- Regex-Referenzlisten
- Strings-Funktion – Groß- oder Kleinschreibung
- Regulärer Ausdruck – re.regex
- Reguläre Ausdrucksfunktion – re.capture
- Stringfunktion: strings.base64_decode
- Reguläre Ausdrucksfunktion – re.replace
- Einführung in die statistische Suche
- Statistische Suche – mehr als nur eine Zählung
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten