上海论文网提供毕业论文和发表论文,专业服务20年。

博士论文:Windows平台下CodeCave检测技术研究

  • 论文价格:免费
  • 用途: ---
  • 作者:上海论文网
  • 点击次数:113
  • 论文字数:0
  • 论文编号:el201803161933298492
  • 日期:2018-03-14
  • 来源:上海论文网
TAGS:
本文是博士论文,博士论文是由攻读博士学位的研究生所撰写的学术论文。它要求作者在博士生导师的指导下,选择自己能够把握和驾驭的潜在的研究方向,开辟新的研究领域。(以上内容来自百度百科)今天为大家推荐一篇博士论文,供大家参考。

第一章 绪论

1.1 研究背景和意义
在科技发达的 21 世纪,计算机和互联网已被广泛应用在社会的各个行业,为人们的日常生活和工作学习提供来了极大的方便。根据中国互联网络信息中心(CNNIC)所发布的最新数据可以看出,到 2016 年 12 月为止,我国网民数量高达 7.31 亿,全年新增网民数为 4299 万。计算机强大的功能,主要是通过安装的软件来实现的。然而,经常有报道称某计算机软件被植入了恶意代码,造成了用户金钱损失和信息泄露等严重问题。计算机和互联网无处不在,其安全问题已成为与国家、社会及个人密切相关的热点问题。Code Cave 可以被用于改变程序的执行流程,具有很大的实用价值。然而 CodeCave 也是一把双刃剑,可以被正面应用,也可以反面应用。正面应用主要有以下几方面:(1)杀毒软件可以利用 Code Cave 来钩挂操作系统的函数调用,进行反病毒工作,为用户的电脑保驾护航[1,2]。(2)软件开发人员可以在没有源码的情况下,利用 Code Cave 可以对软件进行更新升级,添加新功能或者扩展一些插件,也可以删除一些旧的功能,而不用对软件做太大的改变,甚至重新开发新的软件[3,4]。(3)有些程序员对某些 API 函数的功能不太满意,可以利用 Code Cave 修改 API 的原始功能,使之更好地服务于程序。然而,现阶段 Code Cave 更多的是被反面应用,常被攻击者利用进行恶意代码注入等破坏活动。例如:(1)攻击者利用 Code Cave 将恶意代码注入到正在运行的合法进程中,这样恶意代码可以隐秘执行,避免创建额外的进程,从而达到窃取信息、非法牟利的目的[5-7]。(2)利用 Code Cave 对系统正常的 API 函数进行恶意挂钩,隐蔽性非常好,达到执行恶意代码的目的[8-10]。(3)在逆向工程中,Code Cave常被用来进行软件破解。为了保护软件开发商的合法权益,一些商业软件总是会设置注册码或者软件激活码。未注册的用户使用该软件时候会加上一些限制,比如未注册弹框、剩余免费使用天数等。软件破解者根据逆向工程的相关知识,利用 Code Cave 可以破解一个防护措施不是很强的软件,从而使得该软件成为破解版,给软件开发商造成了巨大的经济损失[11-13]。(4)现如今网络游戏非常流行,CodeCave 在很大程度上被用于游戏外挂中,导致游戏玩家流失,侵犯了游戏厂商的知识产权,阻碍了整个游戏行业的发展[14]。
........

1.2 研究现状
有关 Code Cave 的理论,直接的研究比较少。在公开的文献资料中,Code Cave这一名词鲜有提及,能看到的少量信息也是在一些信息安全相关的论坛和网站上[15-20]。文献[15]和文献[16]有关于 Code Cave 的介绍,文献[17]提到了 Code Cave在故障注入技术方面的应用,但都没有形成关于 Code Cave 统一的、正式的理论。Code Cave 作为一种能改变程序执行流程的技术,可以使得正常程序执行额外的代码,从而实现特定的功能。在 Windows 平台上,Code Cave 被广泛应用的一个地方是对程序进行挂钩。许多恶意代码都是通过挂钩修改正常程序的执行流程,进而实现其特定功能。此外,PE 文件病毒也常利用 Code Cave,将一些恶意代码插入到正常的可执行文件中,达到感染 PE 文件的目的,隐蔽性非常好[21,22]。由于目前对 Code Cave 直接的研究比较少,本文参考现阶段本质上类似的资料进行分析。现阶段与 Code Cave 检测相关的方法主要有:完整性检测、指令跳转分析法和执行路径检测等[23-26]。完整性检测可以分为文件完整性检测和内存完整性检测,主要原理是事先对系统中关键文件或内存数据进行备份,检测时将待检测目标与备份进行比较,判断是否有差异,从而达到检测的目的。指令跳转分析法是通过分析程序中的跳转指令,判断跳转后的地址是否在应用程序的正常范围内,从而判断程序是否被劫持。执行路径检测的原理是将待检测程序执行时的指令数与未被篡改的程序执行时的指令数进行比对,如果存在差异,则判断应用程序被劫持。Code Cave 非常复杂,检测难度很大,以上方法各有利弊,不能有效地检测出所有 Code Cave 的存在。因为 Code Cave 既可能存在于磁盘上的可执行文件中,也可能存在于程序的进程空间中,随着 Code Cave 研究的深入,有些 Code Cave 隐蔽性会更好,所以相应的检测技术也需不断发展和完善。
..........

