学位论文 > 优秀研究生学位论文题录展示

恶意代码二进制程序行为分析关键技术研究

作 者: 钟金鑫
导 师: 杨义先
学 校: 北京邮电大学
专 业: 信息安全
关键词: 恶意代码行为 中间语言 二进制程序分析 路径爆炸 符号执行
分类号: TP393.08
类 型: 博士论文
年 份: 2012年
下 载: 508次
引 用: 0次
阅 读: 论文下载
 

内容摘要


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

全文目录


摘要  4-8
ABSTRACT  8-13
目录  13-16
图目录  16-18
表目录  18-19
第一章 绪论  19-45
  1.1 论文选题背景  19-22
  1.2 恶意代码行为分析技术综述  22-41
    1.2.1 恶意代码动态行为分析  22-28
    1.2.2 恶意代码静态行为分析方法  28-31
    1.2.3 恶意代码行为分析系统工具  31-33
    1.2.4 恶意代码自我保护技术  33-38
    1.2.5 恶意代码行为分析技术的局限性  38-41
  1.3 论文主要工作与贡献  41-42
  1.4 论文章节安排  42-45
第二章 基于MDIL中间语言的恶意代码行为分析模型  45-68
  2.1 引言  45-46
  2.2 MDIL中间语言  46-51
    2.2.1 形式化表示  47-48
    2.2.2 语言语法  48
    2.2.3 形式化表达式  48-50
    2.2.4 中间语言转化示例  50-51
  2.3 程序行为描述  51-55
    2.3.1 基本块构建  51-52
    2.3.2 控制流图构造  52-54
    2.3.3 程序行为描述  54-55
  2.4 恶意代码行为分析算法  55-60
    2.4.1 恶意代码行为描述  56-57
    2.4.2 完全匹配比较算法  57-58
    2.4.3 基于加权Euclidean距离的相似度比较算法  58-60
  2.5 基于MDIL中间语言的恶意代码行为分析模型系统  60-61
    2.5.1 模型系统描述  60
    2.5.2 程序行为监视器  60-61
    2.5.3 预处理器  61
    2.5.4 程序行为分析器  61
  2.6 实验结果及分析  61-66
    2.6.1 算法比较  62-64
    2.6.2 内核级恶意代码分析比较  64-65
    2.6.3 分析效率比较  65-66
  2.7 本章小节  66-68
第三章 基于分段符号执行的恶意代码分析方法  68-88
  3.1 引言  68-70
  3.2 分段符号执行模型  70-75
    3.2.1 执行路径单元定义  70
    3.2.2 分段符号执行过程  70-71
    3.2.3 时间复杂度计算  71-72
    3.2.4 算法描述  72-73
    3.2.5 实例分析  73-75
  3.3 基于强化学习的分段决策方法  75-79
    3.3.1 基于强化学习的分段决策模型  75-77
    3.3.2 强化学习算法  77-79
  3.4 实验结果及分析  79-86
    3.4.1 符号执行方法比较  80-81
    3.4.2 符号执行工具比较  81
    3.4.3 恶意代码分析  81-83
    3.4.4 基于强化学习分段决策模型的恶意代码分析  83-86
    3.4.5 恶意代码分析工具效率比较  86
  3.5 本章小节  86-88
第四章 基于符号执行树的恶意代码分析方法  88-100
  4.1 引言  88-89
  4.2 符号执行树分析方法  89-92
    4.2.1 概念定义  89-90
    4.2.2 环转换  90-91
    4.2.3 条件分支结构转换  91-92
  4.3 算法设计  92-96
    4.3.1 算法思路  92-93
    4.3.2 算法实现  93-94
    4.3.3 算法实例分析  94-95
    4.3.4 算法时间复杂度  95-96
  4.4 实验结果及分析  96-98
    4.4.1 实验评价指标  97
    4.4.2 分析效率比较  97-98
    4.4.3 分析全面性比较  98
  4.5 本章小节  98-100
第五章 恶意代码二进制程序行为分析系统的设计与实现  100-113
  5.1 引言  100
  5.2 MCA-SET原型系统  100-105
    5.2.1 系统架构  100-101
    5.2.2 系统模块  101-104
    5.2.3 系统界面  104-105
  5.3 系统的设计与实现  105-109
    5.3.1 恶意行为分析的设计与实现  105-107
    5.3.2 分段符号执行恶意代码分析方法的设计与实现  107-108
    5.3.3 符号执行树恶意代码分析方法的设计与实现  108-109
  5.4 系统实验与分析  109-112
    5.4.1 分析准确度比较  110-111
    5.4.2 分析性能比较  111
    5.4.3 系统实验分析  111-112
  5.5 本章小结  112-113
第六章 总结与展望  113-116
  6.1 论文工作总结  113-114
  6.2 下一步工作  114-116
参考文献  116-129
致谢  129-130
附录:攻读博士学位期间发表的论文及专利  130-131
附录:攻读博士学位期间参加的科研工作  131

相似论文

  1. 面向领域的数据库问答系统关键技术研究,TP311.13
  2. 基于动态二进制程序切片技术的软件攻击诊断,TP311.53
  3. 基于二进制代码的动态符号执行工具,TP309
  4. 基于动态符号执行的代码分析工具的研究,TP309
  5. 基于虚拟化的恶意代码行为捕获技术研究,TP393.08
  6. 基于IDA的代码解析与中间语言翻译,TP391.2
  7. ARM反编译中的类型分析技术研究,TP368.1
  8. 代码逆向分析中的语句恢复与算法识别技术研究,TP311.52
  9. 基于IT-Kid的.NET语义模型设计与实现,TP311.52
  10. 面向ARM体系结构的代码逆向分析关键技术研究,TP332
  11. 二进制代码安全性分析,TP311.1
  12. 版本间语义分析制导的程序逆向静态分析,TP311.53
  13. 面向符号执行的内存模型研究,TP333.1
  14. 基于符号执行的C程序单元测试研究与实现,TP311.52
  15. 基于符号执行的二进制代码动态污点分析,TP309
  16. 云安全环境下的恶意代码前端检测技术研究,TP393.08
  17. 基于符号执行与遗传算法的单元测试研究与应用,TP311.52
  18. Web服务编排语言的分析与测试,TP393.09
  19. 基于动态符号执行的二进制代码漏洞挖掘系统研究与设计,TP309
  20. 基于二进制程序的软件缺陷分析及其测试数据生成系统的设计与实现,TP311.52
  21. 基于函数摘要的二进制漏洞挖掘技术研究,TP309

中图分类: > 工业技术 > 自动化技术、计算机技术 > 计算技术、计算机技术 > 计算机的应用 > 计算机网络 > 一般性问题 > 计算机网络安全
© 2012 www.xueweilunwen.com