APP下载

RIPng路由协议安全性分析与攻击模型研究

2010-01-10李树军朱立才

关键词:路由表攻击者路由器

李树军,朱立才

(盐城师范学院信息科学与技术学院,江苏盐城 224002)

0 引 言

在较早的时候,国外一些研究者对RIPng路由协议的安全性做了一些研究[1-3],国内也有学者进行过类似研究[4],但相关研究仅对RIPng路由协议可能存在的安全缺陷进行了简单分析,遗憾的是受限于当时的攻击手段与攻击技术,要实现一次成功的攻击并不容易,因此这些安全问题并没有得到大家足够的重视.在Defcon 2008国际网络安全技术大会上,研究人员利用路由协议的漏洞进行网络攻击的演示再次引起了人们对路由协议安全性的关注[4].本文对RIPng路由协议的安全性做了分析并通过实验进行了验证,同时,提出了几种切实可行的攻击模型及相应的防御措施.

1 RIPng路由协议安全性分析

1.1 RIPng路由协议概述

RIPng又称为下一代RIP协议,它是对原来的IPv4网络中RIP-2协议的扩展,大多数RIP的概念都可以用于RIPng.为了在 IPv6网络中应用,RIPng对原有的RIP协议做了一些修改,比如,使用UDP的521端口发送和接收路由信息,使用FF02∶∶9作为链路本地范围内的RIPng路由器组播地址,并由RFC 2080正式定义.

RIPng路由协议的首部包括命令字段和版本号字段.同RIP一样,命令字段用来区分报文要实现的各种操作.其中命令号1表示请求部分或全部选路信息,命令号2表示响应.版本号字段包含了协议的版本号(目前的版本号值为1).报文的剩余部分是一个RTE(路由表项)序列,其中每一个RTE由目的IPv6前缀、路由标记、前缀的有效长度以及到目的网络的花销4部分组成.

与RIPv2不同的是,RIPng的下一跳字段是由一个单独的RTE指定的.在表示下一跳的RTE中,路由标记和前缀长度字段必须为0,而度量字段为0xFF.如果数据报中没有下一跳RTE条目或者下一跳地址为0,则采用数据报的源IPv6地址作为下一跳地址.

1.2 RIPng路由议安全性分析

RIPng对报文的合法性做了比较严格的检查:对于非主动请求的响应报文,报文的源端口和目的端口必须为521;源IP必须为链路本地地址且不能为路由器自身的地址;报文的跳数必须为最大值255,保证了报文是相邻路由器发送来的(因为中间路由器转发报文的时候会对跳数做减1处理);下一跳RTE条目中,下一跳地址必须为链路本地地址.

此外,RIPng没有单独设计安全验证机制,其安全性由IPv6的扩展AH和ESP头提供保障[5,6].从目前使用的情况来看,相对RIPv1和RIPv2而言,RIPng的安全性并没有得到明显提高.

虽然RIPng相应的标准早在1997年便被制订出来,但是对于使用者来说却是比较新的概念,其安全方面的缺陷主要包括:

(1)由于各设备生产厂商在协议的实现上的限制和密钥的管理与分发方面的问题,IPv6的安全选项并不能保证被有效启用 (至少在目前的实验用与试商用IPv6环境里,IPv6的安全选项没有被广泛使用),而RIPng本身缺乏验证机制,这对使用UDP方式来进行信息交换的RIPng将是致命的威胁.

(2)网络攻击者可以假冒路由器发送路由请求报文给目标路由器,获得目标路由器的路由表,从而完成对目标网络的拓扑结构的探测.

(3)网络攻击者可以发送欺骗数据包到其相邻的路由器,修改路由表或者插入新的路由条目,进行路由欺骗攻击.

(4)在协议各功能模块的实现上,各生产厂商采用的算法和对RIPng报文的处理上存在一些缺陷,附带了不少安全方面的问题.

综上所述,RIPng路由协议在设计、实现和使用过程中存在诸多不足,网络攻击者利用这些不足可以很容易地进行网络攻击.其中较易实施且危害极大的莫过于通过修改路由器的路由表来控制数据包的流向,从而进一步进行拒绝服务、数据监听、网络欺骗等攻击行为.

2 RIPng路由协议安全缺陷验证

Scapy是一个功能强大的交互式数据包处理程序,支持常见网络协议,利用它可以很方便地构造各种数据包用于安全测试.

2.1 RIPng路由协议安全缺陷验证

