-
-
[原创]基于深度学习的恶意软件分类器(三)
-
发表于: 2022-4-7 22:40 12097
-
以Windows PE结构中的一些信息作为输入数据来构建恶意软件分类器,所用数据集只对相关软件是否为恶意软件进行标注,并没有标注恶意软件的具体类别。因此,本次实验是一个二分类任务,因为没找到合适的论文,所以就自己构建了一个简单的神经网络用来构建分类器。
Python版本:3.6.13
Pytorch版本:1.8.1
CUDA版本:11.4
公开数据集EMBER为网络安全公司Endgame于2018年发布的,训练集中共有6W条数据集,其中3W为恶意软件样本,3W为良性文件样本,2W未标记样本,测试集中共有2W条数据集,其中1W恶意软件样本,1W良性文件样本,所有数据均通过提取相应软件的PE信息来获得的。数据集的下载地址为:https://ember.elastic.co/ember_dataset_2018_2.tar.bz2,作者也在github上对该数据集进行了相关说明:https://github.com/endgameinc/ember。
每一条数据都是JSON数据格式,简略看如下:
JSON格式中的label代表了样本的类别,1为恶意样本,0为正常样本,-1为未标记样本。每一条数据都包含了大量信息,包括导入表,导出表,节区中的二进制序列等,不过本实验只用到以下12个PE头中的信息用来作为输入数据:
optional->sizeof_code
optional->sizeof_headers
optional->sizeof_heap_commit
general->size
general->vsize
general->has_debug
general->has_relocations
general->has_resouces
general->has_signature
general->has_tls
general->symbols
节区的数目
最新的数据里面训练集被拆成了6个文件来分别存放,按顺序读取文件以后,就需要按照JSON文件格式来解析获取输入数据,以下是参考代码,这里舍弃了未标记数据,且每条数据都对255进行求余来进行归一化。
以下是本文实验用的模型,中间的隐藏层神经元数量分别是512,1024,512。
损失函数为cross_entropy,优化器为SGD,相关参数设定如下:
batch_size: 8
epoch: 25
lr: 0.001
decay: 0.0005
momentum: 0.9
参数的代码如下:
分类器训练与测试的代码如下:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
- [原创]CVE-2022-21882提权漏洞学习笔记 16382
- [原创]CVE-2021-1732提权漏洞学习笔记 19489
- [原创]CVE-2014-1767提权漏洞学习笔记 15192
- [原创]CVE-2018-8453提权漏洞学习笔记 18526
- [原创]CVE-2020-1054提权漏洞学习笔记 13542