资讯详情

基于AI恶意软件分类技术(5)

阅读论文笔记

原文链接

本调查的主要贡献是:

  • 提出新的分类来描述和比较恶意软件和成分的分类和主要发现。
  • 设计了分析现有恶意软件分类和组合分析技术的新框架。
  • 识别并提出与恶意软件分析相关的开放问题和挑战。
  • 确定了主题的一些趋势,并提供了如何改进现有解决方案以应对新的和持续的挑战的指导方针。

2、 相关研究:

BZ其他人将恶意软件检测方法分为三种类型:基于签名、基于行为和基于启发的方法。此外,他们还根据提出的启发方法识别了五个特征:操作代码API调用、控制流图,n-grag和混合特征。 Shabtai研究如何使用静态特性检测恶意软件等人提出的另一项工作。 。 Ucci其他人调查了机器学习方法的恶意软件检测和分析。他们将被调查的文章分为三类:目标(预期输出)、特征和算法。他们还强调了一系列的问题和挑战,并确定了新的研究方向。 同样Sahu MK调查还对基于智能的恶意软件分类进行了比较和分析。特别是,他们报告了每个基于机器学习的恶意软件分类技术的缺点、优点和问题。

此外,Basu其他人研究了依赖人工智能恶意软件分类技术的不同工作。特别是,它们创造了五种特征:PI调用图,字节序列,PE编码频率和系统调用标头和部分。

此外,Ye其他人的[36]也研究了恶意软件分类过程的许多不同方面。更具体地说,他们发现了一些问题,如渐进学习和对抗学习。

最近,Ori其他人的[37]调查了动态恶意软件分析的技术文献,包括对每种技术的描述。特别是,他们总结了提高动态恶意软件分析能力的机器学习方法。

与上述工作相比,本文确定了恶意软件分类和成分分析面临的主要问题和挑战。此外,我们还确定了主题的一些趋势,并提供了如何改进解决方案以应对新的和持续的挑战的指导方针。

3.恶意软件分类中使用的特征和算法

图1显示了分类方法。本节其余部分组织如下(按建议分类)。.第三节描述了恶意软件分析和使用的特征.讨论现有算法。

3.1 Malware analysis features

本节介绍了样本分析的特点。.1.在第三节,我们展示了我们是如何提取特征的.1.在第二节中,我们展示了考虑的特征类型。 本节将回顾静态、动态和混合三种特征提取方法。 静态特征提取是在不运行可执行文件的内容中提取特征的一种方法。文件格式可以提取静态特性,如便携式可执行文件(PE)公共对象文件格式(COFF)[12,18,22,25]。静态特征也可以在不知道任何格式的情况下被提取出来。这种方法提取的特征可以是字节序列、文件大小、字节熵等 [12、17、20、25]。静态特征提取方法的优点是覆盖了完整的二进制内容。但问题是,由于大多数静态提取的特性来自加密内容,而不是原始程序体[40],不是原始程序体[40]。

。动态特征提取包括通常在隔离环境中运行的可执行文件(VM)或模拟器,然后从可执行文件的内存图像或其行为中提取特征。与静态特征提取方法相比,动态特征提取对这些恶意软件技术具有更强的抵抗力[40]。

使用安德森等人[21,41]Xen1和Royal等人[42],Dai等人[19]和Islam等人[22]使用VMWare创建他们的虚拟机并进行动态分析。[27]等人使用布谷鸟沙箱3,这是一个开源的自动恶意软件分析系统API调用。其他为杀死病毒引擎而工作的研究人员使用虚拟机作为杀死病毒引擎的一部分,动态提取特征[24、26]。

事实上,有两种模拟器:全系统模拟器和应用程序级模拟器。整个系统模拟器是一模拟计算机各部件的计算机程序,包括其内存、处理器、显卡、硬盘等,目的是运行未修改的操作系统。Qemu四是多系统[23、40、43]使用的全系统仿真器。考虑到整个系统仿真器的耗时,Cesare和Xiang[15]建议使用应用程序级仿真来更有效地破解恶意软件,以便只实现执行文件所需的部分,包括指令集API、特定于操作系统的虚拟内存、线程和过程管理以及结构。

提取动态特征的一个问题是,它没有揭示所有可能的执行路径[40]。在虚拟机或模拟器中执行恶意软件可能有检测例程。当恶意软件发现自己在这样的环境中执行时,它将停止执行,因此动态模型将无法识别出它为恶意软件。检查可执行文件是否正在进行中VM从几篇论文[44、45]中可以找到执行方法。动态方法的另一个问题是,它的执行时间比静态特征提取长得多40。

该方法结合静态特征提取特征和动态特征提取特征,获得更高的检出率[39]。 根据我们的调查,大多数被调查的论文都是基于动态特征提取方法[21、24、46-63]。其他方法采用相同比例的静态方法[64–83]或混合[22、23、41、47、84-86]。

在本节中,我们将对恶意软件分析人员使用的特性进行分类,并解释每种类型是如何被实际提取和表示的。 。 可打印的字符串以空字符结束ASCII字符序列。舒尔茨等人。[12]发现恶意软件有一些类似的字符串,不同于它,好的软件也有一些常见的字符串,不同于恶意软件。可打印的字符串表示为二进制特征,其中1表示可执行文件中存在的字符串,0表示不存在于所有系统中 [12,22,24,26]。 Schultz等人[12]从PE可打印的字符串从文件的头部提取。提取是直接的,因为标题是纯文本格式的。 Dahl等人[24]、Huang和Stokes[26]从内存[24,26]中的文件图像中提取空终止对象作为可打印字符串。它们的方法覆盖范围比从头[12]提取可打印字符串要好,但它们可能是结果。 Islam等人[22]使用IDAPro可打印的字符串工具从整个文件中提取。

与其它作品不同,Saxe和Berlin[25]不以可打印字符串为二进制特征,而是利用其哈希值和字符串长度的对数创建直方图,并以可打印字符串的计数为特征。它们将在ASCII代码范围内所有长度为6或以上的字节序列作为可打印字符串,与其他作品略有不同。

