ElopezBlan/tfm-malware-data-analysis
GitHub: ElopezBlan/tfm-malware-data-analysis
基于 LightGBM 和 SHAP 可解释性的 Windows PE 文件恶意软件智能检测系统,针对大规模静态特征实现高精度分类与模型透明度分析。
Stars: 0 | Forks: 0
# PE 文件恶意软件智能检测系统
**硕士毕业设计 (TFM) — 数据科学硕士 (加泰罗尼亚开放大学 - UOC)**
[](https://www.python.org/)
[](https://cloud.google.com/)
[](https://github.com/microsoft/LightGBM)
[](https://github.com/shap/shap)
[]()
作者:**Eduard López Blancafort** 导师:**Blas Torregrosa Garcia** 提交日期:**2026年5月**
## 📌 项目描述与背景
本仓库包含了 **“恶意文件的分类与可解释性”** 项目中所有用于研究、处理、数据工程和构建预测模型的代码。
主要目标是构建一个高精度分类器,通过从 Windows **PE** 可执行文件中提取的静态特征,自动区分合法软件(良性)和恶意软件。除了获得高预测能力外,还通过博弈论 (SHAP) 应用了必要的 **可解释人工智能 (XAI)** 层,以增加系统的透明度,使安全运营中心 (SOC) 分析师能够准确理解 *为什么* 某个文件被标记为威胁。
为了完成这项任务,使用了大规模且最新的 **EMBER 2024** 数据集,处理了超过 **100 GB** 的原始数据,以提取超过 **500 GB** 的稠密特征向量。
## 🏗️ 解决方案架构与内存限制 (大数据)
鉴于训练数据的庞大特性(数百万个可执行文件且维度极高),传统的 RAM 处理方式无法实现。为了保证计算的稳定性,该环境基于 **核外计算** 方法设计,充分利用了 **Google Colab Pro** 和 **Google Cloud Storage (GCS)** 之间的集成:
* **磁盘映射:** 大量使用 `numpy.memmap`,按需直接从磁盘读取和写入海量二进制数据结构 (`.dat`),从而降低 RAM 消耗。
* **分块处理:** 通过设计 100,000 条记录的顺序管道来转换和缩放矩阵。
* **主动内存清理:** 系统性地使用垃圾回收器 (`gc.collect()`) 并立即销毁本地临时数据(采用 下载 $\rightarrow$ 处理 $\rightarrow$ 上传至 GCS $\rightarrow$ 本地删除 的模式)。
## 📁 仓库结构与执行顺序
工作流程基于行业标准 **CRISP-DM** 构建为 8 个顺序阶段。每个步骤都包含文档齐全的 *Jupyter Notebook* (`.ipynb`) 及其导出的 `.html` 文件,便于直接进行静态查看。
| 阶段 | 文件 | 描述与关键目标 |
| :--- | :--- | :--- |
| **01** | `01_TFM_Malware` | **初始配置与数据摄取:** 为过时的库 (`signify`) 打补丁,通过 token 进行安全连接,并与 Google Cloud bucket 集成。 |
| **02** | `02_Vectoritzacio` | **特征提取:** 使用 `thrember` 对 448 个原始 `JSONL` 文件进行大规模并行转换,以生成 PE 特征的二进制矩阵 (539.48 GiB)。 |
| **03** | `03_EDA` | **探索性数据分析:** 评估类别平衡 (1:1),验证连续结构与多标签结构的相关性、PCA 分析(非线性复杂度),以及研究家族和行为中的 *长尾* 现象。 |
| **04** | `04_Feature_Engineering` | **清理与缩放:** 数据集的维度校正(2568 个实际特征),过滤零方差变量(保留 2517 个),并应用内存外 `RobustScaler` 以减轻检测到的极端异常值的影响。 |
| **05** | `05_Models_Baseline` | **基线模型(胜出者):** 对 60 万行数据进行策略性子采样以避免内存溢出,训练 **LightGBM**(128 片叶子,学习率 0.05),并以 **ROC AUC 达到 0.9966** 和准确率达到 97.29% 的指标作为主要衡量标准。 |
| **06** | `06_Models_DeepLearning` | **高级建模 (MLP):** 设计具有高级正则化(*Batch Norm*、*Dropout*、*Gradient Clipping*)的密集神经网络。由于表格数据的极端分散性,诊断为 **模型崩溃**(AUC 0.7896,Acc 50.02%)。 |
| **07** | `07_Optimitzacio_Hiperparametres` | **微调 (HPO):** 使用 `RandomizedSearchCV`(3 折交叉验证)探索搜索空间。科学地得出结论,初始 *基线* 处于帕累托最优状态,可将其投入生产环境。 |
| **08** | `08_Explicabilitat_SHAP` | **算法可解释性 (XAI):** 使用 `shap.TreeExplainer` 打开“黑匣子”。**Feature 715** 和 **Feature 2499** 的全局分析(*Beeswarm*),真实威胁的局部分解以及非线性的依赖性和交互作用研究。 |
## 📊 结果与模型对比
下表总结了在实验阶段获得的评估指标,该评估是在严格隔离的测试集上进行的,以防止数据泄漏:
| 模型 | ROC AUC | 准确率 | 预测状态 / 诊断 |
| :--- | :---: | :---: | :--- |
| **LightGBM (基线 / 最终)** | **0.9966** | **97.29%** | **出色的泛化能力。** 在最小化假阴性 (3.5%) 和假阳性 (1.8%) 方面取得了完美的平衡。 |
| **多层感知机 (MLP)** | 0.7896 | 50.02% | **模型崩溃。** 密集网络存在数值不稳定性,几乎系统性地预测单一类别,无法稳定概率。 |
| **LightGBM (HPO 优化)** | 0.9950* | N/A | *在缩减样本上进行 3 折交叉验证获得的结果。由于简约性原则被放弃,保留了原始基线。 |
## 🔍 可解释性与透明度 (SHAP)
该项目最重要的成就之一是集成了算法透明度技术,从而能够对该工具进行审计并建立信任:
1. **全局 MVP (Feature 715):** *Beeswarm plot* 揭示了 **Feature 715** 作为一个高度对称的开关,是区分良性和恶意文件最常用的向量。
2. **确凿证据 (Feature 2499):** 依赖性分析揭示了高度不对称的变量。**Feature 2499** 的极端激活会立即触发被判定为恶意软件的概率,正如在个体分解 (*Waterfall plot*) 中所证明的那样。
3. **精细交互:** 模型并非做出孤立的决策。事实证明,诸如 Feature 715 等特征与次要变量(如 **Feature 1086**)发生了非线性交互,从而调整了警报级别。
## 🛠️ 关键技术与库
* **语言:** Python 3.12
* **大规模处理与 I/O:** `numpy` (memmap)、`pandas`、`gcloud / gsutil`
* **PE 提取:** `thrember`、`LIEF`、`signify`
* **机器学习与预处理:** `scikit-learn` (RobustScaler, VarianceThreshold, RandomizedSearchCV)
* **深度学习:** `TensorFlow` / `Keras`
* **梯度提升:** `LightGBM`
* **可解释人工智能:** `shap`
* **数据可视化:** `matplotlib`、`seaborn`
*本仓库仅用于防御性网络安全领域的学术与研究目的。*
标签:AMSI绕过, Apex, API接口, CRISP-DM, DNS 反向解析, EMBER数据集, GCS, Google Cloud, LightGBM, PE文件分析, Python, SHAP, Windows可执行文件, XAI, 二进制分析, 云存储, 云安全监控, 云安全运维, 人工智能, 可解释人工智能, 后端开发, 大数据处理, 威胁检测, 学术研究, 数据科学, 无后门, 机器学习, 游戏理论, 特征工程, 用户模式Hook绕过, 硕士毕业设计, 端点安全, 算法解释性, 网络安全, 网络安全分析师, 补丁管理, 资源验证, 隐私保护, 静态分析