蠕虫的行为特征描述和工作原理分析资料下载.pdf
《蠕虫的行为特征描述和工作原理分析资料下载.pdf》由会员分享,可在线阅读,更多相关《蠕虫的行为特征描述和工作原理分析资料下载.pdf(11页珍藏版)》请在冰点文库上搜索。
从蠕虫产生开始,十几年来,很多研究人员对蠕*高等学校博士点学科点专项科研基金资助课题(编号:
2000005516)。
*作者简介:
郑辉(1972),男,吉林伊通人,博士研究生,主要研究领域为网络与信息安全。
李冠一(1978),女,辽宁鞍山人,硕士研究生,主要研究领域为模式识别,计算机视觉与图像处理等。
涂奉生(1937),江西南昌人,博士生导师,主要研究领域为CIMS,DEDS理论,制造系统及通讯理论。
虫和病毒这两个概念进行了区分714,但描述基本都很粗略,而且不同研究人员给出的分类也不一致。
本文试图明确区分这两个概念。
通过对几种典型的蠕虫程序进行分析,本文讨论了蠕虫的主要行为特征。
文献614提出了蠕虫的功能结构描述,但由于对蠕虫和病毒两种程序的行为特征区分的不明确,这些功能模型结构不清晰,体系不完整。
本文在参考前人工作的基础上,提出了比较清晰全面的蠕虫程序的统一功能模型来完成对蠕虫程序的功能结构描述。
并进一步对蠕虫的实体结构进行了分析,依据功能结构描述和实体结构分析,给出了针对蠕虫防治的几点建议。
另外,本文也对蠕虫技术的未来发展趋势进行了描述。
二、蠕虫的定义1、蠕虫的原始定义:
蠕虫这个生物学名词在1982年由XeroxPARC的JohnF.Shoch等人最早引入计算机领域15,并给出了计算机蠕虫的两个最基本特征:
“可以从一台计算机移动到另一台计算机”和“可以自我复制”。
他们编写蠕虫的目的是做分布式计算的模型试验,在他们的文章中,蠕虫的破坏性和不易控制已经初露端倪。
1988年Morris蠕虫爆发后,EugeneH.Spafford为了区分蠕虫和病毒,给出了蠕虫的技术角度的定义,“计算机蠕虫可以独立运行,并能把自身的一个包含所有功能的版本传播到另外的计算机上。
”(wormisaprogramthatcanrunbyitselfandcanpropagateafullyworkingversionofitselftoothermachines.)8。
2、病毒的原始定义:
人们在探讨计算机病毒的定义时,常常追溯到DavidGerrold在1972年的发表的科幻小说WhenHarlieWasOne,但计算机病毒的技术角度的定义是由FredCohen在1984年给出的,“计算机病毒是一种程序,它可以感染其它程序,感染的方式为在被感染程序中加入计算机病毒的一个副本,这个副本可能是在原病毒基础上演变过来的。
”(aprogramthatcaninfectotherprogramsbymodifyingthemtoincludeapossiblyevolvedcopyofitself.)9。
1988年Morris蠕虫爆发后,EugeneH.Spafford为了区分蠕虫和病毒,将病毒的含义作了进一步的解释。
“计算机病毒是一段代码,能把自身加到其它程序包括操作系统上。
它不能独立运行,需要由它的宿主程序运行来激活它。
”(virusisapieceofcodethataddsitselftootherprograms,includingoperatingsystems.itcannotrunindependentlyanditrequiresthatitshostprogramberuntoactivateit.)8。
3、蠕虫、病毒之间的区别与联系:
计算机蠕虫和计算机病毒都具有传染性和复制功能,这两个主要特性上的一致,导致二者之间是非常难区分的,尤其是近年来,越来越多的病毒采取了部分蠕虫的技术,另一方面具有破坏性的蠕虫也采取了部分病毒的技术,更加剧了这种情况。
但对计算机蠕虫和计算机病毒进行区分还是非常必要的,因为通过对它们之间的区别、不同功能特性的分析,可以确定谁是对抗计算机蠕虫的主要因素、谁是对抗计算机病毒的主要因素;
可以找出有针对性的有效对抗方案;
同时也为对它们的进一步研究奠定初步的理论基础。
本文给出了病毒和蠕虫的一些差别,如下表(表1):
病毒蠕虫存在形式寄生独立个体复制机制插入到宿主程序(文件)中自身的拷贝传染机制宿主程序运行系统存在漏洞(vulnerability)搜索机制(传染目标)针对本地文件针对网络上的其它计算机触发传染计算机使用者程序自身影响重点文件系统网络性能、系统性能计算机使用者角色病毒传播中的关键环节无关防治措施从宿主文件中摘除为系统打补丁(Patch)对抗主体计算机使用者、反病毒厂商系统提供商、网络管理人员表1.病毒和蠕虫的一些差别4、蠕虫定义的进一步说明:
在上面提到的蠕虫原始定义和病毒原始定义中,都忽略了相当重要的一个因素,就是计算机使用者,定义中都没有明确描述计算机使用者在其整个传染机制中所处的地位。
计算机病毒主要攻击的是文件系统,在其传染的过程中,计算机使用者是传染的触发者,是传染的关键环节,使用者的计算机知识水平的高低常常决定了病毒所能造成的破坏程度。
而蠕虫主要利用计算机系统漏洞(vulnerability)进行传染,搜索到网络中存在漏洞的计算机后主动进行攻击,在传染的过程中,与计算机操作者是否进行操作无关,从而与使用者的计算机知识水平无关。
另外,蠕虫的定义中强调了自身副本的完整性和独立性,这也是区分蠕虫和病毒的重要因素。
可以通过简单的观察攻击程序是否存在载体来区分蠕虫与病毒;
目前很多破坏性很强的病毒利用了部分网络功能,例如以信件作为病毒的载体,或感染Windows系统的网络邻居共享中的文件。
通过分析可以知道,Windows系统的网络邻居共享本质上是本地文件系统的一种扩展,对网络邻居共享文件的攻击不能等同与对计算机系统的攻击。
而利用信件作为宿主的病毒同样不具备独立运行的能力。
不能简单的把利用了部分网络功能的病毒统统称为蠕虫或蠕虫病毒,因为它们不具备上面提到的蠕虫的基本特征。
通过简单的分析,可以得出结论,文献1213中提到的“Morris蠕虫病毒”是蠕虫而非病毒;
“Happy99蠕虫病毒”、“Mellisa网络蠕虫宏病毒”、“LoverLetter网络蠕虫病毒”、“SirCam蠕虫病毒”是病毒而非蠕虫;
“NAVIDAD网络蠕虫”、“Blebla.B网络蠕虫”、“VBS_KAKWORM.A蠕虫”是病毒而非蠕虫。
三、蠕虫发展的历史1980年,XeroxPARC的研究人员编写了最早的蠕虫15,用来尝试进行分布式计算(DistributedComputation)。
整个程序由几个段(Segment)组成,这些段分布在网络中的不同计算机上,它们能够判断出计算机是否空闲,并向处于空闲状态的计算机迁移。
当某个段被破坏掉时,其它段能重新复制出这个段。
研究人员编写蠕虫的目的是为了辅助科学实验。
1988年11月2日,Morris蠕虫8101618发作,几天之内6000台以上的Internet服务器被感染,损失超过一千万美元。
它造成的影响是如此之大,使它在后来的10几年里,被反病毒厂商作为经典病毒案例,虽然它是蠕虫而非病毒;
1990年,Morris蠕虫的编写者RobertT.Morris被判有罪并处以3年缓刑、1万美元罚金和400小时的社区义务劳动。
Morris蠕虫通过fingerd、sendmail、rexec/rsh三种系统服务中存在漏洞进行传播。
1989年10月16日,WANK蠕虫34被报告,它表现出来强烈的政治意味,自称是抗议核刽子手的蠕虫(wormsagainstthenuclearkillers),将被攻击的DECVMS计算机的提示信息改为“表面上高喊和平,背地里却准备战争”(Youtalkoftimesofpeaceforall,andthenprepareforwar.)。
WANK蠕虫是通过系统弱口令漏洞进行传播的。
1998年5月,ADM蠕虫1920被发现,它只感染Linux系统,由于程序自身的限制,它的传染效率较低。
ADM蠕虫是通过域名解析服务程序BIND中的反向查询(inversequery)溢出漏洞进行传播的。
1999年9月,Millennium蠕虫21被报告,它可能是最没有名气的蠕虫,因为只有一个人声称自己的计算机系统被它感染,并且人们能够得到的蠕虫代码不能正常工作。
Millennium蠕虫只感染Linux系统,它入侵系统后,会修补所有它利用的系统漏洞。
它通过imapd、qpopper、bind、rpc.mountd四种系统服务中存在漏洞进行传播。
2001年1月,Ramen蠕虫22在Linux系统下发现,它的名字取自一种面条。
它在15分钟内可以扫描13万个地址,早期的版本只修改被入侵计算机Web服务下的index.html文件,在利用系统漏洞入侵后会为系统修补好漏洞。
但后期的版本中被加入了隐藏其踪迹的工具包(Rootkit),并在系统中留下后门。
虽然它是蠕虫而非病毒,但仍被媒体称为“Linux系统下的首例病毒”。
Ramen蠕虫通过wuftpd、rpc.statd、LPRng三种系统服务中存在漏洞进行传播。
2001年3月23日,Lion(1i0n)蠕虫被发现2324;
它之所以引起了广泛的注意,是因为它是中国的一名黑客写出来的。
根据lion蠕虫编写者的自述,他是四年制的中专生,2000年3月才第一次上网。
Lion蠕虫集成了多个网上常见的黑客工具如扫描工具Pscan、后门工具t0rn、DDoS工具TFN2K等等,并把被攻击的主机上重要信息如口令文件等发往,这些信息后来在Internet上被广为传播,使曾被蠕虫攻击过的系统即使修补好系统漏洞后,仍然受到潜在的威胁。
Lion蠕虫通过域名解析服务程序BIND中的TSIG漏洞进行传播。
代码中有明显的对Ramen蠕虫的抄袭痕迹。
2001年4月3日,Adore蠕虫被发现35,它也曾被称为Red蠕虫,对系统攻击后,会向,,,等处发送系统信息,所以有计算机专家推断Adore蠕虫为中国黑客编写。
经分析Adore蠕虫是基于Ramen蠕虫和Lion蠕虫写成,它综合利用了这两个蠕虫的攻击方法。
Adore蠕虫通过wuftpd、rpc.statd、LPRng、BIND四种系统服务中存在漏洞进行传播。
2001年5月,cheese蠕虫725被发现,这个蠕虫号称是友好的蠕虫(friendlyworm),是针对Lion蠕虫编写的,它利用Lion蠕虫留下的后门(10008端口的rootshell)进行传播。
进入系统后,它会自动修补系统漏洞并清除掉Lion蠕虫留下的所有痕迹。
它的出现,被认为是对抗蠕虫攻击的一种新思路,但不管怎样,它造成的网络负载也会导致网络不可用,所以对cheese蠕虫的评价毁誉参半。
2001年5月,sadmind蠕虫2627被发现,也有人称之为sadmind/IIS蠕虫,它被认为是第一个同时攻击两种操作系统的蠕虫。
有不确定信息表明它为中国黑客所写。
它利用SUN公司的Saloris系统(UNIX族)中的sadmind服务中的两个漏洞进行传播,同时利用微软公司IIS服务器中的Unicode解码漏洞破坏安装了IIS服务器的计算机上的主页。
2001年7月19日,CodeRed蠕虫1328爆发,在爆发后的9小时内就攻击了25万台计算机。
造成的损失估计超过20亿美元,随后几个月内产生了威力更强的几个变种,其中CodeRedII造成的损失估计12亿美元。
由于2001年4月1日的中美撞机事件导致了2001年5月1日前后的所谓中美黑客大战,而CodeRed蠕虫产生的时间刚好是黑客大战的尾声,并且CodeRed蠕虫在被攻击的计算机的网页上留下“HackedbyChinese!
”字样,所以有计算机专家推断CodeRed为中国黑客编写。
CodeRedII在传染过程中,如果发现被感染的计算机使用的是中文系统,就会把攻击线程数从300增加到600,从而造成更大的破坏。
根据这个特征,有计算机专家推断CodeRedII是他国技术人员对中国技术人员的一种报复。
不象Morris蠕虫和Lion蠕虫那样被人评价为粗制滥造,CodeRed蠕虫用到了很多相当高级的编程技术。
CodeRed蠕虫的名字取自一种软饮料,通过微软公司的IIS服务的.ida漏洞(IndexingService中的漏洞)进行传播。
2001年9月18日,Nimda蠕虫2932被发现,不同于以前的蠕虫,Nimda开始结合病毒技术。
它的定性引起了广泛的争议,NAI(著名的网络安全公司,反病毒厂商McAfee是它的子公司)把它归类为病毒,CERT(ComputerEmergencyResponseTeam)把它归类为蠕虫,Incidents.Org(国际安全组织)同时把它归入病毒和蠕虫两类。
Nimda蠕虫执行代码里包含“ConceptVirus(CV)5.5,Copyright2001RP.China”,由此有计算机专家推断这个蠕虫也是中国黑客所编写的。
对Nimda造成的损失评估数据从5亿美元攀升到26亿美元后,继续攀升,到现在已无法估计。
自从它诞生以来到现在,无论哪里、无论以什么因素作为评价指标排出的十大病毒排行榜,它都榜上有名。
Nimda蠕虫只攻击微软公司的Winx系列操作系统,它通过电子邮件、网络邻近共享文件、IE浏览器的内嵌MIME类型自动执行(AutomaticExecutionofEmbeddedMIMETypes)漏洞、IIS服务器文件目录遍历(directorytraversal)的漏洞、CodeRedII和sadmind/IIS蠕虫留下的后门共五种方式进行传播。
其中前三种方式是病毒传播的方式。
以上列出了大部分蠕虫的简要说明。
有非常多的文献提到最早的蠕虫是Creeper(爬行者)和Reaper(收割机),Creeper在计算机之间传播复制自己,Reaper在计算机之间寻找Creeper并杀死它,并在最后自杀掉;
进而提到它们是CoreWar(磁心大战)游戏中最著名的两个例子。
但实际情况正好相反,CoreWar游戏的设计者A.K.Dewdney在文献33中提到,这两个传说(folklore)中的蠕虫是他设计这个游戏的灵感来源。
不像病毒一开始被制造出来就是为了破坏计算机文件系统,最原始的蠕虫是计算机工作者的助手,但随着时间的流逝,蠕虫也变成了怀有恶意的编程人员释放的杀手。
从上面描述的蠕虫的发展的历史也可以看到,最近这一两年是蠕虫出现的高峰,并且造成了非常大的危害。
四、蠕虫的行为特征通过对蠕虫的整个工作流程进行分析,可以归纳得到它的行为特征:
1、主动攻击:
蠕虫在本质上已经演变为黑客入侵的自动化工具,当蠕虫被释放(release)后,从搜索漏洞,到利用搜索结果攻击系统,到复制副本,整个流程全由蠕虫自身主动完成。
2、行踪隐蔽:
由于蠕虫的传播过程中,不象病毒那样需要计算机使用者的辅助工作(如执行文件、打开文件、阅读信件、浏览网页等等),所以蠕虫传播的过程中计算机使用者基本上不可察觉。
3、利用系统、网络应用服务漏洞:
除了最早的蠕虫在计算机之间传播是程序设计人员许可、并在每台计算机上做了相应的配合支持机制之外,所有后来的蠕虫都是要突破计算机系统的自身防线,并对其资源进行滥用。
计算机系统存在漏洞是蠕虫传播的前提,利用这些漏洞,蠕虫获得被攻击的计算机系统的相应权限,完成后继的复制和传播过程。
这些漏洞有的是操作系统本身的问题,有的是应用服务程序的问题,有的是网络管理人员的配置问题。
正是由于漏洞产生原因的复杂性,导致面对蠕虫的攻击防不胜防。
4、造成网络拥塞:
蠕虫进行传播的第一步就是找到网络上其它存在漏洞的计算机系统,这需要通过大面积的搜索来完成,搜索动作包括:
判断其它计算机是否存在;
判断特定应用服务是否存在;
判断漏洞是否存在。
这不可避免的会产生附加的网络数据流量。
即使是不包含破坏系统正常工作的恶意代码的蠕虫,也会因为它产生了巨量的网络流量,导致整个网络瘫痪,造成经济损失。
5、降低系统性能:
蠕虫入侵到计算机系统之后,会在被感染的计算机上产生自己的多个副本,每个副本启动搜索程序寻找新的攻击目标。
大量的进程会耗费系统的资源,导致系统的性能下降。
这对网络服务器的影响尤其明显。
6、产生安全隐患:
大部分蠕虫会搜集、扩散、暴露系统敏感信息(如用户信息等),并在系统中留下后门。
这些都会导致未来的安全隐患。
7、反复性:
即使清除了蠕虫在文件系统中留下的任何痕迹,如果没有修补计算机系统漏洞,重新接入到网络中的计算机还是会被重新感染。
这个特性在Nimda蠕虫的身上表现的尤为突出,计算机使用者用一些声称可以清除Nimda的防病毒产品清除本机上的Nimda蠕虫副本后,很快就又重新被Nimda蠕虫所感染。
8、破坏性:
从蠕虫的历史发展过程可以看到,越来越多的蠕虫开始包含恶意代码,破坏被攻击的计算机系统,而且造成的经济损失数目越来越大。
以上描述主要针对蠕虫个体的活动行为特征,当网络中多台计算机被蠕虫感染后,将形成具有独特行为特征的“蠕虫网络”(wormnetwork),文献6初步讨论了蠕虫网络的传染速度变化趋势,文献14初步讨论了蠕虫网络的流量变化趋势。
关于蠕虫网络的其它特征,还有待进一步的研究和讨论。
五、蠕虫的工作原理1、蠕虫程序的实体结构:
蠕虫程序相对于一般的应用程序,在实体结构方面体现更多的复杂性,通过对多个蠕虫程序的分析,可以粗略的把蠕虫程序的实体结构分为如下的六大部分,具体的蠕虫可能是由其中的几部分组成:
?
未编译的源代码:
由于有的程序参数必须在编译时确定,所以蠕虫程序可能包含一部分未编译的程序源代码;
已编译的链接模块:
不同的系统(同族)可能需要不同的运行模块,例如不同的硬件厂商和不同的系统厂商采用不同的运行库,这在UNIX族的系统中非常常见;
可运行代码:
整个蠕虫可能是由多个编译好的程序组成;
脚本:
利用脚本可以节省大量的程序代码,充分利用系统shell的功能;
受感染系统上的可执行程序:
受感染系统上的可执行程序如文件传输等可被蠕虫作为自己的组成部分;
信息数据:
包括已破解的口令、要攻击的地址列表、蠕虫自身的压缩包等等;
2、蠕虫程序的功能结构:
鉴于所有蠕虫都具有相似的功能结构,本文给出了蠕虫程序的统一功能模型,统一功能模型将蠕虫程序分解为基本功能模块和扩展功能模块。
实现了基本功能模块的蠕虫程序就能完成复制传播流程,包含扩展功能模块的蠕虫程序则具有更强的生存能力和破坏能力。
如图1所示。
图1.蠕虫程序功能模型基本功能由五个功能模块构成:
搜索模块:
寻找下一台要传染的机器;
为提高搜索效率,可以采用一系列的搜索算法。
攻击模块:
在被感染的机器上建立传输通道(传染途径);
为减少第一次传染数据传输量,可以采用引导式结构。
传输模块:
计算机间的蠕虫程序复制;
信息搜集模块:
搜集和建立被传染机器上的信息;
繁殖模块:
建立自身的多个副本;
在同一台机器上提高传染效率、判断避免重复传染。
扩展功能又四个功能模块构成:
隐藏模块:
隐藏蠕虫程序,使简单的检测不能发现。
破坏模块:
摧毁或破坏被感染计算机;
或在被感染的计算机上留下后门程序等等;
通信模块:
蠕虫间、蠕虫同黑客之间进行交流,可能是未来蠕虫发展的侧重点;
控制模块:
调整蠕虫行为,更新其它功能模块,控制被感染计算机,可能是未来蠕虫发展的侧重点;
3、蠕虫的工作流程:
蠕虫程序的工作流程可以分为扫描、攻击、现场处理、复制四部分,如图2所示,当扫描到有漏洞的计算机系统后,进行攻击,攻击部分完成蠕虫主体的迁移工作;
进入被感染的系统后,要做现场处理工作,现场处理部分工作包括隐藏、信息搜集等等;
生成多个副本后,重复上述流程。
图2.蠕虫程序工作流程六、蠕虫技术发展的趋势通过对蠕虫行为特征、实体结构、功能结构的分析,可以预测蠕虫技术发展的趋势将主要集中在如下几个方面:
1、与病毒技术的结合:
很早的病毒编写者就提出过这样的思路11,现在已经变成了现实。
越来越多的蠕虫开始结合病毒技术,在攻击计算机系统之后,继续攻击文件系统,从而导致传播机制的多样化。
2、动态功能升级技术:
提出动态调整蠕虫程序的思路6顺理成章,这样的蠕虫可以升级上文提到的功能模型中的除控制模块外的所有功能模块,从而获得更强的生存能力和攻击能力。
3、通信技术:
蠕虫之间、编写者与蠕虫之间传递信息和指令的功能将成为未来蠕虫编写的重点技术。
4、隐身技术:
操作系统内核一级的黑客攻防技术将会进一步纳入到蠕虫的功能中来隐藏蠕虫的踪迹。
5、巨型蠕虫:
蠕虫程序包含多操作系统的运行程序版本,包含丰富的漏洞库,从而具有更强大的传染能力;
6、分布式蠕虫:
数据部分同运行代码分布在不同的计算机之间,运行代码在攻击时,从数据存放地获取攻击信息。
同时,攻击代码用一定的算法来在多台计算机上寻找、复制数据的存放地。
不同功能模块分布在不同的计算机之间,协调工作,产生更强的隐蔽性和攻击能力。
七、蠕虫