hajerbgh/malware_ml
GitHub: hajerbgh/malware_ml
基于随机森林和静态特征的大规模恶意软件自动分类项目,提供模型训练、性能评估及特征重要性分析功能。
Stars: 0 | Forks: 0
# 🛡️ 使用机器学习进行恶意软件分类
[](https://www.python.org/)
[](https://scikit-learn.org/)
[](https://pandas.pydata.org/)
[](https://numpy.org/)
[](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绕过, 监督学习, 网络安全, 资源验证, 逆向工具, 随机森林, 隐私保护, 静态分析