多态蠕虫产生器毕业设计论文_第1页
多态蠕虫产生器毕业设计论文_第2页
多态蠕虫产生器毕业设计论文_第3页
多态蠕虫产生器毕业设计论文_第4页
多态蠕虫产生器毕业设计论文_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、毕业论文(设计)题 目多态蠕虫产生器的设计与实现学生姓名指导教师学 院专业班级完成时间摘要网络蠕虫是一种可以独立运行且可以进行自我复制传播的程序,它的危害性非常大,每次爆发都给社会带来了极大的经济损失。目前网络蠕虫的发展呈现出速度更快、目的性更强和技术更先进的特点。同时计算机专家也在不断研究抵御蠕虫攻击的方法,然而多态蠕虫的出现对抵御研究提出了新的要求,如何了解多态蠕虫的发作原理和抵御方法,就是蠕虫研究的关键。本文首先对网络蠕虫进行研究,并分析得出了蠕虫的实体结构、蠕虫的统一功能结构模型、蠕虫的工作流程、特征码检测技术以及多态变形技术。本文在此基础上,采用C-Free和C#相结合,设计了一个多

2、态蠕虫发生器,主要包含了免杀代码植入模块、花指令替换模块、加密模块、解密模块和杀毒软件检测模块,其余辅助模块有扫描检测模块、代码查看模块和输出模块等。本文通过多态蠕虫发生器这几个模块,实现了对蠕虫源代码的扫描检测、多态变形以及模拟防病毒软件查杀,同时可以很好地演示蠕虫在多态变形前后的变化,以及躲避防病毒软件查杀的效率,并且操作界面友好,容易理解和上手操作,多态变形前后的变化透明可见。关键词蠕虫,病毒,多态,溢出攻击,产生器ABSTRACTInternet worms are programs which run independently and can copy themselves to

3、other hosts automatically. Its huge destructive ability brings society great economic loss every time it breaks out. Especially future worms will have higher propagation speed, more definite purpose and more advanced techniques.While computer experts continually research against worms attacks, howev

4、er polymorphic worms occur against of new requirements, how to understand the polymorphic worms attack and defeat the principle is the key to the study of the worm. search.In the thesis,we conduct a study on Internet worm first.We introduced the entity construction,uniform function model,the working

5、 process of Internet worms,behavior characteristics and polymorphic techniques. On this basis, this paper designed a polymorphic worm generator with C-Free and C#, mainly contains free killing code module, taking junk instruction replace module, encryption module, decryption module, and anti-virus s

6、oftware detection model.The remaining auxiliary modules have scaning modules, viewing code module and output modules, etc. In this paper, the module of these polymorphic worm generator module to realize the source code of the worm scan, polymorphic deformation and analog anti-virus software killing,

7、 and worms can be a good demonstration of polymorphic changes before and after deformation, and to avoid anti-virus software pieces of killing efficiency.The generator has friendly interface and it is easy for us to understand and get started operations,and also it is transparent to understand the c

8、hanges before and after deformation.KEY WORDSworm, virus, polymorphic, overflow attack, generator目录摘要IABSTRACTII第一章绪论11.1 蠕虫的研究背景11.1.1 蠕虫与病毒的定义11.1.2 蠕虫的基本特征31.1.3 蠕虫的功能结构51.1.4 蠕虫的传播策略61.2 蠕虫与病毒领域的研究现状71.3 课题的研究意义和目的81.4 本文章节安排9第二章蠕虫与多态蠕虫的概述及实例分析102.1 蠕虫的实体结构和功能结构102.1.1 蠕虫的实体结构102.1.2 基本功能模块112.1

9、.3 扩展功能模块112.1.4 蠕虫的工作流程122.1.5特征码检测技术122.2 多态变形技术的概念132.2.1 什么是多态变形技术132.2.2 常见的多态变形技术142.2.3 多态变形病毒实例分析Win98.BlackBat152.3 本章小结19第三章多态蠕虫产生器的设计203.1 针对缓冲区溢出蠕虫的多态变形设计203.1.1 缓冲区溢出攻击的基本原理203.1.2 蠕虫王病毒的分析223.2 多态蠕虫产生器的模型结构223.2.1 多态蠕虫产生器的模型结构图223.2.2 多态蠕虫产生器各模块设计233.3 本章小结29第四章多态蠕虫产生器的实现304.1 功能实现304.

10、1.1 功能简介304.1.2 多态蠕虫发生器详细介绍304.2 多态蠕虫产生器的功能测试324.2.1 测试过程分析324.2.2 测试结果分析354.3 本章小结36第五章结束语37致谢38参考文献39第一章绪论1.1 蠕虫的研究背景早期恶意代码的主要形式是计算机病毒。1988年“Morris”蠕虫爆发后,Spafford为了区分蠕虫和病毒,对病毒重新进行了定义,他认为:“计算机病毒是一段代码,能把自身加到其他程序包括操作系统上;它不能独立运行,需要由它的宿主程序运行来激活它”。而网络蠕虫强调自身的主动性和独立性。Kienzle和Elder从破坏性、网络传播、主动攻击和独立性四个方面对网络

