tharunsridhar/Static-Malware-Classification

GitHub: tharunsridhar/Static-Malware-Classification

该项目将恶意软件二进制文件转换为灰度图像,利用 EfficientNetV2-S 深度学习模型实现 31 个恶意软件家族的静态分类,无需执行可疑文件即可达到 95% 的测试准确率。

Stars: 0 | Forks: 0

# 使用 EfficientNetV2-S 进行多类别恶意软件家族分类 ![Python](https://img.shields.io/badge/Python-3-3776AB?style=flat-square&logo=python&logoColor=white) ![TensorFlow](https://img.shields.io/badge/TensorFlow-2.x-F57C00?style=flat-square&logo=tensorflow&logoColor=white) ![Model](https://img.shields.io/badge/Model-EfficientNetV2--S-informational?style=flat-square) 基于深度学习的静态恶意软件分析系统,该系统利用基于图像的表示和迁移学习,将可执行二进制文件分类到 31 个恶意软件家族中。 ## 主要结果 - **总类别数:** 31 个恶意软件家族 - **训练样本数:** 8,388 - **验证样本数:** 1,480 - **测试样本数:** 3,879 - **输入尺寸:** 384 × 384 - **Batch Size:** 16 - **模型:** EfficientNetV2-S(在 ImageNet 上预训练) - **优化器:** Adam - **损失函数:** Categorical Cross-Entropy(带有 Label Smoothing) - **测试准确率:** **95%** - **Macro F1-Score:** **0.96** - **Weighted F1-Score:** **0.95** 在大多数恶意软件家族中具有强大的逐类精确率和召回率。 ## 问题描述 传统的基于特征的杀毒系统难以应对混淆和零日恶意软件。 ![原理图](https://static.pigsec.cn/wp-content/uploads/repos/cas/17/17402043f575d34a2350b338d878106fe8928b9fec93bf6f046dfbb923118031.png) 本项目实现了一个静态的、基于图像的恶意软件分类 pipeline,该 pipeline 能够: - 检测恶意二进制文件 - 将其分类到 31 个恶意软件家族中 - 避免执行不受信任的文件 - 使用迁移学习代替手工制作的特征 ## 方法论 ### 1. 恶意软件二进制文件到图像的转换 通过将原始字节值(0–255)映射到像素强度,将可执行二进制文件转换为灰度/RGB 图像。 这保留了结构模式,例如熵区域、加壳代码段和指令重复。 ### 2. 图像预处理 - 调整大小为 384 × 384 - RGB 格式(3 通道) - 使用 EfficientNetV2 的 `preprocess_input` 进行归一化 - 应用了数据增强: - 随机翻转 - 随机旋转 - 随机缩放 - 随机对比度 ### 3. 模型架构 - EfficientNetV2-S(include_top=False) - Global Average Pooling - Batch Normalization - Dense Layer(Swish 激活) - Dropout - 最终的 Dense Layer(Softmax – 31 个类别) ### 4. 训练策略 - 预热阶段(base frozen) - Head training - 微调选定的较深层 - 应用了 class weights 以处理不平衡问题 - Early stopping + ReduceLR callbacks - 模型以 `.keras` 和 `.h5` 格式保存 ## 训练性能 ### 训练与验证的准确率及损失 ![训练曲线](https://static.pigsec.cn/wp-content/uploads/repos/cas/99/9963795192a33208d8b532e0265fcad5e4ccecddd66861719f613d6d77c4f0d2.png) 模型显示出稳定的收敛,没有严重的过拟合现象。 ## 混淆矩阵 ![混淆矩阵](https://static.pigsec.cn/wp-content/uploads/repos/cas/b1/b140831adb531b680c3c0754a14fc804f0dce6802d9d2125b3de97a09e257c4e.png) 强烈的对角线优势表明在各个恶意软件家族中逐类预测是准确的。 ## 分类报告 ![分类报告](https://static.pigsec.cn/wp-content/uploads/repos/cas/c2/c29515f5973825bbb8500d30f5ed1bf69c092180130b75fdf7b5ab22eac9be92.png) 在频繁类别和少数类别之间具有平衡的精确率和召回率。 ## 测试集评估 ![测试评估](https://static.pigsec.cn/wp-content/uploads/repos/cas/92/927088ff61d5fdee3ea607ea675eff53d17648a98749a16b80561b40b7af7a67.png) 最终评估在完全未见过的测试数据集上进行。 ## 技术栈 - Python - TensorFlow / Keras - EfficientNetV2 - NumPy - Scikit-learn - Matplotlib - GPU 加速(如果可用) ## 数据集概览 ### 多类别分类 - 31 个恶意软件家族 - 基于目录的标注 - 训练 / 验证 / 测试集划分 - 使用 class weights 处理类别不平衡 ### 图像属性 - 分辨率:384 × 384 - RGB 格式 - 应用了 EfficientNet 预处理 ## 训练配置 - 损失函数:带有 Label Smoothing 的 Categorical Cross-Entropy - 优化器:Adam - Batch Size:16 - 启用迁移学习 - 应用了微调 - Early Stopping 与学习率衰减 - 集成了 Class Weights ## 如何运行 ### 安装依赖 ``` pip install -r requirements.txt ``` ### 训练模型 训练通过 Jupyter notebooks 进行。按顺序打开并运行它们: ``` jupyter notebook "(classification)efficientnet v2s.ipynb" jupyter notebook "(detection)efficientnet v2 s.ipynb" ``` ### 运行推理 ``` python launch_streamlit_tunnel.py ``` ## 设计优势 - 静态分析(不执行恶意软件) - 迁移学习实现更快的收敛 - 处理类别不平衡问题 - 模块化的深度学习 pipeline - 支持部署的模型格式 ## 局限性 - 仅限静态分析(无行为特征) - 性能取决于数据集的多样性 - 需要定期重新训练以应对不断演变的恶意软件 ## 完整技术报告 完整的 34 页文档可在以下位置找到: ``` Reports.pdf ``` ## 结论 该项目表明,结合基于图像的恶意软件表示与 EfficientNetV2 迁移学习,可以实现高性能的多类别分类(95% 准确率),同时在各个恶意软件家族中保持平衡的精确率和召回率。 它为静态恶意软件分析提供了一个可扩展、可复现且有研究支持的深度学习 pipeline。 ## 作者 Tharun Sridhar
标签:Kubernetes, NoSQL, TensorFlow, 云安全监控, 图像分类, 深度学习, 逆向工具, 静态分析