tanay-codes/PE-File-Malware-Detector
GitHub: tanay-codes/PE-File-Malware-Detector
一个基于 Python 和 FastAPI 的 PE 文件恶意软件检测原型,结合静态特征提取与 Random Forest 机器学习分类器,通过 Web 界面和 API 对 Windows 可执行文件进行恶意性分析。
Stars: 0 | Forks: 0
# PE 文件恶意软件检测器
一个轻量级的基于 Web 的 PE 恶意软件检测原型,它结合了 FastAPI 后端、简单的前端仪表板以及一个机器学习分类器,用于分析 Windows 可移植可执行 (Portable Executable) 文件。
## 概述
本项目允许用户:
- 上传 PE 文件,例如 `.exe`、`.dll`、`.sys` 或 `.scr`
- 从文件中提取结构和行为特征
- 运行经过训练的机器学习模型来评估文件是否可能是恶意的
- 检查元数据、可疑导入、熵信息以及模型可解释性因子
- 通过内置的 Web 界面或 API 重新训练模型
本应用程序旨在作为一个演示或教育项目,默认情况下使用合成的 PE 风格数据集进行初始模型训练。
## 功能
- 使用 `pefile` 进行 PE 解析和特征提取
- 基于 Random Forest 的恶意软件分类
- 用于预测和模型管理的 REST API
- 现代化的 Web 仪表板,用于上传、结果、模型指标和扫描历史
- 如果没有可用的已保存模型,则自动训练模型
## 技术栈
- Python
- FastAPI
- Uvicorn
- scikit-learn
- pandas
- numpy
- joblib
- pefile
- HTML、CSS 和原生 JavaScript
## 项目结构
```
backend/
app.py # FastAPI API routes and frontend serving
ml_model.py # model training, evaluation, prediction, and persistence
pe_extractor.py # PE parsing and feature extraction logic
frontend/
index.html # UI layout
app.js # frontend logic and API calls
style.css # dashboard styles
run.py # startup script for the application
requirements.txt # Python dependencies
```
## 要求
推荐使用 Python 3.9 或更高版本。
## 安装说明
1. 克隆或打开项目文件夹。
2. 创建并激活虚拟环境:
```
python -m venv .venv
.venv\Scripts\activate
```
3. 安装所需的包:
```
pip install -r requirements.txt
```
## 运行应用程序
在项目根目录下,使用以下命令启动服务器:
```
python run.py
```
然后在浏览器中打开:
```
http://127.0.0.1:8000
```
启动脚本将:
- 检查是否已存在训练好的模型
- 如有需要,自动训练一个默认模型
- 启动 FastAPI 服务器
## 用法
1. 在浏览器中打开 Web UI。
2. 从扫描页面上传 PE 文件。
3. 查看分类结果、恶意软件概率、元数据、可疑 API 导入、节熵以及模型贡献因子。
4. 访问“模型中心”(Model Center) 标签页,使用自定义超参数重新训练分类器。
5. 在“历史”(History) 标签页中查看以前的扫描记录。
## API 端点
### POST /api/predict
上传一个 PE 文件并接收分类结果。
- 请求:`multipart/form-data`,包含名为 `file` 的文件字段
- 响应包括:
- `status`
- `prediction`
- `metadata`
- `features`
### POST /api/train
触发模型重新训练。
- 表单字段:
- `n_estimators`(默认值:`100`)
- `max_depth`(可选)
### GET /api/model
检索已保存的模型指标和超参数。
### GET /api/history
返回当前会话的近期扫描历史记录。
## 模型行为
该分类器是一个基于经特征工程处理的 PE 特征训练的 Random Forest 模型,这些特征包括:
- 头部值
- 节数和熵
- 导入计数和可疑 API 使用情况
- 资源统计信息
- 校验和有效性
模型在训练后会保存为 `backend/model/model.joblib`。
## 注意事项
- 目前的实现是一个原型,无意替代生产级别的恶意软件检测 pipeline。
- 对于实际应用,应使用包含真实 PE 二进制文件的带标签数据集以及更强大的特征工程 pipeline。
- 本应用程序专为本地实验和演示而设计。
## 许可证
本项目按“原样”提供,仅供教育和实验目的使用。
标签:Apex, AV绕过, FastAPI, PE文件分析, 云安全监控, 多模态安全, 数据可视化, 机器学习, 网络测绘, 逆向工具, 静态分析