ashm8183-code/MalwareDetector
GitHub: ashm8183-code/MalwareDetector
基于 Random Forest 的 Windows PE 文件静态恶意软件检测工具,通过提取 PE 结构特征实现良性与恶意软件的二分类预测。
Stars: 0 | Forks: 0
# 🛡️ 使用机器学习的 AI 恶意软件检测
这是一个基于机器学习的静态恶意软件检测系统。它利用 PE Header 和 PE Section 特征分析 Windows 可移植执行体 (PE) 文件,从而将可执行文件分类为 **良性 (Benign)** 或 **恶意软件 (Malware)**。
## 📌 概述
传统的基于特征码的防病毒解决方案很难检测到新出现的恶意软件变种。本项目使用**静态分析**和**机器学习**技术,在不执行的情况下识别恶意的 Windows 可执行文件。
该应用程序从 PE 文件中提取结构信息,将提取的特征输入到经过训练的 **Random Forest Classifier** 中,并通过简单的图形用户界面预测该文件是良性的还是恶意的。
## ✨ 功能
- 静态恶意软件分析
- PE Header 特征提取
- PE Section 特征提取
- Random Forest 机器学习模型
- 简单的图形界面
- 二分类(良性 / 恶意软件)
- 预测的置信度分数
## 🏗️ 系统架构
```
Executable (.exe)
│
▼
PE Feature Extraction
(Header + Sections)
│
▼
Feature Vector
│
▼
Random Forest Classifier
│
▼
Prediction
(Benign / Malware)
```
## 📊 数据集
使用的数据集:
- Windows 恶意软件数据集
- 总样本数:**29,807**
原始分布
| 类别 | 样本数 |
|--------|---------|
| 良性 | 1,877 |
| 恶意软件 | 27,930 |
为避免模型偏差,在训练前对数据集进行了平衡处理。
平衡后的数据集
| 类别 | 样本数 |
|--------|---------|
| 良性 | 1,877 |
| 恶意软件 | 1,877 |
## 📊 用于训练的数据集
本项目使用了 Kaggle 上由 **Joakim Arvidsson** 提供的 **Windows Malwares** 数据集。
该数据集包含了从 Windows 可移植执行体 (PE) 文件中提取的静态特征,包括:
- PE Header 特征
- PE Section 特征
- 导入的 DLL 信息
- 导入的 API 函数信息
在最终的模型中,仅使用了 **PE Header** 和 **PE Section** 特征。
原始数据集包含 **29,807** 个样本,分为七个类别(一个良性类别和六个恶意软件家族)。这些标签被转换为**二分类**问题(良性 vs 恶意软件),并在训练前对数据集进行了平衡处理,以提高模型性能。
## 🔍 使用的特征
### PE Header 特征
示例:
- Machine
- NumberOfSections
- ImageBase
- Characteristics
- SizeOfImage
- AddressOfEntryPoint
### PE Section 特征
分析的 Section:
- .text
- .data
- .rdata
- .bss
- .idata
- .edata
- .rsrc
- .reloc
- .tls
- .pdata
对于每个 Section,会提取以下属性:
- Virtual Size
- Virtual Address
- Raw Size
- Characteristics
- Relocation Information
## 🤖 机器学习模型
算法:
- Random Forest Classifier
训练准确率:
**97.07%**
## 🖥️ GUI
该应用程序允许用户:
1. 选择任何 Windows 可执行文件
2. 提取 PE 特征
3. 预测文件是良性还是恶意软件
4. 显示预测置信度
## 🚀 安装说明
克隆仓库
```
git clone https://github.com/ashm8183-code/MalwareDetector.git
```
安装依赖项
```
pip install -r requirements.txt
```
运行应用程序
```
python malware_gui.py
```
## 📁 项目结构
```
MalwareDetector
│
├── models/
│ ├── malware_model_sections.pkl
│ └── feature_columns_sections.pkl
│
├── feature_extractor.py
├── predict_pe_sections.py
├── malware_gui.py
├── train_ml_v2_sections.py
│
├── Entropy.png
├── Malware s Benign.png
│
└── .gitignore
```
## 📈 结果
预测示例
| 可执行文件 | 预测结果 |
|------------|------------|
| notepad.exe | ✅ 良性 |
| calc.exe | ✅ 良性 |
| cmd.exe | ✅ 良性 |
| squalr | ⚠️ 恶意软件 (误报) |
## 🖥️ 应用程序截图
### 主界面

应用程序的主界面允许用户选择 Windows 可执行文件,并使用训练好的机器学习模型进行分析。
### 良性文件检测

合法可执行文件被分类为**良性**及其预测置信度的示例。
### 恶意软件检测

可疑可执行文件被分类为**恶意软件**的示例。
## 📊 特征可视化
### PE 文件特征

用于机器学习的 PE 文件特征的可视化,包括 header 和 section 信息。
### Entropy 分布

用于说明良性与恶意可执行文件之间差异的 Entropy 比较。
## ⚠️ 局限性
- 仅限静态分析
- 不会执行恶意软件
- 可能会出现误报
- 检测准确率取决于训练数据的质量
## 🔮 未来改进
- DLL 导入分析
- API 函数分析
- 动态恶意软件分析
- 深度学习模型
- 实时监控
- 多类别恶意软件家族分类
## 👨💻 作者
**Ashiq Mohammad Abdul Ali**
人工智能与数据科学 B.Tech
KMCT 新兴技术与管理学院
标签:Apex, Windows PE分析, 云安全监控, 机器学习, 逆向工具, 随机森林, 静态分析