RIPng路由协议安全缺陷验证用网络拓扑和设备各接口IPv6地址如图1所示.

图1 RIPng安全测试网络拓扑图

图1中,PC1与PC2的系统平台为Windows XP Sp3中文专业版,R1与R2为H3C SW5510路由交换机,VRP(通用路由平台)版本为5.20.

在验证中,各设备按照拓扑图进行连接并做IPv6地址与RIPng相关配置后,完成实验环境的构建.配置完成后R1的路由表如图2所示(以fe80开头的为设备接口链路本地地址,由设备自动生成,不需要配置).

测试1 在PC1上发送欺骗数据包给R1,在R1上添加一条新的路由条目2001:1:1:1::/64.注意数据包的IPv6协议头的跳数必须设置成255,数据包的目的地址为ff02::9组播地址,源地址为链路本地地址.如果要修改已经存在的路由条目,设置的metric值需要比原来的小.新添加到R1的路由条目会被扩散到R2,从而影响R1所在的整个AS(自治系统).R1被修改后的路由表如图3所示.

图2 R1真实的IPv6路由表

图3 R1被修改后的IPv6路由表

测试用Scapy命令如下:

测试2 发送路由请求包,得到目标路由器的路由表,从而得到网络拓扑相关信息.

测试用Scapy代码如下:

在测试1中,由于路由器对接收到的数据包的跳数进行严格检查,所以不可能直接修改远程路由器的路由表.网络攻击者在实际攻击时,可以在目标路由器所在的网络寻找弱点主机作为跳板进行攻击.在测试2中,目标路由器返回的路由表信息在变量ans里,要得到直观的结果还需进一步处理.此外,我们在测试时还发现,发送大量的虚假路由信息给目标路由器会使其路由表膨胀,会消耗掉其有限的CPU和内存资源.

2.2 分 析

以上测试说明,RIPng路由协议的确存在安全方面的缺陷,其危害较大.而比较容易实施的莫过于发送伪造的数据包给目标路由器,通过修改其路由表来控制数据的流向.网络攻击者有可能利用这种缺陷进行网络攻击.

3 利用RIPng路由协议的安全缺陷进行网络攻击

不同于其他攻击方式,路由协议攻击需要攻击者具有较高的专业技能,需要多种攻击手段相结合.针对前述的RIPng路由协议安全缺陷的实验和分析,我们可以构建如下两类攻击模型.

3.1 拒绝服务类攻击模型

拒绝服务类攻击模型的拓扑结构如图4所示.

图4 拒绝服务类攻击模型拓扑结构示意图

在这种攻击模型中,可以有如下4种攻击方式:

(1)构造下一跳地址无效的路由表项.

(2)构造路由环路.如在图4的网络环境中,假设从PCA到网络X的数据需要经过R6→R1→R2→R3这一路径,网络攻击者可以修改R1中到网络X的路由表项的下一跳地址为R6的地址,导致数据包在R1和R6之间往复循环,直到TT L值为0.

(3)流量牵引,堵塞链路.在如图4的网络环境里,有可能把R1→R2→R3和R1→R6→R7的流量定向为R1→R5→R4→R2→R3和R1→R5→R6→R7,从而干扰数据正常流向,R1→R5的有限带宽有可能被全部消耗掉.

(4)发送大量的欺骗包给网络里的路由器,让路由器的路由表无限膨胀,消耗路由器的CPU和内存资源.在测试中,我们也发现不少型号的路由器在处理超过每秒6 000多个路由响应数据包的时候会宕机.

上述4种攻击方式中,方式(3)需要对网络拓扑结构进行详细的探测,实施攻击的难度相对大一些,其余3种攻击方式很容易实施.和传统的拒绝服务类攻击手段相比,上述攻击方式具有代价小,效果明显的特点.

3.2 利用类攻击模型

利用类攻击模型的拓扑结构如图5所示.

图5 利用类攻击模型拓扑结构示意图

在这种攻击模型中,结合其他技术手段,可以有如下2种攻击方式.

(1)欺骗攻击.在图5的网络环境里,网络攻击者B可以发送欺骗包给R2,让R2把攻击者所在子网里到DNS SERVER的流量传递给它,这样网络攻击者就可以假冒DNS SERVER回复普通用户的DNS查询,达到欺骗的目的.在此基础上,网络攻击者可以进行网络钓鱼、网页挂载木马病毒等流行攻击方式.此外,R2还会把虚假的路由传递给R4,进而影响到其他网络.更简单的是,网络攻击者B可以直接在网卡上添加需要假冒的主机IP,然后提供虚假的服务与访问者进行交互,这样的攻击更直接.

