Best Practices für YARA-L

Unterstützt in:

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: