複合偵測項目
複合式偵測功能可讓您互連規則,將某項規則的輸出內容做為另一項規則的輸入內容。這項功能可讓您建立更複雜且更具彈性的規則。複合式偵測功能會關聯及分析不同資料來源和時間範圍的事件,克服單一事件偵測的限制。
複合式偵測的優點
揭露多階段攻擊:網路攻擊通常是多面向且相互關聯的。複合式偵測功能會連結看似孤立的事件,揭露攻擊敘事。舉例來說,複合規則可以識別整個攻擊序列,例如初始入侵、隨後的權限提升和資料竊取。
減少快訊疲乏:實作消費者規則,優先處理重大威脅,並減少快訊疲乏。這些規則會整合並篩除輸入規則產生的干擾警示,讓您能更專注於回應,有助於優先處理影響重大的事件,並減少警示疲乏。
提升偵測準確度:整合 UDM 事件、其他規則偵測結果、實體資訊、UEBA 發現項目和資料表中的深入分析,建立準確的偵測邏輯。
簡化複雜邏輯:將複雜的偵測情境分解為可管理、相互連結且可重複使用的規則,簡化開發和維護作業。
複合偵測項目的術語和概念
偵測結果:規則的結果,也可稱為快訊。
複合:一系列相互連結的規則,其中一項規則的輸出會做為下一項規則的輸入。舉例來說,在複合規則序列
rule1 -> rule2
->rule3
中,rule1
產生的偵測結果會傳遞至rule2
,後者會處理這些結果,產生新的偵測結果。rule3
接著會使用這些偵測結果,產生最終輸出內容。輸入規則:偵測結果會做為其他規則輸入內容的規則。任何規則都可以做為輸入規則,不需要特別指定。輸入規則會將實體和事件做為輸入內容。 不會將偵測結果做為輸入內容。
複合規則:在規則文字中使用偵測結果做為輸入內容的規則。複合規則必須包含
match
區段。
進階概念
單一事件偵測規則
Google SecOps 不允許單一事件複合規則。也就是說,凡是使用偵測結果做為輸入來源的規則,都必須有 match
區段。
偵測延遲
由於排程行為,建議您只在單一事件輸入規則中撰寫複合規則。單一事件規則會近乎即時執行,因此通常在複合規則執行時,即可取得偵測結果。 如果複合規則以多重事件規則做為輸入內容,輸入規則可能會在複合規則排定的執行時間之後執行。這可能會導致複合規則延遲或錯過偵測結果。
TestRule 和 Retrohunt
測試或執行複合規則的追溯搜尋時,系統只會使用現有偵測結果,執行您選取的特定規則。如要執行整個複合規則,您必須從序列中的第一條規則手動啟動回溯搜尋,等待每次執行完成,然後繼續執行下一條規則。
對規則執行測試時,系統不會將偵測結果保留或寫入資料庫,且複合規則需要資料庫中存在輸入偵測結果。
對規則執行測試時,系統不會將偵測結果保留或寫入資料庫。由於複合規則需要資料庫中存在輸入偵測結果才能運作,因此您無法使用 TestRule 驗證複合規則。
建構複合規則
您可以結合輸入規則和複合規則,建立複合規則。
輸入規則
輸入規則是複合規則的基礎。偵測特定事件或條件,並在合併後指出惡意活動。如要設定輸入規則,請按照下列步驟操作:
建立新規則或重複使用現有規則。
停用快訊。這樣一來,這些輸入規則就不會產生個別快訊。使用這項設定,您可以優先處理複合規則產生的重要程度較高的快訊,這些規則會評估整個事件鏈。
使用
outcome
區段定義可供鏈結規則存取的變數。
下列製作人規則範例會偵測登入失敗情形。
rule failed_login {
meta:
events:
$e.metadata.event_type = "USER_LOGIN"
any $e.security_result.action = "BLOCK"
outcome:
$target_user = $e.target.user.userid
condition:
$e
}
這項規則會找出遭封鎖的登入作業,並提供相關聯的使用者。
複合規則
撰寫使用偵測結果的規則,與撰寫使用 UDM 的規則大致相同,但來源和可用欄位有所不同。如要參照偵測欄位,請使用關鍵字 detection
做為來源:$eventname.detection.field1.field2
。
detection
來源下可用的子欄位位於集合資源中。
以下是集合中的常見欄位:
$d.detection.detection.rule_id
$d.detection.detection.detection_fields["match_var_name"]
$d.detection.detection.outcomes["outcome_name"]
下列範例規則會偵測未啟用多重驗證的登入、列舉和外洩行為。
rule login_enumeration_exfiltration {
meta:
description = "Detects when a user logs in without multifactor authentication (MFA) and then performs enumeration and exfiltration"
rule_name = "Login Without MFA, Enumeration, Exfiltration"
severity = "High"
events:
// Detection with name "Console Login Without MFA"
// The affected user is saved as $target_user
$login_without_mfa.detection.detection.rule_name = /Console Login Without MFA/
$target_user = $login_without_mfa.detection.detection.outcomes["target_user"]
// Any detection with a rule name containing 'enumeration'
// The user performing enumeration is the user that logged in without mfa
$enumeration.detection.detection.rule_name = /enumeration/ nocase
$enumeration.detection.detection.outcomes["principal_users"] = $target_user
// Any detection with the mitre tactic 'TA0010' (Exfiltration)
// The user performing exfiltration is the user that logged in without mfa
$exfiltration.detection.detection.rule_labels["tactic"] = "TA0010"
$exfiltration.detection.detection.outcomes["principal_users"] = $target_user
match:
// Looks for detections over a 24 hour period
$target_user over 24h
condition:
// All 3 must occur for a single user
$login_without_mfa and $enumeration and $exfiltration
}
階層式偵測
複合偵測功能可讓您建立階層式偵測系統。低層級的輸入規則會找出孤立的可疑事件。較高層級的複合規則隨後會使用這些輸入規則的輸出內容,在時間、實體和資料來源之間建立關聯。 這種做法有助於將這項資訊與其他來源的資料建立關聯,偵測單一事件規則可能錯過的多階段攻擊模式。
Google Security Operations 最多支援三層組合,可在偵測深度邏輯和可管理複雜度之間取得平衡。
例如:
第 1 級:輸入規則會偵測個別可疑事件。例如登入失敗事件、異常檔案存取活動。
第 2 級:複合規則會將第 1 級的偵測結果相互關聯。舉例來說,登入失敗事件後接著發生可疑的檔案存取活動。
第 3 級:高階複合規則會結合第 2 級的偵測結果和其他資料,進行更精密的偵測。舉例來說,驗證的偵測等級為 2,而所用裝置的安全狀態偵測等級為 2。
編寫複合規則時的注意事項
更新一或多個複合規則中使用的輸入規則時,系統會自動建立該輸入規則的新版本。這適用於邏輯更新 (condition
、events
、outcomes
) 和中繼資料更新 (名稱、說明、嚴重程度)。複合規則會繼續使用新版本運作。建議您測試更新後的輸入規則及其下游複合規則,確保行為符合預期。
限制
複合規則有下列限制。
僅偵測規則和實體風險分數
僅偵測規則 (僅使用偵測資料做為來源,而非事件或實體資料) 不會影響實體風險分數。為僅偵測規則設定的任何風險分數,只適用於該規則建立的偵測結果。也不會計入任何匯總實體風險分數。
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。