(2)嗅探与中间人攻击.这种攻击需要2台攻击主机进行配合.假设PCA对ServerA进行访问,网络攻击者欺骗R1,让R1把PCA发送给ServerA的数据包转发给攻击者B,攻击者B收到数据包后对数据二次打包,设置新的数据包的目的IP为攻击者A,攻击者A收到数据包后还原数据包并把数据包转发给ServerA,如果仅仅需要嗅探上行数据,则攻击者A转发给ServerA的数据包的源IP为PCA;如果要对上行和下行的数据都进行嗅探或者进行中间人攻击,则需要比较复杂的处理.首先,攻击者A需要维护一个类似NAT的转换表,设置转发给ServerA的数据包源IP为自己,ServerA收到数据包后把数据包回复给攻击者A,攻击者A最后再把数据转发给真实的访问者PCA.

上述2种攻击方式的危害显然是很大的,特别是第一种攻击方式,很容易实施,满足这种条件的网络环境也很多,第二种方式难度大一些,而且需要较好的软件实现,但这种攻击更难被发现.

4 防御措施

针对RIPng路由协议的安全缺陷,我们提出如下防御网络攻击的措施:

(1)设置路由策略,禁止接收从用户端网络或者非信任网络流入的路由响应报文.

(2)边界路由的入口处配置适当的ACL,禁止源地址为本地子网IP地址的数据包流入网络,防止来自远程网络的欺骗数据包.

(3)在边界网络的出口配置适当的ACL,禁止源地址为非本地IP地址的数据包流出网络,防止网络中的主机被黑客当作跳板来攻击别的网络.

(4)在IPv6环境下,应对本地的IPv6地址进行汇聚,配置类似RFC2827建议的网络过滤器来减少IPv6的地址假冒.

(5)在支持的设备上配置路由容量限制.路由信息通常是存储在路由器的内存中,当路由表规模不断增大时,路由器的内存使用量也将不断增加,但路由器的总内存大小并不会改变(除非进行硬件升级),当设备内存被耗尽时,设备将不能正常工作.通过配置合适的路由容量限制,可以防止设备因收到网络攻击者发送的海量伪造路由信息而失去其工作能力.

5 结 语

可以看出,网络攻击者利用RIPng路由协议的安全缺陷进行网络攻击是切实可行的,其危害也是巨大的.此外,随着对RIPng的进一步研究,其更多的安全问题将会暴露出来.可以预见,随着对这些攻击方式的完美实现,它将像ARP欺骗攻击一样流行开来,并对网络安全带来严重的威胁.因此,作为网络管理者,在使用RIPng的过程中应该注意采用一些辅助手段来加强其安全性;作为网络设备生产厂商,在实现协议的时候除了遵循标准所规定的安全规则外,还应该考虑各种可能的细节问题,从而提高其产品的安全性.

[1]Pei D,Massey D,Zhang L.Detection of Invalid Routing Announcements in Rip Protocol[C]//IEEE Globecom2003.San Francisco:IEEE Press,2003.

[2]Wilson C.Protecting Network Infrastructure at the Protocol Level [EB/OL].[2000-12-15].http://www.cs.ucsb.edu/~seclab/projects/routing/references/wilson00protecting.doc.

[3]Humble.Spoofing RIP[EB/OL].[2004-01-05].http:// packetstormsecurity.org/groups/horizon/ripar.txt.

[4]史创明.RIP路由协议及其漏洞攻击防范[J].微计算机信息,2006,23(6):7-9.

[5]Malkin G S.RIPng for IPv6[EB/OL].[1997-01-01].http://www.ietf.org/rfc/rfc2080.txt.

[6]Malkin G.RIPng Protocol Applicability Statement[EB/OL]. [1997-01-05].http://www.ietf.org/rfc/rfc2081.txt.

猜你喜欢

路由表攻击者路由器
买千兆路由器看接口参数
机动能力受限的目标-攻击-防御定性微分对策
维持生命
路由器每天都要关
路由器每天都要关
基于OSPF特殊区域和LSA的教学设计与实践
研究路由表的查找过程
正面迎接批判
有限次重复博弈下的网络攻击行为研究
BGP创始人之一Tony Li:找到更好的途径分配互联网地址