You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google SecOps Chronicle YARA-L规则IP列表检测失效问题

Google SecOps Chronicle YARA-L规则:修复未知IP登录检测问题

问题分析

你当前的规则只覆盖了「未知用户登录」的场景,「已知用户从未知IP登录」的分支触发失败,大概率是逻辑条件的组合方式、IP提取/匹配的语法细节出了问题——比如没明确分组逻辑优先级、IP字段提取不完整,或者列表类型与匹配语法不对应。

正确规则示例

以下是能同时覆盖两种触发场景的YARA-L规则,适配不同类型的已知IP列表:

场景1:已知IP列表为CIDR格式(如%known_ips = ["192.168.0.0/24", "10.0.0.0/8"])

rule detect_suspicious_login_success {
    meta:
        description = "检测未知用户成功登录,或已知用户从未知IP地址登录"
    events:
        // 匹配成功登录事件,根据你的日志类型调整event_type字段
        $login.metadata.event_type = "USER_LOGIN_SUCCESS"
        // 提取登录用户名
        $login.principal.user = $username
        // 提取登录源IP,确保IP字段存在
        $login.principal.ip = $source_ip
    condition:
        // 核心逻辑:两种场景满足其一即触发
        (not $username in %known_users) OR 
        (
            $username in %known_users 
            and not $source_ip in cidr %known_ips
        )
}

场景2:已知IP列表为单个IP字符串格式(如%known_ip_str = ["192.168.1.10", "10.0.0.5"])

只需把条件中的not $source_ip in cidr %known_ips替换为not $source_ip in %known_ip_str即可。

关键注意事项

  • 逻辑优先级:必须用括号明确分组「已知用户+未知IP」的条件,避免OR和AND的优先级冲突导致逻辑失效
  • IP字段处理:如果日志中principal.ip是数组类型(比如存在多个IP),需要用any关键字遍历匹配:
    any $ip in $login.principal.ip: not $ip in cidr %known_ips
    
  • 事件过滤:确保只匹配成功登录的事件,避免把登录失败的日志纳入检测范围
  • 列表类型匹配:CIDR格式的列表必须用in cidr语法,纯字符串IP列表用in语法,混用会导致匹配失败

内容的提问来源于stack exchange,提问作者Fayez Khwaja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 14:47:14