奔流不息的网络里,Web绽放着绚丽的色彩、电子邮件呼哧的穿梭网际、语音电话、网络会议、文件传输,各种数据交织错落,形成辉煌的数字世界。在喧闹的数字世界底层,存在一种精致的次序,这种次序决定着数据的选路、异构介质衔接、协议的交互等功能。而这一次序的缔造者正是布满整个网络的路由器。于是,路由器成了数据通信的交通亭,也成为了众多黑帽(Blackhat)争夺的目标之一。
Cisco路由器占据这网络世界的绝对位置,于是安全焦点效应激发了路由***与防御而产生的精美艺术。下面我将由浅入深的方式讲述Cisco***的手段以及防御策略。
【路由器感冒】
路由器从本身的IOS来说,并不是一个健壮的体系,因而它偶尔也会让自己感冒发烧。系统感冒发烧起来,抵抗力自然就降低不少。
*IOS自身欺骗
Cisco路由器是用IOS系统来实现路由的细节功能,因此它是路由系统的灵魂。Show命令的在线系统方式却为我们打开一个偷窥之门。
众所周知,Cisco路由器中,一般用户只能查看路由器的很少信息。而能进入特权模式的用户才有资格查看全部信息和修改路由。一般模式下,show的在线帮助系统不会列表所有可用的命令,虽然75个show的扩展参数只能用于特权模式下(enable),实际上只有13个受到限制。这意味着一般用户(非特权用户)可以查看访问列表或其他路由安全相关信息。
重要安全相关的ACL信息可以被登录路由的非特权用户查看,诸如:
#show access-lists
#show ip prot
#show ip ospf dat
#sh ip eigrp top
等命令可以在非特权模式下泄露网络敏感信息。通过这些命令,我们能得出路由器配置的大致情况,这对采取进一步的***起到辅助作用。不过由于这种方式需要用户已经有一个登录帐户,因此得到这样的信息有一定难度。
*WCCP暗道
Cisco在IOS 11.2版本中引入WCCP(Web Cache Control Protocol),为Cisco缓存引擎提供协议通信。Cisco缓存引擎为www提供透明缓存服务。缓存引擎用WCCP来和其他cisco路由器通信。路由器把HTTP数据发送到缓存引擎主机中。
虽然这种方式默认是关闭的。假如使能(enable)的话,那么WCCP本身是没有认证机制的。路由器将会把每一个发送合法缓存引擎类型的Hello包的主机认为缓存引擎,于是把HTTP数据缓存到那台主机。这意味着恶意用户可以通过这种方式获取信息。
通过这种方式,***者可以截获站点认证信息,包括站点密码;替代实际WEB内容为自己设计的陷阱;通过路由彻底破坏Web提供的服务。这种方式,可以完全规避登录烦琐的***方法,对Web提供全面而且致命的打击。
我们既可关闭WCCP的启用机制,也可通过ACL阻止WCCP发送HTTP流量给不信任主机来防止这样的恶劣情况发生。
*HTTP服务的困惑
Cisco在IOS版本加入了远程管理路由的Web特性,这对于新羽(newbie)的管理员来,无疑是值得高兴的事情。但引入方便的同时,隐患也随之进入。
1.基于拒绝式服务***的HTTP的漏洞
Cisco路由启用(enable)远程WEB管理,很容易遭受DoS。这种DoS能导致路由器停止对网络请求的响应。这是功能是Cisco路由的内嵌功能。但启用这个特性,通过构造一个简单的Http请求就会造成DoS***:
http:///%%
这种请求导致路由停止响应,甚至引起路由器执行硬重置(hard reset)。
2.基于HTTP服务器查询的漏洞
Cisco 安全建议小组在2000年10月30日公布了这个漏洞。IOS 11.0引入通过Web方式管理路由。”?”是HTML规范中定义的CGI参数的分界符。它也被IOS命令行接口解释成请求帮助。在IOS 12.0中,当问号邻接于”/”,URL解释器就不能正确解释其含义。当一个包括”?/”的URL对路由器HTTP服务器进行请求,并且提供一个有效的启用口令,则路由器进入死循环。因而引起路由崩溃并重起。
如果http起用,浏览
http://route_ip_addr/anytest?/
并且提供特权口令,则可以导致DoS***,导致路由停机或者重启。
除了让路由死亡之外,Http额外提供了一种可怕权限提升的漏洞,如下所论。
3.Cisco IOS 认证漏洞
当HTTP服务器启用并且使用本地用户认证方式。在某些条件,可以绕过认证并执行设备上的任何命令。用户可以对设备完全的控制。所有命令都将以最高特权执行(level 15)。
使用username 和password的路由设备帐户认证方式,构造如下URL:
http://router_ip_addr/level/xx/exec/….
(注:xx代表16至99之间的84种不同的组合***,因为路由器硬件类型众多,而IOS版本也存在不同,因此针对不同的路由器类型,***组合数字不同。)
通过这种方式,***者可以完全控制路由并可以改变路由表配置。这种可怕的事实让网管也感到惊悸。这种完整的控制方式将是网站数据通信枢纽的致命一击。
虽然Http漏洞带来如此之多的漏洞,但这种漏洞最主要原因是因为启用http服务器管理路由的缘故,由于这种管理是种命令行方式的替代物,因此对于熟练的网管来说,没有必要启动这种危害性很大的服务。
#no ip http server 的路由配置也成为时髦的安全配置语句。
【在SNMP中行走】
谈到Cisco路由的安全性,我们就必须涉及到SNMP这个看似简单,实际扮演着重要角色的协议,正因为它的存在,路由器的***变的丰富有趣多了。
*SNMP基础简介:
每个SNMP启用的路由设备都包含一个叫做管理信息模块(MIB),这是一种包含简单等级的数据目录结构,在这种树结构中包含设备各种信息。SNMP基本的命令GET,可以检索MIB的信息,而SET命令则可设置MIB变量。一种用于监控和管理CISCO路由的的软件工具是MRTG,至于如何配置其用于Cisco设备的监控可以参阅LOG的《怎样在Windows NT/2K下安装MRTG》一文(http://www.2hackers.org/cgi-bin/2hb/topic.cgi?forum=7&topic=212)。
在路由器中配置SNMP的方法如下:
(conf)#snmp-server community readonly RO
(conf)#snmp-server community readwrite RW
SNMP协议通过社区(community)字串的概念赋予对设备MIB对象访问的权限。上例中,设置了只读访问的社区字串readonly和可进行读写操作的readwrite社区字串。而大部分管理员喜欢使用public和private设置只读字串和读写字串,疏不知,这样轻易的结果将给网络带来巨大的波动。我们可以在【触及RouterKit】部分清楚认识到这种危害。
通过SNMP我们可以方便管理和监控Cisco的设备(参阅Log文章介绍),同时也给***者带来可乘之机。
*Cisco IOS软件SNMP读写ILMI社区字串漏洞
ILMI是一个独立的工业标准,用于配置ATM接口。MIB是一个树形结构,包括操作(只读)数据以及配置(读写)选项。在有漏洞的设备上,通过在SNMP请求中指定一个ILMI社团字符串,可以访问整个树形管理结构中三个特定部分的对象:MIB-II系统组,LAN-EMULATION-CLIENT MIB以及PNNI(Private Network-to-Network Interface)MIB。每一部分的子集对象都可以使用相同的“ILMI”社团字符串修改。
MIB-II系统组包括设备本身的基本信息。能被修改对象的数目虽然是有限的。例如包括:
system.sysContact.
system.sysLocation.
system.sysName.
Cisco IOS软件版本11.x和12.0允许使用一个非文档的ILMI社区字串未经授权就查看和修改某些SNMP对象。其中就包括诸如上面所说的"sysContact","sysLocation",和"sysName"对象,虽然修改它们不会影响设备的正常操作,但如果意外修改可能会产生混乱。剩下的对象包含于LAN-EMULATION-CLIENT和PNNI MIBs,修改这些对象可以影响ATM配置。如果没有防止未授权使用ILMI社团字符串,一台有漏洞的路由器可能会遭受DoS***。
如果SNMP请求可以被有漏洞的设备接收,那么没有适当授权,就可以访问某些MIB对象,违背了保密性。没有授权就可以修改可读MIB对象的子集,破坏了完整性。而更具有危害性的方法是向SNMP端口发送大量的读和写请求。有漏洞的设备,如果没有防范接收SNMP包的措施,就会遭受DoS***,导致路由重载。