11、蠕虫进行了定义:网络蠕虫是通过网络传播,无须用户干预能够独立地或者依赖文件共享主动攻击的恶意代码。根据传播策略,他们把网络蠕虫分为三类:E-mail蠕虫、文件共享蠕虫和传统蠕虫。郑辉认为蠕虫具有主动攻击、行踪隐蔽、漏洞利用、造成网络拥塞、降低系统性能、产生安全隐患、反复性和破坏性等特征,并给出相应的定义:“网络蠕虫是无须计算机使用者干预即可运行的独立程序,它通过不停地获得网络中存在漏洞的计算机的部分或全部控制权来进行传播。”该定义包含了Kienzle和Elder定义的后两类蠕虫,不包括E-mail蠕虫。2003年10月的世界蠕虫会议上,Schechter和Michael D. Smith提出了

12、一类新型网络蠕虫,Access For Sale蠕虫,这类蠕虫除上述定义的特征之外,还具备身份认证的特征。综合上述分析,我们认为“网络蠕虫是一种智能化、自动化,综合网络攻击、密码学和计算机病毒技术,无须计算机使用者干预即可运行的攻击程序或代码,它会扫描和攻击网络上存在系统漏洞的节点主机,通过局域网或者国际互联网从一个节点传播到另外一个节点”。此定义体现了新一代网络蠕虫智能化、自动化和高技术化的特征。1.1.1 蠕虫与病毒的定义1 蠕虫的原始定义早期恶意代码的主要形式是计算机病毒。1988年“Morris”蠕虫爆发后,Spafford为了区分蠕虫和病毒,对病毒重新进行了定义,他认为:“计算机病毒

13、是一段代码,能把自身加到其他程序包括操作系统上;它不能独立运行,需要由它的宿主程序运行来激活它”。而网络蠕虫强调自身的主动性和独立性。Kienzle和Elder从破坏性、网络传播、主动攻击和独立性四个方面对网络蠕虫进行了定义:网络蠕虫是通过网络传播,无须用户干预能够独立地或者依赖文件共享主动攻击的恶意代码。根据传播策略,他们把网络蠕虫分为三类:E-mail蠕虫、文件共享蠕虫和传统蠕虫。郑辉认为蠕虫具有主动攻击、行踪隐蔽、漏洞利用、造成网络拥塞、降低系统性能、产生安全隐患、反复性和破坏性等特征,并给出相应的定义:“网络蠕虫是无须计算机使用者干预即可运行的独立程序,它通过不停地获得网络中存在漏洞的

14、计算机的部分或全部控制权来进行传播。1”该定义包含了Kienzle和Elder定义的后两类蠕虫,不包括E-mail蠕虫。2003年10月的世界蠕虫会议上,Schechter和Michael D. Smith提出了一类新型网络蠕虫,Access For Sale蠕虫,这类蠕虫除上述定义的特征之外,还具备身份认证的特征。综合上述分析,我们认为“网络蠕虫是一种智能化、自动化,综合网络攻击、密码学和计算机病毒技术,无须计算机使用者干预即可运行的攻击程序或代码,它会扫描和攻击网络上存在系统漏洞的节点主机,通过局域网或者国际互联网从一个节点传播到另外一个节点”。此定义体现了新一代网络蠕虫智能化、自动化和高

15、技术化的特征。2 病毒的原始定义人们在探讨计算机病毒的定义时,常常追溯到David Gerrold在1972年发表的科幻小说When Harlie Was One,但计算机病毒的技术角度的定义是由Fred Cohen在1984年给出的,“计算机病毒是一种程序,它可以感染其它程序,感染的方式为在被感染程序中加入计算机病毒的一个副本,这个副本可能是在原病毒基础上演变过来的。”1988年,Morris蠕虫爆发后,Eugene H. Spafford 为了区分蠕虫和病毒,将病毒的含义作了进一步的解释。“计算机病毒是一段代码,能把自身加到其它程序包括操作系统上。它不能独立运行,需要由它的宿主程序运行来激

16、活它。”3 蠕虫定义的进一步说明在上面提到的蠕虫原始定义和病毒原始定义中,都忽略了相当重要的一个因素,就是计算机使用者,定义中都没有明确描述计算机使用者在其整个传染机制中所处的地位。计算机病毒主要攻击的是文件系统,在其传染的过程中,计算机使用者是传染的触发者,是传染的关键环节,使用者的计算机知识水平的高低常常决定了病毒所能造成的破坏程度。而蠕虫主要利用计算机系统漏洞(vulnerability)进行传染,搜索到网络中存在漏洞的计算机后主动进行攻击,在传染的过程中,与计算机操作者是否进行操作无关,从而与使用者的计算机知识水平无关。另外,蠕虫的定义中强调了自身副本的完整性和独立性,这也是区分蠕虫和

17、病毒的重要因素。可以通过简单的观察攻击程序是否存在载体来区分蠕虫与病毒1。通过简单的分析,可以得出结论,“Morris蠕虫病毒”是蠕虫而非病毒;“Happy99蠕虫病毒”、“Mellisa网络蠕虫宏病毒”、“Lover Letter网络蠕虫病毒”、“SirCam蠕虫病毒”是病毒而非蠕虫;“NAVIDAD网络蠕虫”、“Blebla.B网络蠕虫”、“VBS_KAKWORM.A蠕虫”是病毒而非蠕虫2。4 蠕虫、病毒之间的区别与联系(1)主动性方面:蠕虫的传播具有很强的主动性,它的运行与传播并不需要计算机使用者的干预;而病毒则必须要借助计算机使用者的某种操作来激活它,这样才能达到其攻击的目的。(2)感

