Malware Classification with Deep Convolutional Neural Networks

admin 2022年1月4日23:28:07评论67 views字数 1754阅读5分50秒阅读模式

作者坛账号:LegendSaber


一. 前言
深度学习作为近年来的一个热点话题,广泛应用与各个领域。在恶意代码识别领域也有不少学者进行相关的研究。论坛中好像还没有相关的讨论,也不知道大家是否有兴趣。这边选取一篇2018年发表的论文来简单描述一下深度学习在Windows平台上面恶意代码识别的应用,看看各位安全人士的反应,如果有兴趣,之后在继续讨论其他论文。对于CV和NLP方向的大佬也可以了解一下,转换思路,也不至于在那两个方向上面一直卷。。
关于深度学习的入门的话。这边就推荐李航的统计学习,西瓜书和花书。视频推荐吴恩达和李宏毅两位老师的视频,在小破站上面都可以观看,这篇文章就不详细说明模型了,那样篇幅太长。
论文原文链接是:https://ieeexplore.ieee.org/document/8328749(Malware Classification with Deep Convolutional Neural Networks)

二.数据集
数据集对于结果的影响可以说是举足轻重,在现有技术基础上数据集的好坏甚至比你算法的好坏都重要的多(就挺尴尬的←_←)。而数据集无非就是对一组可以表述相关问题的特征罢了
那么在恶意代码识别方面,我们最后落地的项目真正要分析的其实就是一个二进制PE文件。那么有哪些可以作为数据集输入呢?大致可以分为这四种:
1.硬编码。每个程序生成的二进制文件的硬编码都是独一无二的。
2.汇编助记符。既然硬编码都不一样,那么生成的助记符自然也是独一无二的。
3.API。每个程序要完成不一样的功能自然要调用相关的不同的API,我们也可以根据他调用的API来进行分类。(当然这个方法比较容易被干掉。。)
4.PE。每个程序的PE文件保存了程序的相关信息。我们可以根据PE文件的内容作为输入。
本文选取的是硬编码作为数据的输入。这边参考一篇2011年的论文,来看看如何处理硬编码来作为模型的输入。
论文原文链接:https://dl.acm.org/doi/10.1145/2016904.2016908Malware Images: Visualization and Automatic  Classification)
作者处理完以后的数据集称为Maling数据集,在该领域也得到的广泛的应用和认可。该数据集是对25个家族的恶意程序进行分类,类别如下图。一共9千条左右的数据集,其中8000左右的数据集我们用来训练,900左右的数据集用来训练。

Malware Classification with Deep Convolutional Neural Networks


我们知道一字节等于8比特。用十进制表示范围的话那就是0-255。既然如此我们就可以把一个二进制文件的每一个字节都当作一个像素点来生成图片,然后在使用CV方向提出的模型来解决。转换过程就如下图所示。

Malware Classification with Deep Convolutional Neural Networks


这里有一个问题就是,每一个二进制文件所包含的字节数是不同的,那我们怎么选择宽与高呢。作者在他的论文中给出了转换的大小对于的原则如下图。

Malware Classification with Deep Convolutional Neural Networks


这里还需要说明的是在生成的过程中,我们把PE的头部信息等都去掉了,只保留了各个节的内容,这也合理。因为头部信息主要是描述程序的信息,并无具体行为。可以看到不同的节生成的图像差别还是挺大的。

Malware Classification with Deep Convolutional Neural Networks

根据上面所说的方法我们生成的不同家族的二进制文件的图像如下,我们可以看到不同的家族生成的图像纹理存在比较大的差别,这就给我们的分类带来了便捷。

Malware Classification with Deep Convolutional Neural Networks


三.模型
作者的模型如下图,该模型是对VGG16的简单更改,删除了其中的Dropout层。作为一个多分类问题,自然而然选择的损失函数就是cross_entropy,优化器选择的是SGD。

Malware Classification with Deep Convolutional Neural Networks

本人对作者的论文内容进行了复现。选择的是Pytorch框架来进行复现。其中,Python版本为3.6.13,Pytorch版本为1.8.1。
相关参数根据要求在Configure.py保存着。大家只需要更改base_path即可进行运行。由于代码中已经给出了必要的注释这里就不贴出代码,大家可以自行下载参考。在我的机器上最后训练出的模型在测试集跑出的精度为97.96。
Malware Classification with Deep Convolutional Neural Networks


--

www.52pojie.cn


--

pojie_52

本文始发于微信公众号(吾爱破解论坛):Malware Classification with Deep Convolutional Neural Networks

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月4日23:28:07
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Malware Classification with Deep Convolutional Neural Networkshttps://cn-sec.com/archives/471910.html

发表评论

匿名网友 填写信息