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, 二分类, 云安全监控, 人工智能安全, 分类算法, 合规性, 多模态安全, 威胁检测, 实时检测, 恶意文件分析, 数据预处理, 无后门, 机器学习, 模型部署, 特征提取, 结构分析, 网络安全, 逆向工具, 逻辑回归, 随机森林, 隐私保护, 静态分析