本质上,大多数恶意软件的功能并不依赖于可打印的字符串。因此,当恶意软件创建者发现恶意软件探测器意外使用一些字符串时,他们可以消除它们,或者即使需要打印字符串,他们也可以将它们分解成分布在不同位置的字符。因此,可打印的字符串并不可靠。

。可执行文件由字节序列(也称为字节码)组成。字节序列可以属于可执行文件的元数据、代码或数据。字节序列是恶意软件的重要签名,因为恶意软件可以共享相同的公共序列或遵循相同的正则表达式。因此,字节序列也适用于恶意软件分析系统[12、17、25、41]的特点。 Schultz等人[12]以二进制特征的形式使用双字符字节序列,声称字节序列特征是信息最丰富的特征,因为它表示可执行文件中的机器代码。事实上,这并不完全正确,因为有些字节序列来自元数据或数据部分。即使字节序列来自代码部分,字节序列也可能与机器代码不匹配,因为某些架构中的指令具有可变长度。它们的字节序列具有维数爆炸的特点,因为有太多不同的双字节序列,而且它们太大,无法容纳内存,所以它们只能将字节序列集分成几个集,并将其提供给多个贝叶斯模型。

为解决维度爆炸问题,Kolter和Maloof[17]2.在55亿个不同的4克字节序列中,前500个信息丰富的4克字节序列被选为二进制。

与上述两部作品不同,Anderson等人[41]不使用字节序列本身作为特征,而是将字节序列与马尔可夫模型相匹配,因此它们使用从一个字节到另一个字节的转移概率。Chen等人的[25]利用每个1024字节窗口的字节熵和每个字节的出现,形成直方图,将每个轴均匀分成16个箱,形成256个长度的特征向量。

Nataraj[20]等人将文件的整个字节序列转换为图像,每个字节代表像素的灰度。他们发现同一家族的恶意软件在布局和图像上非常相似。将一维字节序列转换为二维矩阵的图像的宽度取决于文件的大小。利用Oliva恶意软件图像的图像特征是用托拉尔巴特[87]提出的算法计算的。基于图像的技术的主要优点是对许多类型的混淆[88]具有鲁棒性。

。这是因为混淆技术,如指令替换和寄存器重新分配,可以分别更改操作代码和操作代码,这意味着机器代码已经改变。在所有这些工作中,字节代码都是静态提取的,但字节序列将通过不同的算法或密钥加密的主程序主体通过外壳和多态性来改变。

。装配和拆卸可以相互翻译机器代码和装配代码。意软件分析的一个特性,汇编代码比机器代码有一些优势。首先,汇编代码可以被程序员理解,因此作为一种特性,汇编代码更方便地进行预处理(例如,根据功能进行分类、过滤、截断等)。作为一个信息更丰富的特性出现。此外,恶意代码通常通过加壳或多态性进行加密,因此不可能从原始字节序列中获得它,但是,动态提取的汇编代码已经被解密,因此它包含了恶意代码。

Moskovitch等[18]提出装配代码可以比机器代码的恶意软件分析因为相同的恶意引擎可能位于文件的不同位置,因此可能链接到不同的地址内存甚至扰乱稍微通过降低机会和使用操作码的鲁棒性提高。他们通过使用IDAPro解析可执行文件来提取汇编代码。他们尝试将每个操作码n-gram(n=1,2 ,… ,6)的项频率(TF)和项频率逆文档频率(TF-IDF)作为特征,并使用文档频率(DF)、信息增益比或Fisher评分来选择特征。利用操作码双字符的TF值作为Fisher分数过滤的特征,得到了最好的结果。他们的方法的一个缺点是,它仍然容易发生死代码插入、操作转换、加壳和多态性。另一个是删除操作数导致信息丢失,从而可能导致精度的损失。

为了对抗加壳和多态性,Dai等人的[19]在虚拟机中运行恶意软件,并记录正在运行的字节码的序列,这些字节码将被分解成汇编代码。它们使用三种双操作码组合:块中的无序操作码,块中的有序但不一定是连续的操作码,块中的连续操作码。这样,它们的特性就更能抵抗死代码的插入和操作的重新排序。他们使用训练数据集中一个特征的频率与一个类之间的关联作为标准,并应用先验[89]的一个变体来选择顶级𝐿特征。尽管无序操作码和块内操作码有序(但不一定是连续操作码)提高了对死码插入和操作重排序的抵抗力,但这些特性过于灵活,因此它们也会带来更多的假阳性情况。

Royal等人。[42]是另一项旨在检测隐藏且只能动态看到的代码的工作。他们这样做的方法是存储一个可执行文件的静态代码,并检查所执行的每个操作是否都在所存储的静态代码区内。如果不是,那么它就是隐藏代码的一部分。他们声称,如果主恶意软件引擎都存在,隐藏代码应该在隐藏代码中,实验结果也说明了隐藏代码提高了ClamAV6和McAfee防病毒的准确性。7

Anderson等人。[21,41]使用从一个操作码到另一个操作码的转换概率作为特征,这与他们如何使用字节序列特征类似。在他们的论文[21]中,他们只是通过在虚拟机中记录可执行文件的执行来提取汇编代码,这类似于Royal等人.[42]的使用方式。在他们的第二篇论文[21]中,他们还使用IDAPro来分解可执行文件,并且来自这两个来源的汇编代码被用作两个独立的特性集。此外,他们还根据其第二篇论文[21]中指令的功能将指令分成几个粒度的类别,以减少指令替代的影响。在他们的初步实验中,他们还发现,如果他们使用命令的指令,性能会更差。

Santos等人的[23]分解可执行文件以获取其汇编代码,然后使用加权操作码n-gram频率作为其特征之一。权重是所有操作码的信息增益乘以n克的归一化TF的乘积。

可执行文件所使用的DLL文件和DLL文件的函数公开了它们所使用的系统服务。可执行调用由它所依赖的DLL文件的函数显示。因此,可以推断出它可能打算做什么行为或它将能够做什么。

Schultz等人[12]通过使用的可执行文件提取DLL文件、DLL文件中的函数以及每个DLL的函数数从元数据中提取DLL文件,以便了解资源如何影响可执行文件的行为以及每个DLL的使用程度。前两个作为二进制特征,第三个是实值特征。

