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

作者: Alpha_h4ck 2017-12-14 21:17:24

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

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

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

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

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

  1. 不需要手工编译以及与编译器相关的知识。这也就意味着,训练出来的分析模型适用性很强,而且可以适应恶意软件的自我进化。
  2. 计算复杂度与序列长度成线性关系,因此它适用于大文件。
  3. 可识别二进制代码中的重要子区域以进行取证分析。
  4. 这种方法同样适用于新的文件格式、编译器和指令集结构,我们需要做的只是训练数据和模型而已。

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

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

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

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

  1. 将单个字符作为输入序列中的一个单元来处理,意味着我们将按照二百万个时间步长的顺序处理一个序列分类问题。据我们所知,这远远超出了以往任何基于神经网络的序列分类器的输入长度。
  2. 恶意软件中的字节数据可以包含多种形式的信息,其中包括人类可读的文本、二进制代码、或例如图片之类的任意对象等等。除此之外,还包括一些经过加密的内容。
  3. 函数之间的调用命令和跳转命令都是可以重新排列的,因此函数之间存在复杂的空间相关性。

解决方案

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

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

  1. 在计算和内存使用中有效扩展序列长度的能力;
  2. 在检测整个文件时考虑本地环境和全局环境的能力;
  3. 帮助分析恶意软件标记的能力;

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

最合适的恶意软件检测网络模型框图

数据与模型训练

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

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

c3.png

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

总结

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

神经网络 恶意软件 机器学习
上一篇:人工智能那么火,你分得清机器学习和深度学习吗? 下一篇:水滴风波背后:智能监控下无处可逃,涂迷彩、戴口罩都没用!
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

机器学习与预测分析的区别在何处? 精选

如今,认知学习的应用比以往更为普遍。通常意义上讲,认知学习与认知计算就是涉及AI技术与信号处理的操作过程或技术平台。

读芯术 ·  1天前
大盘点:8月Github上7个值得关注的数据科学项目

本文带你来看看GitHub上创建于2019年8月的7个数据科学项目。笔者所选项目的范围十分广泛,涉及从机器学习到强化学习的诸多领域。

读芯术 ·  1天前
非监督学习最强攻略

本次主要讲解的内容是机器学习里的非监督学习经典原理与算法,非监督,也就是没有target(标签)的算法模型。

SAMshare ·  1天前
PyTorch终于能用上谷歌云TPU,推理性能提升4倍,该如何薅羊毛?

Facebook在PyTorch开发者大会上正式推出了PyTorch 1.3,并宣布了对谷歌云TPU的全面支持,而且还可以在Colab中调用云TPU。

晓查 ·  1天前
机器学习转化为生产力,警惕这4个常见陷阱!

几乎每个人都想在他们的业务中引入机器学习,但是这些人也遇到了一个大问题:让模型可持续发展十分困难,尤其是在云架构的基础上。medium上一位博主也指出了这个问题,并提出了将机器学习模型投入生产的4个常见陷阱。

大数据文摘 ·  2天前
500亿参数,支持103种语言:谷歌推出「全球文字翻译」模型

由于缺乏平行数据,小语种的翻译一直是一大难题。来自谷歌的研究者提出了一种能够翻译 103 种语言的大规模多语言神经机器翻译模型,在数据丰富和匮乏的语种翻译中都实现了显著的性能提升。

机器之心 ·  3天前
机器学习免费跑分神器:集成各大数据集,连接GitHub就能用 精选

搞机器学习的小伙伴们,免不了要在各种数据集上,给AI模型跑分。现在,Papers with Code (那个以论文搜代码的神器) 团队,推出了自动跑分服务,名叫sotabench,以跑遍所有开源模型为己任。

栗子 鱼羊 ·  3天前
大数据为什么不够聪明?机器要如何走向强人工智能

大数据为什么不够聪明?比概率语言更强大的思考工具是什么?科幻电影中的强人工智能到底怎样实现?如何让智能机器像人一样思考?搞清楚因果关系才能拨云见日。

明日情报 ·  3天前
Copyright©2005-2019 51CTO.COM 版权所有 未经许可 请勿转载