Tabishdawood45/AI-Cloud-Automated-Security-Framework
GitHub: Tabishdawood45/AI-Cloud-Automated-Security-Framework
基于 Isolation Forest 的云威胁检测与自动化响应研究原型,完整展示了从合成数据生成、模型训练到可视化评估的机器学习 pipeline。
Stars: 0 | Forks: 0
# 基于人工智能的云威胁检测与自动化响应系统
为学士论文构建的研究原型:
它模拟了一个云活动流,训练了一个无监督异常
检测器(带有用于比较的有监督基线),检测可疑
行为,生成自动化警报,并在
Flask dashboard 上可视化结果。这是一个研究/教学原型,而不是一个生产级
安全产品。
## 方法论(请先阅读此部分)
### 数据集规模
该数据集是**完全合成的**,由 `generate_logs.py` 生成。它
包含 **10,000 条记录**:**8,000 条正常** (`label = 0`) 和 **2,000 条
可疑** (`label = 1`),这是有意设置的 **20% 可疑比例**。这个
比例远高于真实的云环境(真实环境中攻击
通常远低于 1%),选择这个比例纯粹是为了确保两个类别在训练和评估中都能得到充分的
体现。
### 训练/测试集划分
原始数据在进行**任何预处理之前**使用分层
划分:
| | |
|---|---|
| 训练集 | 80% (8,000 行) |
| 测试集 (预留) | 20% (2,000 行) |
| `random_state` | 42 |
| `stratify` | 标签列(在两个划分中均保持 80/20 的比例) |
**所有评估指标均仅在预留的测试集上报告。**
模型在训练期间永远不会看到测试行,因此报告的数字
反映的是泛化能力,而非记忆。
### 避免数据泄漏
- Label encoder 仅**在训练集上进行拟合**,然后应用
于测试集。测试集中的未知类别被映射到一个安全的
哨兵值 (`-1`)。
- `StandardScaler` 仅**在训练集上进行拟合**,然后应用
于测试集。
- 在完整数据集上拟合这些转换会将测试集
信息(类别列表、均值、标准差)泄漏到训练中,
这将使评估无效。
### 使用的特征
| 类型 | 特征 |
|------|----------|
| 类别特征 | `country`, `resource_accessed`, `action_type`, `admin_action` |
| 数值特征 | `failed_logins`, `session_duration`, `data_download_mb`, `risk_score` |
`attack_type` 和 `label` 列**不**被用作输入特征
(那样会泄漏答案);`attack_type` 仅作为用于分析的元数据。
### 模型参数
| 模型 | 角色 | 关键参数 |
|-------|------|----------------|
| **Isolation Forest** | **主模型** (无监督) | `n_estimators=200`, `contamination=0.10`, `random_state=42`, 仅在**正常训练记录**上拟合 |
| **Random Forest** | **仅作为基线** (有监督) | `n_estimators=200`, `max_features="sqrt"`, `class_weight="balanced"`, `random_state=42` |
| **Decision Tree** | **仅用于解释** | `max_depth=4`, `class_weight="balanced"`, `random_state=42` |
`contamination=0.10` 是假设在*合法*云活动
中自然产生的异常值比例;它用于校准正常流量上的异常
阈值。它**不是**数据集的可疑比例。
### 评估方法
Isolation Forest 应用于预留的测试集;其 `-1/1`
输出被转换为 `1 = 可疑 / 0 = 正常`,并为每条记录记录一个异常分数。
Random Forest 基线应用于同一个
测试集。对于这两个模型,我们报告了**在测试集上的准确率、精确率、召回率、F1 分数以及混淆矩阵**。
### 生成数据的局限性
- 数据是合成的,比真实的云日志更容易区分。
特别是,`risk_score` 与标签高度相关,这
夸大了有监督基线的性能(参见
代表性的 decision tree 图)。
- 20% 的攻击比例高得不切实际;真实环境存在
严重的不平衡。
- 由于数据是合成的,因此绝对指标值应该被解读为
*pipeline 有效*的证据,而不是对现实世界
性能的预测。
### 代码生成的输出
**报告** (`reports/`): `training_testing_summary.md`,
`feature_table.csv`, `model_parameters.csv`,
`isolation_forest_test_metrics.csv`, `random_forest_test_metrics.csv`.
**图表** (`figures/`): `confusion_matrix_isolation_forest_test.png`,
`model_performance_comparison_test.png`,
`random_forest_feature_importance.png`,
`representative_decision_tree.png`, `anomaly_score_distribution.png`,
`threat_level_distribution.png`, `attack_type_distribution.png`.
**数据** (`data/`): `cloud_activity_logs.csv` (完整), `train_set.csv`,
`test_set.csv`, `detection_results_test.csv`, `alerts.csv`. 以及
`cloud_security.db` (SQLite 警报)。
## 运行 pipeline
按顺序运行脚本;每个脚本都会使用上一步的输出:
```
pip install -r requirements.txt
python generate_logs.py # 1. Generate the full synthetic dataset
python train_model.py # 2. Split, preprocess (train-only), train all models
python detect_threats.py # 3. Apply Isolation Forest to the TEST set
python response_engine.py # 4. Generate alerts from test-set predictions
python evaluate_model.py # 5. Test-set metrics + figures
python app.py # 6. Launch dashboard -> http://127.0.0.1:5000
```
## 模型
- **Isolation Forest — 主模型。** 无监督;唯一用于
检测和生成警报的模型。之所以选择它,是因为在真实的云环境中,可靠的攻击标签
很少可用。
- **Random Forest — 仅作为基线。** 有监督;纯粹用于基准测试
无监督方法与完全
有标签方法之间的性能差距。不用于生成警报。
- **Decision Tree — 仅用于解释。** 一棵单层的浅层树
(`max_depth=4`),渲染为图表,以便论文可以展示是哪些
特征驱动了“可疑”的决策。不是已部署的检测器。
## Dashboard 范围
Dashboard 明确显示的是**预留测试集的评估结果**,
而不是完整生成的数据集。页面顶部的横幅说明了这一点,
并且每个部分都相应地进行了标注。
## 许可证
仅用于学术/教育目的发布。
标签:AMSI绕过, Apex, Flask, Python, scikit-learn, SQLite, 威胁检测, 无后门, 机器学习, 逆向工具