CHAT12234/malware-pe-analysis
GitHub: CHAT12234/malware-pe-analysis
利用 XGBoost 和 SHAP 对 Windows PE Header 进行静态分析,实现恶意软件检测并提供模型可解释性的机器学习实验项目。
Stars: 0 | Forks: 0
# 使用 XGBoost & SHAP 分析恶意软件 PE Header
## 📌 实验简介
本实验构建了一个机器学习 pipeline,通过分析 Windows 文件的 **PE Header (Portable Executable)** 来检测恶意软件。该方法摒弃了传统的 signature,采用 **静态分析 (static analysis)** 从 PE Header 中提取结构特征,并训练分类模型以区分安全文件 (benign) 和恶意文件 (malware),旨在为科学论文 Deep Dive into Malware Analysis and Their Behavior Patterns: A Systematic Technical Review (https://www.researchgate.net/publication/399608091_Deep_Dive_into_Malware_Analysis_and_Their_Behavior_Patterns_A_Systematic_Technical_Review) 提供补充。
本项目的亮点在于集成了 **SHAP (Shapley Additive exPlanations)** 来解开“黑盒”模型,为 PE Header 中哪些特征在识别恶意软件时发挥最关键作用提供了透明的解释。
## 🚀 主要功能
- **静态分析:** 无需执行文件即可分析 PE Header 结构,确保分析环境的绝对安全。
- **数据均衡:** 使用均衡的 EMBER 数据集子集,以消除模型的偏见 (bias)。
- **高性能分类:** 采用 **XGBoost** 算法,实现最优的准确率和处理速度。
- **可解释性 (XAI):** 集成 **SHAP** 以可视化每个特征的重要性,帮助分析专家深入理解模型做出预测的依据。
## 📁 项目结构
```
├── src/
│ ├── experiments/
│ │ ├── train_parquet.py # Huấn luyện mô hình và đánh giá hiệu năng
│ │ └── extract_features.py # Logic trích xuất đặc trưng từ file PE
│ ├── prepare_real_ember.py # Tiền xử lý và cân bằng dữ liệu
│ └── run_shap_analysis.py # Tính toán và vẽ biểu đồ giải thích SHAP
├── results/ # Lưu trữ các chỉ số đánh giá và Ma trận nhầm lẫn (Confusion Matrix)
├── docs/ # Lưu trữ biểu đồ phân tích SHAP
├── notebooks/ # Các file phân tích dữ liệu khám phá (EDA)
├── requirements.txt # Danh sách các thư viện cần thiết
└── ember_1k_balanced.parquet # Tập dữ liệu PE Header đã cân bằng
```
## 🛠️ 安装与设置
1. **克隆此仓库到本地:**
git clone https://github.com/CHAT12234/malware-pe-analysis.git
cd malware-pe-analysis
2. **创建虚拟环境(推荐):**
python -m venv venv
# 在 Windows 上激活:
venv\Scripts\activate
3. **安装所需的依赖库:**
pip install -r requirements.txt
## 💻 实验运行指南
### 1. 训练与评估模型
运行训练脚本以检查模型的性能(Accuracy、F1-Score 并绘制混淆矩阵)。
```
python src/experiments/train_parquet.py
```
### 2. 解释性特征分析 (SHAP)
运行 SHAP 分析脚本,找出对分类结果影响最大的 PE Header 特征。
```
python src/run_shap_analysis.py
```
## 📊 预期结果
- **性能:** 模型取得了较高的 F1-Score,证明 PE Header 包含了大量用于识别恶意软件的重要信息。
- **解释:** 文件 `docs/shap_summary.png` 将展示哪些特征(例如:`NumberOfSections`、`Entropy`)是导致恶意软件分类决定的核心因素。
## 🧠 执行流程
1. **数据收集:** 使用 EMBER 数据集。
2. **预处理:** 清洗数据并平衡标签(500 个安全样本 / 500 个恶意软件样本)。
3. **分类:** 在 PE Header 的静态特征上训练 XGBoost 模型。
4. **解释:** 应用 SHAP 值分析模型的决策机制。
*本项目出于恶意软件分析的实验目的而实施。*
标签:Apex, PE头分析, XGBoost, 云安全监控, 可解释AI, 机器学习, 逆向工具, 静态分析