网络上一般对蠕虫和病毒阐述的不是很清楚。个人感觉蠕虫才是网络最大的威胁,所以写这一篇小文字,来对网络蠕虫进行一下初步的学习。
一.网络蠕虫和病毒的区别
病毒和蠕虫是不同的概念,之所以要区分这个,是为了对蠕虫的重视。对于蠕虫的定义一些人的看法历来不同。蠕虫能真正危害到整个网络。如果有一天真的网络战争开始,金州觉得蠕虫在目前看来,会是一个终极的武器。
郑辉先生在其博士毕业论文《internet蠕虫研究》中分析两者的区别如下,
1.存在形式,病毒是寄生,蠕虫是独立个体。
2.复制形式,病毒是插入到宿主文件(金州注释:即依靠文件比如win系统的pe结构),蠕虫是自身的拷贝。(金州注释,这一点是任何蠕虫能发展的根本。)
3.传染机制,病毒是宿主程序运行。(金州注释,即需要运行病毒文件或含病毒文件)蠕虫是系统漏洞。
4.攻击目标,病毒是本地文件(金州注释,即某台机器)。蠕虫是网络上的其他计算机。
5.触发传染,病毒是计算机使用者,蠕虫是程序自身。
6.影响重点,病毒是文件系统,蠕虫是网络性能和系统性能。
7.计算机使用者的角色,病毒传播中的关键环节。蠕虫无关。(金州注释,是不是会中毒,和计算机的操作者的水平有很大关系,水平越高,中毒的可能性越小,但是不论你水平多高,都很难防范蠕虫,这个问题下面解释。)
8.防治措施,病毒从系统文件中摘除,蠕虫打补丁。
9.对抗主体,病毒面对的是计算机使用者,反病毒的厂商。蠕虫面对的是系统软件和服务软件提供商,网络管理人员。
从中不难看出,蠕虫和病毒的最大区别,用简单的话说就是,蠕虫是活的,有生命的,就像在网络中游走的一个人一样,而病毒却是半生命体,像是机器人,需要一定的触发机制。病毒也具有传播性,但是传播能力相对非常弱小。并且因为系统操作者的水平不同,病毒能造成的危害也不同。
二.蠕虫对抗蠕虫的浅显看法
以上郑辉先生列举的特点中略过了一点,也是我最喜欢的一点,个人感觉这一点很有前途。即病毒一般有害,否则也不叫病毒了。但是蠕虫不一定,有一些好的蠕虫,有些人也希望开发出好的蠕虫。例如最早的蠕虫,1980年Xerox PARC 研究人员编写蠕虫的目的是为了辅助科学实验。core war游戏中,Reaper(收割者)蠕虫会寻找 Creeper(爬行者)蠕虫,然后杀掉它,最后自杀。以后在lion蠕虫横行的时候,这个蠕虫据说是原来红盟的lion主创,为对付日本用的,后来好像出了问题,为了补救,出现了cheese蠕虫,就是针对lion蠕虫的,会清除lion,这应该是迄今为止的为数不多的一个真正在internet开展的蠕虫对抗,但是并不成功,因为蠕虫传播的基础是占用大量的网络资源。这几年来好像没有这样的蠕虫对抗出现。之所以出现cheese蠕虫和lion蠕虫的对抗,金州觉得很大原因是因为当时lion蠕虫套用了ramen蠕虫的部分代码,ramen代码当时已经为一些人掌握。lion蠕虫也很快被解析出来。2001.3月lion蠕虫被发现,2001.5.5日有人发布了《狮子蠕虫解析(LinuxAid)》一文,这应该是国内比较早的比较好的对蠕虫具体问题的分析文章。2002年左晓栋,戴英侠发布《“狮子”蠕虫分析及相关讨论》,这篇文章我没有,不知道核心和《狮子蠕虫解析》是不是类似。lion蠕虫之所以能被很快的解析出来,主要是加密做的不好,具体可参考趋势病毒库中对它的描述。国外Max Vision也写过对抗ADM蠕虫的蠕虫。这篇文字是初步探讨,就不多说了。
总之,依靠蠕虫对抗蠕虫的思路虽然不错,但是执行起来并不是很有可行性。金州浅显觉得原因有二
1.是蠕虫因为利用漏洞传播,本身就具有时效性。当补丁打好之后,蠕虫基本就over了而且随着网络上一些硬件防火墙的推广和个人防火墙的性能提高,网络安全监控和预警体系的加强,对蠕虫地抵制能力大大提高。尤其是硬件防火墙。简单的蠕虫越来越难大范围的传播。使蠕虫对抗蠕虫失去了实际的空间,并且容易丧失时效性。
2.凡是蠕虫都是依快速传播为本能,这种传播占用大量的网络资源,甚至极可能造成网络的瘫痪。这使蠕虫对抗蠕虫暗含了危险性。
但是蠕虫对抗蠕虫毕竟是一个很好的思路,尤其是在小范围内。如某些关键系统,如银行或者军方系统,当针对这些系统的蠕虫在这些安全性较高的内部网快速传播的时候,用蠕虫对抗蠕虫应该是最快的解决方法。以上金州个人看法,比较浅陋。见笑。
三.浅显的对蠕虫的判断
金觉得蠕虫在恶意程序中具有以下比较独特的特点(看法比较菜。),
1.传播速度快,1988年,morris蠕虫几天之内感染了6000台internet服务器,到了2001年codered红色代码爆发,9小时内攻击25台计算机。此蠕虫据说产生于中美黑客大战末期,攻击后留下“Hacked by Chinese!”字样,估计是中国人写的。coderedII是美国人报复,遇到中文系统会增加攻击线程。codered传播体系优越,技术完善。个人感觉是蠕虫发展的里程碑。伯克莱大学的Nicholas Weaver 还曾经预言会出现可以在半个小时内感染整个internet的蠕虫。总之现在蠕虫的传播速度是越来越快了,金州觉得这正是它最大的特点和最大的危害性所在。
2.不会重复爆发。一个蠕虫,尤其是感染较广的蠕虫一般只会爆发一次。这个道理很简单,蠕虫能快速传播依靠的是系统的漏洞,一旦出现较广的危害,漏洞自然会很快的被补上。蠕虫如果失去了传播的途径,灭亡是必然的,单机的蠕虫都不难被清除掉。蠕虫和病毒不一样,有些病毒难以清除,插入较深,但是蠕虫的特点在于快速传播,不是清除不掉,而是你赶不上它传播的速度。不过最近很多蠕虫运用了病毒的一些驻留技术,就像一些病毒运用了蠕虫的传播技术。但是仍然很难成为主流。原因还是蠕虫传播的第一位决定的。
3.利用系统漏洞。蠕虫一般利用系统漏洞传播,这个漏洞一般指的是1.系统文件的漏洞,比如outlook,ie,iis等漏洞都可以造成蠕虫的迅速传播,例如codered利用iis的.ida漏洞。sadmind蠕虫利用unicode解码漏洞等。只有主动能利用这些漏洞快速传播的才是蠕虫。很多利用了系统文件漏洞但是需要手工触发的并不能算是蠕虫,例如利用mime漏洞的就不是,那个需要一定的触发机制,虽然当时影响很大。金山公司发布的MSN小尾巴(worm.MSNFunny)蠕虫病毒分析报告中提到的那个也不是蠕虫,金州个人觉得归为一种病毒比较恰当而不是蠕虫。2.利用系统本身漏洞,缓冲区溢出被用的较多,如nimda蠕虫。尤其是一些新的exploit很可能被蠕虫利用起来。
4.是活的。就像一个活人一样。如果真如记忆碎片《融合生物学特性的蠕虫病毒设计》那样智能化的发展起来,甚至可以比他说的更智能化。也许那样蠕虫将能成为一种网络中永生的东西。智能化的蠕虫已经出现了。但是还不是很完善。
最后,个人感觉蠕虫是一个大问题,应该是网络战争中最有普遍效力的武器。也是最难防范的网络灾难,国内研究的文章找到的并不多,研究深入的找到的也并不多,可能是因为目前来说一个蠕虫不可能长期泛滥的缘故。不过据说很多很厉害的蠕虫都是国内的大哥们弄出来的。高手一定多多。可能是一些好的文章我孤陋见不到,学习不到,可惜可惜。所以只能简单的说些用处不大的东西。感谢郑辉大哥的精彩著作并致敬。
http://www.cnxhacker.com/Article/safe/virus/200612/7273.html