来源:Classification of Metamorphic Malware with Deep Learning (LSTM)
题目:Classification of Methamorphic Malware with Deep Learning (LSTM)
会议: 27th IEEE Signal Processing and Applications Conference
发布时间参考:2019年3月
作者:
Ahmet Faruk ARTICLE(Information Security Engineering,Istanbul ehirSehir University)、Ferhat Özgür ÇATAK、Ensar GÜL
摘要:
如今,使用传统的基于签名的检测方法的防病毒应用程序无法检测到变形的恶意软件。 因此,有关恶意软件检测和分类的最新研究解决了恶意软件的行为。 在这项研究中,通过使用8种不同类型的真实恶意软件的API调用开发了基于LSTM的分类方法。 使用此方法,可以对操作系统上恶意软件类型的行为进行建模。
关键字—变形恶意软件,Windows API,深度学习,LSTM
I 引言
近年来,导致恶意软件增加或广泛传播的最大因素是,它是众多受众研究的主题。在这个方向上,无论是个人研究还是有能力的组织研究都可以确保不断开发有害软件。据了解,我们朝这个方向做出了巨大的努力,特别是考虑到2018年前4个月出现了4000万新恶意软件(来源)。因此,还需要付出很大的努力来防止恶意软件的攻击。
为了有效地防御恶意软件,首先必须正确识别恶意软件并分析其行为。在这个方向上,仅检测有害软件是不够的。还必须对这些软件进行成功分类。成功地对这些软件进行分类也是必要的,恶意软件的分类是一个重要的问题。恶意软件所属的类表示有害行为。根据恶意软件的类别,针对这些行为采取的措施也有所不同。
当检查恶意软件的开发时,可以看出有害软件的能力和活动已达到非常严重的水平。 在这个方向上,作为恶意软件家族的最高级成员,我们遇到了变态恶意软件。 这些软件可以使用不同的方法,并在不同的时间对代码进行更改,从而对安全组件隐藏自己。 这样,代码签名就在不断变化[1]。 因此,防病毒应用程序无法使用传统的基于签名的检测方法来检测它们。 由于这种情况,无法按类型对变态恶意软件进行分类。
尽管变态的恶意软件可以在不同的环境中以不同的顺序显示自己,但它必须在所有环境中显示相同的行为。 因为创建它是为了执行某些有害的操作。 根据这些信息,它们处理了恶意软件的几乎所有行为特征,而不是用于对变形恶意软件进行分类的恶意软件的结构特征。 通过这些方法,可以大量使用它们在系统上进行的诸如API调用之类的数据,这些数据代表恶意软件的行为。
任何软件执行的所有系统API调用均会显示该软件的整体行为。 通过准确地分析此类行为,可以获得具有该行为的软件是恶意软件以及它属于哪种有害行为的信息。
这些调用的结构顺序很重要,因为恶意软件进行的每个API调用都是一种数据质量。某些API调用以某种顺序表示“行为”。长-短期记忆(LSTM)已广泛用于处理此类顺序数据。这项研究的最重要贡献如下:
• 已针对恶意软件创建了新的数据集。在该区域的该区域中没有数据集。
• 已通过在沙盒环境中进行操作来隔离和分析了变形软件,并记录了API序列。
• 使用用于文本分类的LSTM算法将其建模为文本分类问题,并创建了恶意软件类型检测模型。
• 使用了常见的恶意软件类型:广告软件,后门程序,下载器,Dropper,间谍软件,特洛伊木马,病毒和蠕虫。
II 文献综述
由于传统的基于特征码的检测方法不足以检测多态和变质恶意软件,因此许多基于这些软件行为的研究已经开始。 Leder等人研究了变态恶意软件所经历的结构变化。 他们开发了一种使用VSA(值集分析)方法的检测方法,可从恶意软件中删除非易失性代码片段[2]。
在研究中,Mehra和他的朋友们通过处理恶意软件的控制流和API调用图形数据开发了检测和分类方法。 根据直方图和卡方差测量公式根据恶意软件家族进行分类[3]。
在Ekhtoom等人的工作中,使用了基于压缩的分类技术(基于压缩的文本分类)来识别变态恶意软件家族。由13个不同的实际恶意软件家族组成,已使用其软件的二进制文件创建了一个数据集。为了进行分类,使用了属于不同家族的恶意软件文件和数据集中的相似性[4]。
Prapulla和他的朋友的工作基于这样一个事实,即基本算法结构保留在结构不同的变质恶意软件环境中。在这个方向上,已经检查了软件代码,并删除了表示行为的操作码功能。这些数据是使用机器学习方法开发的[5]。
Pirscoveanu和他的朋友们还开发了一种使用随机森林算法(一种机器学习方法)的分类方法。恶意软件的Windows API调用是基本分类数据,因此,该方法的输入是通过使用DNS请求,访问的文件,互斥对象,注册表项数据[6]提取恶意软件的功能而创建的。[6]
Athiwaratkun和Stokes还处理了有害软件的API调用。 他们使用深度学习方法中的LSTM,GRU和CNN创建了不同的检测方法。 在这项研究中,表明基于LSTM的方法可以分析顺序API调用,并且比其他方法更成功[7]。
方和他的朋友们已经开发出一种基于LSTM的方法来检测有害的Javascript代码。 在这种方法中,通过删除有害的Java代码,字节码和字向量属性来创建数据集。 此外,本研究中使用随机森林和SVM算法开发了不同的方法。 已经表明,基于LSTM的检测方法比其他方法更为成功[8]。
艾哈迈德和他的朋友们的工作在这一领域提供了不同的方法。 该方法的基本逻辑; 用于检测恶意软件的实际数据不是恶意软件的质量,而是它们对系统的影响。 因此,恶意软件提供的检测方法未解决恶意软件的结构和行为特征。 在通常情况下,希望在系统上检测到异常行为。 通过这种方式,据称可以检测到高级恶意软件,例如多态和变态的零日(零日)恶意软件[9]。
III 使用的技术
作为这项研究的一部分;使用了Windows API调用,Cuckoo和Sandbox应用程序,VirusTotal服务和LSTM深度学习方法。
A. Windows API调用: Windows API是用于在Windows操作系统上开发应用程序的接口。 Sistemi操作系统提供许多服务作为API。为了使用操作系统提供的功能,应用程序称为API调用,以使用API函数。
B. Cuckoo沙盒: Cuckoo沙箱应用程序是一个沙箱应用程序,它可以像在真实环境中一样运行任何软件。使用此应用程序,可以分析恶意软件的行为和结构特征。恶意软件的API调用提供了一些信息,例如它生成的网络流量,运行它的系统的内存转储。
C.Virus Total服务: Virus Total Service是一项可以在线或通过界面(Virus Total Public API)分析文件或URL的服务。它使用67个防病毒应用程序引擎进行分析操作。每个防病毒应用程序引擎都会生成分析报告。
D.LSTM: LSTM是基于RNN的深度学习方法。 它具有一种学习架构,可以随机记住长期的瘾。 这是一种非常成功的方法,用于分析按时间顺序或具有特定关系的事件排列的数据[10]。 x = {x1; ···; xT}是以RNN的形式进行的连续数据,h = {h1; ···; hT}秘密向量阶以y = {y1; ···; yT} 找到以进行的输出向量序列。 通过T迭代可以找到该计算。
矩阵Wxh,Whh和Why是在训练时计算的lantılink权重。 F是S型激活函数。 Sigmoid被定义为水。(翻译有些问题)
IV 方法
在这项研究中,首先创建了一个数据集。 后来,开发了一个使用此数据创建分类模型的应用程序。 创建数据集数据集包含总共7107种不同类型的已搜索软件的行为和类型信息。 常规步骤如图1所示。
A.创建数据集
创建数据集时,使用Cuckoo Sandbox应用程序运行了20000多个恶意软件,并获得了由该恶意软件在Windows操作系统上进行的API调用序列。已确定总共进行了342种API调用。这些调用序列被索引并添加到数据集中。
借助Virus Total Public API,对每个恶意软件文件进行了分析。每个分析报告中大约有67种不同的防病毒应用程序引擎。通过分别处理此信息,已确定恶意软件所属的信息类型。将每种恶意软件的产品信息与关联的API调用结合在一起,并创建了数据集。数据集包含379个广告软件,1001个后门程序,1001个下载程序,891个Dropper,832个间谍软件,1001个木马,1001个病毒,1001个蠕虫。
B.建立模型
在本研究范围内开发的应用程序使我们可以根据有害软件类型进行分类。 可以为我们要使用此应用程序进行分类的8个不同物种创建单独的分类模型。 该应用程序以某种方式工作。
•它处理数据集中恶意软件类型的数据。它将标签“ 1”分配给要创建模型的恶意软件类型,将“ 0”分配给其他类型信息。这样,模型输出将显示为0(不是类型的行为)或1(类型的行为)。
•创建基于LSTM的分类模型。 我们创建的数据集中有60%是训练/教育程度的,而10%是保留用于测试的。
•将新软件的API调用分配给每个分类模型,并通过对模型结果进行投票来确定类标签。
这些步骤针对每种类型的恶意软件分别运行,并创建所需的模型。
该应用程序使用Python编程语言和机器学习库Keras,Tensorow和Scikit-learn库。 Keras被用来建立LSTM网络。 two已经创建了两层LSTM结构。分类模型使用tanh,Sigmoid,softsign和softmax激活函数进行单独训练。 ˘
模型训练过程如图2所示。 LSTM网络模型按顺序接收Windows操作系统中每种恶意软件发出的API调用,并在最后一步中计算预测类标记y ^。由于为每个类标签创建了模型,因此我们的模型是二进制分类器。Log loss用作丢失函数。对数损耗损耗函数如公式3所示。
Ⅴ实验结果
在我们的研究中,使用tanh,Sigmoid,softsign和softmax函数为每种类型的恶意软件创建了模型。表I显示了我们从这些模型获得的最佳结果的模型分析和测试结果。这些模型的训练和测试历史记录在“图3”中。
当检查表I时,可以看出,通过使用h tanh函数训练恶意软件,后门程序,Downloader和˘Dropper恶意软件类型以及使用间谍软件,特洛伊木马,病毒和蠕虫类型的softsign函数可获得最佳模型。 each每个物种获得的准确度值在0.845至0.975之间。
VI 结论与未来工作
在本研究的范围内,通过获取由操作系统上8种不同类型的实际恶意软件发出的API调用来创建数据集。使用此数据集,为8种不同类型的恶意软件创建了基于LSTM的分类模型。每个模型都将操作系统上的有害行为类型分类。在研究范围内获得的测试结果表明,这些模型可以用于分类。与其他家族成员一样,变形恶意软件在操作系统上也表现出相似的行为。因此,我们所做的工作可用于对变态恶意软件进行分类。在以后的研究中,将研究斯坦福大学提出的BiLSTM模型及其Word2Vec模型。