用途
该技能用于从认证日志中识别被入侵账户和可疑登录活动。它通过 UEBA 分析、统计基线和机器学习模型,检测不可能旅行、暴力破解、密码喷洒、凭据填充等攻击模式,并构建用户行为基线以发现偏离正常行为的异常。适用于安全运营团队调查 SIEM 或 IdP 告警、实时检测凭据攻击、关联认证异常与威胁情报以发现横向移动。
主要能力
- 日志归一化:将 Azure AD/Entra ID、Okta、Windows AD(事件 ID 4624/4625/4648/4768/4771)等来源的认证事件统一为通用模式,并可通过 GeoIP 数据库补充地理位置信息。
- 不可能旅行检测:使用 Haversine 公式计算两次成功登录之间的地理距离,结合时间差计算所需移动速度,超过最大现实速度(默认 900 km/h)且距离大于 100 km 时告警。
- 暴力破解检测:在滑动时间窗口内统计单一账户的失败尝试次数,超过阈值(默认 10 次/10 分钟)时告警,并记录来源 IP 和失败原因。
- 密码喷洒检测:检测同一来源 IP 在短窗口内针对大量不同账户的少量尝试(默认 10 个用户/30 分钟,每用户不超过 3 次),并检查窗口后是否有成功登录以判断账户是否被攻陷。
- 行为基线构建:为每个用户建立典型登录时间、日期、IP、位置、应用、设备、日均登录次数和失败率等统计基线。
- 行为偏差检测:将新认证事件与基线对比,通过 Z 分数等方法识别非工作时间登录等异常。
使用方式
该技能以 Python 代码形式提供,需要 Python 3.9+ 及 pandas、scikit-learn、scipy 等库。使用流程包括:
- 收集并归一化来自各身份源的认证日志;
- 对缺失位置信息的日志进行 GeoIP 补充;
- 运行不可能旅行检测;
- 运行暴力破解和密码喷洒检测;
- 构建用户行为基线并检测偏差。
代码中提供了 normalize_auth_logs、enrich_geoip、detect_impossible_travel、detect_brute_force、detect_password_spray、build_user_baseline、detect_behavioral_anomalies 等函数,可直接调用或集成到现有分析流程中。
适用场景
- 安全运营中心(SOC)分析认证日志以识别被入侵账户;
- 实现不可能旅行检测以标记地理位置不一致的登录;
- 实时检测暴力破解、密码喷洒和凭据填充攻击;
- 构建用户行为基线以发现账户失陷迹象;
- 将认证异常与威胁情报关联以检测横向移动;
- 调查来自 SIEM 或 IdP 的可疑登录告警。
限制
- 不适用于对单次失败登录进行静态规则告警;异常检测需要跨时间和实体维度的统计基线以降低误报。
- 需要至少 90 天的基线数据。
- 需要认证日志源、SIEM 平台、GeoIP 数据库和用户身份上下文(部门、角色、典型工作时间、位置)。
- 部分日志源(如 Windows AD)缺少位置信息,需要 GeoIP 补充。
- 具体收费、价格、平台支持范围等事实暂未提供。