YARA-L 2.0 規則結構和最佳做法

支援的國家/地區:

本文說明 Google Security Operations 建議的最佳做法,協助您在 YARA-L 2.0 中編寫規則。

篩除零值

在您執行規則的事件中,欄位可能會自動遭到省略。如果省略欄位,系統會將欄位預設為零值。

舉例來說,如果省略字串值,系統會預設為 ""

如果您比較兩個空的欄位是否相等,這兩個欄位可能都會預設為零值。這可能會導致兩個欄位因值皆為零而比對成功,但這並非預期結果。如要避免這種情況,請明確指定零值。

舉例來說,如果您有根據兩個欄位比對兩個事件的規則,這兩個欄位可能都是空的,導致比對結果如下:

$e1.field1 = $e2.field2

如果資料中同時省略 e1.field1e2.field2"" = "" 為 true,就會造成比對結果相符。

下列比較運算式可確保您不會獲得相符結果,因為 e1.field1e2.field2 不含任何資料:

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

零值和需視資料強化情況而定的規則

如果規則依據的強化資料尚未更新,值可能會是空值或零。 因此,建議您對依附於擴充功能的規則篩除零值 (空值檢查)。瞭解 Google SecOps 如何擴充事件和實體資料,以及如何在規則中使用擴充的背景資訊資料

新增活動類型篩選器

在下列範例中,系統會根據參照清單檢查每個 UDM 事件的 IP 位址,耗用大量資源:

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

如果 YARA-L 規則只偵測特定事件類型的 UDM 事件,新增事件類型篩選器可減少規則需要評估的事件數量,有助於最佳化規則。

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

在「事件」部分的開頭新增這些篩選器。此外,您也應將等式篩選器放在規則運算式或其他比較項目之前。系統會按照篩選器在規則中的顯示順序套用篩選器。

如要參閱有關使用 YARA-L 的社群部落格文章,請參閱:

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。