YARA-L 最佳做法

支援的國家/地區:

本文說明 Google Security Operations 建議的 YARA-L 規則編寫最佳做法。

篩除零值

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

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

如果您將兩個都省略的欄位視為相等,這兩個欄位可能會預設為零值。這可能會導致非預期的比對結果,因為兩個欄位都為零值,所以比對結果相符。如要避免這種情況,請明確指定零值。

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

$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 專業人員尋求答案。