CHAT12234/Malware-analysis

GitHub: CHAT12234/Malware-analysis

该项目利用 XGBoost 模型结合 SHAP 可解释性分析,在 EMBER 数据集上实现可解释的恶意软件检测,重点研究特征贡献量化与误报归因。

Stars: 0 | Forks: 0

# 基于 XGBoost 和 SHAP 分析的可解释恶意软件检测 **研究标题(越南语):** Khảo sát Định lượng: Khả năng Diễn giải Đặc trưng trong Học máy Phân tích Mã độc ## 项目概述 本项目研究了**机器学习模型在恶意软件检测中的可解释性**,使用 SHAP(SHapley Additive exPlanations)来解释模型对被错误分类的良性文件(误报)的决策。该研究在包含 1,000 个样本的平衡且经过验证的数据集上,分析了 PE Header 和 API Import 特征组之间的特征重要性。 ### 主要结果 - **模型准确率:** 95.50%(Precision:97.89%,Recall:93.00%,F1-score:95.38%) - **数据集:** 来自 EMBER 的 1,000 个平衡样本(500 个良性,500 个恶意软件) - **特征重要性:** PE Header 特征的贡献比 API Import 特征多约 8.4 倍 - **误报分析:** 2 个由可解释特征模式驱动的误报 - **可复现性:** 固定随机种子 (42),分层划分,已验证的数据集哈希 ## 快速开始(设置与运行) ### 前置条件 - Python 3.8+ - pip 或 conda ### 安装与运行 ``` # 1. 激活 virtual environment .venv\Scripts\activate # Windows # 或 source .venv/bin/activate # macOS/Linux # 2. 安装 dependencies pip install -r requirements.txt # 3. 运行 main pipeline python src/run_shap_analysis.py # 4. 查看结果 # - Console 输出:Accuracy, F1-Score # - 图表:docs/shap_summary.png ``` **详细的可复现指南,请参见 [REPRODUCIBILITY.md](REPRODUCIBILITY.md)** ## 研究问题 **RQ1:** 哪个特征组对恶意软件分类的贡献更大:PE Header 特征还是 API Import 特征? **回答:** PE Header 特征的贡献比 API Import 特征多约 8.4 倍(平均绝对 SHAP 值:每个特征 1.6551 对 0.7904)。 **RQ2:** SHAP 值分布如何解释误报预测? **回答:** 两个误报主要由 `api_calls_count` 和 `header_optional_sizeof_code` 驱动,这表明 SHAP 能够有意义地解释错误分类。 **RQ3:** 如何通过经验证且可复现的恶意软件检测 pipeline 来支持可解释性? **回答:** 使用规范数据集(已通过 SHA256 验证)、固定的随机种子、分层划分以及带有文档的代码,提供了一个完全可复现的 pipeline。 ## 提交产物 | 文件 | 用途 | |------|---------| | `paper/final.tex` | IEEE 格式研究论文(最终版) | | `results/final_results.md` | 实验结果摘要 | | `REPRODUCIBILITY.md` | 详细的可复现指南 | | `src/run_shap_analysis.py` | 主实验 pipeline | | `figures/` | SHAP 和分析图表 | | `project-memory/` | 研究方法文档 | ## 背景(动机) 这项工作研究了恶意软件检测模型的可解释性,重点关注可解释性而不仅仅是准确率。该研究定量评估了 SHAP 特征归因,以解码模型将被错误分类为恶意软件(误报)的良性文件的决策逻辑。 ### 研究背景 越南语项目标题:Khảo sát Định lượng: Khả năng Diễn giải Đặc trưng trong Học máy Phân tích Mã độc **主题代码:** T15 **方法论:** 机器学习应用(参考:Edgar & Manz,第 6 章) **实验范围:** 1,000 个 PE 可执行文件(500 个恶意软件,500 个良性),针对本地内存限制进行了优化。 ### 简介 这项工作结合了已验证的数据集、严谨的实验设计和 SHAP 可解释性分析,以提供具有可解释结果的、透明且可复现的恶意软件检测。 ## 研究问题与解答 **RQ1:** 在恶意软件分类重要性方面,PE Header 特征与 API Import 特征相比如何? **回答:** PE Header 特征的贡献大约是 API Import 特征的 8.4 倍(平均绝对 SHAP 值:每个特征 1.6551 对 0.7904)。 **RQ2:** SHAP 分布如何解释误报预测? **回答:** 两个误报主要由 `api_calls_count` 和 `header_optional_sizeof_code` 驱动,展示了 SHAP 解释错误分类的能力。 ## 实验时间线(已完成) - [x] **设置阶段:** 环境配置,仓库结构,PE 文件格式理解,EMBER 数据集准备 - [x] **模型训练:** 通过 `LIEF` 进行静态特征提取,使用分层划分(种子 42)进行 XGBoost 基线训练 - [x] **SHAP 分析:** TreeExplainer 集成,特征组影响量化,SHAP 值计算 - [x] **报告:** 结合恶意软件分析知识进行结果综合,模型行为解释,撰写 IEEE 格式论文 ## 实验结果与评估 所有表格和图表均遵循严谨的科学报告标准(不使用饼图)。 ### 特征集(提取的特征) | 特征组 | 数量 | 描述 | | :--- | :--- | :--- | | **PE Header** | 4 | `header_coff_timestamp`, `header_optional_sizeof_code`, `header_optional_sizeof_headers`, `sections_count` | | **API Imports** | 1 | `api_calls_count`(来自 DLL 的总函数导入) | | **总计** | 5 | 来自 PE 元数据的静态特征 | ### 基线模型性能(已验证结果) | 模型 | Accuracy | Precision | Recall | F1-Score | 误报数量 | | :--- | :--- | :--- | :--- | :--- | :--- | | **XGBoost** | 95.50% | 97.89% | 93.00% | 95.38% | 100 个测试样本中有 2 个 | **测试集组成:** 来自 seed=42 的分层 80/20 划分的 200 个样本(100 个良性,100 个恶意软件) ## 可复现性说明 要复现完整的实验: ``` # 1. Clone repository git clone https://github.com/medvedru777/PPNCKH.git cd PPNCKH # 2. 设置 virtual environment 并安装 dependencies python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt # 3. 运行 main analysis pipeline(需要位于 data/raw/ember_1k_real.parquet 的 canonical dataset) python src/run_shap_analysis.py # 预期输出: # - Console:Accuracy 95.50%, F1-Score 95.38% # - 文件:docs/shap_summary.png ``` **必需:** 数据集文件 `data/raw/ember_1k_real.parquet`(SHA256: D2FA243475A6AB613F2AF0CF4008180E838F9958FFA3EB688A2747041C4B58C9)
标签:Apex, PE文件分析, SHAP, XGBoost, 可解释性分析, 机器学习, 自定义DNS解析器, 逆向工具