随着2001年以来红色代码蠕虫、尼姆达蠕虫、冲击波蠕虫、震荡波蠕虫等等的一次次蠕虫爆发,在感受到蠕虫对Internet造成的巨大破坏的同时,人们也对蠕虫这个词留下了非常深刻的印象。
Internet蠕虫是无须计算机使用者干预即可运行的独立程序,它通过不停地获得网络中存在漏洞的计算机上的部分或全部控制权来进行传播。病毒和蠕虫的区别主要在于病毒在传播过程中需要计算机使用者的干预,而且一般情况下,病毒需要寄生在宿主程序中。所以蠕虫在传播速度和危害性两个方面上远远高于传统意义上的病毒。由于这两个特性,在Internet蠕虫防治过程中必须采用自动化的防范系统。最基本的蠕虫传播模型可以写成: ;其中表示网络中已经被感染的计算机的数量, 表示网络中存在漏洞、可以被蠕虫感染的计算机的数量,表示影响蠕虫传播的各种因素。公式左边是被感染的计算机的数量的增量与单位时间的比值,也就是蠕虫传播的速度。从公式中很直观的可以看出,公式右边三个因子中任何一个因子的减小都会降低蠕虫传播的速度。
本文主要讨论网络管理人员在蠕虫爆发时,可以主动采取的减小蠕虫传播模型中公式右边三个因子的技术。
针对易感主机的主动防治技术
接种疫苗
一般情况下,易感主机可以通过打补丁获得免疫,但很多因素造成补丁不能及时被打上,例如补丁程序太大而用户的带宽却很小、补丁没有及时发布、用户不知道应该打补丁等等。网络管理人员很多时侯必须采用主动技术使本网络中的易感主机免疫。本文介绍的针对易感主机的主动技术是接种疫苗。
Internet蠕虫疫苗的定义
通过对Internet蠕虫的深入分析,可以发现如果运行环境中某些特定条件被改变,则蠕虫终止执行。以Nachi蠕虫为例和Morris蠕虫为例,Nachi蠕虫的终止条件包括:1)建立名为RpcPatch_Mutex的内存互斥量;2)将本机时间设成2004年1月1日之后;3)删除%System%\wins目录;4)占用707端口。Morris蠕虫的终止条件包括:1) 建立名为“/usr/tmp/sh”的目录;2)在端口23357进行验证。网络管理人员可以利用这些终止条件使易感计算机获得免疫。早在1988年,在防治Morris蠕虫时,终止条件“/usr/tmp/sh”就曾被使用。
综上,可以定义如下:为破坏蠕虫传播流程中的某个环节而在主机上建立的标记,称为蠕虫“疫苗”;标记的建立过程,称为“接种疫苗”。有的反病毒厂商使用病毒疫苗这个词来指代用于病毒检测的特征码,与本文中的定义是有区别的。
疫苗的选择规则
用来终止蠕虫运行的Internet 蠕虫疫苗可以分为正常终止条件和异常终止条件。例如在冲击波蠕虫中存在如下执行代码:
CreateMutexA(NULL, (ULONG)1, "BILLY"); if(GetLastError()!=0xb7) ExitProcess(0);
if(!(bind(s,&name, 0x10))) goto this_loc_ret;
if(!(thisfile=fopen(&filename,"rb"))) goto this_loc_ret;
this_loc_ret:
closesocket(s);
ExitThread(0);这段代码意味着至少有三个正常终止条件可以让冲击波蠕虫终止运行。
异常终止条件的例子如Morris蠕虫执行时存在“/usr/tmp/sh”目录和Nachi蠕虫执行时不存在“%System%\wins”目录。
对于某个蠕虫来说,一般情况下存在多个疫苗,选择疫苗时,应该尽量考虑简单性和有效性,避免指令交互和文件传输。
疫苗接种过程
建立易感主机列表
易感主机列表可以通过漏洞扫描软件建立,如果没有合适的漏洞扫描软件或者网络的规模不大时,可以将网络中所有的IP作为易感主机列表,以确保没有易感主机被漏打疫苗。
利用漏洞攻击代码
一般情况下,当某个漏洞被公开时,验证其存在性的漏洞攻击代码也会出现。正如Internet蠕虫编写者一样,网络管理人员也可以在蠕虫疫苗中使用漏洞攻击代码。例如对于DCOM/RPC漏洞,可以直接利用安全组织XFocus发布的攻击代码。
嵌入蠕虫疫苗
下一步工作是将合适的蠕虫疫苗嵌入到漏洞攻击代码中,以便能远程注入到易感主机中。例如对于Nachi蠕虫,命令“cmd /c date 2004-01-01”就是一个非常有效的疫苗。
实施疫苗接种
为了快速有效地使被管理的网络免疫,应该自动、周期性地对网络中易感主机接种疫苗。整个接种过程的周期可以按照网络的不同情况进行调整。
针对已感主机的主动防治技术
强制关机
尽管是否应该直接关掉已经被蠕虫感染的主机一直有争议,但在某些情况下直接关掉已感主机是比较有效的降低蠕虫传播速度的措施。仅靠在网络边界封堵流量,并不能直接减少已感主机的数量。
通过被蠕虫所利用的漏洞
蠕虫很少在传播的同时修补被感染主机上存在的漏洞,大多数情况下,这个漏洞还可以被再次利用。通过利用同一漏洞,可以控制被感染主机,并将它强行关机。
通过蠕虫自身的漏洞
有的蠕虫自身就存在漏洞,例如震荡波蠕虫在实现文件传输的模块中就存在缓冲区溢出漏洞。通过获取已感主机上运行的蠕虫的控制权,可以控制被感染主机,并将它强行关机。
通过蠕虫留下的后门后门
有些蠕虫在传播过程中,会在已感主机上留下后门,以便将来黑客可以控制这些计算机。例如狮子蠕虫在端口10008留有后门。通过蠕虫留下的后门,可以控制被感染主机,并将它强行关机。
通用关机代码
对于Windows操作系统,用于强制关机的汇编代码是相似的,可以构造通用的关机代码。
针对蠕虫网络流量的主动防治技术
常见的封堵措施和拖延措施,并不能让最终用户知道在他们的计算机上发生了什么或者如何将自己计算机上的蠕虫清除掉。很多时候,当最终用户被封掉以后,他们分不清到底是他们的计算机出了问题还是网络出了问题。另外,对于ISP来说,流量就是金钱,但在封堵蠕虫传播流量时,很难保证不会对正常流量产生影响。所以封堵措施只能暂时使用,对于控制蠕虫传播流量相对较好的控制方式是双向疏导技术。
双向疏导
蠕虫的传播流量是已感主机流量的子集,控制了已感主机流量,也就控制了蠕虫的传播流量。对于本地网络,已感主机的出流量可以通过DNS劫持技术来控制,已感主机的入流量可以通过零路由技术来控制。
针对出流量的DNS劫持技术
当最终用户使用被蠕虫感染的计算机访问网络的时候,计算机做的第一步工作是解析用户想要访问的目标域名对应的IP地址。如果对于用户的DNS域名解析请求,返回伪造的IP地址,则用户的访问被引导到指定的伪造IP地址处。这样各种告警信息就可以直接发送到用户处,用户会立刻知道自己的计算机已经被蠕虫感染,同时也可以根据告警信息中包含的帮助信息采取相应的措施。网络管理人员可以采用两种方式实现DNS劫持。
配置视图:
有的域名服务器支持视图功能,如BIND9,对于不同的视图可以给出不同的响应。这样,网管人员可以将通过IDS构造的被感染主机列表放在某个视图中,并配置这个视图发来的域名解析请求返回伪造的IP地址,就可以实现对已感主机的流量控制。
端口转发:
对于不支持视图功能的域名服务器,可以用端口转发程序取代原有域名服务器,端口转发程序完成对请求的过滤。对于正常请求,直接交给原有的域名服务器处理,对于通过IDS构造的被感染主机列表中计算机发来的请求,返回伪造的IP地址,以实现对已感主机的流量控制。
针对入流量的零路由技术
路由器按照路由表中的目标地址信息来转发报文,当目标地址信息为NULL时,将会将报文直接丢弃。所以如果将被感染主机在路由表中设置为零路由时,所有发向已感主机的流量将被丢掉。运行BGP或OSPF的路由器可以通过学习来动态更新路由表,如果网管人员在运行BGP协议的网络边界路由器上将已感主机作为黑名单注入,通过一段时间学习以后,网络中的所有路由器都会将发往黑名单中已感主机的入流量丢弃。关于已感主机的路由信息应该控制仅在本地网内部交换,以免影响全局BGP路由表。
告警信息
当已感主机流量被疏导到告警服务器后,应该利用各种协议信息通知最终用户, 也就是说告警服务器应该实现各种协议如: HTTP、POP3等等。对于终端用户来说,网页和邮件是最方便和直接的方式。当最终用户无论访问哪个网站都看到同一告警页面或反复收到同一告警信件时,就会检查是否自己的计算机出了问题。对于校园网用户来讲,通过TELNET协议告警也是一个好的方式,当学生试图登陆BBS的时候,就会收到告警信息。
一旦最终用户清除了自己计算机上的蠕虫,其计算机就会被IDS检测到,从而不再在黑名单中,这样其流量就不会被DNS劫持或零路由控制,也就不会再收到告警信息了。
Internet蠕虫主动防治系统架构设计
上述的Internet蠕虫主动防治技术可以被组合应用到蠕虫自动防治系统中,包括:易感主机自动防治系统;已感主机自动防治系统;蠕虫传播流量自动控制系统。图1给出了蠕虫自动防治系统的结构框架,在方框1、2、3中的系统分别对应易感主机自动防治系统;已感主机自动防治系统;蠕虫传播流量自动控制系统。
易感主机自动防治系统
组成
易感主机自动防治系统由漏洞扫描服务器和攻击服务器构成。漏洞扫描服务器负责找出本网络中的所有易感主机,攻击服务器负责为这些易感主机接种疫苗。
工作流程
漏洞扫描服务器周期性的扫描本地网络,向攻击服务器提供易感主机IP地址黑名单,然后攻击服务器对这些易感主机接种疫苗。整个过程应该反复执行,直到网络中不存在易感主机。
已感主机自动防治系统
组成
已感主机自动防治系统由IDS(入侵检测系统)和攻击服务器构成。IDS负责监测本地网络中的所有已感主机;攻击服务器负责将这些已感主机强制关机。因为IDS只能被动地检测已感主机,所以有时辅助的扫描软件也是需要的。 扫描软件可以根据蠕虫的特征主动发现已感主机,例如可以通过对端口10008扫描来发现狮子蠕虫。
工作流程
IDS或蠕虫扫描软件向攻击服务器提供已感主机IP地址黑名单,攻击服务器使用通用关机代码将黑名单中的已感主机强制关机。
蠕虫传播流量自动控制系统
组成
蠕虫传播流量自动控制系统由IDS、DNS服务器、BGP路由器和告警服务器组成。IDS负责向攻击服务器提供已感主机IP地址黑名单;DNS服务器负责控制已感主机的出流量;BGP路由器负责控制已感主机的入流量;告警服务器负责将告警信息发送给最终用户。
工作流程
IDS周期性的将黑名单发送给DNS服务器和BGP路由器,例如每15分钟一次。DNS服务器和BGP路由器按照黑名单控制流量。当最终用户被导向到告警服务器后,告警服务器向最终用户提供告警信息。当用户计算机上的蠕虫被清除后,将被IDS从黑名单中消除。
系统集成
每个子控制系统可以单独地工作,也可以被集成到一起。当集成到一起时,需要有一个管理服务器,管理服务器负责协调、配置各个子系统,并记录日志信息,以及进行统计。
在清华校园网中的应用效果
校园网概况
清华大学校园网由近3万节点构成,一般情况下有近2万节点同时在线。绝大部分计算机具有静态IP地址,一小部分通过DHCP服务器获得动态IP地址。网络中有主域名服务器和从域名服务器,很少有计算机使用外部的域名服务器。当蠕虫爆发时,网络管理人员会采用各种措施清除网络中感染蠕虫的计算机,例如分发补丁软件光盘、短期培训等等。
部分实现的自动控制系统效果
清华大学的网络边界网关上配置了IDS,IDS会检测到已感主机,提供IP地址列表。这个IP地址列表会被发送到DNS服务器,DNS服务器会将感染蠕虫的用户引导到告警服务器,在清华大学的告警服务器上,实现了HTTP、 POP3和TELNET协议,以提供告警网页、告警邮件和告警提示。当校园网中的感染蠕虫的计算机访问Internet的时候,根据其使用的不同协议,将会收到不同格式的告警信息。清华大学现有的自动蠕虫防治系统仅实现了本文给出的各种主动技术的一部分,从2003年底开始部署,当时主要是为了控制Nachi蠕虫。
Nachi蠕虫(冲击波杀手)
自从2003年8月18日Nachi蠕虫爆发开始,校园网中出现了大量被感染的计算机,近3个月的时间里采用了各种各样的措施,包括封堵、培训等等,始终还存在大量的感染蠕虫的计算机无法清除。在2003年11月27日,开始实施蠕虫传播流量自动控制系统,系统的运行效果参见图2,可以看出,系统部署后,已感主机数量迅速下降。
Sasser蠕虫(震荡波)
震荡波蠕虫的爆发也验证了蠕虫自动防治系统的有效性。图3给出了震荡波蠕虫在IDS上的统计数量,可以看到震荡波蠕虫在蠕虫自动防治系统的控制下,不到10天就基本消失了。横轴代表日期时间,纵轴为网关边界IDS上检测到的被Sasser蠕虫感染的主机数量。
讨论
本文主要从技术而非法律的角度来讨论针对Internet蠕虫的主动控制技术。对于由此可能产生的网管人员与最终用户之间的争议没有深入讨论。
有些蠕虫疫苗会被防病毒软件检测为病毒。但当防病毒软件报警的时候,也同时说明用户的计算机已经具备了一定的蠕虫防范的能力。并不是所有的被蠕虫感染的计算机都可以被强制关机,例如被Slammer蠕虫感染的计算机。这时可以将强制关机的对象改变为具有漏洞的计算机。在进行蠕虫流量疏导时,虽然用户可以得到通知,但在用户没有采取措施之前,蠕虫可以通过直接利用IP地址的方式继续攻击。
不管怎样,本文给出的蠕虫主动防治技术为网管人员防治蠕虫提供了更多的选择。从清华大学的实施经验上看,自动蠕虫防治系统可以很容易地扩展到对其他恶意代码、甚至垃圾邮件的防治上来。
本文选自:《中国教育网络》
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。