第二章 Code Cave 相关技术研究

本章对 Code Cave 技术进行了深入研究,给出一个相对合理的 Code Cave 的定义,并进一步分析 Code Cave 的构成和属性以及复杂 Code Cave,最后通过一个具体实例演示 Code Cave 的利用过程。在给出实例之前,先介绍一些基本概念和 PE文件结构,为下文介绍 Code Cave 及其检测做好技术准备。

2.1 相关技术基础
PE 是 Portable Executable 的缩写,是微软公司所有 32 位 Windows 操作系统的标准可执行文件格式。在 Win32 系统中,常见的 EXE、DLL、COM、SYS、OCX都是 PE 文件,这些文件在磁盘上存贮的格式都是有一定规律的。此外,对于 64 位操作系统,只是将 PE 格式稍作了修改,将以前的 32 位字段扩展成了 64 位,并没有新的结构添加进去,新格式被称为 PE32+。一个 PE 文件主要由 DOS 头、PE 头、区块表以及与区块表相对应的块数据这四个部分构成[27-37]。PE 文件结构的总体布局如图 2-1 所示,下文会对 PE 文件各部分内容进行详细介绍。DOS 头由 DOS MZ 头和 DOS stub 两部分组成。DOS MZ 头是 DOS 系统用于识别有效 PE 文件的标识,DOS stub 是一个可以在 DOS 环境中运行的程序。在PE文件结构中,采用一个 IMAGE_DOS_HEADER 结构体表示DOS MZ头,大小是 64 字节。其中有两个字段非常重要:e_magic 和 e_lfanew。e_magic 字段被设置为 5A4Dh,ASCII 值表示为“MZ”,所有 PE 文件都是以一个 MZ 的标识符作为开头。如果 e_magic 字段的值不是 MZ,则 Windows 加载器认为该 PE 文件非法,拒绝加载此文件。另一个重要的字段是 e_lfanew,该字段占 4 字节,用来表示真正PE 头的文件偏移。
........#p#分页标题#e#

2.2 Code Cave 技术分析及实例
本节会对 Code Cave 进行详细研究。为了更好地描述 Code Cave,本节采用一个具体的例子进行讲解。例子的源码为本文自行编写,编译器采用 Visual Studio2013,生成的可执行程序为 Samples.exe,例子源代码如表 2-2 所示。对于 Code Cave,在公开正式的文献中鲜有提及。关于 Code Cave 的定义,目前尚未见到一个正式的、明确的定义。综合文献[15-20]的相关信息,本文归纳出一个相对比较合理的定义,即:在进程空间中寻找一块空闲内存,并往其中写入一段代码,将原始程序的执行流程重定向到这段代码,从而改变原始程序的执行流程,这种技术叫作 Code Cave。通俗来讲,Code Cave 是一种改变程序执行流程的技术,或者说是方法。如图 2-5 所示为一个程序的执行流程图,执行过程中顺序通过 A、B、C 三点。其中 A、B、C 分别为程序中存放代码的一块区域,包含若干条汇编指令。利用Code Cave 可以改变原始程序的执行流程,如图 2-6 所示,程序执行完 A 点的代码后,直接跳转到构造的 Code Cave 代码处执行,而不是 B 点。等 Code Cave 代码执行完毕后返回到原始程序中的 C 点执行继续执行,从而跳过了 B 点。由此可见,利用 Code Cave 可以将原始程序的执行流程重定向到另一个特定的地方。

.........

第三章 Code Cave 检测原理研究 ....... 25
3.1 现有的相关检测方法分析 ..... 25
3.2 本文基于特征区间的指令分析法的 Code Cave 检测原理 ....... 26
3.3 本章小结 ...... 50
第四章 Code Cave 检测系统的设计与实现 ......... 51
4.1 CCDSystem 系统总体架构 ..... 51
4.2 SDSystem 子系统的设计与实现 ..... 52
4.2.1 文件结构分析模块 .......... 52
4.2.2 反汇编模块 .... 53
4.2.3 代码执行流检测模块 ...... 55
4.2.4 多级 Code Cave 检测模块 ....... 56
4.2.5 结果显示模块 ......... 58
4.3 DDSystem 子系统的设计与实现..... 59
4.4 本章小结 ...... 67
第五章 实验与结果分析.... 68
5.1 实验环境 ...... 68
5.2 CCDSystem 有效性测试与结果分析 ....... 68
5.3 本章小结 ...... 83

第五章 实验与结果分析

