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` — 所有信号的加权组合
## 异常分数分布

正常事件(蓝色)聚集在低异常分数区域。攻击事件(红色)在所有三个模型中得分都很高——这种分离非常明显,解释了高达 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, 异常检测, 机器学习, 身份认证安全, 逆向工具, 零信任架构, 风控系统