Bayer等人[40]和Santos等人[23]使用模拟器动态提取对WindowsAPI函数的调用。然后,他们使用这些API函数在执行期间获取可执行文件的操作,包括I/O活动、注册表修改活动、进程创建/终止活动、可执行文件的网络连接活动、自我保护行为、系统信息窃取、执行导致的错误以及与Windows服务管理器的交互。

Fredrikson等人[43]也使用一个模拟器来监控系统调用。然后,它们利用系统调用与其参数之间的关系形成一个依赖图,其中节点是系统调用,边连接共享某些参数的系统调用。它们将一个行为定义为它的一个子图,可以用来区分恶意软件和好软件的行为将被挖掘并用于检测恶意软件。

安德森等人[41]、Huang和Stokes[26]将系统调用分组为高级类别,其中每个类别表示功能相似的系统调用组,如在屏幕上绘制或写入文件。安德森等人,[41]然后将系统调用组的跟踪提供给一个马尔可夫链,以便他们使用系统调用的转移概率作为特征。Huang和Stokes[26]使用这些高级API调用事件作为二进制特性。

Islam等人[22]和Dahl等人[24]通过在虚拟机中运行一个可执行文件来提取窗口API函数调用及其参数。Islam等人[22]将视窗API函数和参数视为单独的实体,并将每个实体的出现频率作为其特征。Dahl等人。[24]使用单个系统API调用、一个输入参数和由三个连续的API函数调用组成的API三克的组合,作为二进制特征,随后使用互信息进行选择。

Kolosnjaji[27]等人使用动态恶意软件分析系统布谷鸟沙箱来提取由一个可执行文件调用的Windows系统调用的序列。他们使用它们的单热表示,并将系统调用的顺序提供给连续的深度学习模型。

。例如,恶意软件作者可以使一个可执行文件调用一些无关的API调用,并淹没他们使用的API调用来实现他们的目的。因此,这个特性在大多数情况下都是不可靠的。

。 控制流图是表示程序流程的有向图,其中节点是指令,而两个节点之间的边表示两个指令执行顺序的顺序。图中的一个顶点是一个基本的块,在其中间没有跳转或分支指令。一个有向边表示控制流中的跳跃。在一些论文[15,41]中,控制流图被用作检测恶意软件的特征或签名。

Cesare和Xiang[15]表示,类似的恶意软件通常具有类似的高级结构化控制流。他们发现压缩和加密的数据具有相对较高的熵,所以他们首先使用字节序列的熵来检测一个可执行文件是否被加壳。如果是这样,他们将使用一个应用程序级模拟器来提取隐藏的代码。他们仍然使用字节序列的熵来检测隐藏代码提取的完成情况。然后使用推测性分解[90]对二进制文件的内存映像进行分解。最后,他们使用结构化过程从过程的控制流图中恢复高级结构化控制流,并使用字符串表示它们。表示控制流图的字符串都被保存为签名。图2显示了控制流图和签名字符串之间关系示例。

Anderson等人[41]还发现,多态病毒在改变其控制流图以避免检测的同时,构建语义相似的版本并不容易。因此,他们使用控制流图作为特征。更具体地说,它们使用控制流图中每个k-graphlet(k个节点的子图)的出现频率来表示控制流图。

为了对抗使用控制流图的检测,恶意软件作者可以使用控制流扁平化和虚假的控制流模糊技术,在不影响功能的情况下改变控制流,从而损害控制流图特性的有效性。

。一些论文(例如,Islam等人[22]和Chen等[14])使用函数级特征进行恶意软件分类。 特别是,Islam等人[22]发现函数长度它包括区分恶意软件家族的统计有用信息。在获得每个可执行文件的汇编代码后,他们通过测量代码的字节数来计算它们的长度,并使用每个函数长度的出现频率作为一个特征。然而,显然,函数长度是对模糊最不鲁棒的特性。函数长度可以通过插入死代码来任意增加,或者通过将它们分割为多个函数来减少。

应该注意的是,两个语义上彼此相似的函数被认为是彼此的克隆。为此,Chen等人[14]假设属于同一恶意软件家族的一些文件共享一些使用克隆关系连接的功能。因此,它们将函数聚类到组中,其中任意两个函数都可以使用克隆关系直接或间接地连接起来,并从每个组中选择一个函数作为范例作为签名。他们使用NiCad[93]来检测这两个功能是否相互克隆。然而,使用一个函数来表示一组函数是有问题的。由于相同的函数代代,最新版本看起来可能与原始版本完全不同。如果选择旧版本作为范例,克隆检测器可能无法识别出一些未知的新一代它。虽然他们的系统可以在安卓APK文件上工作,但该方法可以直接应用于可执行恶意软件的分类。

一些杂项文件属性可以帮助工程师区分恶意软件和固软件,因为它们的平均值或大多数值在两组之间存在显著差异。这样,这些属性也会被用作特性。它们是文件大小[40,41],退出代码[40],时间消耗[40],熵[41,94],打包或不打包[41],静态/动态指令的数量[41],以及控制流图[41]中的顶点/边的数量。这些特性可能很有用,但显然信息量不够丰富。

使用上述所有特性的有效性可能会以某种方式降低,或者它们的信息不足。如此多的论文都使用了多种特性。直觉是,任何单一的特征源都可以被混淆以逃避检测,但在不妨碍[22,41]功能的情况下同时混淆所有特征是极其困难的。

图2

3.2 Malware 分类算法

在上一节中介绍的提取的特征被输入恶意软件检测/分类系统。它们可以分为基于签名的方法和基于人工智能的方法。

基于签名的检测是在大多数抗病毒引擎中使用的最复杂的方法。这些签名是由人类恶意软件防御者通过检查收集到的恶意软件样本而创建的。

更具体地说,防病毒引擎通过检查要分析的文件是否包含恶意软件签名来检测或分类恶意软件。恶意软件的签名可以采用多种格式,包括文件名、文本字符串或字节代码[12,13]的正则表达式。签名通常也是对整个文件的哈希关系。应该注意的是,基于签名的技术只能检测来自已知的恶意软件。因此,攻击者可以利用这些技术,通过使用打包、混淆、多态性和变质性等反分析技术来隐藏恶意软件的恶意行为来利用这些技术(第6节提供了关于这些技术的更多细节)。因此,该代码看起来与原始版本非常不同。