18、染对象方面:蠕虫感染的对象是有相应漏洞或者其他脆弱性的计算机系统,而病毒的感染对象则是计算机中的文件系统。通过上面两点主要区别,读者已经基本可以对蠕虫与病毒加以区分。例如“NAVIDAD网络蠕虫”、“Blebla.B网络蠕虫”、“VBS_KAKWORM.A蠕虫”等,虽然它们以蠕虫命名,但它们本质上却是病毒,并非蠕虫。表1.1中列出了蠕虫与病毒的特征对比3。表1.1 蠕虫与病毒的特征对比蠕虫病毒主动性主动传播激活后传播感染对象有相应脆弱性的系统文件系统感染机制自身复制将自己插入宿主程序存在方式独立存在寄存于宿主程序中计算机用户角色无关触发者影响重点本地系统、网络本地系统防护措施打补丁从宿主程序中

19、清除对抗主体系统软件和服务软件提供商、计算机用户、网络管理员计算机用户、反病毒厂商1.1.2 蠕虫的基本特征通过对蠕虫的整个工作流程的分析,可以归纳得到它的以下8种基本特征3:1 主动攻击蠕虫在本质上已经演变为黑客入侵的自动化工具,当蠕虫被释放后,从搜索漏洞,到利用搜索结果攻击系统,到复制副本,整个流程全由蠕虫自身主动完成。2 行踪隐蔽由于蠕虫的传播过程,不像病毒那样需要计算机使用者的辅助工作(如执行文件、打开文件、阅读信件、浏览网页等等),所以在蠕虫传播的过程中,计算机使用者基本上不可察觉。3 利用系统、网络应用服务漏洞除了最早的蠕虫在计算机之间传播是程序设计人员许可、并在每台计算机上做了相

20、应的配合支持机制之外,所有后来的蠕虫都是要突破计算机系统自身的防线,并对其资源进行滥用的。计算机系统存在漏洞是蠕虫传播的前提,利用这些漏洞,蠕虫获得被攻击的计算机系统的相应权限,完成后继的复制和传播过程。这些漏洞有的是操作系统本身的问题,有的是应用服务程序的问题,有的是网络管理人员的配置问题。正是由于漏洞产生原因的复杂性,才导致人们面对蠕虫攻击的时候防不胜防。4 造成网络拥塞蠕虫进行传播的第一步就是找到网络上其它存在漏洞的计算机系统,这需要通过大面积的搜索来完成,搜索动作包括:判断其它计算机是否存在;判断特定应用服务是否存在;判断漏洞是否存在。这不可避免的会产生附加的网络数据流量。即使是不包含

21、破坏系统正常工作的恶意代码的蠕虫,也会因为它产生了巨量的网络流量,从而导致整个网络性能的下降甚至瘫痪,进而造成经济损失。5 降低系统性能蠕虫入侵到计算机系统之后,会在被感染的计算机上产生自己的多个副本,每个副本启动搜索程序寻找新的攻击目标。大量的进程会耗费系统的资源,导致系统的性能下降,这对网络服务器的影响尤为明显。6 产生安全隐患大部分蠕虫会搜集、扩散、暴露系统敏感信息(如用户信息等),并在系统中留下后门,这些都会导致未来的安全隐患。7 反复性即使清除了蠕虫在文件系统中留下的任何痕迹,如果没有修补计算机系统漏洞,重新接入到网络中的计算机还是会被重新感染。这个特性在Nimda蠕虫的身上表现得尤

22、为突出。计算机使用者用一些声称可以清除Nimda的防病毒产品清除本机上的Nimda蠕虫副本后,很快就又重新被Nimda蠕虫所感染4。8 破坏性从蠕虫的历史发展过程可以看到,越来越多的蠕虫开始包含恶意代码,破坏被攻击的计算机系统,而且造成的经济损失数目越来越大。以上描述主要针对蠕虫个体的活动行为特征,当网络中多台计算机被蠕虫感染后,将形成具有独特行为特征的“蠕虫网络”(worm network),关于蠕虫网络的其它特征,还有待进一步的研究和讨论。1.1.3 蠕虫的功能结构1主体功能模块主体功能模块由4个模块构成。(1)信息搜集模块:该模块决定采用何种搜索算法对本地或者目标网络进行信息搜集,内容包

23、括本机系统信息、用户信息、邮件列表、对本机的信任或授权的主机、本机所处网络的拓扑结构,边界路由信息等等,这些信息可以单独使用或被其他个体共享。(2)扫描探测模块:完成对特定主机的脆弱性检测,决定采用何种的攻击渗透方式。(3)攻击渗透模块:该模块利用(2)中获得的安全漏洞,建立传播途径,该模块在攻击方法上是开放的、可扩充的。(4)自我推进模块:该模块可以采用各种形式生成各种形态的蠕虫副本,在不同主机间完成蠕虫副本传递。例如“Nimda”会生成多种文件格式和名称的蠕虫副本;“W32.Nachi.Worm”利用系统程序(例如TFTP)来完成推进模块的功能等2。2辅助功能模块辅助功能模块是对除主体功能

