Nadimm909/malware-detection-ml

GitHub: Nadimm909/malware-detection-ml

基于机器学习的 Windows PE 文件恶意软件静态检测项目,通过分析可执行文件头部特征实现无需运行的恶意与合法分类。

Stars: 0 | Forks: 0

# 🛡️ 基于机器学习的恶意软件检测 通过对 Windows PE(Portable Executable)头部特征进行静态分析,将可执行文件分类为**恶意软件**或**合法文件** —— 全程无需运行文件。 [![Python](https://img.shields.io/badge/Python-3.x-blue.svg)](https://www.python.org/) [![scikit-learn](https://img.shields.io/badge/scikit--learn-ML-orange.svg)](https://scikit-learn.org/) [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) ## 📌 概述 传统的杀毒软件依赖于特征匹配 —— 它们只能捕获已知的恶意软件。本项目采用了不同的方法:它从 Windows 可执行文件的 PE 头部提取 **57 个静态特征**(信息熵、导入的 DLL、资源元数据等),并利用机器学习来识别恶意文件的*结构模式* —— 甚至是此前从未遇到过的变种。 **最佳结果:** Random Forest 分类器在包含 27,610 个文件的保留测试集上达到了 **99.46% 的准确率**。 ## 🎯 目标 - 研究恶意与合法可执行文件之间不同的 PE 头部特征 - 从大规模数据集中选择最具信息量的特征 - 训练并比较多种 ML 分类器 - 使用准确率、精确率、召回率和 F1-score 进行评估 - 确定最适合实际部署的性能最优模型 ## 📊 数据集 | | | |---|---| | **样本** | 138,047 个 Windows 可执行文件 | | **特征** | 57 个静态 PE 头部属性 | | **类别划分** | 96,724 个恶意软件 (70.1%) / 41,323 个合法文件 (29.9%) | | **缺失值** | 无 | | **重复项** | 无 | 数据集文件位于 [`Datasets/`](Datasets/)(`MalwareData.csv`,管道符分隔)。 ## 🧠 方法论 1. **特征选择** — 通过 Extra Trees 重要性排序将 54 个候选特征缩小到最具预测能力的前 15 个(例如 `DllCharacteristics`、`SectionsMeanEntropy`、`ResourcesMaxEntropy`)。 2. **预处理** — 对尺寸敏感的模型(SVM、Naive Bayes)应用标准化缩放;基于树的模型使用原始值。 3. **训练/测试集划分** — 80/20 分层划分(110,437 / 27,610 个样本),保持类别平衡。 4. **训练的模型** — Random Forest、Decision Tree、Linear SVM、Gaussian Naive Bayes。 ## 📈 结果 | 模型 | 准确率 | 精确率 | 召回率 | F1-Score | |---|---|---|---|---| | **Random Forest** | **99.46%** | **99.00%** | **99.19%** | **99.09%** | | Decision Tree | 99.12% | 98.29% | 98.79% | 98.54% | | Linear SVM | 97.65% | 96.79% | 95.29% | 96.04% | | Naive Bayes | 91.79% | 98.05% | 74.04% | 84.37% | **混淆矩阵 — Random Forest**(27,610 个测试样本): | | 预测:恶意软件 | 预测:合法文件 | |---|---|---| | **实际:恶意软件** | 19,262 | 83 | | **实际:合法文件** | 67 | 8,198 | 在 27,610 个样本中仅有 150 个分类错误(错误率为 0.54%)。 ## 🗂️ 仓库结构 ``` ├── Malware_Detection_Project.ipynb # Main notebook — full pipeline, runnable end-to-end ├── malware_classifier.pkl # Saved trained Random Forest model ├── scaler.pkl # Saved StandardScaler for inference ├── selected_features.pkl # List of the 15 selected features ├── Datasets/ │ ├── MalwareData.csv │ └── Malware_Detection_data.csv ``` ## 🚀 快速开始 ### 前置条件 - Python 3.x - Jupyter Notebook 或安装了 Jupyter 扩展的 VS Code ### 安装说明 ``` git clone https://github.com/Nadimm909/malware-detection-ml.git cd malware-detection-ml pip install jupyter pandas numpy scikit-learn matplotlib seaborn joblib ``` ### 运行 ``` jupyter notebook ``` 打开 `Malware_Detection_Project.ipynb` 并选择 **Run → Run All Cells**。 ## 🔮 未来展望 - 超参数调优 (GridSearchCV / RandomizedSearchCV) - k 折交叉验证以获得更稳健的估计 - 使用 SMOTE 处理类别不平衡问题 - 模型堆叠/集成 - 实时推理 API - 静态与动态(行为)混合分析 ## ⚠️ 局限性 - 仅适用于 Windows PE 文件(`.exe`/`.dll`)— 不适用于脚本、PDF 或无文件恶意软件 - 不具备对抗鲁棒性 — 蓄意混淆的头部可能会逃避检测 - 旨在作为传统基于特征的杀毒软件的**补充层**,而非替代品 ## 📄 许可证 本项目基于 MIT 许可证授权 — 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
标签:Apex, NoSQL, PE文件分析, 云安全监控, 机器学习, 逆向工具, 静态分析