Best Practices für YARA-L
In diesem Dokument werden die von Google Security Operations empfohlenen Best Practices zum Schreiben von Regeln in YARA-L beschrieben.
Nullwerte herausfiltern
Felder können in Ereignissen, für die Ihre Regeln ausgeführt werden, automatisch weggelassen werden. Wenn Felder weggelassen werden, werden sie standardmäßig auf den Nullwert gesetzt.
Wenn ein Stringwert beispielsweise weggelassen wird, wird standardmäßig ""
verwendet.
Wenn Sie zwei Felder gleichsetzen, die beide weggelassen werden, werden sie möglicherweise beide auf den Standardwert „0“ 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 weggelassen werden, ist "" = ""
„true“, was zu einer Übereinstimmung führt.
Mit den folgenden Vergleichsausdrücken wird sichergestellt, dass es keine Übereinstimmung gibt, da e1.field1
und e2.field2
keine Daten enthalten:
$e1.field1 = $e2.field2
$e1.field != ""
Ereignistypfilter hinzufügen
Im folgenden Beispiel werden die IP-Adressen für jedes UDM-Ereignis mit der Referenzliste abgeglichen, was viele Ressourcen beansprucht:
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 mit Ihrer YARA-L-Regel nur UDM-Ereignisse eines bestimmten Ereignistyps erkannt werden, können Sie die Regel mit einem Ereignistypfilter optimieren, da so die Anzahl der Ereignisse reduziert wird, die mit der Regel ausgewertet werden müssen.
events:
// For every UDM event of type NETWORK_DNS, check if the target.ip is
// listed in the suspicious_ip_addresses reference list.
$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. Die Filter werden in der Reihenfolge angewendet, in der sie in der Regel vorkommen.
Community-Blogs zur Zusammenarbeit mit YARA-L:
- YARA-L-Grundlagen
- YARA-L-Regelvariablen
- YARA-L-Operatoren und Modifikatoren
- Einzelne Ereignisregel mithilfe eines regulären Ausdrucks erstellen
- Ereignisse in Regeln zusammenfassen
- Schwellenwert für Bedingungen festlegen
- Navigation im Regeleditor
- YARA-L-Regeloptionen
- Regel für einzelne Ereignisse erstellen – Stringübereinstimmung
- Mehrere Ereignisse in einer Regel kombinieren – Ereignisse zusammenführen
- Mehrerereignisregel erstellen – Ereignisse sortieren
- Regel für mehrere Ereignisse erstellen – Mehrere Joins und Anzahlen in Bedingungen
- Mehrerereignisregel erstellen – Gleitende Zeitfenster
- Ergebnisse in einer Regel für ein einzelnes Ereignis
- Ergebnisse in einer Regel mit mehreren Ereignissen – Zählungen
- Ergebnisse in Regeln für mehrere Ereignisse – Arrays
- Ergebnisse in einer Regel mit mehreren Ereignissen – Max., Min., Summe
- Ergebnisse – Risikobewertung, bedingte logische und mathematische Operatoren
- Funktionen – string.concat
- Funktionen – string.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