一些工作人员[14–16]通过提出自动签名生成技术来解决手工签名制作的问题。签名的内容可以是视窗系统调用组合、控制流程图和函数。

本节讨论了基于人工智能的恶意软件分类方法。这些方法可以分为传统的机器学习模型、深度学习模型、关联挖掘、图挖掘和概念分析,以及签名创建和搜索方法。现有的基于人工智能的方法也可以根据所使用的学习方法进行分类如下:有监督、无监督或半监督。

在监督恶意软件分类模型[21-25、46、50、54、55、57-65、67、69、71、72、74、76、80-82、85、95-99],分类算法在标记的数据集上学习,使算法能够在训练数据上评估其准确性。相比之下,一个无监督的恶意软件分类模型[47、49、53、62、69、75、83、84、100-102]提供了未标记的数据,算法试图通过在没有指导的情况下提取模式来理解这些数据。半监督的恶意软件分类模型[68,75,78,103]结合了已标记和未标记的数据。

传统的机器学习模型。被调查论文使用的最流行的传统机器学习模型是朴素贝叶斯分类器(NBC) [50,58,60,63–65,81]、基于规则的分类器[46,59,64,81,95,96]、决策树(DT) [22,23,50,55,58,60,62,65,72,74,80,82,96]、k -最近邻(K-NN) [22,50,60,62,71,72,96,97]、贝叶斯网络[23,72,85]、神经网络(NN) [24,25]、随机森林(RF)[22,54,58,60,63,67,76,80,98,99]、隐马尔可夫模型(HMM)[9, 104–106]和支持向量机(SVM)[21–23,50,54,57,58,60–63,65,69, 71,72,76,81, 96]。那些使用传统机器学习模型的论文通常会尝试多种机器学习模型。

下面,我们将简要介绍上述的机器学习模型。 一个NBC[107]使用贝叶斯定理来确定属于一个类的样本的条件概率,其输入特征可以用下式形式描述: 其中,𝑥是一个样本,𝐶𝑖是该样本属于𝑖类的概率。它是基于朴素贝叶斯条件独立的假设,即对于它所属于的类,所有的特征都是相互独立的: 其中,𝑥𝑗是𝑥的一个特性。虽然这个假设不成立,但预测结果在许多情况下都是好的,而且结果是可以解释的,这意味着每个特征的贡献有多少是可见的。 。DT分类器[108]使用树状结构来表示分类过程。DT的内部节点测试特征值,边缘对应于变量值的选择。叶节点代表属于其中的最后一类样本。树状结构是基于信息增益率和基尼指数等当前选择条件下的每个特征的信息量来构建的。一个DT也是一个可解释的分类器,一个DT可以被翻译成if-else-then规则集。

KNN[109]是一个基于实例的分类器。该模型用一些距离度量(如欧几里得、余弦)找到给定样本的K个最近邻,并预测它是k个最近邻类的(加权)多数投票。

。 SVM[110]是一种二值分类器,它计算一个超平面,将样本从边界最大的两个类中分离出来。SVM的一个重要特征是,它可以利用核技巧将样本从原始特征空间映射到高维(甚至无限)特征空间,以进行非线性分类。

。 BN[111]是一种概率图形模型,它将变量表示为顶点,将依赖关系表示为有向边。该图用于推断任何变量的概率。

。 基于规则的分类[112]是指允许我们使用IF-THEN规则进行预测的任何分类方法。基于规则的分类的一个例子是开膛手[113],它用于建立一组规则来对样本进行分类,同时最小化错误分类的训练样本数量的误差。

。神经网络[114]是一种受生物启发的编程范式,它允许计算机从观测数据中学习。它由一个功能网络(即参数)组成,它使计算机能够通过分析新数据来学习,并对自身进行微调。

射频分类器[115]从训练集的子集(随机选择)构建一组DTs。然后从树中聚合投票,以决定测试样本的最后一个类别。

深度学习模型允许我们自动抽象和提取健壮和有用的特征,以实现高效和可靠的恶意软件分类。这可以使用多层抽象来学习数据[116]的“好”表示。深度学习模型的一个例子是自动编码器[117],堆叠去噪自动编码器[116],受限玻尔兹曼机(RBM)[118]。

Dahl等人[24]将他们的179,000个二进制特征应用于深度学习模型。第一层是一个随机投影层,它将输入特征映射到一个更低的维空间(4000维)。随机投影层与正常全连接层之间的差值是投影矩阵的权重不更新。它的条目按照-1、0、1的独立相同分布进行抽样。最重要的是,他们应用了1到3个完全连接的层与s型激活函数和一个136路的softmax层作为输出。他们还尝试使用高斯-伯努利限制性玻尔兹曼机(RBM)来对隐藏层进行预训练。不加预训练的1-隐层模型的效果最好,测试错误率为9.53%。他们还发现,

Saxe和Berlin[25]提出了一个由四个全连接层组成的深度前馈神经网络,其中前三层的尺寸为1024,然后是一个密集的层来得到输出。他们将辍学率应用到前三层。前两层的激活函数为参数整正线性单位(PReLU),在不损失性能的情况下提高收敛速度,第三层的激活函数为s型。他们还使用贝叶斯校准来计算一个可执行文件是恶意软件的无偏概率。在一个包含431,926个样本的数据集上,他们获得了95%的检出率和0.1%的假阳性率。

Huang和Stokes[26]提出了一种用于多任务训练的神经网络。其中一个任务是进行恶意软件检测,以预测一个未知的软件是恶意的还是良性的,另一个任务是预测它是否属于98个重要的恶意软件家族之一。Huang和Stokes[26]还使用随机投影层将维数从50000降到4000,然后他们将4000维数中的每一个归一化为零均值和单位方差。然后,他们使用4个隐藏层与退出和RELU激活。在它之上是两个分类任务的两个单层。最终的损失函数是每个单独的损失函数的加权和。实验结果表明,在大多数实验设置下,多任务学习只会提高恶意软件的检测性能,而损害了恶意软件分类的性能。其中,恶意软件检测的最佳结果是0.3577%的测试错误,而恶意软件分类的最佳结果是2.935%的测试错误。

