第一章 绪论
1.1 研究背景及意义
随着信息技术的高速发展,互联网技术已经融入了人们的生活、学习、工作当中。人们每时每刻都在使用互联网访问各种资源,但是当人们在享受互联网技术和通信技术带来的便利时,恶意代码在互联网上的广泛传播也严重威胁着人们的计算机安全。虽然,恶意代码分析技术在与恶意代码攻击和入侵技术的对抗中迅速发展,但是恶意代码仍然威胁着我国的网络空间安全。
一方面,近年来恶意代码呈指数级增长。根据瑞星公司 2019 年中国网络安全报告统计,2018 年共截获病毒样本总量高达 7786 万个,病毒感染次数高达11.25 亿次,病毒总体数量比去年同期上涨 55.63%。赛门铁克通过对全球最大的民用安全威胁情报网络的数据进行分析,发布了第 24 期互联网安全威胁报告。该报告指出:2018 年赛门铁克全球情报网络共拦截 518.3 亿次网络攻击,超过370 万次表单劫持端点攻击,且企业勒索软件感染率跳涨 12%。由此可见,恶意代码呈现出爆炸性增长的趋势,对互联网的安全构成了巨大威胁。
另一方面,为了规避恶意代码的检测,攻击者利用多态和变形技术以及恶意代码自动生成工具生成了大量新的恶意代码变体,使得恶意程序能够逃避恶意代码的检测。例如:2017 年 5 月 12 日,Wanna Cry 及其变种代码在全球范围内爆发,全球的大量的组织机构和中国部分高校均遭受攻击,使得用户的重要资料被高度加密而难以破解,锁定用户只有向攻击者支付大约 2069 元的人民币才能解锁,这对用户的个人数据和学习资料造成了重大损失;2018 年 2 月,Relec、Dead Ransomware、Saturn 以及 Banana Crypt 等多个勒索软件的变体纷纷出现,给用户带来巨大损失。由上述安全事件可知,大量的恶意代码及其变体的攻击,给国家、社会和人民带来了极大损害,也给恶意代码分析技术带来了极大的挑战。
......................
1.2 国内外研究现状
国内外研究者针对恶意软件检测方面做了许多工作,提出了一系列恶意软件检测的方法和工具。早期,恶意软件检测是通过静态方法实现的。
1.2.1 静态检测方法
在恶意代码静态分析方面,研究人员针对不同的数据形式和问题做了以下工作:文献[1]从反汇编文件中提取表示恶意软件运行流程的操作码(Operation code, Opcode)序列,并使用N-gram算法将它们组织成向量。此外,还比较了不同Opcode长度的分类精度。结果表明,Opcode 是恶意软件的有效描述方式,在较短的Opcode 的 N-gram 表达形式下,其分类效果较好。
文献[4]提出了一种基于函数聚类的线性时间函数调用图(Function Call Graph, FCG)矢量表示,除了提高分类精度外,还显著地提高了分类性能。此外,还展示了这种表示如何使用图形特征和其他非图形特征。
文献[5]提出了一种基于相似性的分类方法,通过提取 API 调用序列来训练隐马尔可夫模型(Hidden Markov Model, HMM)以评估训练数据和测试数据的应用程序编程接口(Application Programming Interface, API)调用序列之间的相似性,计算相关性分数以分类恶意软件。该方法可以有效地利用 API 序列信息,但是需要大量的计算开销来训练 HMM 模型。
文献[6]使用 HMM 学习模型比较 API 调用序列和操作码序列对恶意代码行为的反映情况。文献[7]引入了重要的权限(SIGPID)的概念,设计和开发了一款是一种基于权限使用的恶意软件检测系统。通过分析 22 个重要权限,对不同恶意软件家族和良性应用程序进行分类。然而,在应用程序中,权限是粗略授予的,无法捕获更详细的应用程序行为。为了捕获细粒度信息,美国德克萨斯大学的冯宇等人(Apposcopy[8])提出了一种高级语言来捕获描述恶意软件家族语义特征的签名。Apposcopy 的目的主要在于识别恶意软件家族,而不是检测恶意软件。文献[9]提出了一种轻量级恶意软件检测技术,通过分析 manifest.xml 文件,提取manifest 文件中描述的特定信息,将提取的信息与关键字列表进行比较,然后计算恶性分数,以将样本判断为恶意软件,准确度为 90%。
...............................
第二章 相关理论知识及技术
2.1 恶意代码
2.1.1 恶意代码的定义
迄今为止,恶意代码仍未有一个确定的定义。随着时间的流逝,恶意代码定义中所包含的内容也越来越广泛。恶意代码最初由著名的计算机之父约翰·冯·诺依曼与 1949 年提出,出自论文《自我繁殖的自动机理论》。在该论文中,冯?诺依曼用数学的方法预言了可自我繁殖和实施破坏性功能程序出现的可能性[29]。十年之后,磁芯大战(core war)在贝尔实验室中诞生,使他的设想成为事实。2003 年,E. Skoudis 等人[30]将恶意软件定义为非用户期望运行的、怀有恶意目的或完成恶意功能的软件的统称。2006 年,Boyer 等人[31]将恶意软件定义为满足恶意攻击者有害意图的软件程序。2017 年,美国西弗吉尼亚大学叶艳芳博士[32]将恶意软件定义为广泛用于表示所有不同类型的恶意软件程序的通用术语,包括病毒、蠕虫、特洛伊木马、间谍软件、rootkit,勒索软件等。近年来又出现了如恐吓软件(scareware)、跟踪软件等恶意软件,特别地,如今越来越多的建议是将如影随形的广告软件也列入恶意软件范畴。
纵观恶意软件的发展,恶意攻击给社会带来的损失越来越大。例如,1981 年,作为恶意软件形式之一的病毒(ELK Cloner)在计算机游戏中首次被发现。1986年第一个 PC 病毒 Brain Virus 感染了 Microsoft 的 DOS 操作系统。1995 年首次发现宏病毒。1998 年,CIH 病毒造成数千万台计算机硬件受到破坏。2007 年,“熊猫烧香”病毒在网络中肆虐,给上百万个人用户、网吧及企业局域网用户带来无法估量的损失。2015 年,乌克兰电网系统遭黑客攻击,数百户家庭供电被迫中断,这是有史以来首次导致停电的网络攻击。2017 年,wanna Cry 利用“永恒之蓝”漏洞冲击了整个互联网。由此可见,恶意软件的不断发展,不仅破坏性、种类和感染性都得到了增强,而且恶意软件正在向工控系统、物联网、金融、移动终端等领域扩散。因此,恶意软件经常会对主机的完整性,互联网的可用性以及用户的隐私造成安全威胁。
......................................
2.2 常用的恶意代码特征
2.2.1 特征的定义
特征的定义视实际情况而定。至今还未有明确的定义。在恶意代码中,特征是表示恶意代码的网络活动、系统调用、特殊的字符串等信息的一段代码或指令。它是许多恶意代码分析算法的起点。因此一个恶意代码分析算法的有效性往往取决于使用者选择和采用的特征的优劣。因此,特征的重要特性之一就是可重复性,即同一类别的恶意代码中的不同样本具有相同的代码片段。
特征提取是恶意代码分类的初始步骤,它是通过检查恶意代码中的源代码或者恶意代码的执行过程来确定该代码片段能否作为该类恶意代码的特征。如果特征提取需要大量时间,则可以采用高层次算法来控制特征提取的层次结构,并仅使用恶意代码的部分片段来查找和提取特征。由于特征提取作为许多恶意代码检测和分类算法的初始步骤,因此产生了许多特征提取方法,导致恶意代码的特征多种多样,计算复杂度和可重复性也各不相同。
根据恶意代码分析技术,可将恶意代码的特征分为静态特征和动态特征。静态特征是通过分析恶意代码的源代码获得,而动态特征则是通过分析恶意代码的执行过程获得。
恶意代码分析中,常用的静态特征有图像,操作码,应用程序编程接口(API)调用,函数调用等。
............................
第三章 基于 LSTM 的恶意软件分类方法..................................... 19
3.2 基于 LSTM 的恶意软件分类方法 ................................... 19
第四章 基于纹理特征的恶意软件家族分类方法 ............................... 30
4.1 基于 CNN 的恶意软件分类概述 .................................... 30
4.2 基于 MobileNet v2 的恶意软件家族分类模型 ......................... 30
第五章 基于特征融合的恶意软件家族分类方法 ............................... 42
5.1 基于特征融合的软件家族分类方法 ................................. 42
5.1.1 数据处理 .......................... 43
5.1.2 深层特征提取 ............................... 44
第五章 基于特征融合的恶意软件家族分类方法
5.1 基于特征融合的软件家族分类方法
基于特征融合的恶意软件家族分类方法主要包括数据预处理、模型训练和分类三个部分。数据预处理过程包括恶意软件的反汇编、特征提取、特征融合三个过程。反汇编是通过 IDA 反编译工具将恶意软件反编译为汇编源程序;特征提取过程中通过恶意软件的汇编源程序提取恶意软件的操作码序列和灰度图的纹理;特征融合过程则是将两种特征融合在一起,形成一个特征向量,用于深度学习模型的训练。模型训练则是构建 LSTM 网络,对网络结构进行优化,使网络能够自适应恶意软件的特征数据,通过已经处理好的数据对模型进行训练。分类则是利用分类器将恶意软件划分到所属的家族中。基于特征融合的恶意软件家族分类方法的流程图如图 5-1 所示。
.........................
第六章 总结和展望
6.1 工作总结
如今,恶意软件呈现快速增长的趋势,为了能够快速准确地将恶意软件划分所属的家族中,提高恶意软件的家族分类准确率,并解决当前恶意软件分类中存在的不足,本文针对基于深度学习的恶意软件家族分类问题进行了相关研究,主要工作如下:
(1)提出了一种基于操作码 N-gram 和 LSTM 的恶意软件家族分类方法。该模型首先将恶意软件文件反编译为可读的汇编源程序,然后提取操作码序列,通过 N-gram 算法并按照操作码在文件中出现的先后顺序来表示操作码序列,选取操作码 N-gram 在文件中出现的频次作为恶意软件文件的表示方法,将其表示为特征向量;将处理好的操作码 N-gram 向量输入 LSTM 模型,训练 LSTM 模型,自动提取操作码 N-gram 的频次特征并对恶意软件进行分类。实验中,通过将操作码 N-gram 向量输入其它几种不同的模型中对恶意样本进行分类,从而通过实验结果验证了该模型能够自动提取操作码的特征,并能够对恶意软件进行有效的分类。
(2)提出了一种利用轻量级 CNN 和纹理特征进行恶意软件家族分类的模型。该模型选择恶意软件灰度图的纹理特征作为分析对象,通过纹理特征来表示恶意软件之间的相似性;为了减少模型运行过程中的计算量和参数量,构建轻量级的卷积神经网络模型来自动从灰度图中提取深层次纹理特征。实验中,通过不断地优化调整模型,测试不同的超参数的变化对模型的影响,从而使模型能够更好地适应不同的恶意软件。将测试集数据输入模型中进行测试,结果证明了基于MobileNet v2 和纹理特征的恶意软件分类模型的有效性。
(3)提出了一种融合操作码和纹理特征的恶意软件家族家族分类方法。本文将恶意软件的操作码和纹理特征提取、描述并表达出来,融合两种特征;将融合特征作为输入,利用深度学习模型 LSTM 来自动提取恶意软件的深层特征并将恶意软件划分到所属的家族中,以提高恶意软件家族分类的准确率,从而使得基于深度学习的恶意软件家族分类方法能够在实际中应用,以解决恶意软件的快速增长而传统恶意软件分类方法难以对其分类的问题。
参考文献(略)