在 YARA-L 2.0 中使用參照清單和資料表
您可以透過參照清單和資料表,比較事件欄位與自訂資料集,建構邏輯。您可以使用這些物件,在搜尋、資訊主頁和偵測功能中管理大量指標 (例如已知不良的 IP 或核准的主機名稱),而不必修改基礎語法。
您可以在規則的 events 或 outcome 區段中使用參照清單或資料表。如要進一步瞭解參照清單和資料表的行為與語法,請參閱「參照清單」和「使用資料表」。
套用參照清單和資料表語法
參照清單和資料表遵循類似的語法,由物件 ID 和作業所需的比對類型 (string、regex 或 CIDR) 定義。本節將說明如何使用各種參考資料清單的語法範例。
在 Google Security Operations 中,YARA-L 規則的 events 或 outcome 區段會使用參照清單和資料表,比較事件資料與上傳的資料集。這些函式會在規則評估程序中執行,用於篩選事件或擴充偵測結果。
如要檢查單一欄位是否與預先定義清單中的任何值相符 (例如已知惡意 IP 清單),請使用參照清單。
- STRING:
$e.principal.hostname in %string_list_name REGEX:
$e.principal.hostname in regex %regex_list_nameCIDR:
$e.principal.ip in cidr %cidr_list_name
如果參照資料具有資料列或資料欄結構,請使用資料表,以便將特定欄位對應至特定資料欄。
STRING:
$e.target.hostname in %table_name.column_nameREGEX:
$e.target.hostname in regex %table_name.column_nameCIDR:
$e.principal.ip in cidr %table_name.column_name
範例:參考清單語法和行為
以下範例說明如何為不同資料集類型建構查詢,以及如何對相符項目套用條件邏輯:
範例:查詢中的參照清單語法
// STRING reference list $e.principal.hostname in %string_reference_list // Regular expression reference list $e.principal.hostname in regex %regex_reference_list // CIDR reference list $e.principal.ip in cidr %cidr_reference_list
範例:資料表語法
// STRING data table $e.target.hostname in %data_table_name.column_name // Regular expression data table $e.target.hostname in regex %regex_table_name.column_name // CIDR data table $e.principal.ip in cidr %cidr_table_name.column_name
範例:not 和 nocase 運算子
nocase 運算子與 STRING 清單和 REGEX 清單相容。
// Exclude events whose hostnames match substrings in my_regex_list.
not $e.principal.hostname in regex %my_regex_list
// Event hostnames must match at least one string in my_string_list (case insensitive).
$e.principal.hostname in %my_string_list nocase
nocase 運算子與 STRING 清單和 REGEX 清單相容。
基於效能考量,Detection Engine 會限制參考清單的使用。
- 規則中的
in陳述式數量上限 (無論是否使用特殊運算子):10 - 使用
regex運算子的in陳述式數量上限:5 - 使用
cidr運算子的in陳述式數量上限:5
如要進一步瞭解參照清單行為和參照清單語法,請參閱「參照清單」。
為確保搜尋、資訊主頁和偵測功能維持最佳效能,YARA-L 引擎會強制執行下列限制:
- 查詢中的
in陳述式數量上限 (無論是否使用特殊運算子):7 - 使用
regex運算子的in陳述式數量上限:4 - 使用
cidr運算子的in陳述式數量上限:2
需要其他協助嗎?向社群成員和 Google SecOps 專業人員尋求答案。