Vignesh1231234/Malware-Detection-Using-AI
GitHub: Vignesh1231234/Malware-Detection-Using-AI
基于静态 PE 头部特征分析与多种机器学习分类器的端到端恶意软件检测 pipeline。
Stars: 0 | Forks: 0
# 🛡️ 基于 AI 的恶意软件检测
一个机器学习 pipeline,它使用静态 PE(Portable Executable)头部特征将 Windows 可执行文件分类为**良性**或**恶意** —— 无需执行或沙盒化。





## 目录
- [概述](#overview)
- [截图](#screenshots)
- [使用的技术](#technologies-used)
- [安装说明](#installation)
- [使用方法](#usage)
- [目录结构](#folder-structure)
- [模型性能](#model-performance)
- [使用你自己的数据](#using-your-own-data)
- [未来改进](#future-improvements)
- [作者](#author)
- [许可证](#license)
## 概述
本项目实现了一个端到端的静态恶意软件检测 pipeline:
1. **合成数据集生成** (`src/generate_synthetic_dataset.py`)
为良性和恶意类别生成真实的 PE 头部特征向量,并带有刻意的类别重叠,使任务反映出真实世界中的模糊性,而不是轻松可分的。
2. **数据加载与预处理** (`src/data_loader.py`)
加载数据集,执行分层的训练/测试集划分,并对特征进行标准化。
3. **模型训练与选择** (`src/train_model.py`)
对四个候选分类器 —— Random Forest、Gradient Boosting、Logistic Regression 和 SVM —— 进行交叉验证,并根据 F1 分数自动选择表现最佳的模型。
4. **评估与可视化** (`src/evaluate_model.py`)
生成混淆矩阵、ROC 曲线、特征重要性图表和模型对比图表,并保存分类报告。
5. **预测 CLI** (`src/predict.py`)
对具有相同特征 schema 的 CSV 文件中的新样本进行评分,并报告恶意软件概率 + 分类结果。
`src/main.py` 通过一个命令运行完整的 pipeline(生成 → 训练 → 评估)。
## 截图
**模型对比** —— 四个候选分类器的交叉验证 F1 分数:

**混淆矩阵** —— Random Forest 在留出测试集上的表现:

**ROC 曲线:**

**特征重要性** —— 哪些静态 PE 特征驱动了分类器的决策:

## 使用的技术
| 类别 | 工具 |
|---|---|
| 语言 | Python 3.10+ |
| ML / 建模 | scikit-learn (Random Forest, Gradient Boosting, Logistic Regression, SVM) |
| 数据处理 | pandas, NumPy |
| 可视化 | Matplotlib, Seaborn (headless/Agg backend) |
| 模型持久化 | joblib |
| 测试 | pytest |
| CI/CD | GitHub Actions |
## 安装说明
```
git clone https://github.com/your-username/malware-detection-ai.git
cd malware-detection-ai
pip install -r requirements.txt
```
**依赖项** (`requirements.txt`):
```
numpy>=1.24
pandas>=2.0
scikit-learn>=1.3
matplotlib>=3.7
seaborn>=0.12
joblib>=1.3
pytest>=7.4
```
## 使用方法
### 运行完整的 pipeline
```
python src/main.py --n-samples 4000
```
这将生成合成数据集,训练并选择最佳模型,并将所有评估图表写入 `images/`。
### 单独运行各步骤
```
# 生成合成 PE-feature 数据集
python src/generate_synthetic_dataset.py --n-samples 4000
# 训练并交叉验证 candidate models
python src/train_model.py
# 评估最佳模型并生成图表
python src/evaluate_model.py
```
### 对新样本进行分类
```
python src/predict.py --input path/to/samples.csv --output results.csv
```
输入的 CSV 必须包含与训练时使用的相同特征列(参见 `src/config.py::FEATURE_COLUMNS`)。
### 运行测试套件
```
pytest tests/ -v
```
## 目录结构
```
malware-detection-ai/
├── README.md
├── LICENSE
├── .gitignore
├── requirements.txt # Python dependencies
├── package.json # placeholder, for structure completeness
├── pom.xml # placeholder, for structure completeness
├── src/
│ ├── config.py # Paths, feature schema, constants
│ ├── generate_synthetic_dataset.py
│ ├── data_loader.py # Loading, splitting, scaling
│ ├── train_model.py # Cross-validation + model selection
│ ├── evaluate_model.py # Metrics + plot generation
│ ├── predict.py # CLI for scoring new samples
│ └── main.py # Full pipeline entry point
├── data/ # Generated dataset (gitignored)
├── models/ # Saved model + scaler (gitignored)
├── images/ # Evaluation plots (committed, used in this README)
├── docs/
│ ├── methodology.md # Data, features, modeling, and limitations
│ └── classification_report.txt
├── tests/
│ ├── test_dataset_generation.py
│ └── test_model_pipeline.py
└── .github/
├── workflows/ci.yml
├── ISSUE_TEMPLATE/
└── PULL_REQUEST_TEMPLATE.md
```
## 模型性能
选择的最佳模型:**Random Forest**(200 个 estimators,最大深度 12)
| 指标 | 良性 | 恶意 |
|---|---|---|
| 精确率 | 0.99 | 0.99 |
| 召回率 | 1.00 | 0.99 |
| F1-score | 0.99 | 0.99 |
**总体准确率:** 0.99 · **ROC AUC:** 0.9997
完整的分类报告:[`docs/classification_report.txt`](docs/classification_report.txt) · 完整的方法论:[`docs/methodology.md`](docs/methodology.md)
## 使用你自己的数据
只要你自己的 CSV 具有与 `src/config.py::FEATURE_COLUMNS` 相同的列,加上一个 `IsMalware` (0/1) 标签列,就可以用它替换合成数据集。如果你想构建真实世界的数据集,像 [`pefile`](https://github.com/erocarrera/pefile) 这样的工具可以从真实的 `.exe`/`.dll` 文件中提取这些确切的 PE 头部字段 —— 只是要小心如何以及在何处存储任何真实的恶意软件样本。
```
python src/train_model.py --data path/to/your_dataset.csv
```
## 未来改进
- [ ] 使用 `pefile` 的真实世界 PE 特征提取模块(对实际的、安全沙盒化的二进制文件进行静态分析)
- [ ] 动态/行为特征(API 调用序列、网络活动),用于构建混合静态+动态模型
- [ ] 深度学习方法:在字节级文件表示上使用 CNN,或对反汇编指令使用 transformer
- [ ] 通过 `GridSearchCV` / `Optuna` 进行超参数调优
- [ ] 基于个体预测的 SHAP 模型可解释性
- [ ] 封装 `predict.py` 的 REST API (FastAPI),以便集成到其他工具中
- [ ] 用于可重现部署的 Docker 容器化
## 作者
姓名 : Vignesh V
邮箱 : vignesh12311234@gmaail.com
## 许可证
基于 [MIT License](./LICENSE) 发布。
标签:Apex, PE文件分析, Python, scikit-learn, 云安全监控, 安全规则引擎, 无后门, 机器学习, 逆向工具, 静态分析