Kolosnjaji等人[27]提出了一个卷积神经网络(CNN)和长短期记忆(LSTM)网络的组合,使用动态提取的系统调用序列来预测一个可执行文件的家族。它们首先使用两个卷积层来捕获连续的API调用之间的相关性,然后应用最大池化来降低维数。输出序列被输入到一个LSTM层,以建模API调用的顺序依赖关系。然后使用平均池化层从LSTM输出中提取重要的特征。他们还使用Dropout来防止过拟合和一个软max层来输出每个类的概率。他们提出的深度学习模型显著优于前馈神经网络、CNN、SVM和隐马尔可夫模型,在精度上达到85.6%,在召回率上达到89.4%。他们的模型的优点是它可以充分利用系统调用的顺序,,这也可能是一个缺点。他们的模型的一个问题是,他们使用平均池而不是最大池来提取由LSTM产生的最重要的特征是不合理的。

。 关联分类器依赖于关联规则,关联规则可以用于区分两个类之间的样本来执行分类。这是关联规则挖掘的一种特殊情况,其中只有一个样本的类可以是结果(a.k.a.一个规则的右边)。Ye等人[16]提出使用层次关联分类器(HAC)基于API调用对可执行文件进行分类。关于创建一个关联分类器,有三种技术:(1)采用fp增长算法找到候选关联规则(例如,API调用的组合)(2)修剪候选规则基于𝜒2,数据覆盖,悲观误差估计,重要性w.r.t其祖先(3)重组规则:第一排名规则的信心是100的信心支持大小前提(CSA),然后由𝜒2测量剩下的规则。 使用这三种技术,他们创建了一个2级关联分类器,以检测由基于签名的杀毒引擎标记的灰色列表中的恶意软件。第一级关联分类器的目的是提高恶意软件的召回率。它只保留100%置信度的商誉规则和置信度大于预定义的阈值;然后使用规则剪枝技术减少生成的规则并创建分类器;最后使用“最佳第一规则”技术从灰列表中寻找样本。将被第一关联分类器标记为恶意软件的样本输入到第二级关联分类器中,以优化精度。它的工作步骤是:选择那些对恶意软件的预测规则有100%信心的样本,标记为“自信”恶意软件;将剩余的少数类文件按照预测规则的𝜒2值按降序排序;从剩下的排名列表中选择第一个k个文件,并将它们标记为“候选”恶意软件;将其余的文件标记为“深灰色”文件。实验结果表明,该HAC是有效的。此外,HAC也是一个可解释的分类器,它可以很容易地表示为简单的if-then规则。

Fredrikson等人[43]提取行为(系统调用及其参数的依赖图),可以用结构性跳跃挖掘[119]来区分恶意软件和善意软件。然后,他们使用这些行为来形成有区别的规范。规范是描述集合的一个或多个子集的一组行为和特征函数。如果软件匹配至少一个特征子集中的所有行为,那么它就匹配规范。如果一个规范与恶意软件匹配,但不匹配良性软件,那么它是完全有区别的。他们使用形式概念分析[120]和模拟退火算法[121]来寻找一个近似的最优规范,该规范的真阳性大于阈值,在所有大于真阳性率的规范中假阳性最低。在测试期间,如果一个程序匹配一个规范,它将被归类为恶意软件。所创建的规范可用于检测未看到的恶意软件,在961个样本的数据集上有86%的真阳性率和0个假阳性。

Cesare和Xiang[15]首先将一个未知的可执行文件中的每个过程的控制流图转换为字符串,就像它们创建签名一样。每个过程都使用其字符串的长度来分配一个权重: 然后,他们使用BK树来检索签名数据库中的字符串,这些字符串表示目标文件过程的字符串小于阈值。对于一个特定的恶意软件,一旦找到一个匹配的图,这个图将被忽略,以便在输入二进制文件中的剩余图中进行后续搜索。如果一个图在一个特定的恶意软件中有多个匹配,并且不确定应该选择哪个过程作为匹配,则采用贪婪解。选择加权最多的图。对于每个具有匹配签名的恶意软件,这些签名的相似度比率: w是累积起来与过程的权重成比例。最终未知的可执行文件之间的相似性和恶意软件的数据库是两个不对称的相似性:一个相似性识别多少输入二进制大约在数据库恶意软件,和相似性显示多少数据库恶意软件大约在输入二进制。如果被检查的程序与数据库中的任何恶意软件的程序相似性等于或超过0.6的阈值,那么它就被认为是一个变体。实验结果表明,该方法具有86%的检出率,0假阳性,优于基于商业签名的抗病毒(AV)的55,基于行为的AV的假阳性率为62-64。因为他们使用对称相似度作为两个不对称相似度的乘积来计算,所以它不能处理不对称情况。例如,如果一个非常大的未知可执行文件包含了数据库中恶意软件样本的整个程序,但该恶意程序只占其全部内容的1%,那么相似性仍然很小,因此不能预测它是恶意软件。 Chen等人[14]使用NiCad[93]检测APK文件是否包含任何作为代表恶意软件家族签名的范例函数的克隆函数。如果找到匹配项,则预计该文件将为该恶意软件家族的一个实例。他们在一个包含来自19个恶意软件家族的1170个APK文件的数据集上达到了96.88%的准确率。

4、成分分析技术的分类法

本节将介绍恶意软件组合分析技术的分类法。我们确定了两个主要的维度,沿着它,被调查的论文可以方便地组织起来。第一个显示了用于成分分析的步骤。第二个维度确定了分析的目标(即策略)。图3显示了所建议的分类法的图形表示。

4.1 步骤

成分分析允许逆向工程师分析恶意软件样本的组成,以了解它们的功能和行为。这反过来又让工程师可以识别恶意软件样本和攻击者的意图。此外,它还允许反向工程师根据严重程度对恶意软件进行排序,并允许他们有效地对其资源进行分类。 基本上,成分分析主要有三个主要步骤:拆卸、表示和分类。

