Crevatec/Hybrid-detection-system-v2.0
GitHub: Crevatec/Hybrid-detection-system-v2.0
基于四种机器学习模型混合集成的 API 安全中间件,通过实时行为分析检测凭证填充与业务逻辑攻击,并自动执行分级缓解响应。
Stars: 0 | Forks: 0
# 混合行为检测系统 (HBDS)
## 实时缓解 API 中的业务逻辑与凭证填充攻击




## 概述
**混合行为检测系统 (HBDS)** 是一个智能的 API 安全中间件,可拦截传入的 HTTP 流量,实时分析请求的行为签名,并在恶意请求到达后端服务器之前执行自动缓解措施。
该系统结合了四种机器学习模型——**Random Forest**、**Isolation Forest**、**ANN** 和 **LSTM**——形成独立和混合集成配置,以检测三类流量:
- **正常** (类别 0) — 合法的授权用户交互
- **凭证填充** (类别 1) — 使用泄露凭证进行的高速自动化登录尝试
- **业务逻辑攻击** (类别 2) — 顺序工作流利用和非基于量的 API 滥用
## 系统架构
HBDS 作为一个跨三个阶段的模块化管道运行:
### 监控阶段(数据采集)
持续摄取实时 API 流量和日志数据。捕获 HTTP 元数据和有效载荷特征,聚合服务器端事件,并跟踪基于会话的交互,以建立正常活动基线。
### 检测阶段(混合分析引擎)
核心推理层。应用混合 ML 集成为每个请求计算概率性威胁分数(0–1)。结合结构化异常检测与深度序列分析,涵盖基于量和基于逻辑的攻击。
### 缓解阶段(分级响应)
根据计算出的威胁分数执行分层的自动化响应:
| 分数范围 | 分类 | 操作 | 描述 |
|---|---|---|---|
| 0.00 – 0.29 | 安全 | **允许** | 请求转发到后端 |
| 0.30 – 0.69 | 可疑 | **限流** | 触发速率限制或 CAPTCHA 验证码挑战 |
| 0.70 – 1.00 | 恶意 | **拦截** | 终止会话并返回 HTTP 403 Forbidden |
**反馈循环** 将缓解结果反馈到监控阶段,使模型能够适应不断演变的攻击模式并减少未来的误报。
## 数据集
- **名称:** `api_security_dataset_2026`
- **大小:** 100,000 条 API 行为记录
- **字段:** `timestamp`、`user_id`、`ip_address`、`endpoint`、`method`、`status_code`、`latency_ms`、`label`
### 类别分布
| 流量类别 | 记录数 | 百分比 | 描述 |
|---|---|---|---|
| 正常 | 69,913 | 69.9% | 合法用户的 API 交互 |
| 凭证填充 | 14,892 | 14.9% | 自动化凭证滥用尝试 |
| 业务逻辑攻击 | 15,195 | 15.2% | 顺序工作流利用 |
| **总计** | **100,000** | **100%** | |
### 训练/测试集划分
| 划分 | 记录数 | 百分比 |
|---|---|---|
| 训练集 | 80,000 | 80% |
| 测试集 | 20,000 | 20% |
采用分层的 80/20 划分,以在两个子集中保持类别的比例。
### 标签映射
| 原始标签 | 映射类别 |
|---|---|
| 正常 | 正常 (0) |
| Web 攻击 – 暴力破解, SSH-Patator | 凭证填充 (1) |
| Web 攻击 – XSS, SQL 注入, 机器人, DDoS, DoS | 业务逻辑攻击 (2) |
| 所有错误标签(数据库故障、延迟等) | 正常 (0) |
## 特征工程
原始 API 请求字段被转换为 **20 维数值特征向量**:
| 特征 | 源字段 | 类型 | 描述 |
|---|---|---|---|
| `hour_sin`, `hour_cos` | timestamp | 周期性 | 一天中的小时(周期编码) |
| `dow_sin`, `dow_cos` | timestamp | 周期性 | 一周中的天(周期编码) |
| `day_of_month`, `month` | timestamp | 数值型 | 日历组成部分 |
| `endpoint_hash` | endpoint | 数值型 | API 路由的哈希桶 (0–9999) |
| `method_*` | method | 二值 | HTTP 方法的独热编码标志 (GET, POST, DELETE, PATCH, PUT) |
| `status_code` | status_code | 数值型 | 原始 HTTP 状态码 |
| `status_family` | status_code | 数值型 | 状态码族 (2xx, 4xx, 5xx) |
| `is_error`, `is_server_error` | status_code | 二值 | 错误类型指示器 |
| `is_auth_error` | status_code | 二值 | 401/403 身份验证失败标志 |
| `latency_log` | latency_ms | 数值型 | 对数转换的响应时间 (log1p) |
| `is_high_latency` | latency_ms | 二值 | 延迟 > 5000ms 指示器 |
| `user_id` | user_id | 数值型 | 提取的用户 ID 整数 |
| `ip_address` | ip_address | 数值型 | 32 位 IP 整数 |
所有特征均使用 **StandardScaler** 进行标准化(零均值,单位方差)。
## 已实现的模型
### 独立模型(阶段 2)
| 模型 | 主要参数 | 策略 | 类别处理 |
|---|---|---|---|
| Random Forest | 200 棵树, max_depth=None | 有监督,并行 (n_jobs=-1) | 平衡的类别权重 |
| Isolation Forest | 200 个估计器, contamination=0.30 | 无监督,未使用标签 | 不适用 |
| ANN | 层: 256→128→64→32, Dropout: 0.3/0.2 | Adam lr=0.001, EarlyStopping patience=5 | 平衡的类别权重 |
| LSTM | LSTM(128)+LSTM(64), seq_len=5, 每步 4 个特征 | Adam lr=0.001, EarlyStopping patience=5 | 平衡的类别权重 |
**ANN 架构:** Batch Normalisation → FC(256, ReLU) → Dropout(0.3) → FC(128, ReLU) → Dropout(0.2) → FC(64, ReLU) → FC(32, ReLU) → Softmax(3)
**LSTM 架构:** 输入重塑为 (5 个时间步 × 4 个特征) → LSTM(128, return_sequences=True) → Dropout(0.3) → LSTM(64) → Dropout(0.2) → Dense(32) → Softmax(3)
### 混合集成模型(阶段 3)
| 混合模型 | 策略 | 组件权重 |
|---|---|---|
| RF + ANN | 堆叠:RF 概率与原始特征拼接后作为 ANN 的输入 | 由元 ANN 学习 |
| IF + ANN | 增强:标准化的 IF 异常分数作为额外的 ANN 输入特征附加 | 由 ANN 学习 |
| RF + LSTM | 独立概率输出的并行加权投票 | RF=45%, LSTM=55% |
| ANN + LSTM + RF (主模型) | 跨所有三个监督模型的三重加权软投票 | RF=30%, ANN=35%, LSTM=35% |
## 结果
### 独立模型性能
| 模型 | 准确率 | 精确率 | 召回率 | F1 分数 |
|---|---|---|---|---|
| Random Forest | 1.0000 | 1.0000 | 1.0000 | 1.0000 |
| Isolation Forest | 0.6061 | 0.5929 | 0.6061 | 0.5970 |
| ANN | 1.0000 | 1.0000 | 1.0000 | 1.0000 |
| LSTM | 1.0000 | 1.0000 | 1.0000 | 1.0000 |
### 混合集成性能
| 模型 | 准确率 | 精确率 | 召回率 | F1 分数 |
|---|---|---|---|---|
| RF + ANN | 1.0000 | 1.0000 | 1.0000 | 1.0000 |
| IF + ANN | 1.0000 | 1.0000 | 1.0000 | 1.0000 |
| RF + LSTM | 1.0000 | 1.0000 | 1.0000 | 1.0000 |
| **ANN + LSTM + RF (主模型)** | **1.0000** | **1.0000** | **1.0000** | **1.0000** |
## 项目结构
```
hybrid_detection_system/
│
├── README.md # This file
├── requirements.txt # All Python dependencies
│
├── data/
│ └── (place api_security_dataset_2026.csv here)
│
├── utils/
│ ├── __init__.py
│ ├── data_loader.py # Data loading & preprocessing
│ ├── feature_engineering.py # Feature extraction & encoding
│ └── metrics.py # Evaluation utilities
│
├── models/
│ ├── __init__.py
│ ├── random_forest_model.py # Phase 2: RF standalone
│ ├── isolation_forest_model.py # Phase 2: IF standalone
│ ├── ann_model.py # Phase 2: ANN standalone
│ ├── lstm_model.py # Phase 2: LSTM standalone
│ ├── hybrid_rf_ann.py # Phase 3: RF + ANN stacking
│ ├── hybrid_if_ann.py # Phase 3: IF + ANN augmentation
│ ├── hybrid_rf_lstm.py # Phase 3: RF + LSTM parallel voting
│ └── hybrid_master.py # Phase 3: ANN + LSTM + RF master hybrid
│
├── outputs/
│ ├── metrics/ # Saved metrics JSON files
│ ├── plots/ # Saved comparison charts
│ └── saved_models/ # Persisted trained model artifacts
│
├── dashboard/
│ ├── __init__.py
│ ├── realtime_simulator.py # Real-time API event stream simulation
│ └── dashboard_app.py # Streamlit monitoring dashboard
│
├── train_individual.py # Run Phase 2: train all individual models
├── train_hybrid.py # Run Phase 3: train all hybrid models
├── evaluate_all.py # Run Phase 4: metrics + charts
└── run_dashboard.py # Run Phase 5: launch dashboard
```
## 安装与使用
### 1. 创建虚拟环境(需要 Python 3.11)
```
py -3.11 -m venv venv
venv\Scripts\activate # Windows
source venv/bin/activate # Mac/Linux
```
### 2. 安装依赖
```
pip install -r requirements.txt
```
### 3. 准备数据集
将 `api_security_dataset_2026.csv` 放入 `data/` 文件夹中。
### 4. 运行系统(按顺序执行)
```
# 阶段 2:训练所有 individual models(约 20 分钟)
python train_individual.py
# 阶段 3:训练所有 hybrid/ensemble models(约 35 分钟)
python train_hybrid.py
# 阶段 4:生成 metrics 和 comparison charts
python evaluate_all.py
# 阶段 5:启动 real-time monitoring dashboard
streamlit run run_dashboard.py
```
## 仪表板功能
实时监控仪表板提供了对 HBDS 分类决策的完整操作可见性:
- **KPI 摘要卡片** — 已处理的总事件数、攻击率百分比、实时准确率、累计凭证填充和业务逻辑检测计数
- **实时事件源** — 最近 50 个分类 API 请求的可滚动表格,包含时间戳、endpoint、方法、状态、延迟、类别和置信度分数
- **滚动威胁分布** — 饼图显示正常、凭证填充和业务逻辑分类的比例细分(最近 200 个事件)
- **攻击时间轴** — 堆叠条形图可视化威胁分类的时间分布
- **攻击率仪表盘** — 实时仪表盘显示滚动攻击百分比,带有颜色编码的风险阈值
- **主混合面板** — 专门的 ANN+LSTM+RF 面板,显示组件权重、最新的预测置信度细分和各类别概率条形图
- **模型指标对比** — 交互式分组条形图,比较所有 8 种模型配置的准确率、精确率、召回率和 F1 分数
## 技术栈
| 库 | 版本 |
|---|---|
| Python | 3.11.9 |
| TensorFlow / Keras | 2.15.0 |
| Scikit-learn | 1.4.0 |
| Pandas | 2.1.4 |
| NumPy | 1.26.4 |
| Streamlit | 1.31.0 |
| Plotly | 5.18 |
| Matplotlib | 3.8 |
**开发环境:** Windows 11 (64-bit), Intel Core i7, 16GB RAM, 512GB SSD
## 主要贡献
- **混合检测架构** — 新颖的四模型框架 (IF + RF + ANN + LSTM),结合了无监督异常检测、有监督多类别分类和 API 层面的时间序列分析
- **行为特征工程** — 全面的管道,将原始 HTTP 元数据转换为丰富的 20 维行为向量,包括周期性时间编码、基于哈希的 endpoint 表示和对数转换的延迟特征
- **行为到序列的转换** — 一种将无状态 HTTP 请求向量重塑为用于基于 LSTM 的深度学习的时间序列的方法,无需会话级别的跟踪基础设施
- **分级缓解策略** — 分层的允许/限流/拦截响应框架,最大程度减少对合法用户的误报影响,同时破坏自动化攻击工具
- **实时操作仪表板** — 实时 Streamlit 仪表板,在单一界面中集成了事件分类、威胁分布、攻击率跟踪和多模型性能比较
## 未来工作
- 针对规避感知攻击序列的对抗性鲁棒性测试
- 边缘计算部署(Cloudflare Workers, AWS Lambda@Edge)
- 集成 Zero-Trust 架构以进行动态权限调整
- 联邦学习,用于保护隐私的协作模型训练
- 扩展至 OWASP API 安全 Top 10 威胁(BOLA、批量赋值、功能级别授权绕过)
- 基于 Transformer 的序列模型,作为 endpoint 模式分析的 LSTM 替代方案
## 许可证
MIT 许可证 — 可自由使用、修改和分发。
标签:Apex, API安全, CISA项目, HTTP流量分析, JSONLines, JSON输出, Kubernetes, LSTM, Python, Streamlit, Streamlit, TensorFlow, Web安全, 业务逻辑攻击防御, 中间件, 人工神经网络, 凭证填充防御, 威胁情报, 威胁评分, 孤立森林, 实时风控, 开发者工具, 异常检测, 无后门, 机器学习, 流量拦截, 深度学习, 混合集成模型, 网络安全, 自动化响应, 蓝队分析, 访问控制, 访问控制, 逆向工具, 随机森林, 隐私保护, 零信任, 风控引擎