24、模块外的其他模块的归纳或预测,主要由5个功能模块构成。(1)实体隐藏模块:包括对蠕虫各个实体组成部分的隐藏、变形、加密以及进程的隐藏,主要是为提高蠕虫的生存能力。(2)宿主破坏模块:该模块用于摧毁或破坏被感染主机,破坏网络正常运行,在被感染主机上留下后门等。(3)信息通信模块:该模块能使蠕虫间、蠕虫同黑客之间能进行交流,这是未来蠕虫发展的重点;利用通信模块,蠕虫间可以共享某些信息,使蠕虫的编写者更好地控制蠕虫行为。(4)远程控制模块:控制模块的功能是调整蠕虫行为,控制被感染主机,执行蠕虫编写者下达的指令。(5)自动升级模块:该模块可以使蠕虫编写者随时更新其他模块的功能,从而实现不同的攻击目的。

25、1.1.4 蠕虫的传播策略 1选择性随机扫描随机扫描会对整个地址空间的IP随机抽取进行扫描,而选择性随机扫描(Selective Random Scan)将最有可能存在漏洞主机的地址集作为扫描的地址空间,也是随机扫描策略的一种。所选的目标地址按照一定的算法随机生成,互联网地址空间中未分配的或者保留的地址块不在扫描之列。例如Bogon列表bogon-list中包含近32个地址块,这些地址块对公网中不可能出现的一些地址进行了标识。选择性随机扫描具有算法简单,易实现的特点,若与本地优先原则结合则能达到更好的传播效果。但选择性随机扫描容易引起网络阻塞,使得网络蠕虫在爆发之前易被发现,隐蔽性差。“Cod

26、eRed”、“Slapper”和“Slammer”的传播采用了选择性随机扫描策略6。2顺序扫描顺序扫描(Sequential Scan)是被感染主机上蠕虫会随机选择一个C类网络地址进行传播,根据本地优先原则,蠕虫一般会选择它所在网络内的IP地址。若蠕虫扫描的目标地址IP为A,则扫描的下一个地址IP为A1或者A-1。一旦扫描到具有很多漏洞主机的网络时就会达到很好的传播效果。该策略的不足是对同一台主机可能重复扫描,引起网络拥塞。“W32.Blaster”是典型的顺序扫描蠕虫。3基于目标列表的扫描基于目标列表扫描(Hit-list Scan)是指网络蠕虫在寻找受感染的目标前,预先生成一份易感染的目标

27、列表,然后对该列表进行攻击尝试和传播。目标列表生成方法有两种: 通过小规模的扫描或者互联网的共享信息产生目标列表; 通过分布式扫描可以生成全面列表的数据库。理想化蠕虫“Falsh”就是一种基于IPv4地址空间列表的快速扫描蠕虫。4基于路由的扫描基于路由的扫描(Routable Scan)是指网络蠕虫根据网络中路由信息,对IP地址空间进行选择性扫描的一种方法。采用随机扫描的网络蠕虫会对未分配的地址空间进行探测,而这些地址大部分在互联网上是无法路由的,因此会影响到蠕虫的传播速度。如果网络蠕虫能够知道哪些IP地址是可路由的,则它能够更快、更有效地进行传播,并能逃避一些对抗工具的检测。网络蠕虫的设计者

28、通常利用BGP路由表公开的信息,获取互联网路由的IP地址前辍,然后来验证BGP数据库的可用性。基于路由的扫描大大提高了蠕虫的传播速度,以“CodeRed”为例,路由扫描蠕虫的感染率是采用随机扫描蠕虫感染率的3.5倍ZTGC2003。基于路由的扫描的不足是网络蠕虫传播时必须携带一个路由IP地址库,蠕虫代码量大。5基于DNS扫描基于DNS扫描(DNS Scan)是指网络蠕虫从DNS服务器获取IP地址来建立目标地址库,该扫描策略的优点在于获得的IP地址块具有针对性强和可用性高的特点。基于DNS扫描的不足是: 难于得到有DNS记录的完整地址列表; 蠕虫代码需要携带非常大的地址库,传播速度慢; 目标地址

29、列表中地址数受公共域名主机的限制。例如“CodeRed I”所感染的主机中几乎一半没有DNS记录。6分治扫描分治扫描(Divide-Conquer Scan)是网络蠕虫之间相互协作快速搜索易感染主机的一种策略,网络蠕虫发送地址库的一部分给每台被感染的主机,然后每台主机再去扫描它所获得的地址。主机A感染了主机B后,主机A将它自身携带的地址分出一部分给主机B,然后主机B开始扫描这一部分地址。分治扫描策略的不足是存在“坏点”问题。在蠕虫传播的过程中,如果一台主机死机或崩溃,那么所有传给它的地址库就会丢失。这个问题发生的越早,对传播的影响就越大。有三种方法能够解决这个问题: 在蠕虫传递地址库之前产生目

