论文部分内容阅读
随着信息时代的来临,互联网已经成为了人们工作和生活中不可缺少的一部分。但是,在生活因为互联网而变得便捷的同时,也使得人们更加容易遭受到来自于恶意代码的攻击。特别是在恶意代码的编写、传播以及利用发展成为一个黑色产业链之后,恶意代码的产量越来越大,生产速度也越来越快。恶意代码对网络安全造成的影响也随之变得越来越大,甚至严重地威胁到了国家的安全。正是鉴于恶意代码的带来的严重安全威胁,对恶意代码的分析已经成为了所有安全机构和厂商关注的重点。特别是基于二进制程序行为的恶意代码分析技术已经被广泛的应用在日常分析工作当中,以帮助安全分析人员迅速地对恶意代码进行分析。从而,可以达到对恶意代码传播扩散的遏制,保护合法用户的利益不受到来自于恶意代码的侵害。随着近年来恶意代码分析技术研究的不断进步,已经取得了一些重要的研究成果,对恶意代码的传播及其造成的危害起到了有效的遏制作用。但是,依然还有许多问题依然困扰着研究人员。对于恶意代码二进制程序行为分析主要存在着以下几个问题:首先,在现有的恶意代码行为分析当中,多数分析方法都是底层都是在汇编代码层面对其行为进行描述。由于汇编代码复杂且难于理解,使得用其描述的行为很难具有可读性,缺乏针对的行为形式化的抽象描述。尽管,有些研究者借助编译器中的中间语言对程序行为进行了抽象,但是由于这种中间语言专注于对程序正向编译执行,而缺乏对反编译技术的有效理解,导致很多反编译中存在问题无法被正确描述,从而导致恶意代码行为的抽象描述存在欠缺,不能正确地展示出恶意代码运行的整个流程。也正是由于缺少对恶意代码分析的形式化中间描述语言,使得很多分析方法都只能够停留在技术说明的层面,不能够向人们完整地展示其分析方法的全部过程。其次,现有的恶意代码行为分析技术,无论是动态行为分析,还是静态行为分析往往都关注于恶意代码的调用函数层面的监视分析,没有深入到内存和寄存器的变化层面。这样,由于没有对操作系统底层进行深入研究,检测不到操作系统底层的工作状态,无法对内核级恶意代码的行为进行有效监控。尽管,有一些恶意代码分析工具能够对操作内核系统调用进行监控,但是没有关注内存和寄存器中数据的变化情况,仅仅完成了内核函数级的监控分析,因此无法有效的使用了内核技术的恶意代码进行识别判断,从而面对这样的恶意代码也无法进行分析检测。第三,现有的行为分析技术在对恶意代码进行分析时,没有对运行时间和执行效率进行优化,导致分析时间过长,不能满足现在恶意代码增长速度的需求。现在互联网的存在,导致恶意代码增长量的极度攀升,截获到一个新的恶意代码样本的时间可能仅仅需要数分钟。因此对分析速度和性能的要求是非常高的。现有的恶意代码分析技术多数只关注了分析识别恶意代码的准确率,而对其分析所消耗的时间没有做过多关注。这就对新产生的恶意代码无法做出及时的反应,严重的制约了恶意代码分析技术检测的发展。最后,恶意代码的编写者为了对抗检测和分析,也在不断地改进和提高恶意代码的自我保护技术以逃避对其的分析识别。特别是现有的代码混淆技术使得恶意代码分析时产生了大量可执行路径分支,其中大部分是冗余路径,这就使得程序分支数骤增,导致路径爆炸这样就会造成在可容忍的时间内无法完成全路径分析,从而不能够完全覆盖到恶意行为所有的触发情况,影响恶意代码分析的全面性。同时,由于路径数量的急剧增加,也极大地消耗了分析的耗时,从而影响分析的效率。本论文的研究工作试图解决上述恶意代码二进制程序行为分析中的问题,论文的主要工作内容与贡献包括以下几个方面:1、针对恶意代码二进制程序行为分析当中缺乏形式化描述的中间语言这一问题,论文提出了一种用于恶意代码二进制程序行为分析的中间语言MDIL(Malicious code Detection Intermediate Language)。利用MDIL中间语言能够有效地形式化表示在恶意代码二进制程序行为分析中,恶意代码在操作系统底层的运行状况,并对内存和寄存器的变化情况进行符号化抽象,正确地对恶意代码程序的数据流和控制流进行描述,揭示其工作机制。通过MDIL能够非常完整方便地展示恶意代码二进制程序行为分析方法的全部细节,从而对分析过程能够进行形式化表示,便于揭示分析方法的全过程。2、鉴于现有的恶意代码二进制程序行为分析检测中没有对底层进行监控的问题,论文提出了一种基于MDIL中间语言的恶意代码行为分析模型。该方法通过对二进制程序行为进行跟踪,监视内存和寄存器的变化,在中间语言层对程序行为进行形式化分析,从而达到对恶意代码分析检测的目的。该方法通过对恶意代码进行二进制程序分析,在操作系统底层进行监视,跟踪内存及寄存器的变化情况,揭示恶意代码程序的工作机制,对其进行分析检测,从而有效地解决了内核级恶意代码无法进行有效分析检测的问题。同时,在进行行为比较的时候引入向量相似度测度方法进一步提升了对恶意代码的检测准确度,降低了误报率。3、现有的行为分析技术在对恶意代码进行分析时,没有对运行时间和执行效率进行优化,导致分析时间过长,不能满足现在恶意代码增长速度的需求,论文提出了一种基于分段符号执行的二进制程序分析方法。该方法在定义的中间语言MDIL的层面上,将程序拆分为若干个小的程序单元,然后各个单元逐一进行符号化。在每个程序单元当中,分支数相对减少,每个单元中的路径爆炸问题都不会体现得非常明显。而在处理各个单元间的关系时,又不需要进行高时间复杂度运算。这样,二进制程序的分析时间将与各个分析单元的分析总时间相当,从而降低了程序分析的时间复杂度。实验表明基于分段符号执行的二进制程序分析方法能够有效地缓解路径爆炸问题,同时与其他二进制分析工具相比具有更小时间复杂度。针对恶意代码行为分析的需要,引入强化机器学习技术,以获得对恶意代码分析时的最优分段策略。4、鉴于恶意代码自我保护技术的迅速发展,特别是代码混淆技术的使用,使得程序分支数骤增,导致路径爆炸,造成在可容忍的时间内无法完成全路径分析的问题,论文提出了一种基于符号执行树的恶意代码分析方法,该方法通过构造符号执行树,对恶意代码执行路径条件进行约束,使之形成新的汇聚节点,有效地避免了可达路径的重复遍历,减少了分支数,缓解了路径爆炸问题,提高了恶意代码分析的执行路径覆盖率。同时,基于符号执行树的分析方法在时间复杂度上也有了明显降低,提高了分析速度。实验表明基于符号执行树的恶意代码分析方法能够明显地缩短恶意代码分析时间,提高分析的效率及全面性。5、为了验证本论文的研究成果在实际恶意代码分析检测应用中的可行性,发现实现过程中所存在的技术问题,在论文提出的基于MDIL中间语言的恶意代码二进制程序行为分析模型基础上,应用分段符号执行分析方法和符号执行树恶意代码分析方法的研究成果,设计和开发了恶意代码二进制程序行为分析原型系统。