复合检测

支持的语言:

通过复合检测,您可以将规则相互关联,使一条规则的输出充当另一条规则的输入。借助此功能,您可以创建更复杂、更灵活的规则。通过关联和分析不同数据源和时间范围内的事件,复合检测克服了孤立事件检测的局限性。

复合检测的优势

  • 揭示多阶段攻击:网络攻击通常是多方面且相互关联的。复合检测有助于关联看似孤立的事件,从而揭示攻击叙事。例如,复合规则可以识别整个攻击序列,例如初始入侵,然后是权限升级和数据渗漏。

  • 缓解提醒疲劳:通过实施消费者规则,优先处理重大威胁并缓解提醒疲劳。这些规则可整合并过滤输入规则生成的杂乱提醒,从而让您能够更专注于响应,有助于确定高影响事件的优先级并最大限度地减少提醒疲劳。

  • 提高检测准确性:将 UDM 事件、其他规则检测、实体信息、UEBA 发现结果和数据表的分析洞见相结合,以创建准确的检测逻辑。

  • 简化复杂逻辑:将复杂的检测场景分解为可管理、相互关联且可重用的规则,以简化开发和维护。

复合检测的相关术语和概念

  • 检测:规则的结果,也可称为提醒。

  • 复合:一系列相互关联的规则,其中一条规则的输出用作下一条规则的输入。例如,在复合规则序列 rule1 -> rule2 -> rule3 中,rule1 生成的检测会传递给 rule2,后者会处理这些检测以生成新的检测。然后,rule3 会使用这些检测结果来生成最终输出。

  • 输入规则:检测结果用作另一条规则的输入的规则。任何规则都可以充当输入规则,无需进行特定指定。输入规则使用实体和事件作为输入。 它们不使用检测结果作为输入。

  • 复合规则:一种在规则文本中使用检测结果作为输入的规则。 复合规则必须包含 match 部分。

高级概念

单事件检测规则

Google SecOps 不允许使用单事件复合规则。这意味着,任何使用检测结果作为输入源的规则都必须包含 match 部分

检查延迟时间

由于调度行为,我们建议仅在单事件输入规则上撰写复合规则。单事件规则近乎实时运行,因此在执行复合规则时,通常已可获得其检测结果。如果复合规则依赖于多事件规则作为输入,则存在输入规则在复合规则的预定执行时间之后运行的风险。这可能会导致复合规则出现延迟或漏检。

TestRule 和 Retrohunt

对复合规则进行测试或运行 Retrohunt 时,系统只会使用现有检测结果运行您选择的特定规则。如需运行整个复合规则,您必须从序列中的第一条规则开始手动启动回溯分析,等待每次运行完成,然后继续下一条规则。

对规则运行测试不会将检测结果持久保留或写入数据库,而复合规则需要数据库中存在输入检测结果。

对规则运行测试不会将检测结果保留或写入数据库。由于复合规则需要输入检测结果存在于数据库中才能正常运行,因此您无法使用 TestRule 来验证复合规则。

构建复合规则

您可以使用输入规则和复合规则的组合来创建复合规则。

输入规则

输入规则是复合规则的基础。它们会检测特定事件或条件,这些事件或条件组合在一起时会指示恶意活动。 如需配置输入规则,请执行以下操作:

  1. 创建新规则或重复使用现有规则。

  2. 停用提醒。这样可以防止这些输入规则生成单独的提醒。使用此配置,您可以优先处理由复合规则生成的更关键的提醒,这些规则会评估整个事件链。

  3. 使用 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"]

以下示例规则可检测到未启用 MFA 的登录、枚举和数据渗出。

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 级检测。

编写复合规则时的注意事项

当您更新一条用于一个或多个复合规则的输入规则时,系统会自动创建该输入规则的新版本。这适用于逻辑更新(conditioneventsoutcomes)和元数据更新(名称、说明、严重程度)。复合规则会继续使用新版本运行。建议您测试更新后的输入规则及其下游复合规则,以确保实现预期行为。

限制

复合规则具有以下限制。

仅检测规则和实体风险得分

仅检测规则(仅使用检测数据作为来源,而不使用事件或实体数据)不会影响实体风险得分。为仅检测规则设置的任何风险得分仅适用于该规则创建的检测结果。不会影响任何汇总实体风险得分。

需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。