30、标列表; 通过计数器来控制蠕虫的传播情况,蠕虫每感染一个节点计数器加一,然后根据计数器的值来分配任务; 蠕虫传播的时候随机决定是否重传数据库。7扫描策略评价网络蠕虫传播速度的关键影响因素有4个: 目标地址空间选择; 是否采用多线程搜索易感染主机; 是否有易感染主机列表(Hit-list); 传播途径的多样化。各种扫描策略的差异主要在于目标地址空间的选择。网络蠕虫感染一台主机的时间取决于蠕虫搜索到易感染主机所需要的时间。因此,网络蠕虫快速传播的关键在于设计良好的扫描策略。一般情况下,采用DNS扫描传播的蠕虫速度最慢,选择性扫描和路由扫描比随机扫描的速度快;对于Hit-list扫描,当列表超过1M

31、字节时蠕虫传播的速度就会比路由扫描蠕虫慢;当列表大于6M字节时,蠕虫传播速度比随机扫描还慢。分治扫描目前还没有找到易于实现且有效的算法。目前网络蠕虫首先采用路由扫描,再利用随机扫描进行传播是最佳选择。1.2 蠕虫与病毒领域的研究现状近年来,随着互联网的普及,人们对互联网的认识越来越深入,大量的蠕虫工具包和蠕虫编写文章在网上出现,使得蠕虫编写工作的难度越来越低。新的蠕虫层出不穷,所造成的危害也越来越大,其危害程度已经远远超过传统的病毒,使人们逐步认识到研究蠕虫对抗措施的重要性。但目前研究工作还主要集中在对已有蠕虫的检测与防范上,使蠕虫的防范工作处于一种非常被动的地位。为了改变这种被动的局面,人们

32、正在研究能够检测与防范未知蠕虫的准确有效的方法,并已经取得一些初见成效的成果。国内基本没有对蠕虫较深入的研究工作,这也许是由于对计算机病毒领域研究的误解造成的,仍然有最新的国内文献认为计算机病毒理论己经定型,没有研究的必要。但这不表明中国的蠕虫技术落后,有大量的迹象表明2,危害最大的几个蠕虫都是中国黑客编写的。1.3 课题的研究意义和目的从90年代第一个变形病毒出现到现在,还没有任何一款反病毒软件能够完全解决这个问题,而且时至今日,多态变形蠕虫、病毒始终存在于计算机系统之中。很多多态变形蠕虫、病毒刚一出现就大规模蔓延,几乎达到了不能控制的状态。更为严重的是,在过去的几年里,多态变形技术己经趋于

33、成熟,几乎每天都有新的变种出现,而且其复杂程度也是日益增加。考察目前出现的大多数多态变形蠕虫、病毒,可以看出大多数的计算机技术都被应用到了蠕虫、病毒的设计中。从蠕虫、病毒发展的角度来看,多态变形蠕虫、病毒将毫无疑问地成为未来蠕虫、病毒发展的趋势,并将在原有的基础上产生根本性的转变。这主要体现在这类高级蠕虫、病毒不再持有以往绝大多数病毒那种“恶作剧”的目的,它可能是人类投入巨资研究出的、可扰乱、破坏社会信息、政治、经济秩序等、或是主宰战争目的的一种“信息战略武器”;它们有可能接受机外遥控信息,也可以向外发出信息,比如在多媒体机上可通过视频、音频、无线电或互联网收发信息;也可以通过计算机的辐射波,

34、向外发出信息;也可以潜藏在联接Internet的计算机中,收集密码和重要信息,再悄悄地随着的主人通信,将重要信息发出去。这些变形病毒的智能化程度相当高,因此多态变形技术也就越来越受到人们的关注。到目前为止,变形技术仅仅应用于P E 文件型病毒中5,完全意义上的变形蠕虫、病毒还没有出现。尽管传统的特征码扫描技术在多态变形技术面前逐渐丧失了它以往的上佳表现,但是新生技术,如虚拟机、基于行为的检测技术以及启发式扫描技术,在很大程度上能够有效地遏制多态变形蠕虫、病毒的蔓延6。本课题旨在通过研究多态变形技术,剖析已经存在的变形蠕虫的工作原理,提出多态蠕虫的一般模型结构,并设计实现一种多态蠕虫产生器,从而

35、实现对蠕虫序列的多态变化。同时,本课题的研究内容还可以为反多态变形技术的研究提供一定的依据。1.4 本文章节安排本次毕业设计的任务就是了解多态蠕虫的特征,设计实现一个模拟的多态蠕虫产生器,以便对其多态变形机理进行深入探索,并有效防止这类蠕虫和病毒的蔓延。根据本次毕业设计任务,本文共安排了5个章节,各章的内容安排简要介绍如下:第一章为绪论,分为4个小节。第一小节介绍了蠕虫的研究背景,主要包括蠕虫和病毒的一些基本知识,包括蠕虫与病毒的定义及其行为特征。第二小节介绍了蠕虫与病毒领域的一些研究现状。第三节提出了本课题的研究意义及目的。第四节介绍了本文的章节安排。第二章为蠕虫与多态蠕虫的概述及实例分析,

