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.

Ein weggelassener Stringwert wird beispielsweise standardmäßig auf "" gesetzt.

Wenn Sie zwei Felder auslassen, die beide weggelassen werden, können beide standardmäßig den Wert Null erhalten. Dies kann zu unbeabsichtigten Übereinstimmungen führen, wenn zwei Felder übereinstimmen, da beide den Wert Null haben. Sie können dies vermeiden, indem Sie den Nullwert explizit angeben.

Wenn Sie beispielsweise eine Regel haben, die zwei Ereignisse auf Basis zweier Felder 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 Ereignisbereichs hinzu. Sie sollten Gleichheitsfilter auch vor Regex oder andere Vergleiche einfügen. Die Filter werden in der Reihenfolge angewendet, in der sie in der Regel vorkommen.