pujitha-rachakonda/pdf-malware-detection-ml
GitHub: pujitha-rachakonda/pdf-malware-detection-ml
基于Flask的Web应用,利用随机森林和逻辑回归对上传的PDF进行静态分析与恶意分类。
Stars: 0 | Forks: 0
# 📄 基于机器学习的 PDF 恶意软件智能检测 Web 应用
## 🔍 概述
本项目提出了一款智能 Web 应用,旨在使用机器学习技术检测恶意的 PDF 文件。该系统允许用户上传 PDF 文档,并接收实时的分类结果,在不执行文件的情况下判断该文件是**良性**还是**恶意**的。
该应用集成了两种监督学习模型——**Random Forest** 和 **Logistic Regression**,以在提供可解释结果的同时实现高检测准确率。
## 🎯 目标
* 研究用于恶意软件检测的机器学习方法
* 准备包含良性和恶意 PDF 文件的数据集
* 训练和评估分类模型
* 开发用于实时检测的 Web 系统
* 提供可解释且用户友好的结果
## 🧠 系统架构
### 🔹 机器学习模块
系统使用了两种模型:
* **Random Forest**
一种集成学习方法,它构建多个决策树并使用多数投票进行分类。它能有效捕获 PDF 结构中复杂的非线性模式,从而提高检测的准确率和鲁棒性。
* **Logistic Regression**
一种用于二分类的概率模型。它提供置信度分数,并通过展示特征如何影响预测来支持可解释性。
### 🔹 数据预处理与训练
* 包含良性和恶意 PDF 文件的平衡数据集
* 从以下内容进行特征提取:
* 元数据
* 结构属性
* 嵌入对象
* 使用缩放技术进行特征标准化
* 使用 Python 和 Scikit-learn 进行模型训练
* 使用以下指标进行性能评估:
* Accuracy (准确率)
* Precision (精确率)
* Recall (召回率)
* F1-score (F1 分数)
### 🔹 模型部署
* 模型使用 **Joblib** 进行序列化
* 以 `.pkl` 文件形式存储,实现快速加载
* 运行时无需重新训练
* 支持 Web 应用中的实时预测
### 🔹 Web 应用
* 后端:**Flask (Python)**
* 前端:**HTML, CSS**
* 功能:
* 上传 PDF 文件
* 自动提取特征
* 使用机器学习模型进行预测
* 展示带有置信度分数的结果
## ⚙️ 使用技术
* Python
* Flask
* Scikit-learn
* Pandas, NumPy
* Joblib
* PyPDF2
## 📁 项目结构
```
pdf-malware-detection-ml/
│── app.py
│── train.py
│── requirements.txt
│── README.md
│── .gitignore
│
├── models/
│ ├── malware_model.pkl
│ ├── malware_model_lr.pkl
│ ├── scaler.pkl
│
├── data/
│ ├── dataset.csv
│ ├── feature_columns.json
│
├── feature_extraction/
│ └── extract_features.py
│
├── templates/
├── uploads/
```
## ▶️ 如何运行项目
### 第 1 步:克隆仓库
```
git clone https://github.com/pujitha-rachakonda/pdf-malware-detection-ml.git
cd pdf-malware-detection-ml
```
### 第 2 步:安装依赖项
```
pip install -r requirements.txt
```
### 第 3 步:运行应用
```
python app.py
```
### 第 4 步:在浏览器中打开
```
http://127.0.0.1:5000/
```
## 📊 结果
该系统在检测恶意 PDF 文件方面表现出色,具体体现在:
* 高准确率和泛化能力
* 提高了召回率,以最大限度减少遗漏的威胁
* 平衡的精确率和 F1-score
Random Forest 和 Logistic Regression 的结合提升了预测性能和可解释性。
## 🔐 核心特性
* 实时恶意软件检测
* 安全的静态分析(不执行文件)
* 双模型分类
* 置信度分数显示
* 可解释的预测
## 🧪 测试与验证
* 通过训练集-测试集划分进行无偏评估
* 对特征提取和缩放进行单元测试
* 用于管道验证的集成测试
* 通过 Web 界面进行端到端测试
* 用于评估模型性能的混淆矩阵分析
## ⚠️ 挑战与解决方案
* 训练和推理之间的特征一致性问题 → 通过使用 schema (`feature_columns.json`) 解决
* 机器学习模型与 Flask 的集成问题 → 通过模块化管道解决
* 过拟合问题 → 通过使用 Random Forest 和验证技术缓解
## 📌 结论
本项目为使用机器学习检测基于 PDF 的恶意软件提供了一种实用且可扩展的解决方案。通过将预测准确性、可解释性与用户友好的界面相结合,它为增强网络安全意识和防护提供了一款有效的工具。
## 👩💻 作者
**Pujitha Rachakonda**
标签:AMSI绕过, Apex, Go语言工具, Joblib, PDF恶意软件, Python, Scikit-learn, 二分类, 云安全监控, 人工智能安全, 分类算法, 合规性, 多模态安全, 威胁检测, 实时检测, 恶意文件分析, 数据预处理, 无后门, 机器学习, 模型部署, 特征提取, 结构分析, 网络安全, 逆向工具, 逻辑回归, 随机森林, 隐私保护, 静态分析