36、分为3个小节。第一小节介绍了蠕虫的实体结构和功能结构。第二小节介绍了多态变形技术的概念。第三小节对本章内容进行了总结。第三章为多态蠕虫产生器的设计,分为3个小节。第一小节介绍了针对缓冲区溢出字符串的多态变形设计。第二小节介绍了多态蠕虫产生器的模型结构及设计思想。第三小节对本章内容进行总结。第四章为多态蠕虫产生器的实现,分为3个小节。第一小节介绍多态蠕虫产生器的功能实现,对多态2003蠕虫王序列进行了详细分析。第二小节对多态蠕虫产生器进行功能测试。第三小节是对本章内容的总结。第五章为结束语,对本文的内容进行总结,并对本课题研究方向做出了一些展望。第二章蠕虫与多态蠕虫的概述及实例分析掌握蠕虫的相关

37、概念是对蠕虫研究的基础,也只有对蠕虫的相关技术熟悉才能开展对蠕虫的进一步研究。下面我们从蠕虫的基本结构入手,介绍一下蠕虫的缓冲区溢出攻击及其多态变形技术,并通过实例对其进行详细说明,以便加深对它们的了解。2.1 蠕虫的实体结构和功能结构蠕虫相对于一般的应用程序,在实体结构和功能结构方面体现更多的复杂性,通过对多个蠕虫的分析,可以将蠕虫结构归纳为以下几个部分。2.1.1 蠕虫的实体结构蠕虫的实体结构共分为以下6部分,具体的蠕虫可能是由其中的几部分组成1。1 未编译的源代码由于有的程序参数必须在编译时确定,或者包含不同平台的链接库,所以网络蠕虫程序可能包含一部分未编译的公共程序源代码,由于在源代码

38、一级可以有很大的通用性,所以跨系统平台的网络蠕虫常常会包含源代码部分。2 已编译的链接模块不同的系统(同族)可能需要不同的运行模块,例如不同的硬件和系统厂商采用不同的运行库(UNIX族的系统中很常见),这样可以尽量减少程序编译的工作。3 可运行代码这是网络蠕虫的主体部分,整个网络蠕虫可能是由一个或多个编译好的程序组成。4 脚本利用脚本可以节省大量的程序代码,充分利用系统shell的功能。5 受感染系统上的可执行程序受感染系统上的可执行程序如文件传输等可被网络蠕虫作为自己的组成部分。很多网络蠕虫为了尽量减小自身的大小,同时完成更强大的功能,会直接执行系统平台提供的各种可执行文件。6 信息数据包括

39、已破解的口令、要攻击的地址列表、网络蠕虫自身的压缩包等等。2.1.2 基本功能模块蠕虫的基本功能模块共包括以下5部分:1) 搜索模块:寻找下一台要传染的机器。为提高搜索效率,可以采用一系列的搜索算法。2) 攻击模块:在被感染的机器上建立传输通道(传染途径)。为减少第一次传染数据传输量,可以采用引导式结构。3) 传输模块:主要是用于计算机间的蠕虫体复制。4) 信息搜集模块:搜集和建立被传染机器上的信息。5) 繁殖模块:建立自身的多个副本。在同一台机器上提高传染效率,避免重复传染3。2.1.3 扩展功能模块蠕虫的扩展功能模块由以下4部分组成:1) 隐藏模块:隐藏蠕虫,逃避简单的检测。2) 破坏模块

40、:摧毁或破坏被感染的计算机,或在被感染的计算机上留下后门程序等等。3) 通信模块:蠕虫间、蠕虫同黑客之间进行交流,可能是未来蠕虫发展的侧重点。4) 控制模块:调整蠕虫行为,更新其它功能模块,控制被感染计算机,可能是未来蠕虫发展的侧重点3。蠕虫程序的功能模型结构如图2.1所示。蠕虫程序功能模型基本功能模块扩展功能模块攻击模块传输模块信息搜集模块繁殖模块通信模块隐藏模块破坏模块控制模块搜索模块图2.1 蠕虫的结构模型在图2.1中,蠕虫模块分为基本模块和扩展模块,基本模块中包含搜索模块、攻击模块、传输模块、信息搜集模块、繁殖模块;扩展模块中包含隐藏模块、破坏模块、通信模块和控制模块。2.1.4 蠕虫

41、的工作流程蠕虫程序的工作流程可以分为漏洞扫描、攻击、传染、现场处理四个阶段。蠕虫程序扫描到有漏洞的计算机系统后,将蠕虫主体迁移到目标主机,然后蠕虫程序进入被感染的系统,对目标主机进行现场处理。现场处理部分的工作包括:隐藏、信息搜集等。同时蠕虫程序生成多个副本,重复上述流程,直到运行条件不满足2,如图2.2所示。是否否否是是扫描攻击现场处理复制成功发现目标开始是否满足运行条件结束图2.2 蠕虫的工作流程2.1.5特征码检测技术检测特征代码的方法被广泛地应用在病毒或蠕虫检测工具中。特征代码法是检测已知病毒或蠕虫的最简单、开销最小的方法。特征代码法的工作原理如下:采集已知病毒或蠕虫样本,在病毒或蠕虫

42、样本中,抽取特征代码。抽取时依据如下原则,抽取的代码比较特殊,不大可能与普通正常程序代码吻合。抽取的代码要有适当长度,一方面维持特征代码的唯一性,另一方面又不要有太大的空间与时间开销。如果病毒或蠕虫的特征代码增长1字节,要检测3000种病毒或蠕虫,增加的空间就是3000字节8。所以要在保持唯一性的前提下,尽量使特征代码长度缩短,以减少空间与时间开销,并将特征代码纳入病毒或蠕虫数据库。检测病毒或蠕虫时,打开被检测文件,在文件中检查是否含有病毒或蠕虫数据库中的特征代码。由于特征代码与病毒或蠕虫一一对应,因此如果在搜索中发现了符合病毒或蠕虫特征代码的内容,便可以断定被查文件中包含有该种病毒或蠕虫7。

