总结
思科客户目前受到了正在互联网上肆虐的新蠕虫的攻击。此蠕虫的签名有点象去往端口69的UDP流量,以及去往端口135和4444的大量TCP流量。受感染的客户接收到了来自内外系统的巨额流量。思科设备的症状包括但不局限于,CPU使用率升高,输入接口上的流量减少。本文将重点介绍蠕虫抵御技术、用于抵御蠕虫的思科软件。
这种蠕虫被称为“W32.Blaster”、“msblast.exe”、“Lovsan”、“Poza”或“Exploit-DcomRpc”,它利用Microsoft以前发现的漏洞,中文称冲击波。欲知详情,请访问:
http://www.microsoft.com/technet/security/bulletin/MS03.026.asp
目前,有两种蠕虫瞄准了没有安装用于应付MS03-026的补丁的系统,它们是Blaster和Nachi。本文将重点介绍抵御Blaster冲击波的各种技术,其它文档将重点介绍抵御Nachi冲击波杀手的各种技术,其网址为:
http://www.cisco.com/en/US/products/sw/voicesw/ps556/products_tech_note09186a00801aedd6.shtml。这些文档的目的都是利用相关技术抵御各类蠕虫。
详细情况
如果想了解蠕虫的详细情况,请访问Microsoft的Web站点:
http://www.microsoft.com/technet/security/virus/alerts/msblaster.asp
抵御这种蠕虫的方法是,挡住它用于传播自己的端口,通过扫描寻找新的感染对象,然后传播可执行代码。本文将重点介绍内部网络受感染之前或之后应怎样阻挡蠕虫的传播。由于这种蠕虫利用合法端口传播,因此,阻挡这些端口可能会影响正常功能,例如文件共享、TFTP或Kerberos认证。无论您使用的是哪种网络配置,思科都建议您在操作正常时建立基线流量文档,并利用此文档决定是否阻挡端口或网络中的流量。为避免影响网络功能,阻挡端口时要特别谨慎。这些端口的简要正常使用说明如下。
TCP端口135用于MS RPC协议,此端口通常用于共享本地网段上的文件,很少用于通过WAN网段共享。这个端口是最初使用的漏洞,是完全感染整台机器的开始。阻挡端口135可以防止最初感染,但会中断网络中的正常文件共享功能。
UDP端口69用于普通文件传输协议(TFTP),通常用于向联网设备加载新软件图像或配置。感染了W32.Blaster蠕虫的主机将打开这个端口,将msblast.exe文件从受感染的机器传输到其它干净机器。挡住这个端口可以防止蠕虫从已经感染的机器传播到易损主机上,但会中断网络内的正常TFTP功能,包括某些IP语音功能。
TCP端口4444用于Kerberos认证和Oracle9i通信。完全感染了W32.Blaster蠕虫的主机将在此端口上打开一个命令提示符,使机器可以接受遥控。挡住这个端口可以防止黑客使用受感染的机器为非作歹,但会中断正常的Kerberos认证功能或网络内的Oracle9i实施。
TCP和/或UDP端口137、138、139和593都有薄弱环节,很可能会使主机受到感染,但据目前所知,还不是传播W32.Blaster蠕虫的直接原因。思科建议,为防止被遥控,所有不需要的端口,尤其是自身有弱点的端口,都应该在边缘网络处挡住内外通路。
检测
使用启用了NetFlow的IOS检测受感染的主机
NetFlow可以找到受感染的主机。在接口上,NetFlow必须用ip route-cache flow命令启用。在下例中,受感染的主机试图感染目标端口135上的随机系统,输出显示为0087。端口69是0045,端口4444是115c。
Router>show ip cache flow | include 0087
SrcIf SrcIPaddress DstIf DstIPaddress Pr SrcP DstP Pkts
Fa2/0 XX.XX.XX.242 Fa1/0 XX.XX.XX.119 06 0B88 0087 1
Fa2/0 XX.XX.XX.242 Fa1/0 XX.XX.XX.169 06 0BF8 0087 1
Fa2/0 XX.XX.XX.204 Fa1/0 XX.XX.XX.63 06 0E80 0087 1
Fa2/0 XX.XX.XX.204 Fa1/0 XX.XX.XX.111 06 0CB0 0087 1
Fa2/0 XX.XX.XX.204 Fa1/0 XX.XX.XX.95 06 0CA0 0087 1
Fa2/0 XX.XX.XX.204 Fa1/0 XX.XX.XX.79 06 0C90 0087 1
使用带Sup2和MLS的CatOS检测受感染的主机
MLS统计数据可以用于跟踪受感染的主机。如下例所示,为查看源端口和目标端口,应在全流中启用NetFlow,以显示来自受感染主机、正试图感染目标端口tcp 135上的随机系统的流量。
Router>(enable)set mls flow full
Router>show mls statistics entry ip dst.port 135
Last Used
Destination IP Source IP Prot DstPrt SrcPrt Stat.Pkts Stat.Bytes
................ ............... ..... ...... ...... ......... ...........
XX.XX.XX.28 XX.XX.XX.10 TCP 135 2329 0 0
XX.XX.XX.58 XX.XX.XX.28 TCP 135 2342 0 0
XX.XX.XX.141 XX.XX.XX.223 TCP 135 2333 0 0
XX.XX.XX.189 XX.XX.XX.1 TCP 135 2347 0 0
XX.XX.XX.12 XX.XX.XX.19 TCP 135 2328 0 0
XX.XX.XX.245 XX.XX.XX.137 TCP 135 2343 0 0
XX.XX.XX.29 XX.XX.XX.22 TCP 135 2318 0 0
CSIDS签名
如果使用了思科安全入侵检测系统,就可以利用如下签名更新文件:
http://www.cisco.com/kobayashi/sw.center/ciscosecure/ids/crypto/
为降低S49上的虚警率,应将签名3327设置为只检测端口135,而不检测139或445。
为对付这种蠕虫,还可以添加定制签名字串,其方法如下:
Engine STRING.UDP
SigName MS Blast Worm TFTP Request
ServicePorts 69
RegexString \x00\x01[Mm][Ss][Bb][Ll][Aa][Ss][Tt][.][Ee][Xx][Ee]\x00
Direction ToService
症状
如果想了解受感染的Microsoft主机的症状,请查看Microsoft的公告牌:
http://www.microsoft.com/technet/security/virus/alerts/msblaster.asp。
受感染后,整个网络表现为流量增加,防火墙、路由器和交换机的负担加重,网络稳定性降低。这种蠕虫产生的流量很大,但在受感染24小时之后将趋于稳定。
未知网络故障的原因可能是用过于普通的过滤器过滤或阻挡合法服务,如果路由器或IP电话等设备无法启动,请检查它是否仍然能够接入TFTP服务器。这些设备一般不易感染W32.Blaster蠕虫,但启动后加载软件或配置文件时将依赖开放式TFTP功能。
开发出来的产品
本节将重点介绍利用网络中现有的思科产品抵御W32.Blaster蠕虫的方法。如果确信不会影响现有网络的功能,这些技术应该在网络的接入边缘使用。由于受感染的系统仍然能够在一定的网络范围内传播,因此,最好根据Microsoft的建议为受感染的服务器打补丁。
虽然这些例子都是说明怎样阻挡受感染端口的,但它们并不能阻挡所有端口。如果网络内的主机都未受感染,可以只阻挡网络边缘的端口135,这样会防止从网络外被感染,而且不会妨碍TFTP和Kerberos服务。利用NetFlow识别网络上的正常流量将有助于减小这些病毒抵御技术对正常操作的影响。
如果想了解预防分布式拒绝服务袭击的一般方法,请访问:http://www.cisco.com/warp/public/707/newsflash.html。
小心:无论要改变网络中的哪种配置,都应该先评估这种配置变化的影响。
为IOS开发的ACL
除特别声明的以外,这种产品适用于多数路由器平台。
注意:如果想跟踪源地址,应使用Sampled NetFlow,而不是ACL中的“log”语句,因为高流量与log语句可能会压垮路由器。
! ... block TFTP
access.list 115 deny udp any any eq 69
! ... block W32.Blaster related protocols
access.list 115 deny tcp any any eq 135
access.list 115 deny udp any any eq 135
! ... block other vulnerable MS protocols
access.list 115 deny udp any any eq 137
access.list 115 deny udp any any eq 138
access.list 115 deny tcp any any eq 139
access.list 115 deny udp any any eq 139
access.list 115 deny tcp any any eq 445
access.list 115 deny tcp any any eq 593
! ... block remote access due to W32.Blaster
access.list 115 deny tcp any any eq 4444
! ... Allow all other traffic .. insert
! ... other existing access.list entries here
access.list 115 permit ip any any
interface <interface>
ip access.group 115 in
ip access.group 115 out
蠕虫将尝试着将分组送至随机IP地址,但某些地址并不存在。发生这种情况时,路由器将回复以“ICMP unreachalbe”分组。某些情况下,对大量无效IP地址回复请求将降低路由器的性能。为防止这种现象发生,可使用以下命令:
Router(config)# interface <interface>
Router(if.config)# no ip unreachables
注意:普通网络配置,例如某些类型的通道结构,需要使用“ip unreachables”。如果路由器必须能够发送“ICMP unreachable”分组,可以用以下命令通过速率限制答复的数量:
Router(config)# ip icmp rate.limit unreachable <millisecond>
从Cisco IOS Software 12.0开始,默认速率设置为每秒两个分组(500ms),通常使用2000ms。
Cisco 12000
接收ACL特性 在Cisco 12000(GSR)系列路由器上,去往路由器ip地址的分组将“前往”千兆位路由处理器(GRP)接受处理。为保护GRP,可以使用rACL。rACL将对去往GRP的流量进行过滤,只有经过批准的流量才能由GRP处理,未通过批准的流量将被丢弃。一般情况下,rACL不影响经过路由器的流量,而只影响去往路由器本身的流量。
rACL能够有效减少去往GRP的大量攻击流量的影响。欲知详情,请参考:GSR:接收访问控制表。
6500上的VACL
思科建议在Cisco Catalyst 4000上使用IOS ACL,并使用Cisco Catalyst 6500的Sup3、Hybrid和Native配置。为方便用户使用,我们提供了VACL配置实例。另外,我们还建议用户使用“no ip unreachables”。
小心:与修改配置相同,组合使用VACL和IOS ACL时也要谨慎。要注意,VACL适用于VLAN内各方向的所有流量。
配置:
! ... block TFTP
set security acl ip BLASTER deny udp any any eq 69
! ... block vulnerable MS protocols
! ... Blaster related
set security acl ip BLASTER deny tcp any any eq 135
set security acl ip BLASTER deny udp any any eq 135
! ... Non.blaster related
set security acl ip BLASTER deny tcp any any eq 137
set security acl ip BLASTER deny udp any any eq 137
set security acl ip BLASTER deny tcp any any eq 138
set security acl ip BLASTER deny udp any any eq 138
set security acl ip BLASTER deny tcp any any eq 139
set security acl ip BLASTER deny udp any any eq 139
set security acl ip BLASTER deny tcp any any eq 593
! ... block remote access due to W32.Blaster
set security acl ip BLASTER deny tcp any any eq 4444
! ... Allow all other traffic
! ... insert other existing access.list entries here
set security acl ip BLASTER permit any any
! .. applies both inbound and outbound
commit security acl BLASTER
set security acl map BLASTER <vlans>
核查:
show security acl info all
删除:
clear security acl BLASTER
commit security acl BLASTER
Catalyst 3550
将IOS ACL应用于属于VLAN第3层接口的交换机虚拟接口(SVI)、物理第3层接口以及出入方向上的第3层EtherChannel接口上,保证接口上配置了“no ip unreachable”。
只有IOS ACL也没有应用于第3层接口的输入时(否则将产生错误信息),才应在交换机的第2层接口应用IOS ACL。对于第2层接口,只有物理接口支持IOS ACL,EtherChannel接口不提供支持。它只能应用到向内的方向上。
Catalyst 2950
将IOS ACL应用到接口上。注意,ACL只在向内方向上支持。为将ACL应用到物理接口,必须安装增强软件图像(EI)。
Catalyst 2900XL和3500XL
它们属于不支持第3层访问表的第2层交换机。
PIX
PIX的默认行为是阻挡流量从安全等级较低的接口(外部)进入安全等级较高的接口(内部),除非访问表或管线明确允许受感染的端口和协议通过。
另外,思科还建议阻止流量从安全等级较高的接口(内部)传输到安全等级较低的接口(外部)。
客户应拒绝通过这些端口外出:
access.list acl_inside deny udp any any eq 69
access.list acl_inside deny tcp any any eq 135
access.list acl_inside deny udp any any eq 135
access.list acl_inside deny tcp any any eq 137
access.list acl_inside deny udp any any eq 137
access.list acl_inside deny tcp any any eq 138
access.list acl_inside deny udp any any eq 138
access.list acl_inside deny tcp any any eq 139
access.list acl_inside deny udp any any eq 139
access.list acl_inside deny tcp any any eq 445
access.list acl_inside deny tcp any any eq 593
access.list acl_inside deny tcp any any eq 4444
! ... insert previously configured acl statements here,
! ... or permit all other traffic out
access.list acl_inside permit ip any any
access.group acl_inside in interface inside
虽然可以使用相应的外出表,但最好用ACL替代外出表。
抵御DoS停止服务攻击
W32.Blaster蠕虫最开始是对windowsupdate.com发动TCP SYN攻击,攻击的日期是2003年8月26日。
受感染主机产生的分组将去往IP地址的http端口(TCP/80),即windowsupdate.com。源地址将被电子欺骗成与受感染主机相同的B级的随机IP地址。因此,部署反电子欺骗技术有助于消除DoS攻击的影响。
思科路由器上两种常用的反电子欺骗技术是单播反向路径转发(单播RPF)和访问表。
如果接口上启用了单播RPF,路由器将检查此接口上收到的所有分组,并保证源地址和源接口与收到分组的接口匹配,否则将丢弃分组。如果想详细了解单播RPF,请参考“配置单播反向路径转发”一文。
为反电子欺骗部署访问表需要深入了解可能表现为某接口上的源地址的网络。如果想丢弃此接口上的电子欺骗分组,可以在接口上配置ip access.group <acl> in 命令,并利用访问表允许所有授权网络通过,拒绝其余IP地址通过。
例如,在通过快速以太网0/0与内部网络192.168.1.0/24相连的企业路由器上,可使用以下访问表丢弃来自此内部网的电子欺骗分组:
access.list <access.list> permit 192.168.1.0 0.0.0.255
access.list <access.list> deny any
interface fastethernet 0/0
ip access.group <access.list> in
上例中的<access.list>必须是未被占用的访问表号码,范围为1-99或者1300-1999(IP标准访问表范围)。
如有可能,最好使用单播RPF取代访问表执行反电子欺骗功能。
如果想更详细地了解反电子欺骗功能,请参考“提高思科路由器安全性”的反电子欺骗章节。
讨论与公开宣布
这个问题已得到广泛关注,并已经过多次公开讨论,参考网站如下:
• http://www.eeye.com/html/Research/Advisories/AL20030811.html
• http://www.cert.org/advisories/CA.2003.20.html