首页
学习
活动
专区
工具
TVP
发布

基于神经网络的恶意软件检测分析

对于目前的所有行业来说,“如何有效地检测恶意软件”已经成为了大家共同的网络安全问题。一次恶意软件感染事件将有可能给我们带来数百万美金的经济损失,而当前的反病毒产品以及恶意软件检测工具一般使用的是基于签名的检测技术,这种方法需要手动设置一系列规则来识别已知的不同类型的恶意软件。但是相对来说,这种方法的针对性比较强,而且无法识别新型的恶意软件。

这种方法的效率其实非常低,因为大多数环境所采用的代码不一样,而且每天都会出现数百万种新型的恶意软件。因此,我们急需一种能够应用于当前快速改变的恶意软件生态系统的检测技术,而机器学习也许正是我们所需要的。

实际上,很多初创企业和网络安全公司已经开始研发这种基于机器学习的安全检测系统了。这些公司通常会在特征工程以及数据分析方面花费大量的人力和物力资源来开发高质量的系统,但实际上,我们可以在不涉及特征工程的情况下开发出一套能够跨操作系统和硬件来检测恶意软件的技术,具体内容可以参考我们最新发布的研究报告

报告中介绍了一种人工神经网络,我们可以通过训练这种神经网络来检测恶意的Windows可执行文件(只需要可执行文件的原始字节序列作为输入),这种方法有下列几个优点:

1.不需要手工编译以及与编译器相关的知识。这也就意味着,训练出来的分析模型适用性很强,而且可以适应恶意软件的自我进化。

2.计算复杂度与序列长度成线性关系,因此它适用于大文件。

3.可识别二进制代码中的重要子区域以进行取证分析。

4.这种方法同样适用于新的文件格式、编译器和指令集结构,我们需要做的只是训练数据和模型而已。

因此我们认为,使用机器学习来对恶意软件的原始字节序列进行分析和识别并以此来进行恶意软件监测,将会是机器学习社区中一个富有前景的研究领域。

将深度学习应用到恶意软件检测会遇到哪些困难?

近期,研究人员已经成功将神经网络应用到了计算机视觉、语音识别和自然语言处理领域了,而成功的其中一个原因就是他们能够从原始数据(例如像素或单个文本字符)中归纳学习出相应的特征。因此,在这些成功案例的启发之下,我们也许能够使用可执行文件的原始字符来对神经网络进行训练,并以此来判断目标文件是否为恶意文件。如果我们能够做到这一点,我们将能够大大简化恶意软件检测工具,我们不仅能够提升检测精确度,而且还能够识别出一些恶意软件非明显但十分重要的特征。

但是,想要将深度学习应用到恶意软件检测领域中,我们还有很多问题需要解决。比如说,对于微软的Windows PE恶意软件,我们需要解决的问题如下:

1.将单个字符作为输入序列中的一个单元来处理,意味着我们将按照二百万个时间步长的顺序处理一个序列分类问题。据我们所知,这远远超出了以往任何基于神经网络的序列分类器的输入长度。

2.恶意软件中的字节数据可以包含多种形式的信息,其中包括人类可读的文本、二进制代码、或例如图片之类的任意对象等等。除此之外,还包括一些经过加密的内容。

3.函数之间的调用命令和跳转命令都是可以重新排列的,因此函数之间存在复杂的空间相关性。

解决方案

针对这些挑战与难题,我们测试了大量不同的神经网络结构,但上面所提到的这些挑战促使我们不得不去尝试一些不常见的神经网络结构和参数。

在设计模型的时候,我们主要考虑了以下三种功能:

1.在计算和内存使用中有效扩展序列长度的能力;

2.在检测整个文件时考虑本地环境和全局环境的能力;

3.帮助分析恶意软件标记的能力;

最后,我们所能设计出的最合适的恶意软件检测网络模型框图如下图所示:

数据与模型训练

我们使用了两套数据集来训练并验证这个网络,我们从开源的数据中收集了第一套训练集Group A。A组中包含了43967个恶意文件样本以及21854个良性文件样本。第二组Group B中的样本由工业反病毒厂商提供,其中包含真实攻击场景中的恶意文件以及良性文件样本(总共40万文件样本,每种各占一半)。不过,在实验的后期,我们还收到了更多的训练语料(B组),新添加的语料中包含2011786个唯一的二进制文件样本,其中有1011766个恶意文件样本。为了及时得到神经网络模型的收敛性,我们必须用大批量的数据集来训练网络。

结果分析

训练和分析的结果如下图所示:

从结果中可以看到,我们的模型比较适用于A组的训练数据集,其次是B组。但是,当我们继续使用更大的语料库(200万份测试文件)来进行训练时,我们发现我们的网络模型还会不断地完善。

总结

我们希望,这项研究可以鼓励机器学习社区更加积极地去探索恶意软件检测领域,因为这确实是一个富有前景的研究领域。由于深度学习已经在图像、信号和自然语言处理方面取得了令人瞩目的成就和进步,因此我们也许可以将这些技术扩展到另一种完全不同的领域,比如说恶意软件的检测方面。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171215B0N1K300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券