43、要使蠕虫躲过这种检测方法,就要对蠕虫体进行多态变形,使同一种蠕虫的不同实例具有相异的形态,令特征码检测技术失效。至于如何进行蠕虫的多态,正是本课题要研究的内容。2.2 多态变形技术的概念多态变形技术的发展和形成,最早在计算机病毒中得到体现。一般把使用通常的特征码检测法无法检测(或者极难检测)的病毒(蠕虫)称为多态病毒(蠕虫)8。为了使蠕虫代码躲避检测程序的检测,需要不断对自身的执行代码进行变换,尽量隐藏检测程序依据的蠕虫特征代码,从而使检测程序无法正确侦测和清除该病毒。针对这种多态变形技术,只有对其自动变形机理进行深入的分析,才能找到有效的检测方法。因此,本文对计算机蠕虫的多态变形机理进行了深

44、入的系统分析,并对相关实例进行了讨论。2.2.1 什么是多态变形技术1 什么是多态多态9就是使蠕虫能够改变自身的存储形式的技术,使传统的依靠特征值检测的技术失效。2 什么是变形变形9则在多态的基础上更进一步。对整个蠕虫体都进行处理,使同一种蠕虫的不同实例的代码完全不同,不但没有固定的特征码,而且也无需还原成没有任何变化的蠕虫体。如果说对付多态还可以通过虚拟机等技术7,待蠕虫体被还原之后检测特征值,那么完全的变形则使得这种技术完全失效10。2.2.2 常见的多态变形技术1 多态变形病毒多态变形病毒日益增多,这种现象可以看作是病毒作者为了反击高级病毒扫描器而做出的反应。因为设计合理的扫描器可以病毒

45、的特征码发现病毒,因此,挫败扫描器的方法就是设计可以改变自身代码的病毒,从而使搜索字符串的识别技术失去效果。 多态变形病毒面对扫描器时,主要是通过代码变换及加密来隐藏自己。常见的策略是用变化的key加密病毒体的主要部分,而保持解密执行程序不变。为了防止搜索字符串的方法检测到,解密代码在每一次的感染过程中都会改变。然而,设计多态变形病毒要求病毒作者有很扎实的基本功,以及很多技巧。因此,这在段相对较长的时间里,导致世面上较少出现真正的多态变形病毒。当然,世界不会一成不变。因此,在某个阶段,从事病毒贸易的大哥级人物注意到这种现象,决定通过编写并分布多态变形生成器的方式,向那些缺乏技能的小弟们伸出援手

46、。2多态变形生成器从根本上说,多态变形生成器是一些例程,可以与已存在的病毒链接。但生成器本身并不是病毒;它们的目的是使用多态变形的技术来隐藏真正的病毒。第一个通用的多态变形生成是MutationEngine,也被称为MtE。在1991年出现,大概有十亿多种不同的排列,可以与任何病毒链接,它的出现宣告了即时多态变形的时代到来了。时至今日,大约有33种已知的病毒使用了MtE。 其它的多态变形生成在MtE出现后接踵而至。1992年的晚些时候就出现了两个,其中一个就是TridenTPolymorphicEngine(TPE)。TPE出生在荷兰。从根本上说,它处理的排列数比MtE要少一些,但是它为反病毒

47、产品准备了另外的难题,因为它生成的译码器比MtE生成的更普通,更没有代表性(也就更难被检测到)。另一个是NuKE Encryption Device(NED)。NuKE的生成器不是很高级,但它的独到之处是它不像大部分其它的多态变形生成器那样发布目标模块,而是发布易读的源码。 其它比较知名的多态变形生成器还有:MultipleEncryptor(DAME)DarwinianGeneticMutationEngine(DGME)DarkSlayerMutationEngine(DSME)MutaGenGunsnRosesPolymorphicEngine(GPE)DarkSlayerConfusi

48、onEngine(DSCE)。这些生成器都是通过地址网络,病毒交换BBS与因特网上的专用区域交换的。3操作原理 多态变形生成器的常见形式是一引动代码模块,程序可以把它插入程序。在这之后,程序就可以调用代码模块中包含的函数了。这个过程被称为链接。生成器一旦链接到病毒,将变成病毒的一部分。自那以后,病毒四处传播时,都会带着生成器。应该注意,生成器本身并不在意它与哪种程序链接。虽然说已知的多态变形生成器明显是为病毒而写的,但从根本上说,它们也可以用于其它种类的程序。 当使用多态变形生成器的病毒感染程序文件时(或其它的对象),会要求生成器生成病毒体的加密拷贝和生成器本身。除此之外,生成器还将生成译码器

