YARA-L 2.0 – Regelstruktur und Best Practices

Unterstützt in:

In diesem Dokument werden die von Google Security Operations empfohlenen Best Practices für das Schreiben von Regeln in YARA-L 2.0 beschrieben.

Nullwerte herausfiltern

Felder werden möglicherweise automatisch in den Ereignissen ausgelassen, für die Sie Regeln ausführen. Wenn Felder weggelassen werden, wird standardmäßig der Wert 0 verwendet.

Wenn Sie beispielsweise keinen Stringwert angeben, wird standardmäßig "" verwendet.

Wenn Sie zwei Felder gleichsetzen, die beide ausgelassen werden, werden sie möglicherweise beide standardmäßig auf ihre Nullwerte gesetzt. Das kann zu unbeabsichtigten Übereinstimmungen führen, wenn zwei Felder übereinstimmen, weil sie beide den Wert „0“ haben. Sie können dieses Verhalten vermeiden, indem Sie den Wert „0“ explizit angeben.

Wenn Sie beispielsweise eine Regel haben, mit der zwei Ereignisse auf Grundlage von zwei Feldern gleichgesetzt werden, besteht die Möglichkeit, dass beide Felder leer sind und es zu einer Übereinstimmung kommt:

$e1.field1 = $e2.field2

Wenn sowohl e1.field1 als auch e2.field2 in den Daten ausgelassen werden, ist "" = "" wahr, was zu einer Übereinstimmung führt.

Die folgenden Vergleichsausdrücke sorgen dafür, dass keine Übereinstimmung gefunden wird, da e1.field1 und e2.field2 keine Daten enthalten:

 $e1.field1 = $e2.field2
 $e1.field != ""

Nullwerte und regeln für die Datenanreicherung

Wenn eine Regel von angereicherten Daten abhängt, die noch nicht aktualisiert wurden, kann der Wert null oder 0 sein. Daher empfiehlt es sich, Nullwerte (Nullprüfungen) für regelerabhängige Regeln herauszufiltern. Weitere Informationen dazu, wie Google SecOps 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, können Sie die Regel optimieren, indem Sie einen Filter für Ereignistypen hinzufügen. Dadurch wird die Anzahl der Ereignisse reduziert, die von 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 Ereignisbereichs hinzu. Gleichheitsfilter sollten auch vor regulären Ausdrücken oder anderen Vergleichen stehen. Filter werden in der Reihenfolge angewendet, in der sie in der Regel erscheinen.

Community-Blogs zur Arbeit mit YARA-L:

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