大多数软件程序是通过编译的可执行文件交付给用户的,而不是源代码。反汇编器使逆向工程师分析没有源代码的软件程序成为可能。从技术上讲,解汇编器是一个将机器语言转换或翻译成汇编语言的过程。“反汇编程序”的逆操作是“汇编程序”。有许多工具用于此目的(例如,IDAPr8)。 拆卸方法可以分为以下两类:静态技术和动态技术。第一类方法对二进制组件进行统计分析,解析二进制文件中的操作码。第二类方法监控程序的执行轨迹,以识别指令并恢复二进制版本。

动态方法和静态方法都有优缺点。静态分析考虑了整个程序,而动态分析只能关注已执行的指令。因此,在适应动态分析时,不容易确保整个可执行文件被访问。但是,动态分析保证了输出(即拆卸输出)只包含实际的指令。

一般来说,静态分析技术有两种方法。第一种方法被称为线性扫描[122]。这种方法从二进制的第一个字节开始,然后开始解码一条指令。使用线性扫描解汇编器的主要缺点是在程序中嵌入的数据导致的错误概率高。第二种方法称为递归遍历[123],它允许工程师通过遵循程序[15,41]的控制流(CF)来修复“嵌入式数据”的问题。然而,这种方法的问题是,它可能无法成功地分析代码的各个部分(即函数)。这是由于控制传输指令(例如,跳转)不能静态地确定。这个问题可以通过使用线性扫描算法来分析代码[124]中的不可达区域来解决。

任何恶意软件分类和组合分析技术的成功通常取决于数据表示。虽然特定的领域知识可以帮助工程师为可执行文件设计表示和特征向量,但手工特性工程过程没有考虑特性之间的关系,并定义那些能够区分可执行文件的独特模式。

实际上,表示学习是一套方法和/或技术,使系统能够从原始数据(即汇编代码)中自动提取恶意软件分类所需的表示。这个过程取代了手动特性工程,使恶意软件分类系统能够学习有用的特性,并集成它们来执行分类。

使用特征学习背后的动机是,组合分析方法通常需要对混淆和包装等反分析技术具有稳健的输入。

深度学习方法(例如,堆叠自动编码器[125],堆叠去噪自动编码器[116],深度信念网络[126],……)已知并被认为是提取鲁棒特征的(最佳)方法,用于为大规模异构环境构建鲁棒的恶意软件和相似性分析工具。

在分解可执行样本后,使用装配代码函数提供一个表示学习模块,以获得鲁棒的特征和“良好的”数据表示。然后将函数表示输入任何分类算法,如朴素贝叶斯分类器(NBC)[64]、基于规则的分类器[64]、决策树(DT)[65]、k最近邻(K-NN)[71]、贝叶斯网络[85]、神经网络(NN)[24]、随机森林(RF)[67]、隐马尔可夫模型(HMM)[127]和支持向量机(SVM)[65]。该分类方法使我们能够识别功能之间的关系,并考虑到以下三种分析策略:变量分析、相似性分析和家族分析。

。VA[46,47,59,79,80,83]使工程师能够意识到,恶意软件示例实际上是存储库中已知恶意软件的变体。这一策略让我们了解恶意软件已经发展到一段时间的程度。 SA[48,49,53,56,128]允许工程师识别恶意软件示例的哪些部分(即功能)与存储库中的已知功能相似。这一策略允许我们只关注新的部分,防止不必要的调查。 。FA [22,24,51,55,60–62,70,71,76,97,101,102].允许工程师将未定义的恶意软件与已定义的族关联起来。这种策略是在假设来自同一家族的恶意软件在功能上是相似的。识别它们的困难在于,一些恶意软件的作者使用反分析技术(例如,混淆、包装、多态性和变质性)来掩盖这种相似性。

5、被调查论文的描述

在本节中,我们将描述每一篇被回顾的论文。表1提供了关于每篇论文所使用的算法和特性的信息,并强调了主要的限制。该表还显示了每个工作的可伸缩性,包括它在存储库存在增量更新时工作的能力。最后一列显示了所提出的分类技术是否对反分析技术具有鲁棒性。从表1中可以看出,大多数工作使用一种以上的分类算法来检测恶意软件和分类,以保证更准确的结果。在表2中,我们比较了不同的w.r.t方法的主要目标:恶意软件检测和相似性分析,家族分析和变异分析。

6、挑战与问题

基于第5节中解释的描述,我们在这里讨论被调查文章的挑战和/或问题。

6.1.恶意软件逃避技术

在本节中,我们将介绍恶意软件作者用于逃避检测的常用技术。 混淆这个术语主要指的是用于创建原始代码的变体而不影响其功能的技术。混淆的目的通常是隐藏原始代码的真实逻辑,或逃避基于签名的检测器或功能克隆检测器。几种常用的混淆技术如下:

加壳是一种压缩/加密可执行文件的技术,其中这些加壳的文件将在运行时被解压缩/解密。这意味着静态分析器无法看到真正的代码,因为它不能运行可执行文件。包装不仅用于恶意软件,也用于保护善意软件方案[15,41]。根据安德森等人[41]的统计,在他们的数据集中47.56%的恶意软件被加壳, 19.59%的好软件被加壳。

多态性也是一种基于加密和解密的技术。一个多态性恶意软件包含两部分:多态性引擎和执行恶意功能的真实程序。前者在复制时改变加密算法和密钥,后者的代码本身是固定的,但在运行时被前者以不同的方式加密。这样,整个多态恶意软件程序在每一代[136]上看起来都会有所不同。

一个变形恶意软件在复制时重新编程。因此,在每一代中,整个程序体都使用代码混淆技术对[136]进行修改,而功能保持不变。变质恶意软件被认为比多态恶意软件更难编写。

6.2.对抗性的攻击和防御

由于最近的研究方向是自动化恶意软件分析的过程使用机器学习技术,提出的解决方案应该对对抗性的例子,输入由攻击者设计欺骗机器学习模型,使它生成错误的决策(例如,使恶意软件分析工具无法检测恶意代码)。最近有研究表明,包括深度神经网络在内的机器学习模型很容易受到敌对例子的攻击。攻击者很容易创建“对抗性示例”的[137],通过简单地延续部分输入来欺骗机器学习模型。

