首页
社区
课程
招聘
[原创]基于深度学习的恶意软件分类器(三)
发表于: 2022-4-7 22:40 12111

[原创]基于深度学习的恶意软件分类器(三)

2022-4-7 22:40
12111

以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

参数的代码如下:

分类器训练与测试的代码如下:


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2022-4-7 22:41 被1900编辑 ,原因:
收藏
免费 2
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//