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绕过, 离线推理, 离线训练, 网络安全, 网络流, 网络流量分析, 网络防御代理, 自动响应, 观察向量, 逆向工具, 隐私保护, 验证套件