对抗性样本是由对输入变量扰动最小的正常样本制作的,以在不破坏原始样本功能的情况下混淆分类器。扰动应该基于损失函数相对于分类器的输入变量的导数,因为导数显示了输入的变化方向,这是最有效的改变输出。因此,需要一个可微的分类器来创建对抗性的样本,而深度学习模型只是可微的和有效的分类器。研究表明,为了欺骗一个模型而产生的对抗性样本可以欺骗一个完全不同的模型[138,139]。因此,随着深度学习模型被提出为检测领域的恶意软件,恶意软件作者有更好的机会来制作敌对的例子,以逃避任何机器学习模型的检测。

对制作一个被分类器𝑓错误分类的对抗性𝑥∗的问题的正式描述是 其中‖⋅‖可以是任意范数,x是要被摄动的样本。 Goodfellow等人[140]提出了一种快速梯度符号方法,通过将样本𝑆的梯度符号与一定的系数相乘来控制扰动的尺度。[141]等人提出了一种正向导数方法,该方法利用其雅可比矩阵评估输出对每个输入分量的敏感性,然后基于雅可比矩阵构造对抗性显著性映射,表明哪些输入特征将包含在扰动中。

与干扰对抗性图像样本相比,干扰恶意软件样本有一些限制,因为恶意软件的大多数功能是离散的,而不是真实值的,功能应该是完整的。因此,需要调整以前的实值特征干扰方法,一些二进制特征不能从“1”更改为“0”,因为“1”意味着该特征存在,并且这个方向的变化可能会破坏该功能。

Grosse等人[28]提出了一种制造对抗性安卓恶意软件的技术。受[28,141]等人的启发,[28,141]使用雅可比矩阵来检查哪些特征最有可能导致将恶意程序预测为好软件。它们只允许扭曲到不超过20个功能。所有的特性都是二进制特性。为了维护对抗性示例的功能,他们添加了两个约束条件:(1)只调整与AndroidManifest.xml文件相关的清单特性。这个文件在任何安卓应用程序中都可用;(2),它应该通过添加一行代码来完成。使用他们的方法,一个最先进的前馈神经网络,在原始数据集上达到98%的准确率,被63%的对抗性恶意软件样本误导。

Grosse等人,[28]尝试了两种方法来抵御对抗性攻击。第一种是应用蒸馏[141,142]来对抗对抗性样品,在某些情况下成功地降低了38.5%的误分类率。第二种是对抗性训练[140],它包括在原始数据集上训练模型,然后在几个时期的对抗性样本上只对其再次训练模型。通过对抗性训练,误分类率从73%降低到67%。

Wang等人。[29]通过随机取消输入特征来抵御对抗性攻击。它们的无效类似于退出,因为在这两种机制中,一些输入特征都被随机设置为0。与退出的主要区别在于,模型在测试过程中没有删除任何输入特征,但在无效过程中,一些特征在测试过程中仍然被随机删除。具体来说,对于任何数据集中的每个样本,在高斯分布下采样一个无效率,并对要下降的维数(特征)进行均匀采样。从直觉上看,无效化使得它们的体系结构具有不确定性,因此攻击者无法检查特征的重要性,因此它们很难检测和利用分类器的“盲点”。在他们的实验中,这些特征是被调用的windows系统DLL文件,他们使用基于雅可比矩阵的显著性映射为每个样本选取多达10个特征来进行干扰。实验结果表明,该方法能提高对敌对样品的抗药性,最佳抗药性为64.86%,无效率为10%。然而,他们的方法的一个理论问题是当对抗样本是跨模型[138,139]。因此,即使无效会损害对手使用该模型来制造对抗样本的能力,但对手可以使用其他模型(即相同的神经网络)来制造对抗样本,这些样本也可以逃避装备无效的样本。因此,没有理论证据或证据表明无效是否可以提高对其他深度学习模型的对抗样本的抵抗力。

6.3.效率和可伸缩性

一个实用的恶意软件搜索引擎可以帮助安全工程师在进行分析时实时获取恶意软件的搜索结果。即时反馈为工程师提供正在调查[92]的给定恶意软件的结构。应该注意的是,可伸缩性是一个重要的因素,因为数据库中的恶意软件的数量需要扩大到数百万个。这也是生产一个可靠的恶意软件搜索引擎的一个关键问题。对于实际应用程序,恶意软件搜索引擎的效率和可伸缩性应该使用一个大型存储库进行评估,以衡量其准确性和延迟。

7、研究方向

上述贡献有效地解决了文献中一些有趣的研究空白。但仍有一些问题有待进一步研究和研究。在我们的文献综述的基础上,我们可以进一步探索以下的研究途径:

7.1.稳健的解决方案

虽然文献综述中讨论的解决方案通过提取健壮和有用的特征,为可靠的恶意软件检测系统(MDS)铺平了道路,但该解决方案仍然需要减少人际互动。因此,需要一个自动化系统来获取数据,并自动提取稳健的特征。为此目的,深度学习技术可以成为替代现有特征提取方法的最佳候选方法。该解决方案可以使用不同的深度学习架构(例如,生成对抗网络、堆叠去噪自动编码器、受限玻尔兹曼机和变分自动编码器)进行设计和实现,以实现自动抽象和提取鲁棒特征,以显著增强在异构、变化和噪声环境下的检测。 最近,Ding等人[143]提出了一个健壮且准确的组装克隆搜索平台Asm2Vec。该平台使工程师能够通过区分任何装配函数,自动学习该函数的向量表示。此外,该平台还允许工程师共同学习基于装配代码[143]的装配功能的语义关系。这反过来使我们能够构建有用和健壮的特性,以进行高效和可靠的装配克隆搜索。提出的学习表示受段落向量分布式记忆模型(PVDM)模型的启发,该模型用于学习文本段落[144]的向量化表示。PV-DM模型基本上是基于Word2Vec[145],它用于学习单词的向量表示。这是通过使具有相似意义的单词能够映射到向量空间中的相似位置来实现的。例如,“好”和“伟大”彼此接近,而“伟大”和“日本”则更遥远。由于单词的分布式向量表示(DVR)的概念,学习单词的向量表示成为可能,这是一种众所周知的学习单词向量的方法。特别是,DVS利用机器学习模型(通常是神经网络)的力量,通过训练机器学习模型来预测上下文中其他单词的一个单词(即目标单词)。在预测目标词的过程中,我们学习了目标词的向量表示。

