什么是蠕虫?

蠕虫病毒是一种计算机病毒。其感染机制是通过网络复制传播,感染途径是通过网络和邮件。

比如近年来危害很大的“尼姆达”病毒,就是蠕虫病毒的一种。这种病毒利用了微软Windows操作系统的漏洞。电脑感染这种病毒后,会继续自动拨号上网,利用文件中的地址信息或互联网进行传播,最终破坏用户的大部分重要数据。

蠕虫病毒的一般防治方法是使用具有实时监控功能的杀毒软件,注意不要轻易打开不熟悉的邮件附件。

一、蠕虫的基本结构和传播过程

蠕虫的基本程序结构是:

1,传播模块:负责蠕虫的传播,这是本文要讨论的部分。

2.隐藏模块:入侵主机后,隐藏蠕虫程序,防止被用户发现。

3.目的功能模块:实现控制、监视或破坏计算机的功能。

传播模块可以分为三个基本模块:扫描模块、攻击模块和复制模块。

蠕虫程序的一般传播过程是:

1.扫描:蠕虫的扫描功能模块负责检测易受攻击的主机。当程序向主机发送漏洞检测信息并收到成功的反馈时,它就获得了一个可传播的对象。

2.攻击:攻击模块根据漏洞攻击步骤,自动对步骤1中发现的对象进行攻击,获得主机的权限(一般为管理员权限)和一个shell。

3.复制:复制模块将蠕虫程序复制到新主机,通过原主机和新主机的交互启动。

我们可以看到,传播模块实际上实现了自动入侵的功能。因此,蠕虫传播技术是蠕虫技术的首要技术。没有蠕虫传播技术,就没有蠕虫技术。

二、入侵过程的分析

大家一定很熟悉入侵的一般步骤。我们简单回忆一下。

第一步:通过各种方法收集目标主机的信息,找出可利用的漏洞或弱点。

第二步:针对目标主机的漏洞或缺陷,采取相应的技术对主机进行攻击,直到获得主机的管理员权限。

第三步:利用获得的权限安装后门、跳板、控制终端、监视器等。并清除日志。

我们一步步分析。

看第一步。收集信息的方法有很多,包括技术性的和非技术性的。技术方法包括用扫描仪扫描主机,检测操作系统类型、版本、主机名、用户名、开放端口、开放服务、开放服务器软件版本等。非技术手段包括与主机管理员联网、骗取信任、威逼利诱等不适合儿童使用的手段。当然,收集的信息越多越好。收集信息后,进入第二步。

第二步,对收集到的信息进行分析,找到可以有效利用的信息。如果有现成的漏洞可以利用,在网上找漏洞的攻击方法,如果有攻击代码,直接复制,然后用代码获取权限,OK;如果没有现成的漏洞,我们一方面会根据收集到的信息猜测用户的密码,另一方面会对其使用的系统进行探索分析,试图分析出一个可利用的漏洞。如果最终能想办法获得系统权限,那么进入第三步,否则,放弃。

第三步,在主持人的允许下,你可以为所欲为。如果你不知道自己想做什么,那就退出,去玩自己喜欢的游戏。

以上是人工入侵的一般流程。对于自动入侵,有一些特殊的应用特点。

蠕虫采用自动入侵技术。由于程序规模的限制,自动入侵程序不能太智能,所以自动入侵一般采用一定的模式。我们把这种模式称为入侵模式,它是从常见的入侵技术中提取出来的。目前蠕虫使用的入侵模式只有一种,就是前面提到的蠕虫传播过程中采用的模式:扫描漏洞-攻击获取外壳-使用外壳。这种入侵方式也是现在蠕虫常见的传播方式。这里有一个问题,就是蠕虫概念的定义。目前蠕虫的定义把这种传播方式作为蠕虫定义的一部分。其实广义的蠕虫应该包括那些使用其他自动传播方式的程序。

我们先来看看一般的交流方式。

三、蜗杆传动的一般模式分析

1.模式:扫描-攻击-复制。

从关于蠕虫的新闻报道来看,报道总是强调蠕虫如何发送大量数据包,造成网络拥塞,影响网络通信速度。其实这并不是蠕虫程序的初衷,造成网络拥堵对蠕虫程序的发布者也没有好处。如果可能的话,蠕虫程序的发布者更希望蠕虫秘密传播,因为蠕虫传播出去后,蠕虫的发布者可以获得大量可用的计算资源,因此他获得的收益显然比网络拥塞的后果要强上万倍。然而,蠕虫使用的现有扫描方法不可避免地会造成大量的网络拥塞,这是蠕虫技术发展的一个瓶颈。如果能突破这一难关,蠕虫技术的发展将进入一个新的阶段。

