ngocbich15793/iot-threat-hunting-dashboard
GitHub: ngocbich15793/iot-threat-hunting-dashboard
一个基于机器学习的全栈物联网威胁狩猎仪表盘,用于实时检测和分类网络攻击。
Stars: 0 | Forks: 0
# 物联网威胁狩猎仪表盘
## 概述
一个全栈威胁狩猎仪表盘,使用基于 CICIoT2023 数据集训练的随机森林模型,将物联网网络流量分类为 7 种攻击类别。旨在模拟蓝队分析师的工作流:摄取网络流数据、实时分类威胁并可视化结果。
**实时演示流程:**
```
Network Traffic → Suricata (IDS) → eve.json → Feature Bridge → RF Classifier → Streamlit Dashboard
```
## 功能
| 功能 | 描述 |
|---|---|
| **CSV 批量分析** | 上传任何 CICIoT2023 CSV 文件 → 对所有流进行即时的七分类预测 |
| **分析选项卡** | 流量分布、置信度直方图、类别细分摘要 |
| **实时监控** | 每 10 秒从 Suricata 的 eve.json 自动刷新;若 Suricata 离线则使用演示模式 |
| **七分类检测** | DDoS · DoS · Recon · BruteForce · Mirai · Spoofing · BENIGN |
| **置信度评分** | 为每个流提供所有 7 个类别的概率分数 |
## 模型性能
| 指标 | 值 |
|---|---|
| 算法 | Random Forest (n=300, max_depth=30) |
| 数据集 | CICIoT2023 — 34 种攻击类型 → 7 个类别 |
| 训练样本 | ~987,000 条流 |
| 测试准确率 | **94%** |
| DDoS / DoS / Mirai F1 分数 | **1.00** |
| BruteForce F1 分数 | 0.67 |
| 特征 | 43 个网络流特征 |
### 类别映射 (34 → 7)
```
DDoS-*_Flood, DDoS-SlowLoris → DDoS
DoS-*_Flood → DoS
Recon-*, VulnerabilityScan → Recon
SqlInjection, XSS, BruteForce, ... → BruteForce
Mirai-*, Backdoor_Malware → Mirai
MITM-ArpSpoofing, DNS_Spoofing → Spoofing
BenignTraffic → BENIGN
```
## 项目结构
```
IoT_Dashboard/
├── models/
│ └── rf_model_v3.pkl # Trained RF bundle (model + encoder + features)
├── suricata/
│ └── logs/
│ └── eve.json # Suricata output (live traffic)
├── data/processed/ # Sample CSVs for batch analysis
├── dashboard.py # Streamlit app (3 tabs)
├── feature_bridge.py # Model loader + predict_flow / predict_batch
├── parser.py # Suricata eve.json parser
├── test_bridge.py # Unit tests for feature bridge
└── requirements.txt
```
## 技术栈
- **Python 3.12** — 核心运行时
- **scikit-learn 1.6.1** — 随机森林分类器
- **Streamlit** — 仪表盘界面
- **Plotly** — 交互式图表
- **Suricata 8.0.4** — 网络入侵检测系统(Docker)
- **Docker** — 容器化的 Suricata 部署
- **WSL2 (Ubuntu)** — 在 Windows 11 上进行 Linux 网络抓包
## 快速开始
### 前置条件
- Python 3.12
- Docker Desktop + WSL2 (Windows) 或 Docker (Linux)
### 1. 安装依赖项
```
pip install -r requirements.txt
```
### 2. 运行仪表盘(CSV 模式 — 无需 Suricata)
```
cd C:\...\IoT_Dashboard
streamlit run dashboard.py
```
打开 `http://localhost:8501` → 上传任何 CICIoT2023 CSV 文件 → 查看预测结果。
### 3. 配合实时 Suricata 运行(WSL2)
```
# 在 WSL 终端中
cd /mnt/c/Users/PC/OneDrive/Desktop/IoT_Dashboard
docker run -d \
--name suricata-iot \
--net=host \
--cap-add net_admin \
--cap-add sys_nice \
-v "$(pwd)/suricata/logs:/var/log/suricata" \
jasonish/suricata:latest \
-i eth0 --init-errors-fatal no
```
然后在仪表盘中打开 **实时监控** 选项卡 → 启用自动刷新。
## 数据集
**CICIoT2023** — 加拿大网络安全研究所
- 169 个 CSV 文件 · 约 2.77GB · 47 列
- 涵盖物联网流量场景的 34 种攻击标签类型
- 来源:[Kaggle — akashdogra/cic-iot-2023](https://www.kaggle.com/datasets/madhavmalhotra/unb-cic-iot-dataset)
## 关键设计决策
**为何移除 `Header_Length` 和 `IAT`?**
`Header_Length` 无法从 Suricata 流日志中可靠地估算。`IAT`(到达间隔时间)在所有类别中显示出几乎相同的均值(约 8.3×10⁷),表明它捕捉的是噪声而非信号——为防止过拟合而将其移除。
**为何将 34 个标签合并为 7 个类别?**
许多子类型(例如 DDoS-ICMP_Flood 与 DDoS-UDP_Flood)具有相同的特征分布。对它们进行分组可以提高泛化能力,并反映现实世界安全运营中心的分流类别。
**为何选择随机森林而非深度学习?**
在安全运营中心环境中,可解释性至关重要。随机森林提供了每个特征的重要性,在 CPU 上以毫秒级进行推理,并且无需 GPU 即可达到 94% 的准确率。
## 局限性与未来工作
- BruteForce F1 分数 = 0.67 — 与 Recon 的特征空间重叠;计划通过子类分离来改进。
- 实时 Suricata 抓包仅限于 Windows 上的 WSL2 `eth0` 接口。
- 缺少实时 PCAP → CICFlowMeter 特征提取管道(下一个里程碑)。
- 模型基于实验室生成的数据训练;实际部署需要在生产流量上进行重新训练。
标签:7类攻击, AMSI绕过, Apex, CICIoT2023, DDoS检测, DoS检测, Kubernetes, Metaprompt, Streamlit, Suricata, 入侵检测系统, 分类模型, 可视化仪表板, 威胁检测, 安全数据湖, 批量分析, 攻击识别, 数据驱动安全, 机器学习, 欺骗攻击检测, 流量分类, 物联网威胁, 物联网安全, 现代安全运营, 网络安全, 网络流量分析, 置信度评分, 访问控制, 请求拦截, 逆向工具, 随机森林, 隐私保护