Crevatec/Hybrid-detection-system-v2.0

GitHub: Crevatec/Hybrid-detection-system-v2.0

基于四种机器学习模型混合集成的 API 安全中间件,通过实时行为分析检测凭证填充与业务逻辑攻击,并自动执行分级缓解响应。

Stars: 0 | Forks: 0

# 混合行为检测系统 (HBDS) ## 实时缓解 API 中的业务逻辑与凭证填充攻击 ![Python](https://img.shields.io/badge/Python-3.11-blue) ![TensorFlow](https://img.shields.io/badge/TensorFlow-2.15-orange) ![Dashboard](https://img.shields.io/badge/Dashboard-Streamlit-red) ![License](https://img.shields.io/badge/License-MIT-green) ## 概述 **混合行为检测系统 (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安全, 业务逻辑攻击防御, 中间件, 人工神经网络, 凭证填充防御, 威胁情报, 威胁评分, 孤立森林, 实时风控, 开发者工具, 异常检测, 无后门, 机器学习, 流量拦截, 深度学习, 混合集成模型, 网络安全, 自动化响应, 蓝队分析, 访问控制, 访问控制, 逆向工具, 随机森林, 隐私保护, 零信任, 风控引擎