ogunsolaolalekanoo-dev/behavioral-anomaly-detection

GitHub: ogunsolaolalekanoo-dev/behavioral-anomaly-detection

基于 Isolation Forest 与 Autoencoder 集成模型的认证事件行为异常检测系统,为零信任架构提供实时风险评分与自适应认证决策。

Stars: 0 | Forks: 0

# 认证事件行为异常检测 ### 零信任架构 | Isolation Forest + Autoencoder | FastAPI 风险评分 ## 业务问题 Uber 的零信任架构(ZTA)假设没有任何用户或设备是天生可信的——每一个认证事件都必须进行实时风险评估。静态规则(“阻止来自新国家/地区的登录”)会产生过多的误报,在阻止合法旅客的同时,却漏掉了那些善于伪装的复杂攻击者。 解决方案是**风险自适应认证**:根据行为信号对每次登录进行动态评分,然后做出决定——静默通过、要求进行 MFA,或者完全阻止。 ## 我们如何解决 我们构建了一个行为异常检测系统,它可以学习每个用户“正常”行为的模样,并实时标记偏差。 **核心洞察:** 对于上夜班的工程师来说,凌晨 3 点登录是正常的,但对于朝九晚五的分析师来说则是异常的。异常必须基于每个用户自身的行为基线来定义,而不是基于人群的平均水平。 **三步流水线:** 1. **模拟** — 跨越 200 个用户生成包含 6 种攻击类型的 7,901 条真实认证事件 2. **检测** — 基于行为偏差特征训练 Isolation Forest + Autoencoder 集成模型 3. **评分** — FastAPI endpoint 实时返回风险评分 + 认证决策 + 主要风险因素 ## 检测到的攻击类型 | 攻击 | 描述 | 关键信号 | |---|---|---| | 撞库 | 自动化密码尝试 | 高 failed_attempts、快速打字、低 IP 信誉 | | 账号接管 | 攻击者使用窃取的凭证 | 新设备 + 异地 + 非常规时间段 | | 不可能旅行 | 从地理上不可能的位置登录 | 位置偏离基线 | | 非常规时间访问 | 在异常时间访问敏感系统 | 相对用户基线的小时 z-score | | 高速攻击 | 每秒数十次尝试 | 登录持续时间 < 1s,高失败尝试次数 | | 新设备异常 | 未知的设备指纹 | is_known_device = 0 | ## 工程化的行为特征 所有特征均衡量**偏离单个用户基线的程度**——而非偏离人群: - `hour_zscore` — 对于该特定用户,此登录时间有多不寻常? - `typing_speed_zscore` — 与该用户平时的打字速度有多大差异? - `location_deviation` — 与用户常见位置的地理距离 - `ip_reputation_deviation` — IP 信誉低于用户正常水平 - `failed_attempts_deviation` — 失败尝试次数高于用户基线 - `is_known_device` — 设备指纹匹配 - `behavioral_risk_score` — 所有信号的加权组合 ## 异常分数分布 ![异常分布](https://static.pigsec.cn/wp-content/uploads/repos/cas/77/7766a9bfb2ace3dda2f8bd3aac3cd49e25de0f4e2cbc6d1eec710fd5ed658e01.png) 正常事件(蓝色)聚集在低异常分数区域。攻击事件(红色)在所有三个模型中得分都很高——这种分离非常明显,解释了高达 0.9813 的优异 PR-AUC。 ## 结果 | 模型 | ROC-AUC | PR-AUC | |---|---|---| | Isolation Forest | 0.9986 | 0.9806 | | Autoencoder | 0.9885 | 0.9519 | | **集成模型** | **0.9986** | **0.9813** | PR-AUC 达到 0.9813——认证异常具有极高的可检测性,因为攻击模式会在多个行为维度上同时发生偏离。 ## API 示例 ``` # 可疑登录 — 账户接管尝试 curl -X POST http://localhost:8001/score \ -H "Content-Type: application/json" \ -d '{ "user_id": "user_0001", "hour": 3, "country": "RU", "device": "unknown_device_443", "is_known_device": 0, "service": "admin_console", "typing_speed": 320.0, "failed_attempts": 8, "ip_reputation_score": 0.12 }' ``` **响应:** ``` { "risk_score": 0.6885, "risk_tier": "HIGH", "auth_decision": "REQUIRE_MFA", "top_risk_factors": [ {"factor": "location_anomaly", "score": 128.27}, {"factor": "typing_anomaly", "score": 23.24}, {"factor": "off_hours_login", "score": 2.997} ], "processing_time_ms": 37.22 } ``` ## 风险等级 | 评分 | 等级 | 决策 | 用例 | |---|---|---|---| | 0.0 – 0.3 | 低 | APPROVE | 正常行为 | | 0.3 – 0.5 | 中 | MONITOR | 稍微有些不寻常 | | 0.5 – 0.7 | 高 | REQUIRE_MFA | 存在可疑信号 | | 0.7+ | 严重 | BLOCK | 明确的攻击模式 | ## 项目结构 behavioral-anomaly-detection/ ├── src/ │ ├── simulator.py # 生成合成认证事件日志 │ ├── features.py # 针对用户的行为特征工程 │ ├── detector.py # Isolation Forest + Autoencoder 训练 │ └── api.py # FastAPI 风险评分 endpoint ├── data/ # 生成的数据集(已 gitignore) ├── outputs/ │ └── anomaly_distributions.png ├── requirements.txt └── README.md ## 安装说明 ``` conda activate fraud-detection pip install pandas numpy scikit-learn fastapi uvicorn pyarrow matplotlib # 生成 auth 事件 python src/simulator.py # 训练异常检测器 python src/detector.py # 启动 API uvicorn src.api:app --reload --port 8001 ``` ## [GitHub](https://github.com/ogunsolaolalekanoo-dev) | [LinkedIn](https://linkedin.com/in/olalekan-ogunsola)
标签:Apex, AV绕过, FastAPI, 异常检测, 机器学习, 身份认证安全, 逆向工具, 零信任架构, 风控系统