simarjeetkaur453/CMP7239
GitHub: simarjeetkaur453/CMP7239
一个基于 CIC-MalMem-2022 内存取证数据集的恶意软件检测研究项目,对比评估了随机森林、决策树、SVM、KNN 和两个深度学习模型的分类性能。
Stars: 0 | Forks: 0
# 基于机器学习和深度学习的恶意软件检测
**CMP7239 – 应用机器学习课程作业**
## 项目概述
本项目应用 **机器学习 (ML)** 和 **深度学习 (DL)** 技术,利用网络安全数据集检测恶意软件。目标是分析从内存中提取的系统行为特征,并将样本分类为 **良性** 或 **恶意软件**。
项目实现并评估了 **六种算法(4 种 ML + 2 种 DL)**,并使用准确率、精确率、召回率、F1分数 和 ROC-AUC 等标准评估指标比较了它们的性能。
实现代码在 **Jupyter Notebook** 中提供,包含完整的机器学习工作流:**数据加载、探索性数据分析、预处理、模型训练、评估和可视化**。
# 数据集
本项目使用的数据集:
**Obfuscated-MalMem2022**
### 数据集特征
| 属性 | 值 |
| ------------- | ----------------------- |
| 总样本数 | 58,596 |
| 总特征数 | 56 |
| 目标变量 | Class (Benign / Malware)|
| 数据类型 | Numerical |
该数据集包含从内存取证分析工具中提取的特征,这些特征描述了系统和进程行为。
示例特征包括:
* pslist.nproc
* dlllist.ndlls
* handles.nhandles
* ldrmodules.not_in_load
* malfind.ninjections
* svcscan.nservices
* callbacks.ncallbacks
这些特征有助于识别与恶意软件相关的可疑活动。
# 项目工作流
项目遵循完整的 **机器学习管道**:
1. 数据集加载
2. 探索性数据分析 (EDA)
3. 数据预处理
4. 特征缩放
5. 训练集-测试集划分
6. 机器学习模型训练
7. 深度学习模型训练
8. 模型评估
9. 性能比较
# 探索性数据分析
进行了 EDA 以了解数据集并检测模式。
创建了以下可视化:
* 类别分布
* 特征分布直方图
* 相关性热力图
这些可视化有助于分析特征关系和数据集平衡。
# 数据预处理
应用了以下预处理步骤:
* 检查缺失值
* 使用 **LabelEncoder** 编码目标变量
* 移除非数值列
* 使用 **StandardScaler** 进行特征缩放
* 将数据集拆分为 **训练集 (80%) 和测试集 (20%)**
这些步骤确保模型接收到经过适当准备的输入数据。
# 机器学习模型
实现了四种机器学习算法:
| 模型 | 描述 |
| --------------------------- | -------------------------------------- |
| Random Forest | 使用多棵决策树的集成学习方法 |
| Decision Tree | 基于树的分类模型 |
| Support Vector Machine (SVM)| 基于超平面的分类器 |
| K-Nearest Neighbors (KNN) | 基于距离的分类方法 |
使用 **GridSearchCV** 对 Random Forest 模型进行了超参数调优。
# 深度学习模型
使用 **TensorFlow/Keras** 实现了两个神经网络模型。
### 深度学习模型 1
架构:
输入层 (Input Layer)
→ Dense (64 个神经元, ReLU)
→ Dense (32 个神经元, ReLU)
→ 输出层 (Output Layer, Sigmoid)
### 深度学习模型 2
架构:
输入层 (Input Layer)
→ Dense (128 个神经元, ReLU)
→ Dense (64 个神经元, ReLU)
→ Dense (32 个神经元, ReLU)
→ 输出层 (Output Layer, Sigmoid)
训练配置:
* 优化器: Adam
* 损失函数: Binary Crossentropy
* 轮次: 10
* 批大小: 32
# 评估指标
使用以下指标评估模型:
* 准确率
* 精确率
* 召回率
* F1-score
* 混淆矩阵
* ROC 曲线
* AUC 分数
这些指标提供了对模型性能的全面评估。
# 结果
所有模型在数据集上均取得了高性能。
### 模型准确率对比
| 模型 | 准确率 |
| -------------------- | -------- |
| Random Forest | ~0.9999 |
| Decision Tree | ~0.9998 |
| SVM | ~0.9993 |
| KNN | ~0.9995 |
| Deep Learning Model 1| ~0.9999 |
| Deep Learning Model 2| ~0.9999 |
ROC 曲线显示 **AUC 值接近 1.0**,表明分类性能极佳。
# 可视化
Notebook 生成了多个可视化输出,包括:
* 类别分布图
* 特征分布直方图
* 相关性热力图
* 所有模型的混淆矩阵
* ROC 曲线对比
* 模型准确率对比
这些可视化支持对结果的分析和解释。
# 使用的技术
本项目使用 Python 及以下库实现:
* Pandas
* NumPy
* Matplotlib
* Seaborn
* Scikit-learn
* TensorFlow
* Keras
* Jupyter Notebook
# 如何运行项目
### 1. 克隆仓库
```
git clone https://github.com/your-username/malware-detection-ml.git
```
### 2. 安装依赖库
```
pip install pandas numpy matplotlib seaborn scikit-learn tensorflow jupyter
```
### 3. 启动 Jupyter Notebook
```
jupyter notebook
```
### 4. 打开 Notebook
打开文件:
```
Machine Learning and Deep Learning Techniques.ipynb
```
### 5. 运行 Notebook
按顺序运行所有单元以复现分析和结果。
# 项目结构
```
malware-detection-project/
│
├
│── Obfuscated-MalMem2022.csv
│
├── Machine Learning and Deep Learning Techniques.ipynb
│
└── README.md
```
# 结论
本项目展示了机器学习和深度学习技术如何利用内存分析特征有效地检测恶意软件。结果表明,传统的 ML 模型和神经网络都能达到极高的准确率,突显了基于 AI 的方法在网络安全应用中的有效性。
# 作者
模块: CMP7239 – 应用机器学习
大学: Birmingham City University
标签:Apex, Applied Machine Learning, CIC-MalMem-2022, EDA, NoSQL, Obfuscated-MalMem2022, Python, ROC曲线, SecList, 二分类, 人工智能, 内存取证, 威胁情报, 学术项目, 开发者工具, 数据科学, 无后门, 机器学习, 比较分析, 深度学习, 混淆矩阵, 特征工程, 用户模式Hook绕过, 算法评估, 网络安全, 自定义DNS解析器, 资源验证, 逆向工具, 隐私保护