whyisyoung/BODMAS

GitHub: whyisyoung/BODMAS

BODMAS 是一个面向基于机器学习的 PE 恶意软件时序分析的开放数据集及配套实验代码库。

Stars: 94 | Forks: 18

# BODMAS 恶意软件数据集 ## 简介 BODMAS 恶意软件数据集由 [Blue Hexagon](https://bluehexagon.ai/) 和 [UIUC](https://illinois.edu/) 创建和维护。 它包含 57,293 个恶意软件和 77,142 个良性的 Windows PE 文件,其中包括二进制文件(仅限已解除武装的恶意软件)、特征向量和元数据。 更多详细信息可以在我们的论文“BODMAS: An Open Dataset for Learning based Temporal Analysis of PE Malware”[[PDF](https://liminyang.web.illinois.edu/data/DLS21_BODMAS.pdf)],Deep Learing and Security Workshop 2021(与 IEEE Security and Privacy 2021 同期举办)中找到。 如果您在此数据集的基础上构建了项目或发表了出版物,请引用我们的论文: ``` @inproceedings{bodmas, title = {BODMAS: An Open Dataset for Learning based Temporal Analysis of PE Malware}, author = {Yang, Limin and Ciptadi, Arridhana and Laziuk, Ihar and Ahmadzadeh, Ali and Wang, Gang}, booktitle = {4th Deep Learning and Security Workshop}, year = {2021} } ``` ## 下载 请访问[此链接](https://whyisyoung.github.io/BODMAS/)获取更多详细信息。 ## 安装 1. 在开始之前,请检查您服务器的存储和内存。我大部分实验都是在包含 9 台服务器的实验室集群上运行的(规格说明见[这里](https://gangw.cs.illinois.edu/cluster.html))。我使用 Fabric 将代码分发到不同的服务器,以简化重复的实验。您可以使用 1 台服务器,但需要修改一些 shell 脚本,请参阅示例部分。 2. 将此代码仓库克隆到您的主目录(您可以保存到其他目录,但如果这么做的话需要修改一些脚本,请参阅示例部分中的警告: cd ~ git clone git@github.com:whyisyoung/BODMAS.git 3. 我们建议设置 Python 3.6.8 虚拟环境(其他 Python 3.6 或更高版本可能也可以,但未经测试)。 cd BODMAS/code/ pip install requirements.txt python setup.py install ## 配置 1. 对于 BODMAS,请遵循下载部分的指南。将 `bluehex_metadata.csv` 和 `bluehex.npz` 放在 `BODMAS/code/multiple_data/` 目录下。 2. 对于 Ember 和 UCSB-packerware,您可以在此处下载预处理后的特征向量和元数据(总计约 3.4 GB):[Google Drive 链接](https://drive.google.com/drive/folders/12DMPeh8DA2ukPATnHX4K__shWFJIiBN5?usp=sharing)。请注意,对于 Ember,我们将 Ember 2017 和 2018 合并在了一起。将下载的 4 个文件放在 `BODMAS/code/multiple_data/` 目录下。 3. 对于 SOREL-20M,您可以在此处下载预训练的 LightGBM 和 DNN 模型:[https://github.com/sophos-ai/SOREL-20M](https://github.com/sophos-ai/SOREL-20M) 如果您想使用预训练的 SOREL-20M 模型,您需要在 `code/bodmas/config.py` 中指定某些文件夹的位置: ``` 'sophos_model_folder': '/home/datashare/sophos/baselines/checkpoints/lightGBM/', 'sophos_features_folder': '/home/datashare/sophos/lightGBM-features/' ``` ## 示例 ### 在我们的 BODMAS 数据集上测试预训练模型(我们论文中的表 II): 1. 使用 Ember 和随机种子 0 作为训练集(**请务必将 "angel" 的主机名更改为您的主机名**): cd BODMAS/code/ ./main_pretrain.sh 对于其他随机种子 (1-4),请取消注释 `main_pretrain.sh` 第一个代码块的其余部分,同时将 ("beast" "bishop" "colossus" "cyclops") 的主机名更改为您的主机名。如果您没有足够的内存,强烈建议每次只运行 1 个随机种子。 调用图: main_pretrain.sh -> fabric_pretrain.py -> run_pretrain.sh -> pretrain_model_test_on_bluehex.py 警告:如果您没有将此代码仓库放在您的主目录下(即此代码仓库的路径应为 `~/BODMAS`),您可能需要修改 `fabric_pretrain.py` 的第 18 行。这同样适用于 `fabric_multiclass.py`(第 17 行) 2. 使用 Sophos 预训练模型,请取消注释 `main_pretrain.sh` 的第二个代码块,并将主机名更改为您的主机名。使用 UCSB 作为训练集,请取消注释 `main_pretrain.sh` 的第三个代码块,并相应地更改主机名。Sophos-DNN 的代码非常相似,因此在此省略。 ### 增量重训练(我们论文中的图 1) 1. 在运行脚本之前,如果您想测试 Transcend,您需要向 Feargus Pendlebury 和 Lorenzo Cavallaro (https://s2lab.cs.ucl.ac.uk/) 请求获取 Transcend 代码的访问权限。**请同时抄送给我。** 否则,您可以取消注释相应的导入和相关代码。 2. 使用相应的代码块,并相应地将主机名更改为您的主机名: ./run_ember_drift.sh 3. 调用图: run_ember_drift.sh -> concept_drift_ember.py ### 使用新数据进行训练(我们论文中的图 2) 1. 相应地将主机名更改为您的主机名,并运行以下脚本。强烈建议按顺序运行每个随机种子,以避免内存错误,除非您可以在多台服务器上运行它们。 ./main_bluehex_binary.sh 2. 调用图: main_bluehex_binary.sh -> bluehex_main.py ### 多分类(我们论文中的图 3、4) 1. 使用相应的代码块,并相应地将主机名更改为您的主机名: ./main_bluehex_multiclass.sh 调用图: main_bluehex_multiclass.sh -> fabric_multiclass.py -> run_multiclass.sh -> bluehex_main.py ## 联系方式 如果您有任何问题,请联系 Limin (liminy2@illinois.edu)。 ## 许可协议 BSD 2-Clause "Simplified" License。
标签:AMSI绕过, Apex, DAST, DNS 反向解析, PE文件分析, 威胁检测, 恶意软件分析, 机器学习, 网络信息收集, 逆向工具