49、一个例程,把已加密的代码还原成真正的病毒代码。生成器使用的加密技术相对比较简单。不过,它们在每次执行时都会改变加密key。这样一来将使检测这样的病毒变得非常困难,但加密的病毒也有一个命门:解密例程,如果想要它可执行,就不能加密它。因此,多态变形生成器的真正作用是通过它变换解密例程的能力来衡量的。所有的多态变形生成器为了每次都能创建不同的算法,需要一些随机化例程。有些生成器允许病毒作者用自己喜欢的随机化例程替换原来的。多态变形生成可能创建完全不同的加密方法以及与之对应的各不相同的解密例程。它们一般是通过以下的方式修改解密例程:移动例程周围的指令,在随机的地方增加无用的指令,使用不同的处理器寄存器

50、和操作码。这样做的主要目的是使解密例程对应的二进制代码在不同的感染体内完全不一样。这样将使那些用固定搜索字符串来搜索解密例程的方法失效因为多态变形病毒生成的感染体并不存在相同的搜索目标(字符串)。 使用多态变形生成器的病毒怎样感染文件: 1.在感染之前的干净文件。我们把它称为受害文件。 2.病毒通过修改受害文件的第一条指令开始它的感染过程。它用jump文件尾部的指令替换它们。被替换的字节保存在病毒体内。 3.接下来,病毒调用多态变形生成器,生成病毒代码的加密拷贝和生成器本身。生成器也将生成解密例程,并把它添加到受害文件的尾部。 4.把加密的代码添加到受害文件的尾部。这个加密的部分包含三小部分:

51、病毒体的真正拷贝;被替换的受害文件的第一条指令;多态变形生成器的代码。2.2.3 多态变形病毒实例分析Win98.BlackBat随着计算机技术的发展,蠕虫和病毒的界限越来越模糊,它们之间的许多技术都是共用的,并且多态变形病毒的发展时间相对较长,变形病毒的实例也比较典型,所以在这里采用了一个典型的变形病毒的实例来分析蠕虫的多态变形技术是合适的,因为他们用到的多态变形技术是相同的。Win98.BlackBat是一个典型变形病毒,它是由RohitabBatra在1999年设计的,虽然Windows95、98的时代已经过去,但它的设计思想代表一个时代的病毒设计,其核心思想仍然被广泛采用。要想有效地识

52、别出多态变形蠕虫(病毒),就必须了解多态变形蠕虫(病毒)的工作原理。Win98.BlackBat病毒的变形功能主要由三个函数EncryptVirus、MutateDecryptor和RadomRegister以及程序入口段解密器Decryptor来完成13。下面是对每一部分的功能及工作原理的详细分析。1 解密函数Decryptor把程序入口写成机器码而非汇编语言,这纯粹是为了编程的方便,因为Win98.BlackBat在变形的过程中,就是对这段程序中的寄存器进行操作,为了编程方便所以采用了机器码的表示方法。同时必须指出的一点是两段代码的唯一区别在于DB 00字节,在翻译成汇编语言以后,它将和D

53、B80、DB36一起组成xor byte ptresi, 00h,但要明确的是尽管它们是一条汇编指令,可标号EncryptionKey仍然起作用,也就是说无论在何种情况下EncryptionKey都标志着DB 00这个字节,而这个字节正是密钥所在,密钥的设置在EncryptVirus函数中完成,00只是一个初始值。病毒程序入口处的机器码翻译成汇编语言后的结果,如表2.1所示。esi中的内容就是被加密程序的入口,ecx中的内容是被加密的程序代码的长度。Encrypted_SIZE的值是$-offset EncryptedVirusCode,操作符“$”所表示的是当前程序计数器的值,所以Encry

54、pted_SIZE才是加密代码的长度。程序按照Encrypted_SIZE的值对程序进行解密,直到ecx的值为0,然后进入主程序。在主程序中会对程序代码进行再次加密并置密钥,而病毒重新执行时则用上次生成的新密钥进行解密,以使系统能够识别代码的内容。解密器程序的流程如图2.5所示。表2.1 解密器程序StartOfVirusCode:Call GetDeltaGetDeltaDB 5EhDB 83hDB 0C6hDB offset EncryptedVirusCodeoffset GetDeltaDD ENCRYPTED_SIZEDecryptByte:DB 80hDB 36hEncryptio

55、nKey:DB 00hDB 46hDB 49hjnz DecryptByteEncryptedVirusCodejmp WinMainStartOfVirusCode:call GetDeltaGetDelta:pop esiadd esi, EncryptedVirusCode-GetDeltamov ecx, Encrypted_SIZEDecryptByte:xor btye ptresi, 00hEncryptionKey:inc esidec ecxjnz DecryptByteEncryptedVirusCodejmp WinMain是获得加密入口和被加密的代码长度解密是否解密结束

56、否开始结束图2.5 解密函数流程图2 加密函数EncryptVirusWin98.BlackBat病毒的加密函数程序如表2.2所示。表2.2 加密器程序EncryptVirus PROCpush ediin al,40hIF DEBUGxor al alENDIFmov ecx,ENCRYPTED_SIZEadd edi,LOADER_SIZEEncryptByte:xor byte ptredi,alinc ediloop EncryptByte:pop edimov byte ptredi+EncryptionKey-StartOfVirusCode,alcall MutateDecryptorretEncryptVirusEND 该函数包括以下内容:首先,病毒入口地址在程序开始以前就己经储存在了edi中,这个功能由InfectFile函数来完成;其次,获得随机数是使用了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论