tharunsridhar/Static-Malware-Classification
GitHub: tharunsridhar/Static-Malware-Classification
该项目将恶意软件二进制文件转换为灰度图像,利用 EfficientNetV2-S 深度学习模型实现 31 个恶意软件家族的静态分类,无需执行可疑文件即可达到 95% 的测试准确率。
Stars: 0 | Forks: 0
# 使用 EfficientNetV2-S 进行多类别恶意软件家族分类



基于深度学习的静态恶意软件分析系统,该系统利用基于图像的表示和迁移学习,将可执行二进制文件分类到 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**
在大多数恶意软件家族中具有强大的逐类精确率和召回率。
## 问题描述
传统的基于特征的杀毒系统难以应对混淆和零日恶意软件。

本项目实现了一个静态的、基于图像的恶意软件分类 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` 格式保存
## 训练性能
### 训练与验证的准确率及损失

模型显示出稳定的收敛,没有严重的过拟合现象。
## 混淆矩阵

强烈的对角线优势表明在各个恶意软件家族中逐类预测是准确的。
## 分类报告

在频繁类别和少数类别之间具有平衡的精确率和召回率。
## 测试集评估

最终评估在完全未见过的测试数据集上进行。
## 技术栈
- 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, 云安全监控, 图像分类, 深度学习, 逆向工具, 静态分析