分析蠕虫病毒传播模式
作者: 来源: 添加时间:2006-5-23 8:58:001.模式:扫描-攻击-复制。
从新闻中看到关于蠕虫的报道,报道中总是强调蠕虫如何发送大量的数据包,造成网络拥塞,影响网络通信速度。实际上这不是蠕虫程序的本意,造成网络拥塞对蠕虫程序的发布者没有什么好处。如果可能的话,蠕虫程序的发布者更希望蠕虫隐蔽的传播出去,因为蠕虫传播出去后,蠕虫的发布者就可以获得大量的可以利用的计算资源,这样他获得的利益比起造成网络拥塞的后果来说显然强上万倍。但是,现有的蠕虫采用的扫描方法不可避免的会引起大量的网络拥塞,这是蠕虫技术发展的一个瓶颈,如果能突破这个难关,蠕虫技术的发展就会进入一个新的阶段。
现在流行的蠕虫采用的传播技术目标一般是尽快地传播到尽量多的电脑中,于是扫描模块采用的扫描策略是这样的:
随机选取某一段IP地址,然后对这一地址段上的主机扫描。笨点的扫描程序可能会不断重复上面这一过程。这样,随着蠕虫的传播,新感染的主机也开始进行这种扫描,这些扫描程序不知道那些地址已经被扫描过,它只是简单的随机扫描互联网。于是蠕虫传播的越广,网络上的扫描包就越多。即使扫描程序发出的探测包很小,积少成多,大量蠕虫程序的扫描引起的网络拥塞就非常严重了。
聪明点的作者会对扫描策略进行一些改进,比如在IP地址段的选择上,可以主要针对当前主机所在的网段扫描,对外网段则随机选择几个小的IP地址段进行扫描。对扫描次数进行限制,只进行几次扫描。把扫描分散在不同的时间段进行。扫描策略设计的原则有三点:
尽量减少重复的扫描,使扫描发送的数据包总量减少到最小2保证扫描覆盖到尽量大的范围3处理好扫描的时间分布,使得扫描不要集中在某一时间内发生。怎样找到一个合适的策略需要在考虑以上原则的前提下进行分析,甚至需要试验验证。
扫描发送的探测包是根据不同的漏洞进行设计的。比如,针对远程缓冲区溢出漏洞可以发送溢出代码来探测,针对web的cgi漏洞就需要发送一个特殊的http请求来探测。当然发送探测代码之前首先要确定相应端口是否开放,这样可以提高扫描效率。一旦确认漏洞存在后就可以进行相应的攻击步骤,不同的漏洞有不同的攻击手法,只要明白了漏洞的利用方法,在程序中实现这一过程就可以了。这一部关键的问题是对漏洞的理解和利用。关于如何分析漏洞不是本文要讨论的内容。
攻击成功后,一般是获得一个远程主机的shell,对win2k系统来说就是cmd.exe,得到这个shell后我们就拥有了对整个系统的控制权。复制过程也有很多种方法,可以利用系统本身的程序实现,也可以用蠕虫自代的程序实现。复制过程实际上就是一个文件传输的过程,实现网络文件传输很简单,这里不再讨论。
2.模式的使用
既然称之为模式,那么它就是可以复用的。也就是说,我们只要简单地改变这个模式中各个具体环节的代码,就可以实现一个自己的蠕虫了。比如扫描部分和复制部分的代码完成后,一旦有一个新的漏洞出现,我们只要把攻击部分的代码补充上就可以了。
利用模式我们甚至可以编写一个蠕虫制造机。当然利用模式也可以编写一个自动入侵系统,模式化的操作用程序实现起来并不复杂。