以本文提出的基于特征区间的指令分析法为依据,在第四章中设计和实现了Code Cave 检测系统 CCDSystem。根据检测对象的不同,将 CCDSystem 分为SDSystem 和 DDSystem 两个子系统。为了验证 CCDSystem 的有效性,本章将分别对 SDSystem 和 DDSystem 进行测试,并进行结果分析。

5.1 测试样本

SDSystem 的测试是在一个干净的计算机系统中进行的。因为一个正常的 EXE文件是不含有 Code Cave 的,并且没有专门的 Code Cave 样本库,所以本文搜集和构造一些包含 Code Cave 的 EXE 文件作为测试样本。(1)由于 PE 文件病毒常用的手段是修改 PE 文件,将自身的代码插入 PE 文件中,并使得插入的代码获得执行权,这和静态 Code Cave 的构造很类似。所以,本文从看雪论坛上获取三个被感染后的 EXE 文件作为测试样本,下载链接为。这三个样本分别是由正常 EXE 文件 test.exe通过添加新区块感染方式、文件末尾区块添加方式和区块缝隙感染方式得来的,依次命名为 test1.exe、test2.exe、test3.exe。这三个样本的代表性在于 Code Cave 的位置分别在新添加的区块、非代码区块以及代码区块的空闲空间中。(2)本文参考文献[28],在其第 15 章的示例中选择 patch1_helloworld.exe 和patch1_notepad1.exe 作为测试样本。这两个样本的代表性在于 Code Cave 位置选在了 DOS 头到第一个区块之间的区域,也就是本文定义的“HEADER”区块中。选择第 17 章的示例 patch_notepad.exe 作为测试样本,这个样本的代表性在于 CodeCave 的位置选在最后一个区块中。(3)选用第二章的 Samples.exe 作为原始文件,往其中注入代码,生成两个样本,命名为 Samples1.exe 和 Samples2.exe。样本 Samples1.exe 的代表性在于 CodeCave 位置在代码区块的空闲空间中,样本 Samples2.exe 的代表性在于其中包含多级 Code Cave。所以,SDSystem 的测试样本一个有 8 个,分别为 test1.exe、test2.exe、test3.exe、patch1_helloworld.exe、patch1_notepad1.exe、patch_notepad.exe、Samples1.exe 和Samples2.exe。这些样本的 Code Cave 位置覆盖 PE 文件内部的各个区块,Code Cave代码执行权的获取方式也包括程序入口点方式和 JumpGate 方式,并且样本中包含多级 Code Cave,具有一定的代表性。#p#分页标题#e#

 

.........

总结

Code Cave 作为一种能改变程序执行流程的技术,在实际中有很多用途,比如:软件的二次开发和维护。但是,Code Cave 也可能被恶意利用,例如:木马、病毒、软件非法破解等,给人们的生活和工作造成恶劣的影响。因为关于 Code Cave 直接的研究比较少,本文参考现阶段相关的资料进行研究,提出基于特征区间的指令分析法来检测 Code Cave,并设计和实现了检测系统 CCDSystem。本文主要的研究工作具体如下:
(1)对一些相关基本概念和 PE 文件格式进行介绍,这是后续研究 Code Cave及其检测技术的基础。
(2)综合各方面资料,提出一个 Code Cave 的相对合理的定义,并分析了 CodeCave 的两个构成部分:JumpGate 和 Cave。在此基础上,研究了 Code Cave 的五个重要属性:Code Cave 位置、Code Cave 调用方式、Code Cave 调用点、Code Cave返回点和 Code Cave 大小。本文还提出了复杂 Code Cave 的概念,并进行了相关研究。为了能更好地理解和掌握 Code Cave 技术,本文通过一个具体实例演示了 CodeCave 的用法。
(3)分析现阶段与 Code Cave 相关的检测方法,针对其不足之处,本文提出了基于特征区间的指令分析法,并对关键技术进行了研究。本文根据 Code Cave 的特点和 PE 文件理论,采用了对 PE 文件划分特征区间的思想。在深入研究 Code Cave 代码获取执行权方式的基础上,建立了特征指令列表 JumpList。本文对 Code Cave 之间的关系进行了研究,提出了利用树结构来存储和表示 Code Cave 之间复杂的调用关系。结合特征区间和 JumpList,本文最终提出了基于特征区间的指令分析法的 Code Cave 检测新方法,并从静态和动态两个方面阐明了检测原理。
(4)根据本文提出的 Code Cave 检测方法,设计和实现了 Code Cave 检测系统 CCDSystem。根据检测对象的不同,将 CCDSystem 分为两个子系统:静态检测子系统 SDSystem 和动态检测子系统 DDSystem。其中,SDSystem 子系统的检测对象为磁盘上的 EXE 文件,DDSystem 子系统的检测对象为进程空间中的 EXE 模块。
..........
参考文献(略)
1,点击按钮复制下方QQ号!!
2,打开QQ >> 添加好友/群
3,粘贴QQ,完成添加!!