AmitabhCh822/cryptojacking-validation

GitHub: AmitabhCh822/cryptojacking-validation

对 AI 检测云加密货币劫持相关文献中 ML 模型的实证复现验证,揭示了数据泄露和测试方法缺陷导致的准确率虚高问题。

Stars: 0 | Forks: 0

# 加密货币劫持检测验证 **基于 AI 的云加密货币劫持检测的实证验证** [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Google Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/) ## 概述 本代码库包含我们系统文献综述的验证代码: 我们从已审阅的文献中选取了具有代表性的 ML 模型,并在公共数据集上对它们进行了测试,以验证已发表的结果实际成立的程度。简而言之:它们通常不成立。报告的准确性常常因数据泄露(data leakage)以及仅在模型已知的攻击类型上进行测试而被夸大。 ## 主要发现 ### 我们的结果(修复数据泄露 + 严格评估后) | 数据集 | 最佳模型 | 准确率 | F1分数 | 训练时间 | |---------|-----------|----------|----------|---------------| | DS2OS | XGBoost | 96.26% | 0.9695 | 3.16s | | NSL-KDD | XGBoost | 80.82% | 0.8073 | 3.67s | ### 与文献结果的对比 | 研究 | 模型 | 数据集 | 已报告准确率 | 我们的准确率 | 差距 | |-------|-------|---------|----------|------|-----| | Tekin et al. | RF | DS2OS | ~99.00% | 96.26% | -2.74% | | Tiwari et al. | LightGBM | DS2OS | 98.52% | 96.26% | -2.26% | | Safaei Pour et al. | RF | NSL-KDD | 99.60% | 77.17% | -22.43% | | Safaei Pour et al. | Gradient Boosting | NSL-KDD | 99.60% | 78.25% | -21.35% | **为什么会有差距?** - **DS2OS(下降约 3%):** 原始研究保留了会泄漏目标变量的标识符列(timestamp、sourceID、sourceAddress)。一旦移除这些列,模型就必须真正学习行为模式,而不是死记硬背 ID。 - **NSL-KDD(下降约 22%):** 原始研究在训练数据的随机划分上进行测试,因此模型只会看到它们已经训练过的攻击类型。我们使用了官方的 KDDTest+ 留出集,其中包含训练中未出现过的新型攻击(mscan、saint、apache2、processtable)。这是一项更艰难的测试,也更接近真实部署的情况。 ## 代码库结构 ``` cryptojacking-validation/ ├── README.md ├── requirements.txt ├── LICENSE │ ├── notebooks/ # Run these in order │ ├── 1_Master.ipynb # Setup + data download │ ├── 2_Exploration.ipynb # Dataset exploration │ ├── 3_Preprocessing.ipynb # Cleaning, SMOTE, scaling │ └── 4_Models.ipynb # Training + evaluation │ ├── data/ │ ├── raw/ # Downloaded datasets │ └── processed/ # Preprocessed arrays │ ├── models/ # Saved .pkl files │ ├── results/ │ ├── figures/ # Plots and visualizations │ └── metrics/ # CSV metrics │ ├── scripts/ │ └── utils.py # Helper functions │ └── docs/ └── METHODOLOGY.md # Detailed methodology ``` ## 快速开始 ### Google Colab(推荐) 1. 点击上方的 Colab 徽章 2. 按顺序运行 notebooks:`1_Master` > `2_Exploration` > `3_Preprocessing` > `4_Models` 3. 下载 DS2OS 数据集需要一个 Kaggle 账号和 API 密钥 ### 本地设置 ``` git clone https://github.com/AmitabhCh822/cryptojacking-validation.git cd cryptojacking-validation python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt jupyter notebook ``` ## 数据集 ### DS2OS (分布式智能空间编排系统) - **来源:** [Kaggle](https://www.kaggle.com/datasets/libamariyam/ds2os-dataset) - **样本数:** 357,952 - **原始特征:** 12(IoT 设备遥测数据) - **预处理后特征:** 5(sourceType、sourceLocation、destinationServiceAddress、destinationServiceType、destinationLocation) - **因数据泄露而移除:** sourceID、sourceAddress、timestamp、value、accessedNodeAddress、accessedNodeType、operation - **类别分布:** 97.2% 正常,2.8% 攻击 ### NSL-KDD - **来源:** [UNB CIC](https://www.unb.ca/cic/datasets/nsl.html) - **训练集:** 125,973 个样本(KDDTrain+) - **测试集:** 22,544 个样本(KDDTest+,包含训练中未见过的攻击类型) - **特征:** 41(网络流量模式) - **类别分布:** ~53% 正常,~47% 攻击 ### 为什么要使用代理数据集? 我们的综述发现,目前没有任何包含真实云加密劫持遥测数据的公开数据集。最接近的选项(CREMEv2、VIKRANT 蜜罐、AWS 模拟代码库)仅捕获主机级别的序列或网络流量。它们均不包括 hypervisor 指标、Kubernetes pod 统计信息或 container runtime 遥测数据。详细的分解分析请参阅论文的第 4.4.1 节。 ## 模型 我们根据所审查文献中出现频率最高的模型,选择了六个模型系列。经典 ML 涵盖了我们审查的 57% 的研究。 | 模型 | 配置 | |-------|--------| | Random Forest | 100 estimators, max_depth=20 | | XGBoost | 100 estimators, max_depth=10, lr=0.1 | | LightGBM | 100 estimators, max_depth=10 | | Decision Tree | max_depth=15 | | KNN | 5 neighbors | | Gradient Boosting | 100 estimators, max_depth=5, lr=0.1 | 我们使用了文献中通常报告的配置。未进行自动调优。此处的重点是可重复性,而不是追求最高数值。 ## 结果 ### DS2OS(移除数据泄露后) | 模型 | 准确率 | F1分数 | 精确率 | 耗时 | |-------|----------|----------|-----------|------| | Random Forest | 96.26% | 0.9695 | 0.9830 | 21.92s | | XGBoost | 96.26% | 0.9695 | 0.9830 | 3.16s | | LightGBM | 96.26% | 0.9695 | 0.9830 | 3.78s | | Gradient Boosting | 96.23% | 0.9693 | 0.9829 | 45.31s | | Decision Tree | 96.26% | 0.9695 | 0.9830 | 0.55s | | KNN | 99.21% | 0.9915 | 0.9921 | 1.19s | 所有基于树的模型的准确率基本相同(~96.26%)。发生这种情况是因为在剥离泄漏列之后,仅剩下 5 个低基数特征。KNN 达到了 99.21%,但代价是牺牲了攻击召回率(recall)。 ### NSL-KDD(带有新型攻击的官方 KDDTest+) | 模型 | 准确率 | F1分数 | 精确率 | 耗时 | |-------|----------|----------|-----------|------| | Random Forest | 77.17% | 0.7686 | 0.8345 | 8.61s | | XGBoost | 80.82% | 0.8073 | 0.8527 | 3.67s | | LightGBM | 80.35% | 0.8023 | 0.8503 | 3.44s | | Gradient Boosting | 78.25% | 0.7802 | 0.8391 | 47.81s | | Decision Tree | 77.66% | 0.7740 | 0.8354 | 1.01s | | KNN | 76.76% | 0.7639 | 0.8347 | 0.12s | 77% 到 81%。远低于已发表论文中看到的 ~99%。区别归结为一件事:我们在模型从未训练过的攻击上进行了测试。这就是部署加密货币劫持检测器的现实情况,因为攻击者会不断改变他们的技术。 ### 我们学到了什么 1. **数据泄露很重要。** 从 DS2OS 中移除标识符列会使准确率下降约 3%。保留这些列的研究本质上是在记忆记录 ID,而不是在学习攻击行为。 2. **泛化能力是真正的考验。** 在 NSL-KDD 上 22% 的准确率下降表明,仅在熟悉攻击上进行测试的模型严重夸大了它们在实际生产中的效果。 3. **XGBoost 和 LightGBM 达到了最佳平衡点。** 两者都在 3-4 秒内达到了最高准确率。Gradient Boosting 耗时 45 秒以上,却没有实质性的提升。 4. **跨数据集迁移不起作用。** 5 个 IoT 特征和 41 个网络特征是根本不同的模式。您不能简单地将模型从一个模式直接应用到另一个模式。 5. **类别不平衡需要处理。** 如果在 DS2OS 上不使用 SMOTE,模型会通过将所有样本预测为正常来达到 97% 的准确率,对攻击的召回率则为零。 ## 预处理流水线 ``` Raw Data │ ├── Check for data leakage │ └── Remove identifiers correlated with the target │ ├── Label encode categorical features │ ├── Stratified 70/30 train/test split │ ├── SMOTE on training set (DS2OS only, 1:1 ratio) │ └── NSL-KDD is already ~53/47, no resampling needed │ └── StandardScaler (zero mean, unit variance) ``` KDDTest+ 原样用作 NSL-KDD 的测试集。对其重新采样将违背测试新型攻击的初衷。 ## 复现结果 我们报告了单次分层训练-测试(train-test)划分的结果,以匹配我们所比较的主要研究运行实验的方式。这意味着存在一些依赖于数据划分的方差。请将这些数字视为点估计值,而不是绝对保证。 **环境:** Google Colab 标准运行时,Python 3.10,scikit-learn 1.3.0,XGBoost 2.0.0,LightGBM 4.0.0。 ## 引用 ### 软件 / 复现包 ``` @software{chakravorty2026cryptojacking_code, title = {Cryptojacking Validation: AI Against Cloud Cryptojacking (Replication Package)}, author = {Chakravorty, Amitabh}, year = {2026}, version = {v1.0.0}, publisher = {Zenodo}, doi = {10.5281/zenodo.18565269}, url = {https://github.com/AmitabhCh822/cryptojacking-validation} } ``` ## 许可证 MIT 许可证。详情请参阅 [LICENSE](LICENSE)。 ## 致谢 - University of Cincinnati CECH Impact Accelerator Grant - Canadian Institute for Cybersecurity (NSL-KDD 数据集) - DS2OS 数据集贡献者 ## 联系方式 - **Amitabh Chakravorty** - [chakraa4@mail.uc.edu](mailto:chakraa4@mail.uc.edu) - **Nelly Elsayed** - [elsayeny@ucmail.uc.edu](mailto:elsayeny@ucmail.uc.edu) 此代码库是系统文献综述的一部分。主要的结论是:如果代理数据集上的高准确率是由数据泄露或仅对已知攻击进行测试所驱动的,那么它就没有多大意义。该领域在将这些检测方法正式应用于实际生产之前,迫切需要公开的云特定加密货币劫持数据集。
标签:AI安全, Apex, Chat Copilot, DS2OS, LightGBM, MIT License, NoSQL, NSL-KDD, Python, Random Forest, XGBoost, 分类算法, 加密货币劫持检测, 学术复现, 异常检测, 数据科学, 无后门, 机器学习, 模型验证, 特征工程, 系统性文献综述, 网络安全, 资源验证, 过拟合评估, 逆向工具, 隐私保护