蠕虫的起源和发展
code-red红色代码的背景
2001年7月19日,星期二,code-red红色代码至少在359,104台主机上肆虐了大约13小时。这个统计数据来自cooperative association for internet data analysis(caida),它充分说明了code-red红色代码病毒的危害程度和传播能力。对于不熟悉蠕虫的主机,它们是代码的自传播部分,利用的是计算机软件中的缺陷。在这种情况下,code-red红色代码蠕虫将利用microsoft internet information server(iis)4和5的远程漏洞。蠕虫将向主机发送url,致使iis的一部分——microsoft的index server的缓冲器溢出。缓冲器溢出后,蠕虫就能够执行随机代码。code-red红色代码将在受感染的计算机上复制自身,并试着感染其它主机。
蠕虫有两个版本。第一个版本,最初分析蠕虫的eeye digital security将其称为crv1,这种蠕虫在随机产生目标ip地址时会产生一个缺陷。crv1最初于7月15日通过非正式渠道公开报告,这种蠕虫使用随机号码产生器,号码产生器利用静态种子获得将袭击的新ip地址。这种静态种子意味着它能够重复不断地攻击同一批机器,因而会限制蠕虫的传播。crv1能传播,但速度不快,效果也不好。7月19日早晨,人们又发现了crv2蠕虫。crv2与crv1类似,所不同的是,它使用了更好的随机号码产生器,能够生成目标ip地址。另外,crv2还能够消除临时web站点外观。crv2的复制能力极强。能够在这么短的时间里感染359,104台主机说明,这种蠕虫的传播能力也极强。根据caida的统计,在高峰时,crv2每分钟能够感染2000多台新主机。
code-red红色代码 ii(请别与crv2相混淆)首先由security focus aris分析家小组报告。他们将蠕虫的复制品发送到了eeye的相关部门,这个部门对蠕虫进行了解剖,并发表了分析报告。code-red红色代码 ii与crv1和crv2类似,也使用缓冲器溢出,并启动多个线程传播自己,惟一不同的是,它完全从内存运行。code-red红色代码对英文系统的破坏力更强,code-red红色代码 ii则更擅长破坏中文系统。
code-red红色代码 crv1和crv2的功能
code-red红色代码 crv1和crv2的功能相似,它们都先建立99个线程,以感染其它系统。crv1使用第100个线程检查系统是否为英文系统。如果是英文系统,则第100个线程稍事休息,让系统传播蠕虫,而不再对系统给予太多的关注。几小时之后,web站点将显示以下消息:
“welcome to http://www.worm.com!, hacked by chinese!”
为显示这条消息,蠕虫实际上截获了与端口80的连接。任何文件都没有被修改。crv2不会污染web站点,但是,当它感染英文系统时,会用第100个线程进行无害的重定向。如果crv1或crv2遇到了c:\notworm file,它们将进入休眠状态。如果没有notworm文件,蠕虫将在每月的1-19日传播,分布式拒绝服务(ddos)则在某月的20-28日袭击了前白宫web站点,从28日到月底进入休眠期,到下个月的20-28日再进入攻击阶段。ddos袭击的方法是通过多个受感染系统向某个目标发送大量分组,使之无法提供正式服务。crv1 ddos袭击了白宫web站点(198.137.240.91)的硬编码前ip地址,crv2则从www.whitehouse.gov得到了ip地址。
code-red红色代码 ii的功能
code-red红色代码 ii与code-red红色代码完全不同,其大部分功能都与code-red红色代码截然不同。当code-red红色代码 ii感染某系统时,它首先在非中文系统上建立300个线程,在中文系统上建立600个线程。对于非中文系统,蠕虫将用一天时间感染其它系统;对于中文系统,则用两天时间。之后,蠕虫将重新启动系统,使文件系统保护机制失效。与crv1和crv2不同,code-red红色代码 ii只感染windows 2000,而不感染windows nt系统。另外,code-red红色代码 ii还使用一种特殊的算法确定下一个感染目标。它更倾向于攻击前两段与自身ip地址相同的系统。除此以外,它的攻击对象还包括第一段相同,或者完全随机的ip地址。按这种方式选择目标的原因是,许多公司的code-red红色代码 ii攻击都来自内部。一般情况下,企业并没有设置过滤器,禁止自己的web服务器攻击公司内部的web服务器。另外,code-red红色代码 ii还留下了几扇后门。首先,它在两个目录中留下了一份cmd.exe文件,并更名为root.exe。这份文件可用于在服务器上执行任意命令。其次,它在web服务器上的驱动器c和驱动器d生成了虚拟安装。即使删除了root.exe文件,袭击者仍然能够访问c或d上的cmd.exe文件。
蠕虫对网络及其主机的危害
ddos袭击不但会袭击受感染的站点,还会袭击受损主机的局域网。根据网络中受感染的web站点的数量,最终产生的大量流量可能会殃及局域网,例如因不明流量剧增而出现网络速度变慢,网络和设备无法使用等问题。受感染系统提供的服务的速度肯定会降低,从而影响正常服务的运行。
思科对消灭code-red红色代码的建议
为每个易损系统打补丁
对付code-red红色代码及其变种的最有效的方式是对所有易损系统打补丁。但是,对于局域网中无法控制的用户系统,打补丁很难;如果通过虚拟专用网(vpn)或远程接入服务器(ras)与网络远程连接,就更麻烦。但是,可以用一种简化方式确定哪些设备易损,即利用安全审计工具寻找漏洞。以下站点提供了防止microsoft和思科产品受感染的方法:
· http://www.cisco.com/warp/public/707/cisco-code-red-worm-pub.shtml
· http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/bulletin/ms01-033.asp
许多厂商的产品都安装和使用iss,以便为远程管理和报告提供web接入,而这也是需要打补丁的漏洞。如果不能及时为所有系统打补丁,应考虑采用下节讨论的各项技术。另外,用户还可以主动利用这些技术对付code-red红色代码的变种或其它蠕虫发起的攻击。
安全技术
本节将讨论思科产品中用于抵御code-red红色代码及其它袭击的各种技术。首先讨论安全技术,也称为方法。抵御袭击的其它技术将在下一节中讨论,利用这些技术,可以为未实施安全技术的网络提供临时解决方案。如果想详细了解这些技术,或者想了解抵御code-red红色代码的配置,请参考safe白皮书:
http://www.cisco.com/go/safe
基于主机的入侵防护系统
思科公司基于主机的入侵防护系统(csa)可以检测到安装了csa的主机上的袭击。它能够截获os和应用调用,保护os和应用配置,检查进入的服务请求,并分析本地记录文件,停止可疑行为。
发现code-red红色代码及其变种时,csa将自动阻止传播,另外,它还会向中央控制台发送警报,告知管理员它已截获了袭击企图。
为在未来抵御code-red红色代码以外的其它袭击,应考虑在服务器上安装csa,防患于未然。
基于网络的入侵检测系统
基于网络的入侵检测系统(nids)首先检测网络上发生的袭击,然后自己采取相应的措施,或者通知管理系统,由管理员采取应对措施。发现袭击的方法是寻找网络内流量中的签名。袭击检测将触发nids发送警报,然后采取预定行动。两种常用的应对措施是规避和tcp复位。由于nids不在数据路径中(即接收穿过网络的分组,并提供路由),因而不能滤除袭击中的第一个分组。后续分组可以通过规避功能滤除,即修改上游访问控制设备,阻挡来自袭击系统的ip地址的进一步接入。tcp重设可以发送好似从接收设备到袭击设备的伪装复位,从而中断tcp连接。
如果想在网络上执行规避功能,可以参考safe白皮书,了解使用这种功能需解决的特殊问题。由于crv1和crv2袭击包含在同一个包中,nids无法停止袭击。但是,nids可以在crv1和crv2袭击穿过网络时发送警报。由于nids能够象code-red红色代码 ii使用多个分组那样使用tcp复位,因而极有可能能够停止code-red红色代码 ii袭击。如果想详细了解nids,请参考:
http://www.cisco.com/go/ids
访问控制
状态防火墙——提供多种安全特性,主动抵御code-red红色代码。首先,与检查是否符合适当协议要求的方法相比,状态化检测机制可以更加精细地控制连接企图。利用这种过滤,只有向内连接能够到达web服务器。另外,它还禁止web服务器启动向外连接,从而限制了蠕虫的自传播。这种过滤特别适合dmz web服务器部署。正如safe中所讨论的那样,web服务器一般不需要建立向外连接,即web冲浪。多数情况下,它们只需要响应向内web 请求。其次,由于状态化防火墙能够限制与服务器的向内连接,因而不会增加服务器的负担。对于code-red红色代码,这种限制能够阻止恶意连接企图。
入口过滤——一般由网络周边的访问控制功能执行,用于阻止对非公开主机和服务的接入。例如,如果主机或设备没有主动参与提供公开服务,就最好禁止对这些主机或联网设备的向内连接请求。对于code-red红色代码,应禁止进入的http连接接入任何可以利用的用户系统或者非公开web服务器。但是,这些过滤器应该允许接入公开web的站点或电子商务服务器。理想情况下,公开服务器应该有严格的管理控制程序,并安装最新的补丁。入口过滤应严格阻止针对用户系统的code-red红色代码入侵企图。
出口过滤——一般也用于在网络周边实施访问控制。这种过滤方法可以阻止本地主机访问网络外部。应禁止不需要向外接入互联网的设备,例如多数联网设备或者只服务于内部环境的web服务器,发起向外连接。对于code-red红色代码,如果设备已被感染,则无法对外部网络发动攻击,因为流量将在网络周边被截获和丢弃。这种设置还能防止ddos袭击波及互联网链路,从而干扰向外或向外的合法流量。除了wan边缘的出口过滤外,网络中其它层次的出口过滤也可以防止受感染的公共web服务器(或者web集群的整个网段)感染受边缘入口过滤保护的专用内部服务器。如果想详细了解访问控制和过滤,请参考safe白皮书。
专用vlan
专用vlan能够限制vlan中的哪些端口可以与处于同一vlan中的其它端口通信。一般情况下,部署专用vlan的目的是使某个网段上的主机只能与其默认网关通信,而不能与网络上的其它主机通信。例如,如果web服务器遭到了code-red红色代码的破坏,即使其它web服务器也在这个网段中,也不会被感染。这种访问控制的实施方式是将主机分配给隔离端口或小组端口,有效地减小受感染主机可能造成的危害。隔离端口只能与异类端口(一般为路由器)通信。小组端口既可以与异类端口通信,也可以与同组中的其它端口通信。
如果想详细了解专用vlan,请访问:
http://www.cisco.com/warp/public/473/90.shtml
有助于消灭code-red红色代码的其它思科网络技术
基于网络的应用识别
基于网络的应用识别(nbar)是cisco ios® 软件中的分类引擎,可以通过url/多目的互联网邮件扩展(mime)类型和使用动态端口分配技术的协议识别多种应用级协议,包括http。nbar对流量进行分类之后,可以将相应的服务质量(qos)策略应用到流量等级。nbar能识别crv1和crv2 url请求,但不能识别code-red红色代码 ii url请求,因为code-red红色代码 ii通过多个分组传播get请求,而nbar目前只检查第一个分组。与nids不同,nbar可以立即对crv1和crv2流量进行分类,并在流量到达服务器之前丢弃分组。另外,nbar还可以双向使用,减轻code-red红色代码的危害。
如果想详细了解nbar,请访问:
http://www.cisco.com/univercd/cc/td/doc/product/software/ios121/121newft/121limit/121e/121e2/nbar2e.htm
内容引擎和加速器
当对内容敏感的设备将某些通常由web服务器等内容设备执行的功能卸载到高速网络设备上时,需要处理内容分布。由于这些设备是内容请求者与内容服务器之间的中介,因而可以改变连接的建立方式。这些设备能够按照其惟一的http请求识别code-red红色代码袭击,并在code-red红色代码到达web服务器之间将其丢弃。这种功能可以由两种方法完成,即内部块/允入表和websense集成。利用内部块/允入表,可以利用内部块/允入特性允许或拒绝一组url通过。管理员可以上载包含允许或禁止通过的url表的文本文件。表中列出的url利用子串从url开头进行匹配。思科建议客户不要用中高速使用这种技术。如果内容引擎(ce)负担过重,web高速缓存控制协议(wccp)交换机就进入旁路模式,停止过滤,直到条件满足为之。
如果想详细了解内容引擎,请参考:
http://cco/warp/public/779/largeent/learn/technologies/content_networking
陷井路由器
利用设置陷井路由器,可以在没有安装nids时确定环境中的哪些系统受到了感染。在这种情况下,使用的是互联网号码分配当局(iana)尚未分配、code-red红色代码无意中使用的地址。陷井路由器(只)在本地宣传这些网络,试图到达这些网络的所有企图都将被送至路由器。收到之后,这些请求可以被记录,也可以被丢弃。在记录的结果中,将提供一组受感染的主机。
如果想详细了解怎样配置这种功能,请参考:
http://www.cisco.com/public/cons/isp/security/
safe蓝图
safe蓝图使用上述所有安全技术抵御code-red红色代码,因此,可以说用safe蓝图对付code-red红色代码是“万无一失”的。入口和出口过滤除用在网络边缘外,还几乎用在所有safe模块之间。这种过滤不但能限制受感染的服务器向外接入,还能防止向内感染用户系统。除过滤外,状态防火墙不但能同时保护用户和服务器网段,还能为公共服务器提供ddos连接速率限制。nids不但部署在所有公共网段,用于识别code-red红色代码感染企图;还部署在网络边缘过滤和状态检测之后,确定是否有病毒试图穿过网络边缘。csa不但需要安装在所有公用服务器上,有时甚至需要安装在不执行互联网接入的关键内部服务器上,防止被没有安全控制的用户系统感染。专用vlan部署在公共服务网段,用多台公共服务器预防信任利用。
结论
本文讨论的技术不但能消除code-red红色代码及其变种造成的潜在危害,还能抵御绝大多数袭击。需要牢记的是,安全性在基础设施中的地位非常重要,前面的讨论就证实了这一点。防止网络及其资源受code-red红色代码侵害只是安全防御的第一步。只有积极主动地进行防御,才能保护网络免受code-red红色代码及未来病毒的袭击。建立安全策略、实施某些功能并定期进行内部或外包形势评估可以保证网络的安全。如果想详细了解应该怎样保护网络,请参考safe蓝图:
http://www.cisco.com/go/safe
与其它特性一样,如果希望实现前面讨论的某些特性,必须保证设备具有足够的cpu资源。需要注意的是,实现这些功能所增加的负担远远低于遭受内部code-red红色代码袭击后增加的负担。
需要特别注意的是,safe蓝图于2000年10月公布它无需修改设计或实施方案就可以用于对付code-red红色代码。在检测iss袭击和code-red红色代码时,只需定期更新nids签名即可。code-red红色代码和其它严重的网络病毒提醒我们,最好不要被动地设计网络安全性。只有制定了良好的安全策略,并以此为基础采用了综合网络安全防护方法,才能量化企业所冒的风险,并有效消除几乎所有的潜在威胁。
配置信息
本节将提供文中讨论的某些技术的配置样例,这些配置尚未作为safe的一部分进行防御功能测试,以后还需要进一步修改。
nids袭击签名
下面提供的签名将被添加到safe蓝图内许多模块的nids系统(cisco secure ids 4210 sensor、cisco secure ids 4230 sensor、入侵检测系统模块)中。
通过袭击企图接入索引服务器
字串:
“[gg][ee][tt].*[.][ii][dd][aa][\x00-\x7f]+[\x80-\xff]”
发生次数:1
端口80
如果web服务器正在其它tcp端口(例如端口8080)上倾听,将需要为每个端口号生成独立的定制字串。
警报严重等级设置建议:
· 高(思科安全策略管理器[cspm])
· 5(unix director)
索引服务器接入缓冲器溢出code-red红色代码蠕虫
字串:
“[/]default[.]ida[?][a-za-z0-9]+%u”
注意:上述字串中不能有空格。
发生次数:1
端口80
如果web服务器正在其它tcp端口(例如端口8080)上倾听,将需要为每个端口号生成独立的定制字串。
警报严重等级设置建议:
· 高(思科安全策略管理器[cspm])
· 5(unix director)
nbar标记
这种配置中使用了cisco 7206 vxr。丢弃分组的三种方法如下。应该注意的是,测试表明,nbar监管对cpu使用率的影响极低。下述命令可以对code-red红色代码流量进行分类,并用第一个差分服务控制点(dscp)值进行标注。
class-map match-any http-hacks
match protocol http url “*default.ida*”
policy-map mark-inbound-http-hacks
class http-hacks
set ip dscp 1
interface fastethernet 2/0
service-policy input mark-inbound-http-hacks
interface atm 4/0
service-policy input mark-inbound-http-hacks
带acl块和记录的nbar标记(可选)
以下命令使用dscp标记拒绝分组从设备向外传输,并作相应的记录。启用访问控制表(acl)记录时应认真考虑,保证巨额流量不会压垮路由器。
access-list 105 deny ip any any dscp 1 log
access-list 105 permit ip any any
interface atm 4/0
ip access-group 105 out
interface fastethernet 2/0
ip access-group 105 out
策略路由到null0的nbar标记
以下命令使用dscp标记与策略路由丢弃分组。
access-list 106 permit ip any any dscp 1
route-map null_policy_route 10
match ip address 106
set interface null 0
interface atm 4/0
ip policy route-map null_policy_route
interface fastethernet 2/0
ip policy route-map null_policy_route
nbar监管丢弃
以下命令使用nbar监管丢弃分组。
policy-map drop-inbound-http-hacks
class http-hacks
police 100000000 50000 50000 conform-action drop exceed-action drop
exit
interface atm 4/0
service-policy input drop-inbound-http-hacks
interface fastethernet 2/0
service-policy input drop-inbound-http-hacks
内容引擎(透明模式)
以下命令配置的块规则先使用常规表达式匹配code-red红色代码签名,然后丢弃分组。这种功能利用cisco ce-550和ce-590内容引擎进行测试。
!ce blocking filter rule
rule block url-regex ^http://.*/default\.ida$
其它信息链接
思科系统公司对code-red红色代码的解决方法和需要的补丁: http://www.cisco.com/warp/public/707/cisco-code-red红色代码-worm-pub.shtml
microsoft 对code-red红色代码的解决方法和需要的补丁:
http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/bulletin/ms01-033.asp
思科技术帮助中心(tac)为应对code-red红色代码作出的技术提示:
http://www.cisco.com/warp/customer/63/codered_index.shtml
eeye 提供的code-red红色代码文档:
http://www.eeye.com/html/research/advisories/al20010717.html
http://www.eeye.com/html/research/papers/ds20010802.html
iis漏洞说明和nids签名id:
http://www.cisco.com/go/csec。搜索id 3394。
计算机紧急响应小组(cert)提供的code-red红色代码信息:
http://www.cert.org/advisories/ca-2001-19.html
http://www.cert.org/advisories/ca-2001-23.html
safe蓝图信息:
http://www.cisco.com/go/safe
思科安全产品和安全咨询信息:
http://www.cisco.com/go/security
http://www.cisco.com/go/securityconsulting
cisco pix ® firewall:
http://www.cisco.com/warp/public/cc/pd/fw/sqfw500/
内容引擎/内容服务交换机(ce/css)内容联网设备:
http://www.cisco.com/warp/public/779/largeent/learn/technologies/content_networking/switch.html
websense 内容过滤服务器:
http://www.cisco.com/pcgi-bin/ecoa/displayprofile?partner_id=8443
|