YARA-L 最佳做法

支援以下發布途徑:

本文說明 Google 安全作業團隊建議的 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 專家尋求解答。