Best Practices für YARA-L
In diesem Dokument werden die von Chronicle empfohlenen Best Practices für das Schreiben von Regeln in YARA-L beschrieben.
Nullwerte herausfiltern
In den Ereignissen, für die Sie Ihre Regeln ausführen, werden möglicherweise Felder automatisch weggelassen. 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, können beide den Standardwert null haben. Dies kann zu unbeabsichtigten Übereinstimmungen führen, wenn zwei Felder übereinstimmen, weil beide Werte null haben. Sie können dieses Verhalten vermeiden, indem Sie den Nullwert explizit angeben.
Wenn Sie beispielsweise eine Regel haben, die zwei Ereignisse basierend auf zwei Feldern gleicht, ist es möglich, 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“ (wahr) und führt zu einer Übereinstimmung.
Mit den folgenden Vergleichsausdrücken können Sie dafür sorgen, dass Sie keine Übereinstimmung erhalten, weil 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, wobei viele Ressourcen verbraucht werden:
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 durch Hinzufügen eines Ereignistypfilters optimieren, indem Sie die Anzahl der Ereignisse reduzieren, 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. Außerdem sollten Sie Gleichheitsfilter vor regulären Ausdrücken oder anderen Vergleichen platzieren. Filter werden in der Reihenfolge angewendet, in der sie in der Regel aufgeführt sind.