B2M for Malware classification

2019年1月30日 0 条评论 38 次阅读 0 人点赞

恶意文件识别

  • 总览

事实证明,机器学习在网络和安全相关领域的应用非常有效。深度学习在语音识别、目标检测、自然语言处理等许多机器学习任务上的性能更佳。本次研究所做的工作:把二进制文件以灰度图的形式展现出来,利用图像中的纹理特征对恶意文件进行识别。

  • 恶意文件图像

恶意文件图像的概念最早是2011年由加利福尼亚大学的Nataraj和Karthikeyan在他们的论文 Malware Images: Visualization and Automatic Classification 中提出来的,思路非常新颖,把一个二进制文件以灰度图的形式展现出来,利用图像中的纹理特征对恶意文件进行识别。此后,有许多研究人员在这个思路基础上进行了改进和探索。

此次研究使用的是最简单的一种恶意文件图像绘制方法。对一个二进制文件,每个字节范围在00~FF之间,刚好对应灰度图0~255(0为黑色,255为白色)。将一个二进制文件转换为一个矩阵(矩阵元素对应文件中的每一个字节,矩阵的大小可根据实际情况进行调整),该矩阵又可以非常方便的转换为一张灰度图。

python代码如下:

 

利用该代码生成的正常文件样本与恶意文件样本图像如下所示:

                         

正常文件样本                                                                                              恶意文件样本

数据集:

恶意文件采了微软开源的malware classification数据集,样本可信性较强。从中抽取1000个恶意文件进行训练。正常文件无整理好的数据集,故随机抽取了1000个正常文件进行训练。

  • CNN(Convolutional Neural Networks)图像识别

通过观看,很难区分恶意文件与正常文件纹理上存在的细微差异,(或者说很难识别恶意代码的纹理特征)。故,借鉴目前较为成熟的CNN图像识别算法,进行图像分类,达到恶意文件识别的目的。

卷积神经网络(cnn)是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一 。

卷积神经网络的组成:

1.输入层(input layer):用三维矩阵代表一张图片,矩阵的长宽代表图片的大小,矩阵的深度代表图像的色彩通道,黑白为1。

2.卷积层(convolution layer):卷积层的输入是上一层神经网络的一小块。它试图对神经网络的每一小块进行更加深入的分析得到抽象程度更高的特征。一般来说,通过卷积层处理后的结点矩阵深度会增加。

3.池化层(pooling layer):不会改变三维矩阵的深度,但是能够缩小矩阵的大小,达到减少参数的目的。可以看做将一个分辨率较高的图片转化为分辨率较低图片的过程。

4.全连接层(fully connecced):经过多轮卷积和池化后,经过1-2个全连接层来进行输出。可以将卷积和池化层看做特征提取,最后的全连接层来进行分类。

5.softmax层:转化为概率分布。

结构如图:

模型结构如下:

经过4个epoch的学习,训练集准确率达到99.19%,验证集准确率达到99.81%

 

 

  • 复盘

本次研究,基于算法可信。图像分类算法在机器学习领域已经较为成熟,通过二进制文件转化为灰度图进行恶意文件识别的方法也有成熟的理论支撑。通过对已有理论和技术的借鉴,较好的实现了恶意文件识别。

同时,存在问题如下:

  1. 正常文件样本的多样性

由于正常文件类型众多,数量巨大,随机抽取的手段涵盖的只是冰山一角。故可能存在误报问题,可通过白名单设置改善此问题。

  1. 模型泛化能力有待验证

由于样本为二进制文件,恶意文件数据集中样本的多样性较难评判。故在下一步工作中,获取更多的恶意文件。进行泛化能力验证。

lyssom

这个人太懒什么东西都没留下

文章评论(0)