套用 YARA-L 2.0 規則最佳做法
本文說明 Google Security Operations 建議的最佳做法,協助您在 YARA-L 2.0 中編寫規則。
篩除零值
系統可能會在您執行規則的事件中自動省略欄位。如果省略欄位,系統會預設為零值。
舉例來說,如果省略字串值,系統會預設為 ""。
如果您比較兩個遭省略的欄位是否相等,這兩個欄位可能會預設為零值。這可能會導致兩個欄位因值皆為零而比對成功,但這並非預期結果。如要避免這種情況,請明確指定零值。
舉例來說,如果您有根據兩個欄位比對兩個事件的規則,這兩個欄位可能都是空的,導致系統比對成功:
$e1.field1 = $e2.field2
如果資料中省略 e1.field1 和 e2.field2,"" = "" 會為 true,導致相符。
下列比較運算式可確保您不會獲得相符項目,因為 e1.field1 和 e2.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 的社群網誌,請參閱:
- YARA-L 基礎知識
- YARA-L 規則變數
- YARA-L 運算子和修飾符
- 使用規則運算式建立單一事件規則
- 在規則中彙整事件
- 在條件中設定門檻
- 規則編輯器導覽
- YARA-L 規則選項
- 建立單一事件規則 - 字串比對
- 建立多重事件規則 - 聯結事件
- 建立多重事件規則 - 排序事件
- 建立多重事件規則 - 條件中的多個聯結和計數
- 建立多重事件規則 - 滑動視窗
- 隆重推出單一事件規則中的結果
- 多重事件規則中的結果 - 計數
- 多重事件規則中的結果 - 陣列
- 多重事件規則中的結果 - 最大值、最小值、總和
- 結果 - 風險分數、條件邏輯和數學運算子
- 函式 - strings.concat
- 函式 - strings.coalesce
- 函式 - 網路
- 參考清單
- CIDR 參考清單
- 規則運算式參考清單
- 字串函式 - 大寫或小寫
- 規則運算式函式 - re.regex
- 規則運算式函式 - re.capture
- 字串函式 - strings.base64_decode
- 規則運算式函式 - re.replace
- 開始使用統計搜尋
- 統計資料搜尋 - 不只是計數
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求解答。