sharnjeet21/iot23

GitHub: sharnjeet21/iot23

这是一个专业级物联网安全监控平台,通过实时恶意软件检测和机器学习分析来保护IoT设备免受威胁。

Stars: 0 | Forks: 0

# 🛡️ CyberShield - ESP32 物联网恶意软件检测系统 专业级物联网安全监控平台,具备实时恶意软件检测、机器学习分析以及企业级网络仪表板,用于检测和分析物联网威胁。 ## 📋 目录 1. [快速开始](#quick-start) 2. [系统概述](#system-overview) 3. [功能特性](#features) 4. [界面展示](#ui-showcase) 5. [系统架构](#architecture) 6. [安装与配置](#installation--setup) 7. [使用指南](#usage-guide) 8. [配置说明](#configuration) 9. [故障排除](#troubleshooting) 10. [项目结构](#project-structure) ## 🚀 快速开始 ### 前置条件 - Python 3.8+ - Node.js 16+ - ESP32 微控制器 - Arduino IDE(用于上传 ESP32 固件) ### 第一步:安装依赖 ``` # 安装 Python 依赖 pip install -r requirements.txt # 安装 Node.js 依赖 npm install ``` ### 第二步:构建 React 仪表板 ### 第三步:启动所有服务 ``` # 终端 1: ML API Server (Port 8080) python3 cloud_api_server.py # 终端 2: Dashboard Backend (Port 5002) python3 dashboard_server.py # 终端 3: Mobile Traffic Sender (Port 8090) python3 serve_mobile.py ``` ### 第四步:检查网络 IP ``` # 运行此命令以查找您机器的 IP 地址 ifconfig | grep "inet " | grep -v "127.0.0.1" ``` ### 第五步:访问平台 将 `` 替换为上述命令获得的 IP 地址: - **仪表板**:http://``:5002 - **移动端流量发送器**:http://``:8090/mobile_traffic_sender.html - **ML API 健康检查**:http://``:8080/health ## 🎯 系统概述 CyberShield 是一个完整的物联网安全解决方案,包含: ### 核心组件 1. **ML 检测引擎**(端口 8080) - 多模型威胁检测系统 - 3 个训练好的模型:二分类 RF、隔离森林、多分类 RF - 实时流量分析 2. **仪表板后端**(端口 5002) - Flask + SocketIO 实时服务器 - 支持 WebSocket 实时更新 - SQLite 数据库用于历史记录 - REST API 端点 3. **移动端流量发送器**(端口 8090) - 基于 Web 的流量模拟界面 - 12 种不同的攻击类型 - 实时威胁分析 - 移动端友好 UI 4. **ESP32 固件** - 网络流量捕获与分析 - 用于指示威胁状态的 LED - WiFi 连接 - 串口调试输出 ## ✨ 功能特性 ### 实时检测 - ✅ 即时恶意软件识别 - ✅ 多模型共识分析 - ✅ 毫秒级响应时间 - ✅ WebSocket 实时更新 ### 机器学习 - ✅ 二分类(正常/恶意软件) - ✅ 隔离森林异常检测 - ✅ 多分类流量类型分类 - ✅ 特征缩放与标准化 ### 仪表板分析 - ✅ 带时间戳的实时威胁信息流 - ✅ 威胁时间线图表 - ✅ 流量类型分布 - ✅ 系统状态监控 - ✅ 历史数据分析 ### 安全特性 - ✅ 基于规则的攻击检测 - ✅ 端口签名匹配 - ✅ 流量体积分析 - ✅ 威胁等级分类 - ✅ 置信度评分 ### 支持的攻击类型 1. 🌐 物联网恶意软件(Mirai 类型) 2. 📤 数据窃取尝试 3. 🔓 暴力破解攻击 4. 🎯 DDoS 攻击 5. 🔐 撞库攻击 6. 📡 DNS 隧道 7. 🕵️ 侦察扫描 8. 💉 注入攻击 9. 🔄 命令与控制 10. 📊 僵尸网络活动 ## 🎨 界面展示 ### 仪表板概览 ![仪表板](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/ff54a4ca22022110.png) 主仪表板提供: - 实时威胁检测信息流 - 系统状态指示器 - 威胁统计数据和指标 - 实时图表可视化 - 具有玻璃拟态效果的专业 UI ### 威胁分析视图 ![威胁分析](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/cbfd9bc433022110.png) 威胁分析视图显示: - 详细的威胁信息 - 流量类型分类 - 威胁等级指示器 - 建议的操作 - 历史威胁模式 ## 🏗️ 系统架构 ### 系统架构图 ``` ┌─────────────────────────────────────────────────────────────┐ │ CyberShield Platform │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────────────┐ ┌──────────────────┐ ┌────────────┐ │ │ │ ESP32 Device │ │ Mobile Browser │ │ Dashboard │ │ │ │ (Detector) │ │ (Traffic Sender)│ │ (React) │ │ │ └────────┬─────────┘ └────────┬─────────┘ └─────┬──────┘ │ │ │ │ │ │ │ └─────────────────────┼───────────────────┘ │ │ │ │ │ ┌────────────▼────────────┐ │ │ │ Dashboard Backend │ │ │ │ (Flask + SocketIO) │ │ │ │ Port: 5002 │ │ │ └────────────┬────────────┘ │ │ │ │ │ ┌────────────▼────────────┐ │ │ │ ML Detection Engine │ │ │ │ (Flask API) │ │ │ │ Port: 8080 │ │ │ │ - Binary RF │ │ │ │ - Isolation Forest │ │ │ │ - Multiclass RF │ │ │ └────────────┬────────────┘ │ │ │ │ │ ┌────────────▼────────────┐ │ │ │ SQLite Database │ │ │ └─────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### 数据流程 1. **流量生成** → 移动端/ESP32 发送网络流量 2. **特征提取** → 系统提取网络特征 3. **ML 分析** → 3 个模型分析流量模式 4. **规则覆盖** → 端口签名和体积检查 5. **威胁分类** → 正常/恶意软件判定 6. **仪表板更新** → WebSocket 实时广播 7. **数据库记录** → 历史记录存储 ## 📦 安装与配置 ### 1. 克隆仓库 ``` git clone cd esp32_malware_client ``` ### 2. 安装 Python 依赖 ``` pip install -r requirements.txt ``` 必需的包: - flask==2.3.3 - flask-cors==4.0.0 - flask-socketio==5.3.6 - scikit-learn==1.3.0 - pandas==2.0.3 - numpy==1.24.3 - joblib==1.3.2 - imbalanced-learn==0.11.0 ### 3. 安装 Node.js 依赖 ``` npm install ``` ### 4. 配置网络 IP 首先,检查当前网络 IP: ``` ifconfig | grep "inet " | grep -v "127.0.0.1" ``` 然后使用您的 IP 更新 `.env` 文件: ``` VITE_SERVER_IP= ``` 在 Python 文件中更新: - `dashboard_server.py`: `MAC_IP = os.environ.get('MAC_IP', '')` - `cloud_api_server.py`: 默认 IP 配置 - `esp32_malware_client.ino`: WiFi IP 设置 ### 5. 构建 React 仪表板 ``` npm run build ``` ### 6. 填充示例数据(可选) ``` python3 populate_db.py ``` ## 🎮 使用指南 ### 启动系统 #### 方式一:手动启动(推荐用于开发) ``` # 终端 1: ML API Server python3 cloud_api_server.py # 终端 2: Dashboard Backend python3 dashboard_server.py # 终端 3: Mobile Traffic Sender python3 serve_mobile.py ``` #### 方式二:后台进程启动 ``` # 在后台启动所有服务 nohup python3 cloud_api_server.py > api.log 2>&1 & nohup python3 dashboard_server.py > dashboard.log 2>&1 & nohup python3 serve_mobile.py > mobile.log 2>&1 & ``` ### 访问仪表板 1. **查找网络 IP** ifconfig | grep "inet " | grep -v "127.0.0.1" 2. **打开仪表板** - URL:http://``:5002 - 显示实时威胁检测 - 显示系统统计信息 - 历史威胁分析 3. **发送测试流量** - URL:http://``:8090/mobile_traffic_sender.html - 选择攻击类型 - 点击"分析流量" - 在仪表板上查看结果 4. **监控 ESP32** - 将 `esp32_malware_client.ino` 上传至 ESP32 - 打开串口监视器(波特率 115200) - 观察实时检测输出 - LED 指示器显示威胁状态 ### 仪表板功能 #### 实时信息流 - 实时威胁检测结果 - 来源 IP 和流量类型 - 威胁等级指示器 - 时间戳和建议 #### 威胁搜寻 - 搜索和筛选威胁 - 按威胁等级排序 - 查看详细威胁信息 - 导出威胁数据 #### 系统日志 - 系统事件和状态 - 连接信息 - 错误消息 - 性能指标 #### 图表与分析 - 威胁时间线可视化 - 流量类型分布 - 威胁率趋势 - 系统健康状态指示器 ## ⚙️ 配置说明 ### 网络配置 网络变更时更新 IP 地址: ``` # 检查当前 IP ifconfig | grep "inet " | grep -v "127.0.0.1" # 使用您的 IP 更新 .env 文件 VITE_SERVER_IP= # 重建 React 应用 npm run build # 重启服务器 ``` ### ML 模型配置 模型已在 IoT-23 数据集上预训练: - **二分类 RF**:准确率 99.99% - **隔离森林**:准确率 90.54% - **多分类 RF**:准确率 99.98% 要重新训练模型: ``` python3 train_models.py ``` ### 数据库配置 SQLite 数据库存储: - 时间戳 - 来源 IP - 端口(源 → 目标) - 恶意标志 - 置信度分数 - 威胁等级 - 流量类型 ### ESP32 配置 编辑 `esp32_malware_client.ino`: ``` const char* ssid = "Your_WiFi_SSID"; const char* password = "Your_WiFi_Password"; const char* serverIP = ""; // Use the IP from: ifconfig | grep "inet " | grep -v "127.0.0.1" const int serverPort = 8080; ``` ## 🔧 故障排除 ### 仪表板无法加载 **问题**:http://``:5002 页面无限加载 **解决方案**: 1. 检查 IP 地址是否正确 ifconfig | grep "inet " | grep -v "127.0.0.1" 2. 验证仪表板服务器正在运行 lsof -i :5002 3. 检查 React 构建文件是否存在 ls -la dist/index.html 4. 重新构建 React 应用 npm run build ### ML API 无响应 **问题**:API 服务器返回 500 错误 **解决方案**: 1. 验证模型已加载 curl http://localhost:8080/health 2. 检查模型文件是否存在 ls -la *.pkl 3. 验证 Python 依赖 pip install -r requirements.txt ### ESP32 连接问题 **问题**:ESP32 无法连接到 WiFi **解决方案**: 1. 验证固件中的 WiFi 凭据 2. 检查 ESP32 是否在同一网络 3. 监控串口输出以查看错误 4. 验证固件中的 IP 地址与服务器匹配 ### WebSocket 连接错误 **问题**:仪表板显示"正在重新连接..." **解决方案**: 1. 检查防火墙是否允许端口 5002 2. 验证 SocketIO 是否正在运行 3. 检查浏览器控制台中的错误 4. 重启仪表板服务器 ### 仪表板无数据 **问题**:仪表板显示空的威胁列表 **解决方案**: 1. 填充示例数据 python3 populate_db.py 2. 从移动端发送器发送测试流量 3. 检查 ESP32 是否已连接 4. 验证数据库是否有记录 sqlite3 dashboard.db "SELECT COUNT(*) FROM dashboard_logs;" ## 📁 项目结构 ``` esp32_malware_client/ ├── 📄 README.md # This file ├── 📄 .env # Environment configuration ├── 📄 .gitignore # Git ignore rules │ ├── 🐍 Python Backend │ ├── cloud_api_server.py # ML detection API (Port 8080) │ ├── dashboard_server.py # Dashboard backend (Port 5002) │ ├── serve_mobile.py # Mobile server (Port 8090) │ ├── train_models.py # Model training script │ ├── populate_db.py # Sample data generator │ └── requirements.txt # Python dependencies │ ├── 🎨 Frontend (React) │ ├── src/ │ │ ├── App.jsx # Main React component │ │ ├── main.jsx # React entry point │ │ ├── index.css # Global styles │ │ └── components/ │ │ ├── Navbar.jsx # Top navigation │ │ ├── Sidebar.jsx # Left sidebar │ │ ├── MetricsGrid.jsx # Statistics cards │ │ ├── LiveFeed.jsx # Real-time threats │ │ ├── ThreatHunt.jsx # Threat search │ │ ├── SystemLogs.jsx # System events │ │ ├── ChartsSection.jsx # Analytics charts │ │ ├── NodeMap.jsx # Network visualization │ │ ├── SecurityPolicy.jsx # Security settings │ │ ├── SettingsModal.jsx # Settings dialog │ │ └── ProfileModal.jsx # User profile │ ├── dist/ # Built React app │ ├── package.json # Node dependencies │ ├── vite.config.js # Vite configuration │ └── tailwind.config.js # Tailwind CSS config │ ├── 🔧 ESP32 Firmware │ ├── esp32_malware_client.ino # Main detector firmware │ └── esp32_cam_sender.ino # CAM sender firmware │ ├── 📊 ML Models │ ├── advanced_iot23_binary_rf.pkl # Binary classifier │ ├── advanced_iot23_isolation_forest.pkl # Anomaly detector │ ├── advanced_iot23_multiclass_smote.pkl # Traffic classifier │ └── advanced_iot23_scaler.pkl # Feature scaler │ ├── 🌐 Web Interfaces │ ├── index.html # Dashboard HTML │ ├── mobile_traffic_sender.html # Mobile traffic UI │ └── assets/ │ ├── dashboard.png # Dashboard screenshot │ └── threat.png # Threat view screenshot │ ├── 💾 Database │ └── dashboard.db # SQLite database │ └── 📚 Documentation └── ESP32_IoT_Malware_Detection_Report.tex # Technical report ``` ## 🔐 安全注意事项 ### 最佳实践 1. **网络安全** - 使用 VPN 进行远程访问 - 使用防火墙限制端口 8080 和 5002 - 更改默认 WiFi 凭据 - 使用动态 IP 配置(.env 文件) 2. **数据保护** - 加密敏感数据 - 安全数据库备份 - 生产环境中使用 HTTPS 3. **模型安全** - 验证输入数据 - 监控模型性能 - 定期更新模型 4. **ESP32 安全** - 使用安全 WiFi(WPA2/WPA3) - 实施速率限制 - 监控未授权访问 ## 📈 性能指标 ### 系统性能 | 指标 | 值 | |------|------| | API 响应时间 | <100ms | | 仪表板更新延迟 | <500ms | | 模型推理时间 | <50ms | | 数据库查询时间 | <10ms | | WebSocket 广播 | 实时 | ### 模型准确率 | 模型 | 准确率 | 数据集 | |------|------|------| | 二分类 RF | 99.99% | IoT-23 | | 隔离森林 | 90.54% | IoT-23 | | 多分类 RF | 99.98% | IoT-23 | ## 🤝 参与贡献 欢迎贡献!请: 1. Fork 仓库 2. 创建功能分支 3. 进行修改 4. 提交 Pull Request ## 📝 许可证 本项目根据 MIT 许可证授权 - 详见 LICENSE 文件。 ## 📞 支持 如有问题或疑问: 1. 查看[故障排除](#troubleshooting)部分 2. 检查系统日志 3. 检查 ESP32 串口输出 4. 验证网络配置 ## 🎓 技术细节 ### ML 模型架构 **二分类随机森林** - 100 棵树 - 最大深度:20 - 最小分裂样本数:2 - 针对速度和准确率优化 **隔离森林** - 100 个估计器 - 污染率:0.1 - 检测流量模式中的异常 **多分类随机森林** - 100 棵树 - 12 个流量类型类别 - SMOTE 过采样以平衡数据 ### 特征工程 从网络流量中提取的特征: - 数据包计数 (orig_pkts, resp_pkts) - 字节计数 (orig_bytes, resp_bytes) - 持续时间和时序 - 协议信息 - 端口号和范围 ### 检测流水线 1. **特征提取** → 提取网络特征 2. **缩放** → 特征标准化 3. **模型推理** → 运行 3 个模型 4. **规则覆盖** → 应用端口/体积规则 5. **置信度计算** → 聚合预测结果 6. **威胁分类** → 确定威胁等级 ## 🚀 未来增强 - [ ] 深度学习模型(LSTM、CNN) - [ ] 实时数据包捕获 - [ ] 高级威胁搜寻 - [ ] 自动化响应操作 - [ ] 多设备管理 - [ ] 云集成 - [ ] 移动应用 - [ ] 高级报告 **最后更新**:2026 年 5 月 18 日 **版本**:1.0.0 **状态**:生产就绪 ✅
标签:Arduino IDE, ESP32, Flask, GNU通用公共许可证, MITM代理, Node.js, Python, React, SocketIO, Syscalls, WebSocket, Web仪表板, 企业级安全, 依赖分析, 多模型检测, 威胁分析, 安全监控平台, 嵌入式安全, 无后门, 机器学习分析, 物联网安全, 网络安全, 自动化侦查工具, 自定义脚本, 逆向工具, 隐私保护