|
<br><br>编者按:近日频频爆发的计算机病毒显示,“蠕虫”依然是网络目前面临的主要攻击。所谓“知己知彼”,要预防各类蠕虫病毒,首先要了解它。国家计算机网络入侵防范中心通过蠕虫的形成原理,告诉网管员预防蠕虫的方法。 <br><br>蠕虫的形成 <br><br>蠕虫这个生物学名词在1982年由Xerox PARC 的John F. Shoch等人最早引入了计算机领域,他们给出了计算机蠕虫的两个最基本特征:“可以从一台计算机移动到另一台计算机”和“可以自我复制”。他们编写蠕虫的目的是做分布式计算的模型试验。在他们的文章中,蠕虫的破坏性和不易控制性已初露端倪。1988年,Morris蠕虫爆发后,Eugene H. Spafford 为了区分蠕虫和病毒,从技术角度给出了蠕虫的定义:“计算机蠕虫可以独立运行,并能把自身的一个包含所有功能的版本传播到其他计算机上。” <br><br>1.蠕虫的组成 <br><br>我们可以把一个蠕虫病毒看做一个工程,并把这个工程分成 4 个模块。 <br><br>(1)攻击模块:蠕虫病毒爆发,首先需要有一个能影响大量系统的,并能被简单利用的严重漏洞,以至于机器能被远程控制,比如猜测薄弱口令、远程溢出等。 <br><br>(2) 感染模块:让计算机在被攻击后,能执行蠕虫编写者想要实现的功能,完成对一个主机的感染。对远程溢出来说也就是完善shellcode的过程,这中间还要考虑感染传播(繁殖)途径的问题。 <br><br>(3) 传播模块:可以是扫描一个网段中有相关弱点的机器,将弱点保存为一个文件,然后对这些IP地址进行攻击,或者随机生成IP地址然后对这些IP进行攻击等。简单地说,这个过程就是扫描防范薄弱的机器。 <br><br>(4) 功能模块:可以视为一个附加的模块,使计算机在被感染后保留一个后门来发动分布式拒绝服务攻击(DDoS)。从趋势看,越来越多的蠕虫都会附加上这个模块,以便造成更大的破坏。 <br><br>一个蠕虫病毒最重要的是攻击模块和感染模块两部分,它们决定了蠕虫的影响范围和传播速度,而这是一个蠕虫是否能够造成巨大破坏的关键因素。 <br><br>2.蠕虫的传播途径 <br><br>蠕虫一般通过以下几种方式进行传播: <br><br>(1) Email: 电子信箱传播方式,这是一种比较普遍的方式,这类蠕虫有求职信病毒(W32.wantjob.worm)、小邮差病毒(W32.Mimail.A.Worm)等; <br><br>(2) FTP: 通过利用某些FTP服务程序(如Wu_FTP等)的漏洞进行传播,此类蠕虫比较少见,且危害往往也不是很大,例子有Linux.Ramen.worm; <br><br>(3) HTTP: 此类蠕虫很常见,利用Microsoft IIS或Apache服务器的漏洞来进行传播,如红色代码(W32.Codered.Worm)、尼姆达病毒(W32.Nimda.Worm)等; <br><br>(4) NetBios: 蠕虫可以通过NetBios,利用打开的局域网共享资源进行传播,比如W32.Hai.Worm、W32.Dalbug.Worm等; <br><br>(5)RPC: 此类蠕虫病毒通过Microsoft Windows 操作系统中的远程过程调用RPC(Remote Procedure Call)服务中的漏洞进行传播。明显的例子是最近正在传播的“冲击波”蠕虫病毒(W32.Blaster.Worm),此病毒造成了巨大的破坏,而且此RPC漏洞也被认为是有史以来危害最严重、传播最广泛的漏洞之一; <br><br>(6) 数据库:蠕虫可以利用网络上的数据库进行传播,比如利用Microsoft SQL Server数据库的漏洞进行传播,如在今年初造成巨大破坏的W32/SQL.Slammer.Worm。 <br><br>RPC 漏洞的灾难 <br><br>1.RPC服务的主要功能 <br><br>远程过程调用 RPC 是 Windows 操作系统使用的一个协议。RPC 提供了一种进程间通信机制,通过这一机制,在一台计算机上运行的程序可以顺畅地执行某个远程系统上的代码。该协议本身是从OSF(开放式软件基础)RPC协议衍生出来的,只是增加了一些Microsoft特定的扩展。 <br><br>其实,也可将RPC看做是一种Client/Server模型,但RPC要比它更高一层。在建立RPC服务以后,客户端的调用参数通过底层的RPC通道传输,可以是UDP,也可以是TCP,并根据传输前所提供的目的地址及RPC上层应用程序号转到相应的RPC 应用程序服务器,且此时的客户端处于等待状态,直到收到应答或“Time out”超时信号,具体的流程如图所示。当服务器端获得了请求信息,则会根据注册RPC时告诉RPC系统的例程入口地址,执行相应的操作,并将结果返回至客户端。当一次RPC调用结束后,客户端程序才会继续运行。 <br><br><br>2.RPC服务中存在的漏洞 <br><br>RPC 中处理通过 TCP/IP 的消息交换的部分有一个漏洞(MS Security Bulletin MS03-26),它是由于错误地处理了格式不正确的消息造成的。此漏洞影响分布式组件对象模型 (DCOM) 与 RPC 间的一个接口。分布式对象模型 (DCOM) 是一种能够使软件组件通过网络直接进行通信的协议。DCOM 以前叫做“网络 OLE”,它能够跨越包括 Internet 协议(例如 HTTP)在内的多种网络传输。在本文提到的漏洞中,DCOM与RPC之间的接口侦听 TCP/IP 端口 135,并负责处理客户端PC向服务器发送的 DCOM 对象激活请求(例如通用命名约定——UNC的路径)。为利用此漏洞,攻击者需要向远程PC上的 135 端口发送特殊格式的请求,并拥有向远程PC上的 135 端口发送精心编造请求的能力,从而造成目标PC受制于人,攻击者可以在它上面执行任意代码。对于 Intranet(企业内部互联网)环境,135端口通常是可以访问的;但对于通过国际互联网相连的PC,防火墙通常会封堵135端口,相对而言,国际互联网容易感染的机率应该少一点。如果没有封堵该端口,或者在 Intranet 环境中,攻击者就不需要有任何其他特权,即可做出攻击。 <br><br>“冲击波”的启示 <br><br>这次自8月11日以来在世界范围内广泛传播的“冲击波”蠕虫病毒在世界范围内造成了巨大的危害,主要原因是微软的操作系统漏洞所致,同时,广大企业和个人在安全上的疏忽也是此次病毒造成巨大破坏的重要原因。 <br><br>“冲击波”病毒利用的是微软Windows NT、2000及XP存在的RPC漏洞向计算机发起攻击,可以导致被感染的计算机系统反复重启,有的还导致了整个局域网崩溃。自“冲击波”病毒发作以来已经给社会造成了巨大的损失,仅仅美国各大企业公司的损失就已经高达数亿美元。而在中国,金山公司估计,仅北京就有50万到100万电脑用户是“冲击波”病毒的受害者。 <br><br>这次事件后,企业和个人用户应当进行一下反思:要是所有或者绝大多数用户能够在微软的系统漏洞发布之时就打上了补丁,那么就肯定不会造成如此巨大的损失。看来,要彻底解决像“冲击波”这样的病毒给互联网带来的威胁,需要计算机软件公司,如微软,和用户的共同努力,需要相互间更为密切的合作。作为软件开发者,首先是要防止Windows以及其他系统再有如此严重的漏洞,以至于攻击者可以轻松地利用它来完成攻击行为。但是,随着现在软件规模越来越大,越来越复杂,存在漏洞的可能性也就越来越高。其次,是补丁软件本身的问题,在发现了系统中存在漏洞时,应当尽快发布补丁程序,并通过各种渠道,通知用户来安装相应的程序。作为软件的使用者,也要经常关心软件的更新和补丁的发布,尽量及时更新自己的软件,这样才能更好地保护自己的计算机系统免遭攻击,减少损失。 <br><br>背景资料:“冲击波”病毒回顾 <br><br>7月16日,美国微软公司发布了编号为MS03-26(CVE编号:CAN-2003-0352)的RPC系统漏洞,受到影响的系统包括Microsoft Windows NT4.0、2000、XP和Server 2003,几乎包括了微软的全部操作系统产品。所以,这个漏洞也被一些安全专家认为是迄今为止传播得最广泛的一个漏洞。 <br><br>7月23日,网络上发布了DCOM RPC接口拒绝服务攻击(DoS)的程序代码,7月26日,Windows RPC接口远程缓冲溢出的攻击程序代码被公布,这样,导致了即便是一个对该漏洞技术细节不了解的人也能使用这些代码去攻击网络上的其他机器,以达到拒绝服务攻击的目的或是获得相应的系统权限。值得注意的是,关于此漏洞最先出现的分析报告是由中国的安全组织X-Focus完成的。 <br><br>8月11日,利用MS03-26漏洞的“冲击波”蠕虫病毒(W32.Blaster.Worm)开始在全世界范围内爆发,造成巨大破坏。在国内,两天时间里就使数千个局域网陷于瘫痪状态,受害者中既包括几十人的小规模企业,也有电信、政府等大型事业单位。而且个人用户,尤其是使用宽带网的用户,也遭到了此病毒的攻击。在感染此病毒后,系统会反复重启、不能收发邮件、无法浏览网页等,导致无法正常工作,给企业和个人都造成了巨大的损失。现在,此病毒仍在继续传播当中,并且已经出现若干变种。<br> |
|