yeaight7/TFG_CYBER_AI
GitHub: yeaight7/TFG_CYBER_AI
本项目是一个以强化学习(QRDQN)为核心的网络流量二元分类防御系统,通过对 CICIDS2017 等数据集的离线训练与推理,实现对网络流量的自动允许或拦截决策。
Stars: 2 | Forks: 0
# TFG_CYBER_AI
基于强化学习的网络安全防御系统,用于对网络流量执行二元的 `PERMIT`(允许)/ `BLOCK`(拦截)决策。
本项目分为两个阶段进行:
- **阶段 1**:基于历史数据集进行离线训练和验证。
- **阶段 2**:对从私有实验室捕获的流量中提取的流特征进行离线推理。
当前仓库使用 **CICIDS2017** 作为主要数据集,包含 76 个流特征的**固定规范模式**,并在附加缺失值掩码后形成 **152 维观测向量**。
## 当前状态
| 领域 | 状态 |
|------|--------|
| 规范模式 | 已实现并固定为 76 个特征 |
| CICIDS2017 适配器 | 已实现 |
| NSL-KDD 适配器 | 已实现,用于历史 Phase 1 基准测试 |
| RL 算法 | QRDQN |
| 验证套件 | 检查 A、B、C + leave-one-exact-CSV-out 脚本 |
| 阶段 2 推理 | 提供稳健的离线流水线 (`predict_real_traffic_v2.py`) |
| 主动拦截 | 未实现 |
## 文档导航
- [docs/README.md](docs/README.md):文档索引及文档职责
- [.github/AGENT_CONTEXT.md](.github/AGENT_CONTEXT.md):项目级技术真实信息源
- [docs/results.md](docs/results.md):基于产物备份的结果快照
- [docs/AGENT_CONTEXT.md](docs/AGENT_CONTEXT.md):阶段 2 范围与防护措施
- [docs/phase2_plan.md](docs/phase2_plan.md):实验室工作流执行计划
- [docs/gcp_lab.md](docs/gcp_lab.md):私有实验室部署指南
- [experiments/README.md](experiments/README.md):实验存档索引
- [experiments/cicids2017_qrdqn_experiments.md](experiments/cicids2017_qrdqn_experiments.md):持续维护的 CICIDS2017 + QRDQN 运行历史记录
- [docs/DEFENSA_TFG_PROGRESO.md](docs/DEFENSA_TFG_PROGRESO.md):西班牙语答辩记录
- [docs/DEFENSA_TFG_SCRIPT.md](docs/DEFENSA_TFG_SCRIPT.md):西班牙语答辩脚本
- [report/report.tex](report/report.tex):论文报告源码草稿
## 仓库结构
```
TFG_CYBER_AI/
├── .codex/ # hooks.json for triggering knowledge graph updates
├── .github/ # Agent guidance and coding/review agent instructions
├── datasets/ # Local datasets (also tracked via git lfs)
├── docs/ # Documentation, results, Phase 2 guides, defense material
| └── Personal Research/ # Personal stuff to guide and track for personal use
├── experiments/ # Experiment archive notes: historical and maintained timelines
├── lab/ # Lab-related assets
├── models/ # Trained model files (tracked)
├── pcaps/ # Extracted flows and captures used for Phase 2 work (tracked)
├── report/ # Thesis report and sources
├── runs/ # Run artifacts: config.json, metrics.json, validation_results.json, etc. (tracked)
├── scripts/ # Phase 2 and utility scripts
└── src/ # Training, validation, adapters, environment, utilities
```
## 核心技术不变量
- `FEATURES_CANON` 包含 **76 个基于流的特征**。
- 观测向量始终为 **152 维**:
- 76 个规范特征值
- 76 个缺失值掩码
- 缺失值掩码使用:
- `1` 表示存在/有效的特征
- `0` 表示已估算或不可用的特征
- 标签为二元分类:
- `0 = BENIGN`(良性)
- `1 = ATTACK`(攻击)
- 易于导致数据泄漏的字段严禁进入模型:
- IP 地址
- 绝对时间戳
- 流 ID 或唯一标识符
- 直接作为标签代理的端口
## 数据集版本 (CICIDS2017)
本地存在两个版本的 CICIDS2017 数据:
| 版本 | 路径 | 是否跟踪 | 描述 |
|---------|------|---------|-------------|
| 策划版 | `datasets/CICIDS2017/*.csv` | 是 | 在引入前已移除易导致数据泄漏和冗余的列。适配器加载的内容。 |
| 原始版 | `datasets/CICIDS2017/Raw_dataset/` | 否 (已在 gitignore 中) | 原始 CICFlowMeter CSV 导出文件。保留所有列。仅作本地参考。 |
无论使用哪个版本,适配器 (`src/load_cicids2017.py`) 都会在加载时应用进一步的清洗。代码中的防泄漏策略是权威的关卡。
## 快速开始
安装依赖项:
```
pip install -r requirements.txt
```
在 CICIDS2017 上训练 RL 模型:
```
python src/train_rl_defender.py --smoke
python src/train_rl_defender.py --preset full
python src/train_rl_defender.py --split-mode day
```
运行验证套件:
```
python src/validate_checks.py --model models/.zip --checks A B C
```
运行 leave-one-exact-CSV-out 验证:
```
python src/validate_leave_one_csv_out.py --timesteps 30000
python src/validate_leave_one_csv_out.py --timesteps 5000 --max-rows-per-csv 10000
```
运行稳健的阶段 2 离线推理:
```
python scripts/predict_real_traffic_v2.py \
--flows pcaps/flows.csv \
--model models/C03_qrdqn_cicids2017_canonical_full_random_20260223_232439.zip \
--scaler runs/cicids2017/C03_qrdqn_cicids2017_canonical_full_random_20260223_232439/scaler.joblib \
--percentiles runs/cicids2017/C03_qrdqn_cicids2017_canonical_full_random_20260223_232439/train_percentiles.npz \
--clip-z 10.0 \
--export-diagnostics
```
## 验证概述
本仓库目前包含四个验证工作流:
| 验证项 | 目的 |
|------------|---------|
| 检查 A | 直接在 `X_test` 与 `y_test` 上进行预测,不依赖环境 |
| 检查 B | 打乱标签的防泄漏测试 |
| 检查 C | 严格的 CSV/天数拆分泛化测试 |
| Leave-one-exact-CSV-out | 每折保留一个 CICIDS2017 CSV,在剩余的七个上进行训练 |
Leave-one-exact-CSV-out 工作流已在代码中实现,但本仓库目前并不包含其在 `runs/validation/` 下的完整运行提交产物。
## 结果快照
基于产物备份的历史结果总结在 [docs/results.md](docs/results.md) 中。亮点:
- 最佳的已提交 CICIDS2017 运行:
- `C03_qrdqn_cicids2017_canonical_full_random_20260223_232439`
- 准确率 `0.99859`
- 攻击召回率 `0.99945`
- 攻击 F1 分数 `0.99876`
- 验证检查 C 历史产物:
- 准确率 `0.84135`
- 在周一至周三的模式上训练
- 在周四至周五的模式上测试
- 阶段 2:
- 存在稳健的离线推理流水线
- 最近提交的仅包含良性流量的 v2 产物显示行为随时间发生了变化,因此阶段 2 的结论必须始终与确切的运行产物相关联
更详尽的逐实验叙述现在位于 [experiments/cicids2017_qrdqn_experiments.md](experiments/cicids2017_qrdqn_experiments.md)(针对 CICIDS2017)和 [experiments/nslkdd_experiments.md](experiments/nslkdd_experiments.md)(针对较早的 NSL-KDD 分支)中。
## 提交与答辩说明
- 仓库文档默认使用英语。
- 两份答辩支持文档按设计保留为西班牙语:
- [docs/DEFENSA_TFG_PROGRESO.md](docs/DEFENSA_TFG_PROGRESO.md)
- [docs/DEFENSA_TFG_SCRIPT.md](docs/DEFENSA_TFG_SCRIPT.md)
- 历史结果已予保留,但绝不能将它们与**当前代码默认值**相混淆。
## 安全性与可复现性
- 每个训练或评估工作流都应保留一个 `RUN_ID`,并将产物写入 `runs///` 中。
- 如果文档描述了某个结果,它应该引用存在于 `runs/` 中的产物,或者明确标记为计划中或历史记录。
标签:AI安全, AMSI绕过, anomaly detection, Apex, Beacon Object File, Chat Copilot, CICIDS2017, Cyber AI, IP 地址批量处理, NSL-KDD, QRDQN, RL, TFG, 二分类, 人工智能, 威胁检测, 强化学习, 数据集适配器, 机器学习, 毕业设计, 流量分类, 流量监控, 深度学习, 用户模式Hook绕过, 离线推理, 离线训练, 网络安全, 网络流, 网络流量分析, 网络防御代理, 自动响应, 观察向量, 逆向工具, 隐私保护, 验证套件