Anish-Kanna/Hybrid-Transformer-CNN-Neuro-Symbolic-Explainable-AI-for-Cyber-Threat-Intelligence

GitHub: Anish-Kanna/Hybrid-Transformer-CNN-Neuro-Symbolic-Explainable-AI-for-Cyber-Threat-Intelligence

融合 CNN-Transformer 与 SHAP 的网络威胁情报可解释检测系统,兼顾高精度与对抗鲁棒性。

Stars: 35 | Forks: 0

  # 🛡️ 混合 CNN-Transformer 神经符号可解释 AI 用于网络威胁情报:提升透明度与对抗鲁棒性 ### 网络威胁情报的可解释 AI **工程学院,日纳达·萨加尔大学**   [![Python](https://img.shields.io/badge/Python-3.10%2B-3776ab?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/) [![PyTorch](https://img.shields.io/badge/PyTorch-2.2.2-ee4c2c?style=for-the-badge&logo=pytorch&logoColor=white)](https://pytorch.org/) [![SHAP](https://img.shields.io/badge/SHAP-0.44.1-f5a623?style=for-the-badge)](https://shap.readthedocs.io/) [![scikit-learn](https://img.shields.io/badge/scikit--learn-1.4.2-f7931e?style=for-the-badge&logo=scikit-learn&logoColor=white)](https://scikit-learn.org/) [![License](https://img.shields.io/badge/License-MIT-22c55e?style=for-the-badge)](LICENSE)   **具备可解释性、对抗鲁棒性与实时推理的高级入侵检测** `入侵检测` · `可解释人工智能` · `Transformer 网络` · `对抗训练` · `网络安全`    
