Alok8018/Hybridshield-Malware-detection

GitHub: Alok8018/Hybridshield-Malware-detection

HybridShield 是一个基于深度学习和机器学习的恶意软件检测系统,通过 CNN、DNN 与 LightGBM 的集成模型实现智能威胁分析。

Stars: 0 | Forks: 0

# 🛡️ HybridShield V10 — VS Code 实现指南 ## 项目结构 ``` hybridshield/ │ ├── config.py ← Edit paths here before anything else ├── requirements.txt ← pip install -r requirements.txt │ ├── train_cnn.py ← Step 2: train EfficientNetB0 CNN ├── train_ember.py ← Step 3: train DNN + LightGBM ├── app.py ← Step 4: launch Gradio web UI │ ├── src/ │ ├── data_utils.py ← MalNet extraction, scanning, tf.data pipelines │ ├── ember_utils.py ← EMBER download, patch, vectorize, load │ └── models.py ← CNN, DNN, WarmupCosineDecay definitions │ ├── data/ │ ├── malnet-images-tiny.tar.gz ← PUT YOUR MALNET FILE HERE │ ├── malnet_data/ ← auto-created during training │ └── ember_data/ ← auto-created during training │ ├── models/ ← saved model files (auto-created) │ ├── cnn_best.keras │ ├── cnn_final.keras │ ├── cnn_results.json │ ├── dnn_best.keras │ ├── dnn_final.keras │ ├── lgb_model.txt │ ├── ember_meta.pkl │ └── ensemble_cfg.json │ └── results/ ← plots and dashboards (auto-created) ├── cnn_curves.png ├── cnn_confusion.png └── roc_curves.png ``` ## 步骤 0 — 前置条件 ### 系统要求 - Python 3.10 或 3.11(3.12 与部分 ember 依赖项存在兼容性问题) - 具有 CUDA 11.8+ 的 NVIDIA GPU(用于快速 CNN 训练) - 至少 16 GB RAM(加载 EMBER 约需 6 GB) - 30 GB 可用磁盘空间(MalNet + EMBER + models) ### 需要安装的 VS Code 扩展 - Python (Microsoft) - Pylance - Jupyter(可选 — 用于 notebook 风格的调试) ## 步骤 1 — 设置 ### 1a. 克隆 / 复制项目 ``` # 将所有文件复制到一个文件夹中,然后在 VS Code 中打开 code hybridshield/ ``` ### 1b. 创建虚拟环境 ``` # 在 VS Code 终端 (Ctrl+`) 中 python -m venv .venv # 激活 # Windows: .venv\Scripts\activate # Mac/Linux: source .venv/bin/activate ``` ### 1c. 安装依赖项 ``` pip install -r requirements.txt ``` ### 1d. 放置你的 MalNet 文件 将 `malnet-images-tiny.tar.gz` 复制到 `data/` 文件夹中: ``` data/malnet-images-tiny.tar.gz ← required ``` 该文件大小应约为 800 MB。如果位于其他位置, 请更新 `config.py` 中的 `MALNET_SRC`。 ## 步骤 2 — 训练 CNN ``` python train_cnn.py ``` **它的功能:** 1. 将 MalNet tar.gz 解压到 `data/malnet_data/` 中 2. 扫描类型级别的 train/val/test 划分(21 个类别) 3. 构建平衡的 tf.data pipeline 4. 阶段 1(25 个 epochs):仅训练 head,backbone 冻结 5. 阶段 2(50 个 epochs):解冻顶部 40 层 backbone 6. 保存 `models/cnn_best.keras` 和 `models/cnn_final.keras` 7. 保存 `results/cnn_curves.png` 和 `results/cnn_confusion.png` **预计训练时间:** - 使用 GPU:约 6–8 分钟/epoch × 实际 40 个 epochs ≈ 4–5 小时 - 不使用 GPU(仅 CPU):不推荐 **预期准确率:** - Top-1:65–80% - Top-3:85–93% **VS Code 提示:** 打开终端并观察 epoch 输出。 训练曲线 PNG 将在训练完成后更新。 ## 步骤 3 — 训练 DNN + LightGBM ``` python train_ember.py ``` **它的功能:** 1. 从 elastic.co 下载 EMBER2018(约 1.1 GB) 2. 修补 ember 以兼容 sklearn 3. 将 jsonl 向量化为 .dat 文件(约 30 分钟,一次性操作) 4. 通过分块 partial_fit 拟合 RobustScaler(内存安全) 5. 训练 DNN(60 个 epochs,cosine LR) 6. 训练 LightGBM(3000 轮,early stop) 7. 根据 val AUC 分数计算 ensemble 权重 8. 保存 `models/dnn_final.keras`、`lgb_model.txt`、`ensemble_cfg.json` **预计时间:** - EMBER 下载 + 向量化:约 45 分钟(仅限一次) - DNN 训练:约 20–30 分钟 - LightGBM 训练:约 15–25 分钟 **预期准确率:** - DNN:96–97% - LightGBM:97–98% - Ensemble:97–98% ## 步骤 4 — 启动 Web 界面 ``` python app.py ``` 在浏览器中打开:**http://localhost:7860** **你可以执行的操作:** - 上传任何 `.exe`、`.dll`、`.apk`、`.bin`、`.sys` 文件 - 查看字节可视化(inferno colormap) - 查看每个模型的置信度条(CNN / DNN / LGB / Ensemble) - 查看风险仪表盘(speedometer) - 阅读包含文件信息和 Top-3 恶意软件类型的判定卡片 **公开共享(ngrok 隧道):** 在 `app.py` 中修改: ``` demo.launch(share=True) # generates a gradio.live URL ``` ## GPU 设置(Windows) 如果 `tf.config.list_physical_devices('GPU')` 返回 `[]`: 1. 安装 CUDA 11.8:https://developer.nvidia.com/cuda-11-8-0-download-archive 2. 安装 cuDNN 8.6:https://developer.nvidia.com/cudnn 3. 安装带有 GPU 支持的 TF: ``` pip install tensorflow[and-cuda] ``` ## 无 GPU 运行(仅 CPU) CNN 训练将非常缓慢(约 60 分钟/epoch)。 请在 `config.py` 中减少相关参数: ``` PHASE1_EPOCHS = 5 PHASE2_EPOCHS = 10 STEPS_PER_EPOCH = 100 # override in train_cnn.py ``` DNN 和 LightGBM 在 CPU 上运行良好。 ## 文件说明 | 文件 | 用途 | |---|---| | `config.py` | 所有路径和超参数集中在一处 | | `src/data_utils.py` | MalNet 解压、类型级扫描、tf.data | | `src/ember_utils.py` | EMBER 下载、修补、向量化、内存安全加载 | | `src/models.py` | EfficientNetB0、DNN、WarmupCosineDecay 定义 | | `train_cnn.py` | 完整的 CNN 训练 pipeline — 首先运行此文件 | | `train_ember.py` | DNN + LightGBM 训练 — 第二步运行此文件 | | `app.py` | Gradio Web UI — 在两个训练均完成后运行 | ## 常见错误 **`找不到 MALNET_SRC`** → 将 `malnet-images-tiny.tar.gz` 放入 `data/` 文件夹,并检查 `config.py` **`找不到 train/val/test`** → tar.gz 解压到了不同的目录深度。`find_split_root()` 函数 会自动搜索,但如果失败,请检查 `data/malnet_data/` 内部的内容, 并在 `train_cnn.py` 中手动设置 `SPLIT_ROOT`。 **`训练前检查时 Loss = 80`** → 这是正常且安全的。来自 ImageNet 的 EfficientNet BN 统计信息与 恶意软件图像不匹配,导致了较高的初始 loss。它会在 epoch 2 时自动恢复正常。 **`找不到 ember 模块`** → 运行:`pip install git+https://github.com/elastic/ember.git` **在 train_ember.py 中出现 `找不到 cnn_results.json`** → 请先运行 `train_cnn.py`,以便保存 CNN 开放集阈值。 **加载 EMBER 期间内存不足** → 将 `ember_utils.py load_ember()` 中的 `chunk` 参数从 50_000 减小到 20_000。 ## 预期最终结果 | 模型 | 准确率 | AUC | F1 | |---|---|---|---| | CNN (Top-1) | 65–80% | — | — | | CNN (Top-3) | 85–93% | — | — | | DNN | 96–97% | 0.995+ | 0.96+ | | LightGBM | 97–98% | 0.997+ | 0.97+ | | **Ensemble** | **97–98%** | **0.997+** | **0.97+** |
标签:Apex, Python, TensorFlow, 人工智能, 无后门, 机器学习, 深度学习, 用户模式Hook绕过, 网络安全, 自定义DNS解析器, 逆向工具, 隐私保护