PV-DM模型的灵感来自于Word2Vec,它使用了学习单词向量的想法。在PV-DM模型中,单词向量和段落向量都被要求从段落[144]中采样,对目标单词的预测作出贡献。这个过程(即,预测目标词)允许我们学习段落的向量表示。Ding等人[143]利用PV-DM模型的能力来学习基于装配代码的装配函数的向量表示。这是通过将汇编函数(即存储库函数)和函数的输入标记(即指令)映射到唯一向量来实现的。然后训练机器学习模型来预测给定函数及其上下文中的目标令牌。这个过程使我们能够学习该函数的向量表示。

事实上,该解决方案不仅能够容纳已知恶意软件的未知变体,还能够容纳未知恶意软件的未知变体。这些解决方案也应该能够对抗对抗性攻击。虽然一些工作已经解决了这个问题,但这些解决方案大多基于对抗性训练[146],而且还不够成熟,不能结合提取鲁棒和有用的特征来保护系统免受对抗性例子的影响。因此,该解决方案不仅应该对复杂和有噪声的数据具有鲁棒性,而且还应对对抗性的例子具有鲁棒性。

7.2.协作解决方案

计算机和通信系统正变得越来越复杂,越来越容易受到入侵。网络攻击也变得越来越复杂,也更难分析和识别。事实上,由于对恶意软件进化的认识有限,单个MDS识别所有入侵变得越来越困难。最近在入侵检测和恶意软件分析方面的工作[147-149]的实验表明,与传统的单一MDS相比,当MDS相互协作时,检测精度可以显著提高。在协作环境中,每个MDS可以咨询其他可疑恶意软件,以提高决策准确性。图4为合作MDS的一个示例。

最近,Man和Huh[147]和Singh等人[148]设计了一个协作的MDS,它可以从不同的分布式检测器交换恶意软件检测警报。此外,知识还可以在节点之间进行交换。此外,Dermott等人[150]提出了一个在云计算环境中的协作MDS。所提出的框架使用了登普斯特-谢弗证据[151]理论,以结合来自不同的恶意软件检测器的决策。接收到的决定将被聚合,以对一个可疑的恶意软件作出最终决定。这种技术有一个缺点:它的基于集中化的架构,即使用一个可靠的第三方来组合反馈和协调MDS。

事实上,合作性MDS的设计应该考虑以下三个特性(挑战):可信度、公平性和可持续性。我们所说的可信度,是指MDS应该能够确保它将与受信任的各方(即MDS)进行咨询、合作和分享知识。公平地说,我们的意思是,MDS应该能够保证通过尽量减少与自私的MDS合作的机会来实现互利互利。这有助于给mds提供参与社区的动机。最后,通过可持续性,我们的意思是使MDS能够主动地对可疑攻击做出决定,无论是否从咨询的MDS那里收到了完整的反馈。因此,所提出的解决方案将适用于实时环境,其中mds应该迅速采取关于可疑恶意软件的决定。

7.3.可持续解决方案

大多数恶意软件分析工具的威力在很大程度上是基于他们对恶意软件和危险攻击的大量知识。事实上,MDS使用的SVM等有监督的机器学习算法严重依赖于标记数据来学习如何有效地分类恶意行为和正常行为[152]。然而,获取关于恶意行为的数据是具有挑战性和危险的,特别是当我们被要求对生产系统发起真正的攻击,并将用户、应用程序和系统置于危险之中时。为了解决这个问题,我们可能需要有一种有效的方法来合成新的恶意软件和增加我们的训练数据,以改进基于机器学习的mds。

生成模型如生成对抗网络(GANs)[153]可以用于生成合成恶意软件,并通过增强恶意软件训练集,提高基于机器学习的MDS的检测精度。我们鼓励研究人员调查GANs的使用,它在产生高质量的新合成数据方面显示出前所未有的能力,以产生恶意软件变体。特别是,他们需要设计新的算法,以有效地训练存储库中现有的恶意软件,以便学习如何生成它们的变体。为此,研究人员需要收集大量由不同属性(漏洞、目标用户、目标主机等)组成的恶意软件样本。从公共领域来的。由于GANs只定义为实值的、连续的数据,而恶意软件的设计是基于离散的令牌(字节)序列,因此,在原始的GANs理论上应该应用特殊的扩展。例如,我们可能需要将GANs与递归神经网络(RNNs)集成来解决排序数据[154]的问题。此外,为了解决离散数据的问题,我们可能需要在每个分类变量中并行放置一个密集的层,然后激活Gumbel-Softmax和一个连接来得到最终的输出[155]。

8、结论

在本文中,我们提供了一个全面的调查的出版物,有助于恶意软件分类和成分分析。在我们的工作中,有四个主要的贡献。首先,我们提出了一个基于三个维度的评审论文的组织方法:分析的目的(恶意软件分类或成分分析),从样本中获得的特征的类型,以及用于操纵这些特征的算法。其次,我们对现有的恶意软件分类和组合分析技术进行了比较分析,同时根据建议的分类法构建它们。第三,我们确定了与恶意软件分类和成分分析相关的主要问题和挑战。最后,我们确定了所讨论的领域中的一些突发主题,如协作恶意软件分析系统,并提供了关于如何改进解决方案以应对新挑战的指导方针。

上述贡献有效地解决了文献中一些有趣的研究空白。但仍有一些问题有待进一步研究和研究。以下研究途径可以进一步探索,以实现更好的准确性和有效的解决方案相比,最先进的。第一个途径是设计合作的MDS来解决关于恶意软件的知识有限和不完整的问题。通过协作,MDS可以咨询其他可疑恶意软件,提高决策的准确性。为此,我们确定了在合作的MDS中应该解决的三个挑战:可信度、公平性和可持续性。其次,通过从样本中自动提取鲁棒特征,设计鲁棒MDS。该解决方案不仅能够适应已知恶意软件的未知变体,还能够适应未知恶意软件的未知变体。此外,解决方案应该是对抗性攻击。最后,通过使MDS能够综合生成新的恶意代码和良性代码,以提高基于机器学习的恶意软件分类方法的准确性。

标签: 堆叠式卡连接器50固态继电器mds75eb

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台