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文件分析, 威胁检测, 恶意软件分析, 机器学习, 网络信息收集, 逆向工具