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, 入侵检测系统, 分类模型, 可视化仪表板, 威胁检测, 安全数据湖, 批量分析, 攻击识别, 数据驱动安全, 机器学习, 欺骗攻击检测, 流量分类, 物联网威胁, 物联网安全, 现代安全运营, 网络安全, 网络流量分析, 置信度评分, 访问控制, 请求拦截, 逆向工具, 随机森林, 隐私保护