CyberNina/MLSProject
GitHub: CyberNina/MLSProject
这是一个利用网络侧信道分析检测 IoT 设备加密劫持,并评估机器学习模型对抗攻击鲁棒性的研究框架。
Stars: 0 | Forks: 0
# 通过侧信道分析检测 IoT 网络中的加密劫持
此仓库包含一个用于检测 IoT 设备(Raspberry Pi 4)上 **Cryptojacking(加密劫持)** 的机器学习框架。通过仅分析网络元数据(**侧信道分析**),该方法即使在加密流量中也能识别恶意活动。该系统完全基于网络数据包的时序和大小统计信息对流量进行分类。
训练并比较了两个模型:
- Random Forest (RF) — 基准、可解释的集成模型
- Deep Learning MLP — 神经网络,2 个隐藏层(64 → 32 个神经元)
## 数据管道 - 预处理
自动化管道通过几个关键阶段将原始网络捕获转换为结构化数据集:
1. **原始数据加载:** 处理从网络流量捕获(PCAP)生成的 CSV 文件。
2. **MAC 过滤:** 使用固定的 4 个已知 Raspberry Pi MAC 地址列表进行严格过滤,以隔离目标流量。
3. **特征工程:** 提取在 **10 数据包滚动窗口** 上计算的 6 个关键指标(时间和长度)。
4. **隔离窗口:** 为了确保数学准确性,窗口仅在单个捕获文件内计算,防止跨文件数据污染。
5. **缩放:** 共享的 `StandardScaler` *仅* 在训练集上进行拟合,以防止数据泄露。
## 项目结构
```
LabML/
├── run_all.py # Main pipeline orchestrator
├── src/
│ ├── main.py # Phase 1: data loading & feature engineering
│ ├── train_rf.py # Phase 2: Random Forest training + shared scaler
│ ├── train_dl.py # Phase 3: Deep Learning (MLP) training
│ ├── predict.py # Phase 4: real-time simulation & RF vs DL comparison
│ └── visualize_results.py # Phase 5: plot generation for thesis/presentation
├── attacks/
│ └── advers_attack.py # Phase 6: adversarial robustness evaluation
├── utils/
│ └── loader.py # Core data loading, MAC filtering, windowing
├── data/
│ ├── benign/ # Raw benign captures (Wireshark CSV export)
│ ├── malicious/ # Raw malicious captures (Wireshark CSV export)
│ ├── processed_traffic.csv # Output of Phase 1 (625,287 windows, shuffled)
│ ├── dev_set.csv # 90% split for training
│ └── holdout_dataset.csv # 10% holdout, never seen during training
├── models/
│ ├── rf_model.pkl # Trained Random Forest
│ ├── mlp_model.pth # Trained MLP (best epoch via early stopping)
│ └── scaler.pkl # Shared StandardScaler (fitted on RF train set only)
└── results/
└── plots/ # All generated figures (confusion matrices, ROC, etc.)
```
## 数据集摘要
最终处理后的数据集包含 **625,287 个窗口**。
| 类别 | 窗口数 | 占比 |
| :--- | :--- | :--- |
| **Benign (0)** | 561,098 | 89.7% |
| **Malicious (1)** | 64,189 | 10.3% |
| **总计** | **625,287** | **100%** |
## 1. 基准性能(标准条件)
在 10% 的未见 Holdout 集(62,529 个窗口)上评估的结果。
### Random Forest (基准)
| 类别 | 精确率 | 召回率 | F1 分数 |
| :--- | :--- | :--- | :--- |
| Benign | 0.9957 | 0.9973 | 0.9965 |
| **Malicious** | **0.9761** | **0.9623** | **0.9692** |
| **准确率** | | | **99.37%** |
### Deep Learning (MLP)
| 类别 | 精确率 | 召回率 | F1 分数 |
| :--- | :--- | :--- | :--- |
| Benign | 0.9908 | 0.9807 | 0.9857 |
| **Malicious** | **0.8451** | **0.9204** | **0.8811** |
| **准确率** | | | **97.45%** |
## 2. 特征重要性
模型严重依赖时间节奏来区分挖矿活动:
* **Time_Mean:** 0.3555
* **Length_Max:** 0.2264
* **Time_Var:** 0.1937
* **Length_Mean:** 0.1262
## 3. 对抗鲁棒性测试
模型受到 4 种规避攻击的测试,以评估在敌对环境下的抵御能力。
### 攻击下的 Random Forest
| 攻击类型 | 召回率 | 下降幅度 | 状态 |
| :--- | :---: | :---: | :--- |
| Baseline (无攻击) | 96.23% | — | — |
| Timing Jitter 5% | 95.09% | -1.14% | Resistant |
| Timing Jitter 10% | 94.38% | -1.85% | Resistant |
| Timing Jitter 20% | 93.55% | -2.68% | Mild Drop |
| Padding 30 bytes | 82.16% | -14.07% | Vulnerable |
| Padding 50 bytes | 79.36% | -16.87% | Vulnerable |
| Padding 100 bytes | 41.38% | -54.85% | Critical Failure |
| Mimicry 20% | 77.69% | -18.54% | Vulnerable |
| Mimicry 30% | 68.56% | -27.67% | Vulnerable |
| Burst Shaping 20% | 94.33% | -1.90% | Resistant |
| Burst Shaping 40% | 91.46% | -4.77% | Mild Drop |
| **平均值** | **81.80%** | **-14.43%** | — |
### 攻击下的 Deep Learning
| 攻击类型 | 召回率 | 下降幅度 | 状态 |
| :--- | :---: | :---: | :--- |
| Baseline (无攻击) | 92.04% | — | — |
| Timing Jitter 5% | 92.05% | ~0% | Resistant |
| Timing Jitter 10% | 92.04% | ~0% | Resistant |
| Timing Jitter 20% | 91.84% | -0.20% | Resistant |
| Padding 30 bytes | 91.87% | -0.17% | Resistant |
| Padding 50 bytes | 91.81% | -0.23% | Resistant |
| Padding 100 bytes | 91.21% | -0.83% | Resistant |
| Mimicry 20% | 86.04% | -6.00% | Vulnerable |
| Mimicry 30% | 83.17% | -8.87% | Vulnerable |
| Burst Shaping 20% | 85.28% | -6.76% | Vulnerable |
| Burst Shaping 40% | 59.96% | -32.08% | Critical Failure |
| **平均值** | **86.53%** | **-5.51%** | — |
## 4. 最终对比与结论
| 指标 | Random Forest | Deep Learning |
| :--- | :--- | :--- |
| **标准召回率** | **0.9623** | 0.9204 |
| **平均攻击降幅** | -14.43% | **-5.51%** |
| **鲁棒性**
## 快速开始
```
# 安装 dependencies
pip install -r requirements.txt
# 运行整个 pipeline
python3 run_all.py
```
标签:Apex, Kubernetes 安全, Raspberry Pi, 侧信道分析, 元数据分析, 内存执行, 凭据扫描, 加密劫持检测, 多层感知机, 对抗攻击, 异常检测, 敏感信息检测, 数据预处理, 机器学习, 标准化, 模型鲁棒性, 流量分类, 深度学习, 物联网安全, 特征工程, 网络安全, 网络数据包, 网络流量分析, 逆向工具, 随机森林, 隐私保护