## 🔭 概述 现代入侵检测系统(IDS)虽然实现了高准确率,但如同“黑盒”——安全分析师无法理解 *为何* 某流量被标记为恶意。这在 SOC 运营中造成了关键的信任缺口。与此同时,标准机器学习模型极易受到对抗性扰动的影响:攻击者可以构造细微的流量修改来欺骗检测器,而对人类用户来说这些修改不可察觉。 **XAI-CTI** 通过以下方式解决这一双重挑战: - 结合 CNN-Transformer 混合架构,实现高精度的流量分类 - 基于 SHAP 的特征归因,实时解释模型决策 - 对抗训练,使鲁棒性达到 88%(相比之下标准模型仅为 65%) - 轻量级推理(每样本 2-5 毫秒),适用于生产级 SOC 部署 最终成果是一个**可解释、鲁棒、生产级 IDS**,安全团队可以理解、信任并据此采取行动。 `网络入侵检测` · `可解释人工智能` · `对抗鲁棒性` · `实时分析` · `威胁情报` ## 📋 目录 1. [问题陈述](#1--problem-statement) 2. [ proposed approach](#2--proposed-approach) 3. [系统架构](#3--system-architecture) 4. [核心原则](#4--core-principles) 5. [技术实现](#5--technical-implementation) 6. [结果与性能](#6--results--performance) 7. [可解释性方法](#7--explainability-methods) 8. [对抗鲁棒性](#8--adversarial-robustness) 9. [文件结构与用法](#9--file-structure--usage) 10. [项目团队](#10--project-team) ## 1. 🔍 问题陈述 ### 当前 IDS 的三个关键缺口 | 问题 | 影响 | XAI-CTI 解决方案 | |------|------|------------------| | **黑盒预测** | 分析师无法验证告警,误报疲劳严重 | SHAP + 符号化解释 | | **对抗脆弱性** | 攻击者构造规避流量;扰动下准确率下降 30% | 对抗训练 → 88% 鲁棒性 | | **推理缓慢** | 批处理导致实时响应延迟 | 单样本 2-5ms 预测 | ### 研究问题 *我们能否构建一个同时具备 **高精度、可解释、对抗鲁棒且可在真实 SOC 工作流中实时部署** 的入侵检测系统?* ## 2. 🏗️ proposed approach ### 核心创新 **XAI-CTI** 结合三种互补的 AI 技术,实现 **透明且鲁棒的入侵检测**: 网络流量特征(79 维) ↓ ├─ 混合 CNN-Transformer 模型(96.4% 准确率) ├─ SHAP 特征归因层(实时特征重要性评分) └─ 对抗训练(攻击下 88% 鲁棒性) ↓ 预测 + 置信度 + 解释 + 威胁等级 ### 架构概览与工作流 原始 CSV(CIC-IDS 数据集) │ ▼ preprocessing.py ├─ 去除列名空白 ├─ 标签编码:BENIGN → 0,ATTACK → 1 ├─ 删除 NaN / Inf 值 ├─ StandardScaler 归一化 └─ 80/20 训练-测试分割 → PyTorch 张量 │ ▼ XAI_CTI_Model(model.py) ├─ Conv1D → 提取局部特征模式 ├─ TransformerEncoder → 全局特征关系 └─ Linear(32 → 2) → 类别对数 │ ┌────┴────────────────────┐ ▼ ▼ 标准训练 对抗训练(FGSM) (train_gpu.py) (train_adversarial.py) │ │ ▼ ▼ xai_cti_model.pth xai_cti_model_adv.pth │ ┌────────────────────┼ ▼ ▼ SHAP 解释器 符号规则 (explain_shap.py) (symbolic.py) shap_summary.png 威胁等级 ### 设计理念 ✅ **永不信任,始终验证**——多信号投票决策 ✅ **设计即可解释**——各层均提供解释 ✅ **鲁棒优先**——从第一天起就进行对抗训练 ✅ **生产就绪**——亚 60ms 推理,轻量级(约 18k 参数) ## 3. 🏛️ 系统架构 ### 三层设计理念 | 层级 | 组件 | 目的 | |------|------|------| | **数据层** | CSV 摄取 → 归一化 → 训练-测试分割 | 特征一致性与可复现性 | | **模型层** | CNN-Transformer 混合,18.5K 参数 | 准确、可解释、快速 | | **推理层** | SHAP + 符号化解释 | 可信的 SOC 集成 | ### 架构图 网络流量特征(79 维) ↓ [CNN 块] ├─ Conv1d:提取局部模式(32 个滤波器) ├─ ReLU:非线性 └─ MaxPool1d:降维至 39 维 ↓ [Transformer 编码器] ├─ 自注意力:学习特征关系 ├─ 多头(2 个头):多样化模式识别 └─ 输出:39×32 维张量 ↓ [全局平均池化] └─ 聚合为 32 维表示 ↓ [全连接层] └─ 32 → 2 类别(BENIGN / ATTACK) ↓ [Softmax + 决策] ├─ 置信度:0-100% └─ 预测:BENIGN 或 ATTACK ## 4. 💡 核心原则 ### 1. **设计即解释** - SHAP 值量化每个特征对预测的贡献 - 符号推理转化为人类可读规则 - 安全分析师理解 *为何* 触发告警 ### 2. **对抗鲁棒性** - 标准模型在扰动下下降 30% - 对抗训练防御 FGSM、PGD 类攻击 - 即使在对抗扰动下仍保持 88% 准确率 ### 3. **轻量级与快速** - 18.5K 参数(75 KB 模型文件) - 每样本 2-5ms 推理(CPU) - 适用于实时 SOC 仪表板 ### 4. **生产级质量** - 可复现结果(固定随机种子) - 可扩展至百万级流 - 离线解释(无需外部 API 依赖) ### 训练阶段 #### 步骤 1:数据摄取与预处理 ``` ┌─────────────────────────────────────────┐ │ Raw Network Traffic CSV Files │ │ (full_week.csv, dos_data.csv, etc.) │ └────────────┬────────────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ Preprocessing Pipeline │ ├─────────────────────────────────────────┤ │ 1. Strip whitespace, remove non-numeric │ │ 2. Convert labels: BENIGN→0, ATTACK→1 │ │ 3. Handle anomalies: NaN, inf values │ │ 4. Standardize: (x-μ)/σ (per feature) │ │ 5. Train-test split: 80-20 ratio │ │ 6. Convert to PyTorch tensors │ └────────────┬────────────────────────────┘ ↓ Training Set: 2.2M samples | Test Set: 565K samples ``` **关键转换**:保存 `scaler.pkl` 用于推理一致性 #### 步骤 2:标准训练循环 ``` For 5 epochs: For each batch (8 samples): 1. Forward: predictions = model(batch) 2. Loss: CrossEntropyLoss(predictions, labels) 3. Backward: compute gradients 4. Update: optimizer.step() (Adam, lr=0.001) 5. Log: total loss per epoch ``` **结果**:`xai_cti_model.pth`(约 75 KB) #### 步骤 3:对抗训练(增强) **结果**:`xai_cti_model_adv.pth`(对抗规避鲁棒) **为何组合损失?** 在正常与扰动数据上联合训练 → 抗攻击 ### 推理阶段(生产) ``` ┌────────────────────────────────┐ │ New Network Traffic Flow │ └───────────┬────────────────────┘ ↓ ┌────────────────────────────────┐ │ Load Preprocessing Artifacts │ │ ├─ scaler.pkl (normalization) │ │ ├─ feature_names (alignment) │ │ └─ Model weights │ └───────────┬────────────────────┘ ↓ ┌────────────────────────────────┐ │ Feature Processing (< 1ms) │ │ ├─ Align columns │ │ ├─ Fill missing (0) │ │ ├─ StandardScaler.transform() │ │ └─ Convert to tensor │ └───────────┬────────────────────┘ ↓ ┌────────────────────────────────┐ │ Model Inference (2-5ms) │ │ ├─ Forward pass │ │ ├─ Softmax probabilities │ │ ├─ Argmax prediction │ │ └─ Extract confidence │ └───────────┬────────────────────┘ ↓ ┌────────────────────────────────┐ │ Explainability (100-600ms) │ │ ├─ SHAP: Feature importance │ │ ├─ Symbolic: Human-readable │ │ └─ Threat level: LOW/MED/HIGH │ └───────────┬────────────────────┘ ↓ ┌────────────────────────────────┐ │ Output Report │ │ ├─ Prediction (BENIGN/ATTACK) │ │ ├─ Confidence: 0-100% │ │ ├─ Threat Level │ │ ├─ Top 3 Features (SHAP) │ │ └─ Symbolic Explanations │ └────────────────────────────────┘ ``` ## 4. 📊 性能结果 ### 异常检测准确率(NSL-KDD 数据集) | 指标 | LSTM 基线 | CNN 基线 | **XAI-CTI Transformer** | |------|:---:|:---:|:---:| | 🎯 **准确率** | 91.2% | 93.1% | **96.4%** | | 📈 **F1 分数** | 89.6% | 90.8% | **93.1%** | | 🔴 **假阳性率** | 8.5% | 6.7% | **2.3%** ← 改进 73% | | ✅ **精确率** | 88.9% | 91.2% | **94.6%** | **关键洞察**:2.3% FPR = 更少的 SOC 告警(显著运营收益) ### 对抗鲁棒性对比 使用 FGSM 攻击在 ε=0.1(微小不可见扰动)下测试: | 模型 | 正常准确率 | 对抗准确率 | **鲁棒性提升** | |------|:---:|:---:|:---:| | 标准训练 | 96.5% | **65.2%** | - | | **对抗训练** | 95.2% | **88.3%** | **+23.1%** ✓ | **权衡**:约 1% 准确率损失换取 +23% 鲁棒性(极佳交易) ### 系统性能指标 | 指标 | 值 | 意义 | |------|:---:|------| | ⚡ **决策延迟** | < 60 ms | 实时内联部署可行 | | 🧠 **模型参数** | 18,562 | 轻量级,适合边缘设备 | | 💾 **模型大小** | ~75 KB | 最小存储占用 | | 🎯 **准确率** | 96.4% | 优于基线 | | 🤝 **信任预测** | 0.93 AUC | 强实体级信任评分 | | 📝 **可解释性** | SHAP + 符号化 | 透明决策推理 | ## 5. 🗂️ 系统架构 ### 项目结构 ``` XAI_CTI_Project/ ├── model.py # 🧠 Hybrid CNN-Transformer architecture ├── preprocessing.py # 🔧 Data loading, normalization, scaler ├── train_gpu.py # 🚀 Standard supervised training ├── train_adversarial.py # ⚔️ Adversarial training with FGSM ├── adversarial_test.py # 🛡️ Robustness evaluation ├── robustness_curve.py # 📈 Plot accuracy vs attack strength ├── explain_shap.py # 📊 Generate SHAP explanations ├── demo.py # 🎬 Live inference demo ├── demo2.py # 🎬 Production inference (real data) ├── symbolic.py # 📝 Rule-based explanations ├── merge_fullweek.py # 🔀 Consolidate multiple CSVs │ ├── data/ │ ├── full_week.csv # 📊 Merged training dataset (1M+ samples) │ ├── dos_data.csv # ⚠️ Malicious traffic │ ├── Monday-Friday.csv # 📆 Daily network logs │ └── insane_dos.csv # 🚨 Intense attack traffic │ ├── checkpoints/ │ ├── xai_cti_model.pth # 💾 Standard model weights │ ├── xai_cti_model_adv.pth # 💾 Adversarially trained (preferred) │ ├── scaler.pkl # 🔐 Feature normalization params │ └── shap_summary.png # 📊 Feature importance visualization │ └── requirements.txt # 📦 Python dependencies ``` ### 数据流架构 ``` Raw Traffic Data ↓ [Preprocessing] → Normalized features + Scaler ↓ ├─→ Training: 80% samples │ ↓ │ ├─→ Standard Training → model.pth │ │ ├─ Acc: 96.5%, FPR: 3-4% │ │ └─ Baseline accuracy │ │ │ └─→ Adversarial Training → model_adv.pth │ ├─ Acc: 95-96%, Robustness: 88%↑ │ └─ Production-ready │ └─→ Testing: 20% samples ├─→ Normal accuracy: 96%+ ├─→ Adversarial accuracy: 88%+ (under attack) └─→ FPR: 2.3% (best-in-class) Production Inference: New Traffic → Scaler → Model → SHAP + Symbolic → Decision + Explanation ``` ## 6. 🧩 核心组件 ### 🧠 模型架构(CNN-Transformer 混合) ``` Layer Input Shape Processing Output Shape ────────────────────────────────────────────────────────────────── Input [batch, 79] Raw features [B, 79] Unsqueeze [B, 79] Add channel [B, 1, 79] Conv1d (×32) [B, 1, 79] Extract patterns [B, 32, 79] ReLU [B, 32, 79] Non-linearity [B, 32, 79] MaxPool1d(2) [B, 32, 79] Reduce dim [B, 32, 39] Permute [B, 32, 39] Rearrange [B, 39, 32] Transformer [B, 39, 32] Self-attention [B, 39, 32] GlobalAvgPool [B, 39, 32] Aggregate [B, 32] FC(32→2) [B, 32] Classification [B, 2] Softmax [B, 2] Probabilities [B, 2] ∈ [0,1] ``` **参数**:约 18,562(轻量级!) ### 📊 特征空间(79 维) | 类别 | 特征 | 示例 | |------|------|------| | **流标识** | 4 | 源/目的 IP、端口、协议 | | **包统计** | 12 | 正向/反向字节、包数、长度 | | **TCP 标志** | 6 | SYN、ACK、FIN、RST、PSH、URG 计数 | | **时序** | 8 | 流持续时间、IAT 均值/标准差、活动/空闲 | | **高级特征** | 49 | 熵、初始窗口字节、子流统计 | | **总计** | **79** | 标准化至 μ=0, σ=1 | ### 🔐 SHAP 可解释性 **计算内容**:每个特征对预测的贡献 **单样本解释**: ``` Predicted: ATTACK Confidence: 94% Top Contributing Features: 1. Total_Forward_Bytes (SHAP: +0.85) → Pushes toward ATTACK 2. Packet_Count (SHAP: +0.62) → Pushes toward ATTACK 3. Flow_Duration (SHAP: +0.41) → Slightly suspicious Interpretation: High byte volume + high packet rate + unusual timing = ATTACK ``` ### 📝 符号推理 **简单规则化解释**: ``` if "Bytes" in feature_name: reason = "Abnormally high traffic volume detected" elif "Packets" in feature_name: reason = "Elevated packet transmission rate observed" elif "Duration" in feature_name: reason = "Unusual flow timing pattern" else: reason = f"Significant deviation in {feature_name}" ``` **优势**:<1ms 延迟,人工可读(适合实时仪表板) ## 7. 🚀 实施指南 ### 安装与设置 ``` # 克隆仓库 git clone && cd XAI_CTI_Project # 创建虚拟环境 python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # 安装依赖项 pip install -r requirements.txt # 验证 GPU 可用性 python3 -c "import torch; print(torch.cuda.is_available())" ``` ### 快速启动 ``` # 1. 训练对抗模型 python3 train_adversarial.py # 输出:xai_cti_model_adv.pth # 2. 评估鲁棒性 python3 adversarial_test.py # 输出:正常准确率、对抗准确率、丢弃率 # 3. 生成 SHAP 图表 python3 explain_shap.py # 输出:shap_summary.png # 4. 实时推理 python3 demo2.py # 输出:预测 + 置信度 + 威胁等级 + 解释 ``` ### 超参数 | 参数 | 值 | 用途 | |------|----|------| | 批量大小 | 8 | 平衡内存与梯度质量 | | 学习率 | 0.001 | Adam 优化器默认值 | | 训练轮数 | 5 | 标准监督训练 | | CNN 滤波器 | 32 | 局部模式提取 | | 异常阈值(τ_a) | 0.5 | TBAE 决策边界 | | FGSM ε | 0.01 | 对抗扰动强度 | ## 8. 🔍 可解释性方法 ### SHAP(SHapley Additive exPlanations) **原理**:基于 Shapley 值的博弈论方法 **流程**: 1. 计算基线(参考训练集) 2. 对每个特征:测量其对预测差异的贡献 3. 跨样本聚合 4. 按重要性排序 **输出**:展示最重要特征的特征重要性图 **用途**:离线分析、调查、模型调试 ### 符号推理 **原理**:将可解释规则应用于顶级特征 **流程**: 1. 识别前 K 个最重要特征 2. 应用领域启发式规则 3. 生成人类可读描述 4. 输出 SOC 友好解释 **用途**:实时仪表板、线上 SOC 告警 ### 威胁等级分类 ``` Decision Logic: ├─ If prediction=ATTACK & confidence>90% → 🔴 HIGH THREAT ├─ If prediction=ATTACK & confidence<90% → 🟡 MEDIUM THREAT └─ If prediction=BENIGN → 🟢 LOW THREAT ``` ## 9. 🛡️ 对抗鲁棒性 ### 攻击方法:FGSM(快速梯度符号法) ``` Adversarial Example = Original Data + ε × sign(∇Loss) ``` **示例**: ``` Original traffic: [2.5MB bytes, 1200 packets, 5 sec] Perturbation: [+0.01MB, -5 packets, +0.1 sec] ───────────────────────────────────── Adversarial: [2.51MB, 1195 packets, 5.1 sec] Result: Imperceptible to humans, but... Standard model: "BENIGN" ❌ (Fooled!) Robust model: "ATTACK" ✓ (Resistant!) ``` ### 鲁棒性曲线 ``` Accuracy (%) 100 ├───────────── │ Normal Model 95 ├─────╲ │ ╲ After adversarial training 90 ├─────╶╲ │ ╲___ 85 ├──────────╲___ │ ╲___ 80 └───────────────────────────── 0 0.05 0.1 0.15 0.2 (epsilon) ``` **关键发现**:对抗训练带来 +23% 鲁棒性提升 ## 10. ⚠️ 限制与未来路径 | # | 限制 | 影响 | 缓解 | |---|------|------|------| | L1 | SHAP 较慢(100-500ms) | 实时批处理受限 | 实现 Top-K 近似 | | L2 | 非独立同分布数据(FL 不适用) | 不适用 | 集中训练无需处理 | | L3 | 仅覆盖有限攻击类型 | 可能遗漏新型利用 | 定期用新数据重训练 | | L4 | 加密流量 | 无法检查有效载荷 | 仅使用元数据分析 | | L5 | 概念漂移 | 模型随时间退化 | 在线学习 / 定期重训练 | | L6 | 单 GPU 限制 | 批处理吞吐量受限 | 支持分布式训练 | ### 未来增强 ✅ 多类别分类(8+ 攻击类型) ✅ 在线学习管道(持续重训练) ✅ 联邦学习(隐私保护训练) ✅ 移动端部署(边缘推理) ✅ 实时流式分析 ✅ 与 SIEM 平台集成 ## 👥 项目团队
Anish Kanna T A
Vaishanth Mohan
Anagha R Prabhu
Bharat Aadarsh Meherwade
## 🎓 导师
Dr. Prajwalasimha S N
副教授
计算机科学与工程系(网络安全)
工程学院,日纳达·萨加尔大学
**工程学院 · 日纳达·萨加尔大学** *班加罗尔 – 560082,卡纳塔克邦,印度* 数据集: 研究论文:
标签:Adversarial Robustness, Apex, Cloudflare, CNN, Explainable AI, Intrusion Detection, MITRE ATT&CK, Network Security, Python, PyTorch, scikit-learn, SHAP, Transformer, XAI, 凭据扫描, 可解释AI, 威胁情报, 实时推理, 对抗训练, 对抗鲁棒性, 开发者工具, 异常检测, 无后门, 机器学习, 深度学习, 混合模型, 特征归因, 生产环境, 神经符号, 网络安全, 网络流量分析, 逆向工具, 透明度, 隐私保护