CHAITHANYAHEGDE/CIC-MalMem2022-Binary-Malware-Detection

GitHub: CHAITHANYAHEGDE/CIC-MalMem2022-Binary-Malware-Detection

基于 CIC-MalMem-2022 数据集的双范式二进制恶意软件检测研究框架,结合静态批处理机器学习与实时流式增量学习实现高精度内存恶意代码识别。

Stars: 0 | Forks: 0

# 🛡️ 基于易失性内存取证与实时流式机器学习的双范式恶意软件检测 [![Python 3.11](https://img.shields.io/badge/Python-3.11-3776AB?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/) [![JDK 21](https://img.shields.io/badge/OpenJDK-21-ED8B00?style=for-the-badge&logo=openjdk&logoColor=white)](https://openjdk.org/) [![CapyMOA Engine](https://img.shields.io/badge/CapyMOA-0.4.0-008080?style=for-the-badge)](https://capymoa.org/) [![LightGBM](https://img.shields.io/badge/Model-LightGBM-GREEN?style=for-the-badge)](https://lightgbm.readthedocs.io/) [![Optuna](https://img.shields.io/badge/Optuna-3.x-2F4F4F?style=for-the-badge)](https://optuna.org/) [![Explainable AI](https://img.shields.io/badge/XAI-SHAP_%26_LIME-9932CC?style=for-the-badge)](https://shap.readthedocs.io/) [![License MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge)](LICENSE) 一个端到端、可用于生产环境的研究框架,利用从 **CIC-MalMem-2022** 数据集中提取的 Volatility 内存取证特征,检测混淆的、无文件的以及内存中的恶意软件。 ## 📋 目录 - [👤 作者与研究署名](#-author--research-attribution) - [🔬 研究概述与动机](#-research-overview--motivation) - [📊 数据集规格](#-dataset-specifications) - [🏛️ 双范式系统架构](#-dual-paradigm-system-architecture) - [⚡ 工作流数据流与管道](#-pipeline-dataflow--workflows) - [⚙️ 标准 14 模块矩阵](#️-canonical-14-module-matrix) - [📈 实验性能基准](#-experimental-performance-benchmarks) - [🎨 内嵌图表画廊](#-embedded-figure-gallery) - [📦 目录结构](#-directory-structure) - [🚀 安装与快速开始](#-installation--quickstart) - [🛡️ 可复现性保证](#️-reproducibility-guarantee) - [🔮 未来工作与 EDR 部署路线图](#-future-work--edr-deployment-roadmap) - [📜 引用与许可协议](#-citation--license) ## 👤 作者与研究署名 - **主要作者**:**Chaithanya Hegde** ([@CHAITHANYAHEGDE](https://github.com/CHAITHANYAHEGDE)) - **旗舰仓库**:[`CHAITHANYAHEGDE/CIC-MalMem2022-Binary-Malware-Detection`](https://github.com/CHAITHANYAHEGDE/CIC-MalMem2022-Binary-Malware-Detection) - **数据集**:`CIC-MalMem-2022` ($N=58,596$ 易失性内存进程转储:29,298 个良性,29,298 个恶意) - **执行环境**:macOS arm64 / Python 3.11 / OpenJDK 21 ## 🔬 研究概述与动机 现代恶意软件越来越依赖**无文件执行**、进程镂空 (Process Hollowing)、DLL 注入和仅存在于内存中的 payload,从而逃避传统的基于签名的磁盘扫描。通过内存取证技术 分析易失性 RAM 内存转储,可以提供关键的行为指标。 本仓库在**两种不同的操作范式**下评估驻留内存的二进制恶意软件检测: 1. **静态批处理机器学习范式**: - 评估 **5 种基于树的集成分类器**(Random Forest、Extra Trees、XGBoost、LightGBM、CatBoost)+ Stacking 集成。 - 使用混合特征选择机制(互信息 + Gini 重要性 + 递归特征消除),将特征维度从 **53 个降至 14 个 Volatility 内存指标**。 - 使用 **LightGBM** 达到 **99.98% 的准确率** ($1.0000$ ROC-AUC)。 - 通过 **Optuna TPE 贝叶斯超参数优化(100 次试验)**、**McNemar 非参数统计显著性检验** ($p=0.5127 > 0.05$)、**Brier 分数概率校准**、**SHAP TreeExplainer** 和 **LIME 局部代理归因** 进行了严格验证。 2. **CapyMOA 实时流式机器学习引擎**: - 对打乱后的内存流 (`seed=42`) 实现 **Prequential (Test-Then-Train) 评估**。 - 评估增量算法:**Hoeffding Tree** ($98.49\%$)、**带经验回放的自适应随机森林** ($K=500$,算法 R) 达到 **99.88% 的 prequential 准确率**,以及 **Parallel OnlineBagging** 达到 **24,834.7 个实例/秒** 的吞吐量。 - 通过非参数 **ADWIN** 和 **DDM** 监控概念漂移。 - 集成 **`modAL` 主动不确定性采样**,在**减少 80% 人工分析师标注工作量**($20\%$ 标注预算)的情况下,达到 **99.83% 的准确率**。 ## 📊 数据集规格 该框架利用了基准 **CIC-MalMem-2022** 数据集: - **进程内存转储总数**:$N = 58,596$ - **类别平衡**:29,298 个良性 ($50.0\%$) vs 29,298 个恶意 ($50.0\%$) - **特征空间**:53 个初始 Volatility 内存特征 $ ightarrow$ 选定的 **14 个高信息量特征**: `handles.ndesktop`, `svcscan.nservices`, `pslist.nppid`, `malfind.commitCharge`, `handles.nsemaphore`, `svcscan.nactive`, `ldrmodules.not_in_load`, `ldrmodules.not_in_load_avg`, `pslist.avg_handlers`, `handles.nsection`, `dlllist.avg_dlls_per_proc`, `handles.nmutant`, `handles.nkey`, `malfind.ninjections`。 ## 🏛️ 双范式系统架构 ``` flowchart TD subgraph INGESTION["1. Memory Forensics Data Ingestion"] A["CIC-MalMem-2022 Process Dumps (N=58,596)"] --> B["Zero-Variance & Leakage Cleanup"] B --> C["Selected 14 Volatility Memory Features"] end subgraph BATCH["2. Static Batch ML Paradigm"] C --> D["RobustScaler Fitting (80/20 Train/Test Split)"] D --> E["5-Model Ensemble Benchmark (RF, ET, XGB, LGBM, CatBoost)"] E --> F["Optuna TPE Bayesian Hyperparameter Optimization"] F --> G["McNemar Statistical Test & Brier Probability Calibration"] G --> H["LightGBM Selected (99.98% Acc, 1.0000 AUC)"] end subgraph STREAM["3. CapyMOA Real-Time Streaming Engine"] C --> I["Permuted Memory Stream Generator (seed=42)"] I --> J["Prequential (Test-Then-Train) Evaluation"] J --> K["Adaptive Random Forest + Experience Replay (K=500)"] J --> L["Parallel OnlineBagging (24,834.7 inst/sec)"] K --> M["ADWIN & DDM Concept Drift Monitoring"] end subgraph ACTIVE["4. Active Learning & XAI Audit"] C --> N["modAL Active Uncertainty Sampling"] N --> O["99.83% Acc @ 20% Budget (80% Analyst Cost Saved)"] H --> P["SHAP TreeExplainer & LIME Local Surrogates"] end ``` ## ⚙️ 标准 14 模块矩阵 本仓库包含 **14 个模块化 Python 研究脚本**,由 [`run_pipeline.py`](file:///Users/chaithanyahegde/CIC-MalMem2022-Binary-Malware-Detection/run_pipeline.py) 统一调度,并通过 [`config.py`](file:///Users/chaithanyahegde/CIC-MalMem2022-Binary-Malware-Detection/config.py) 进行配置: | 模块文件 | Notebook 单元格范围 | 主要职责 | |---|---|---| | [`01_dataset_and_data_understanding.py`](01_dataset_and_data_understanding.py) | Cells 0 – 24 | 数据加载、schema 检查、缺失值、类别平衡 | | [`02_data_preprocessing.py`](02_data_preprocessing.py) | Cells 25 – 64 | 数据泄露预防、80/20 划分、RobustScaler、SMOTE 压力测试 | | [`03_feature_engineering_and_selection.py`](03_feature_engineering_and_selection.py) | Cells 65 – 82 | 互信息、Gini 重要性、RFE ($53 ightarrow 14$ 个特征) | | [`04_batch_machine_learning.py`](04_batch_machine_learning.py) | Cells 83 – 121 | 训练 5 种树集成模型 (RF, ExtraTrees, XGB, LGBM, CatBoost) + 5 折 CV | | [`05_hyperparameter_optimization.py`](05_hyperparameter_optimization.py) | Cells 122 – 135 | Optuna TPE 贝叶斯超参数优化 (100 次试验) | | [`06_model_selection.py`](06_model_selection.py) | Cells 136 – 153 | 性能矩阵排名、决策边界阈值微调、Stacking | | [`07_explainable_ai.py`](07_explainable_ai.py) | Cells 238 – 291 | SHAP TreeExplainer (summary/bar/dependence) 与 LIME 局部解释 | | [`08_probability_calibration.py`](08_probability_calibration.py) | Cells 292 – 377 | Brier 分数损失、预期校准误差 (ECE)、可靠性图 | | [`09_statistical_validation.py`](09_statistical_validation.py) | Cells 154 – 161 | McNemar 非参数显著性检验 ($b, c, \chi^2, p$-value) | | [`10_capymoa_streaming.py`](10_capymoa_streaming.py) | Cells 378 – 394 | CapyMOA 流引擎:Hoeffding Tree, ARF + Replay ($K=500$), Parallel OB | | [`11_concept_drift_detection.py`](11_concept_drift_detection.py) | Cells 395 – 405 | ADWIN 滑动窗口与 DDM 漂移检测器流监控 | | [`12_active_learning.py`](12_active_learning.py) | Cells 406 – 409 | `modAL` 主动不确定性采样 vs 随机基线 @ 20% 预算 | | [`13_visualization.py`](13_visualization.py) | Cells 410 – 412 | 300 DPI 图表导出 (ROC, PR, 混淆矩阵, 校准, SHAP) | | [`14_results_and_discussion.py`](14_results_and_discussion.py) | Cells 413 – 425 | 双范式研究综合与 Endpoint 部署指南 | ## 📈 实验性能基准 ### 1. 批处理机器学习范式 ($N=11,720$ 测试集) | 模型架构 | Accuracy (%) | Precision (%) | Recall (%) | F1-Score | ROC-AUC | PR-AUC | 延迟 | |---|---|---|---|---|---|---|---| | **LightGBM (选定)** | **99.98%** | **99.98%** | **99.98%** | **0.9998** | **1.0000** | **1.0000** | **4.12 ms** | | CatBoost | 99.97% | 99.97% | 99.97% | 0.9997 | 1.0000 | 1.0000 | 12.45 ms | | Extra Trees | 99.96% | 99.95% | 99.97% | 0.9996 | 0.9999 | 0.9999 | 18.30 ms | | Random Forest | 99.95% | 99.95% | 99.95% | 0.9995 | 0.9999 | 0.9999 | 24.10 ms | | XGBoost | 99.95% | 99.95% | 99.95% | 0.9995 | 0.9999 | 0.9999 | 8.85 ms | | Stacking Ensemble | 99.98% | 99.98% | 99.98% | 0.9998 | 1.0000 | 1.0000 | 45.20 ms | ### 2. CapyMOA 实时流引擎 ($N=58,596$ 流实例) | 流算法 | Prequential Acc (%) | F1-Score | 处理吞吐量 | 核心机制 | |---|---|---|---|---| | **Parallel OnlineBagging (4 核)** | **99.67%** | **0.9967** | **24,834.7 inst/sec** | 多线程泊松集成 | | **CapyMOA ARF + 经验回放** | **99.88%** | **0.9988** | **18,200.0 inst/sec** | $K=500$ 蓄水池采样回放 (算法 R) | | Hoeffding Tree (基线) | 98.49% | 0.9849 | 45,120.0 inst/sec | 单棵增量决策树 | ### 3. 主动学习工作负载减少 ($20\%$ 预算限制) | 策略 | 标注预算 (%) | 使用查询数 | 最终准确率 (%) | SOC 分析师成本降低 | |---|---|---|---|---| | **不确定性采样 (modAL)** | **20.0%** | **2,344** | **99.83%** | **节省 80.0% 人工工作量** | | Query-by-Committee (QBC) | 20.0% | 2,344 | 99.78% | 节省 80.0% 人工工作量 | | 随机基线 | 20.0% | 2,344 | 98.12% | 节省 80.0% 人工工作量 | ## 🎨 内嵌图表画廊 | ROC-AUC 曲线 | Precision-Recall 曲线 | 校准图 | |:---:|:---:|:---:| | ![ROC 曲线](https://static.pigsec.cn/wp-content/uploads/repos/cas/20/20dc1429521b6a1f18ebe346f2ee591d85ca0f8655aa8bb3293bf92602677687.png) | ![PR 曲线](https://static.pigsec.cn/wp-content/uploads/repos/cas/ef/efcfc1287c1a6b47825b3a0f2a27c81f613e1a169b0f83d5478affd7165a4ec0.png) | ![校准曲线](https://static.pigsec.cn/wp-content/uploads/repos/cas/58/5839f2d891c79705bf64f3003a6041b4000b10aa5433f29cec658ef81e0d25a7.png) | | 特征重要性 | 相关性热力图 | 流式 Prequential 准确率 | |:---:|:---:|:---:| | ![特征重要性](https://static.pigsec.cn/wp-content/uploads/repos/cas/16/16d14db246d2017358bd31f298545821a6c74dc0e5596943a1a27984fc0ad478.png) | ![相关性热力图](https://static.pigsec.cn/wp-content/uploads/repos/cas/d8/d817651fc544b408b81eb6d6bea7c754c90b09e29a508d6bb7be1e89b80c39ed.png) | ![流式窗口准确率](https://static.pigsec.cn/wp-content/uploads/repos/cas/c8/c8f5f435ccfe933141a05f148f76c6457d25f3867b4834220a7d5c5e2e1876a5.png) | | SHAP 柱状图摘要 | LIME 局部解释 | 主动学习预算 | |:---:|:---:|:---:| | ![SHAP 柱状图](https://static.pigsec.cn/wp-content/uploads/repos/cas/18/183dfc433fb65c39d23b08e740139b2d4a465f4aaecea2473d8784683c0f800c.png) | ![LIME 解释](https://static.pigsec.cn/wp-content/uploads/repos/cas/91/9194254f911daa622276e8e14ce3d4275759109d0115fb2431c58124309f5ddc.png) | ![主动学习预算](https://static.pigsec.cn/wp-content/uploads/repos/cas/f2/f269d5cb4f68c48016270b69f25a25c6d6fce9a8773fe657c273381f9fed6743.png) | ## 📦 目录结构 ``` CIC-MalMem2022-Binary-Malware-Detection/ ├── LICENSE # MIT License (Chaithanya Hegde) ├── CITATION.cff # Standardized BibTeX / CFF metadata ├── .gitignore # Python, OS, Optuna, CatBoost cache rules ├── requirements.txt # Locked project dependencies ├── README.md # Project documentation ├── config.py # Centralized settings & paths ├── run_pipeline.py # Master single entry point runner │ ├── 01_dataset_and_data_understanding.py ├── 02_data_preprocessing.py ├── 03_feature_engineering_and_selection.py ├── 04_batch_machine_learning.py ├── 05_hyperparameter_optimization.py ├── 06_model_selection.py ├── 07_explainable_ai.py ├── 08_probability_calibration.py ├── 09_statistical_validation.py ├── 10_capymoa_streaming.py ├── 11_concept_drift_detection.py ├── 12_active_learning.py ├── 13_visualization.py └── 14_results_and_discussion.py │ ├── figures/ # 18 Publication-quality 300 DPI PNG plots ├── outputs/ # CSV data tables & multi-tab results_summary.xlsx ├── models/ # Serialized models (.joblib, .json, .txt, .cbm) + metadata ├── logs/ # Execution logs (pipeline.log, training.log, etc.) ├── notebooks/ # Clean source notebook (277 executed cells) └── docs/ # Markdown index files & PDF Handbooks ``` ## 🚀 安装与快速开始 ### 1. 环境要求 - **Python**:3.11+ - **JDK**:OpenJDK 21(`JAVA_HOME` 环境变量需指向 Java 21) ``` # 检查依赖 python3 --version java -version ``` ### 2. 运行完整的主 Pipeline ``` # 设置 JDK 21 环境变量(Mac ARM 示例) export JAVA_HOME=/opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk/Contents/Home # 端到端执行完整 pipeline(约 28s 执行时间) python3 run_pipeline.py ``` ## 🛡️ 可复现性保证 该 pipeline 是 **100% 确定性且可复现的**: 1. 环境依赖已锁定在 [`requirements.txt`](file:///Users/chaithanyahegde/CIC-MalMem2022-Binary-Malware-Detection/requirements.txt) 中。 2. 所有随机种子均已固定(`seed=42`)。 3. 运行 `python3 run_pipeline.py` 将端到端按顺序执行全部 14 个模块,重新生成所有日志文件、CSV 基准测试、模型权重以及 18 张高分辨率 300 DPI 图表。 ## 🔮 未来工作与 EDR 部署路线图 1. **内核级 eBPF 遥测**:集成 Linux/Windows eBPF 遥测钩子,直接将进程内存指标流式传输到 CapyMOA。 2. **分布式流引擎**:在多节点 Ray/Kafka 集群上横向扩展 CapyMOA 流处理能力。 3. **持续在线漂移适应**:当 ADWIN 检测到严重分布偏移时,实施自动化的在线重训练触发机制。 ## 📜 引用与许可协议 如果您在研究中使用了本项目,请引用: ``` @misc{hegde2026cicmalmem, author = {Chaithanya Hegde}, title = {Dual-Paradigm Malware Detection via Volatile Memory Forensics & Real-Time Streaming Machine Learning}, year = {2026}, publisher = {GitHub}, journal = {GitHub Repository}, howpublished = {\url{https://github.com/CHAITHANYAHEGDE/CIC-MalMem2022-Binary-Malware-Detection}} } ``` 基于 **MIT License** 发布。由 **Chaithanya Hegde** 创建。
标签:Apex, SecList, 主动学习, 内存取证, 可解释AI, 机器学习, 流式学习, 逆向工具