hajerbgh/malware_ml

GitHub: hajerbgh/malware_ml

基于随机森林和静态特征的大规模恶意软件自动分类项目,提供模型训练、性能评估及特征重要性分析功能。

Stars: 0 | Forks: 0

# 🛡️ 使用机器学习进行恶意软件分类 [![Python](https://img.shields.io/badge/Python-3.10-blue?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/) [![Scikit-learn](https://img.shields.io/badge/scikit--learn-F7931E?style=for-the-badge&logo=scikit-learn&logoColor=white)](https://scikit-learn.org/) [![Pandas](https://img.shields.io/badge/Pandas-150458?style=for-the-badge&logo=pandas&logoColor=white)](https://pandas.pydata.org/) [![NumPy](https://img.shields.io/badge/NumPy-013243?style=for-the-badge&logo=numpy&logoColor=white)](https://numpy.org/) [![Matplotlib](https://img.shields.io/badge/Matplotlib-11557C?style=for-the-badge&logo=matplotlib&logoColor=white)](https://matplotlib.org/) ## 📌 项目概述 本项目主要关注使用机器学习技术进行**恶意软件分析与分类**。 目标是构建一个模型,能够基于提取的**静态特征**对**可执行文件进行分类**,而无需执行恶意软件。 ## 🎯 目标 - 加载并处理**真实场景下的大型恶意软件数据集** - 训练一个**监督式机器学习模型** - 评估分类性能 - 分析用于检测的**最重要特征** ## 📂 数据集 - **格式:** Parquet (`.parquet`) - **样本数:** ~800,000 - **特征:** 2381 个数值特征 (`F1 → F2381`) - **目标:** 包含三个类别的标签:`-1`、`0`、`1` ⚠️ 由于体积过大,数据集**未包含**在内。 ## 🧠 机器学习模型 **算法:** 随机森林分类器 **库:** scikit-learn ### 为什么选择随机森林? - 对噪声具有鲁棒性 - 能够处理高维数据 - 提供**特征重要性** - 在大型数据集上运行高效 ### 训练配置 - 100 棵决策树 - 80% 训练集 / 20% 测试集划分 - 分层抽样以保持类别分布 - 全部 CPU 核心使用 ## 🧪 项目流程 1. 加载数据集 2. 分离特征与标签 3. 划分训练集与测试集 4. 模型训练 5. 在测试集上进行预测 6. 评估(**混淆矩阵与分类报告**) 7. 特征重要性分析 ## 📊 结果 **混淆矩阵:** - 在类别 `0` 和 `1` 上表现良好 - 在少数类 `-1` 上存在困难 **分类报告(摘要):** - **准确率:** ~70% - 类别 `0` 和 `1` 具有良好的**精确率与召回率** - 类别 `-1` 的召回率较低 → 表明存在**类别不平衡或更高的复杂度** ## 🔍 特征重要性 - 随机森林提供**特征重要性得分** - 对**最具影响力的前 20 个特征**进行了可视化,以提高可解释性 - 为未来的**特征选择**提供指导 ## ⚠️ 局限性 - 在少数类 `-1` 上表现较差 - 未应用类别平衡 - 未进行超参数优化 ## 🚀 未来改进 - 应用**类别加权**或**重采样技术** - 降维处理 (**PCA**) - 高级模型:**XGBoost**、**LightGBM** - 二元分类(恶意软件与正常文件) - 模型持久化 (**joblib**) - 部署为 **API** 或 **Web 界面** ## 🛠️ 使用的技术 - Python 3.10 - Pandas - NumPy - Scikit-learn - Matplotlib ## 📁 项目结构 malware_ml_project/ │ ├── data/ # 数据集(未包含) ├── train.py # 模型训练与评估 ├── features.py # 特征重要性分析 ├── requirements.txt # Python 依赖 ├── README.md ## ▶️ 如何运行 python train.py 👩‍💻 作者 Hajer Ben Ghazi
标签:AMSI绕过, Apex, Matplotlib, NumPy, Parquet, Python, Scikit-learn, 二进制分析, 云安全监控, 云安全运维, 人工智能, 分类算法, 可执行文件分析, 大数据集, 威胁检测, 数据科学, 无后门, 机器学习, 特征工程, 特征重要性, 用户模式Hook绕过, 监督学习, 网络安全, 资源验证, 逆向工具, 随机森林, 隐私保护, 静态分析