Trifu-Cosmin/Malware-Analysis-Using-ML-Algorithms
GitHub: Trifu-Cosmin/Malware-Analysis-Using-ML-Algorithms
基于机器学习集成模型的 Windows PE 恶意软件检测系统,通过静态特征分析实现良性与恶意文件的自动判别。
Stars: 0 | Forks: 0
# 基于机器学习算法的恶意软件分析
本科毕业设计项目,主要通过静态 Windows PE 文件分析和机器学习算法来进行恶意软件检测。
该应用程序会对可执行文件进行分析,并利用基于 EMBER 静态 PE 特征训练的多个机器学习模型来预测文件是良性的还是恶意的。该项目包含后端 API、Streamlit 前端、用户身份验证、扫描历史记录、PDF 报告导出以及对扫描压缩包的支持。
## 主要功能
* Windows PE 文件静态分析
* 使用机器学习模型进行恶意软件检测
* 加权集成的最终判定
* 用于文件扫描的 FastAPI 后端
* Streamlit 前端界面
* 用户登录和注册
* 特定用户的扫描历史记录
* PDF 报告导出
* 对压缩文件的压缩包扫描支持
* 模型比较和评估结果
## 使用技术
* Python
* FastAPI
* Streamlit
* scikit-learn
* LightGBM
* XGBoost
* pandas
* numpy
* joblib
* ReportLab
* Uvicorn
## 机器学习模型
该项目评估并集成了多个机器学习模型:
* 逻辑回归 (Logistic Regression)
* 随机森林 (Random Forest)
* LightGBM
* XGBoost
* LinearSVC
* SVC
* 朴素贝叶斯 (Naive Bayes)
最终预测采用加权集成方法生成,其中表现更强的模型对最终的良性/恶意判定具有更高的影响力。
## 数据集与特征提取
该项目基于 EMBER 风格的静态 PE 特征。每个文件都使用从可执行文件结构中提取的 2381 维特征向量来表示。
由于体积过大,原始数据集、原始文件和向量化数据未包含在此仓库中。
本仓库仅包含应用程序源代码、训练/评估脚本以及理解和运行该系统所需的项目结构。
## 项目结构
```
project/
│
├── app/
│ ├── api.py # FastAPI backend
│ ├── scan_core.py # Main scanning logic
│ └── ...
│
├── streamlit_app/
│ ├── home.py # Streamlit frontend entry point
│ ├── scan.py # Scan page
│ ├── history.py # Scan history page
│ ├── comparison.py # Model comparison page
│ └── ...
│
├── training/
│ ├── train_all_models.py # Model training script
│ ├── evaluate_models.py # Model evaluation script
│ └── ...
│
├── models/ # Trained models, ignored if too large
├── reports/ # Generated reports, ignored from Git
├── requirements.txt
├── .gitignore
└── README.md
```
## 如何运行该项目
### 1. 克隆仓库
```
git clone https://github.com/Trifu-Cosmin/malware-analysis-ml.git
cd malware-analysis-ml
```
### 2. 创建并激活虚拟环境
```
python -m venv .venv
```
在 Windows 上:
```
.venv\Scripts\activate
```
在 Linux/macOS 上:
```
source .venv/bin/activate
```
### 3. 安装依赖项
```
pip install -r requirements.txt
```
### 4. 运行后端 API
```
uvicorn app.api:app --reload --port 8000
```
后端将在本地运行于:
```
http://127.0.0.1:8000
```
### 5. 运行 Streamlit 前端
打开第二个终端,激活相同的虚拟环境并运行:
```
streamlit run streamlit_app/home.py
```
前端将在浏览器中打开。
## API 端点
### 扫描文件
```
POST /scan
```
该端点接收上传的文件,提取其静态特征,并返回包含预测结果、置信度分数和各个独立模型输出的 JSON 响应。
响应示例:
```
{
"filename": "sample.exe",
"final_label": "malicious",
"confidence": 0.87,
"models": {
"Random Forest": 0.91,
"LightGBM": 0.89,
"XGBoost": 0.86
}
}
```
## 重要说明
由于有意为之,本仓库未包含大型文件,包括:
* 原始 EMBER 数据集文件
* 向量化数据集文件
* 大型训练模型文件
* 生成的报告
* 本地用户历史记录文件
* 真实的恶意软件样本
真实的恶意软件样本不应上传到此仓库。该项目仅供教育和研究目的使用。
## 目的
该项目是我在蒂米什瓦拉西部大学 (West University of Timișoara) 本科毕业设计的一部分。其目标是探索如何将机器学习算法应用于静态恶意软件检测,并基于训练好的模型构建一个实用的应用程序。
## 作者
Trifu Cosmin-Ionuț
蒂米什瓦拉西部大学 (West University of Timișoara)
本科毕业设计项目
GitHub: [Trifu-Cosmin](https://github.com/Trifu-Cosmin)
标签:Apex, AV绕过, FastAPI, Kubernetes, Python, Streamlit, 云安全监控, 无后门, 机器学习, 自定义DNS解析器, 访问控制, 逆向工具, 静态分析