现在流行的蠕虫所采用的传播技术,一般都是以尽快传播到尽可能多的计算机为目的,所以扫描模块采用的扫描策略如下:

随机选择某个IP地址,然后扫描这个地址段上的主机。一个愚蠢的扫描仪可能会一遍又一遍地重复这个过程。这样,随着蠕虫的传播,新感染的主机也开始做这种扫描。这些扫描仪不知道扫描了哪些地址,只是简单的随机扫描互联网。因此,蠕虫传播得越广,网络上的扫描数据包就越多。即使扫描器发出的探测包很小,但扫描大量蠕虫程序造成的网络拥塞也是非常严重的。

聪明的作者会对扫描策略做一些改进,比如在IP地址段的选择上,可以主要扫描当前主机所在的网段,随机选择几个小的IP地址段扫描外网段。限制扫描次数,只扫描几次。将扫描分散在不同的时间段。扫描策略的设计有三个原则:

尽量减少重复扫描,从而尽量减少扫描发送的数据包总数;2.确保扫描覆盖面尽可能大;3.处理好扫描的时间分布,使扫描不发生在某个时间。如何找到合适的策略,需要在考虑上述原则的前提下进行分析,甚至需要通过实验进行验证。

扫描发送的探测包是根据不同的漏洞设计的。例如,远程缓冲区溢出漏洞可以通过发送溢出代码来检测,针对web的cgi漏洞需要通过发送特殊的http请求来检测。当然,在发送探测码之前,需要确定对应的端口是否打开,这样可以提高扫描效率。一旦确认了漏洞,就可以进行相应的攻击步骤。不同的漏洞有不同的攻击方式。只要了解漏洞的利用方法,就可以在程序中实现这个过程。这部电影的关键问题是对漏洞的理解和利用。如何分析漏洞不是本文的内容。

攻击成功后,我们通常会得到一个远程主机的外壳,这是win2k系统的cmd.exe。拿到这个壳之后,我们就拥有了整个系统的控制权。复制进程的方式也有很多种,可以通过系统本身的程序来实现,也可以通过蠕虫本身的程序来实现。复制过程其实就是一个文件传输过程,实现网络文件传输非常简单,这里就不讨论了。

2.模式的使用

既然叫模式,就可以重用。换句话说,只要我们简单地改变这种模式下每个具体环节的代码,就可以实现一个自己的蠕虫。比如扫描部分和复制部分的代码完成后,一旦出现新的漏洞,我们只需要补充攻击部分的代码即可。

使用该模式,我们甚至可以编写一个蠕虫制造者。当然,自动入侵系统也可以用模式来编写,模式化的操作用程序来实现并不复杂。

四、其他可能的蠕虫传播方式

除了上述通信模式之外,还可以有其他模式。

例如,我们可以使用电子邮件作为自动传播的模型。这种模式的描述是:从邮箱通讯录中获取邮箱地址——群发带有蠕虫程序的邮件——邮件被动打开,蠕虫程序启动。每一步都可以用不同的方式实现,这个模型也实现了自动传播,所以我们可以把它作为一个蠕虫传播模型。

随着蠕虫技术的发展,未来还会有其他传播方式。

五、从安全防御的角度看蠕虫的传播方式。

根据蠕虫的传播模式来分析如何防止蠕虫的传播,我们会清楚得多。对于蠕虫传播的一般模式,我们目前所做的安全防护主要是针对第二个环节,即“攻击”部分。为了防止攻击,要采取的措施是尽快发现漏洞并打补丁。其实更重要的是第一个环节的保障。扫描的防护现在人们普遍使用防护墙来过滤扫描。使用防火墙的方法是有限的,因为很多用户不知道如何使用防火墙,所以当蠕虫仍然可以传播的时候,有防火墙保护的主机只能保证自己的安全,但是网络已经被破坏了。另一个解决方案是考虑如何防止蠕虫从整个网络传播。

防止蠕虫从全网传播是一个安全课题,需要进一步研究。这里简单提一下。从通用模式的流程来看,大规模扫描是蠕虫传播的重要一步。如果可以阻止或限制扫描,就可以阻止蠕虫的传播。可能的方法是在网关或路由器上添加过滤器,并在检测到某个地址正在发送扫描数据包时过滤掉该数据包。如何区分扫描包和正常包的问题可以在具体实现中考虑,需要进一步研究。

知道了蠕虫的传播方式,就很容易实现一个针对蠕虫的入侵检测系统。蠕虫扫描有一定的模式,扫描包有一定的特征串,可以作为入侵检测的入侵特征。知道了这些特征,我们就可以针对它们制定入侵检测规则。