面向OSPF脆弱点的分节点污染方法研究

2018-05-25 08:50周季璇顾巧云
计算机技术与发展 2018年5期
关键词:路由器链路节点

周季璇,顾巧云,凤 丹

(江南计算技术研究所,江苏 无锡 214083)

0 引 言

近年来,路由协议的缺陷[1]导致各种针对路由协议的脆弱性利用呈现增长的趋势,因此路由协议的安全研究成为一项十分急迫的任务[2]。OSPF协议是目前应用广泛的内部网关路由协议,其安全性研究一直受到业界学者的广泛关注,近年来也有不少研究成果。文献[3-5]对OSPF协议脆弱性被利用后的检测恢复以及防范进行了研究,文献[6-8]进一步分析研究了OSPF协议的安全机制。OSPF协议在协议细节、认证和配置等方面的相关脆弱点也陆续被发现[9]。Gabi Nakibly团队在2013年公布了一个关于OSPF协议的新型脆弱点并且提出了该脆弱点的利用方法[10],同时在自治域只有一个骨干区域的情况下进行了实验验证,得出只需要发送一个包到任意位置的目标路由器就能持久改变该路由器的链路状态数据库,控制其路由表并且污染整个自治域内的其他路由器的结论。国内外也有文献[11-13]针对该脆弱点进行了分析研究,但没有对网络拓扑特征以及目标路由器在网络拓扑中的位置对污染效果的影响进行深入探讨。

对此,文中在Gabi Nakibly团队的研究基础上做了进一步探索,在自治域分为多个区域的情况下,提出一种OSPF脆弱点分节点污染方法,并且对该方法进行了仿真测试。总结出网络拓扑和目标路由器位置选择对污染范围和效果的影响,并提出了利用该脆弱点的污染路径生成树确定方法,最后针对该脆弱点,特别是在分节点污染情况下的特征提出了防范措施。

1 OSPF安全机制及脆弱点

OSPF协议有三个内建的安全机制,分别是可靠泛洪与自反击机制,层次路由和信息隐藏,程序性检测及约束,它们使得OSPF协议更加强壮,攻击更加困难[14]。其中,可靠泛洪与自反击机制是最重要的一条,尤其是自反击机制,是指一旦某节点路由器收到了一条Advertising Router等于自身ID的LSA实例,便会认为该LSA是自己的实例,而这个实例比该路由器中对应的实例更新,那么该路由器就会立即泛洪一条比接收到的LSA更新的实例[15]。因为自反击机制的存在,攻击者冒充网络中路由器发送的恶意LSA很快就会被更新的正确LSA所覆盖,因此,为了能够有效修改链路状态数据库中的LSA项,攻击者必须持续不断地发送攻击包,成本较高。

GabiNakibly团队经过研究发现,OSPF协议进程在将LSA放入链路状态数据库时,仅以Link State ID项来标识唯一的LSA实例并且不对Link State ID和Advertising Router项是否相等进行校验,而对于Router-LSA(描述产生路由器接入某区域的接口状态),这两项必须相等[13,16〗。因此,假设发送一条包含恶意Router-LSA的数据更新包给某一个目标路由器,满足以下条件:

(1)Link State ID=目标路由器的ID;

(2)Advertising Router≠Link State ID,且不等于网络内任何一个路由器的ID;

(3)LSA的序列号(即sequence number项)大于该路由器对应的有效LSA的序列号。

那么,此恶意Router-LSA就能成功避开OSPF的自反击机制替换原来正确有效的LSA,进入目标路由器的链路状态数据库,并且通过泛洪机制扩散出去,污染其他的路由器,参与到路由表的计算中。由于目标路由器自身产生的Router-LSA信息从链路状态数据库中清除了,目标路由器的路由功能基本失效。此外,如果在恶意Router-LSA中精心构造虚假链接就能够欺骗被污染路由器,造成流量黑洞或路径劫持等诸多危害,被污染的路由器越多,危害范围越大。

发现这一脆弱点的Gabi Nakibly等在文献[10]中表示,利用该脆弱点能影响到整个自治域内所有路由器而对目标路由器在自治域内的位置不作要求。文中在其基础上进行了进一步的探索,提出了OSPF脆弱点分节点污染方法,在自治域分为多个区域的情况下,对该方法进行了仿真测试,总结出网络拓扑和目标路由器节点位置对整个自治域污染范围和效果影响,并且提出一种用于确定污染路径及范围的生成树算法。

2 脆弱点分节点污染方法

2.1 节点分类方法

只考虑一个自治域的情况,在文献[15]中,根据路由器的位置,可以将路由器分成内部路由器(IR)和区域边界路由器(ABR)。在此基础上,文中对每个位置的路由器节点进一步细分。如图1所示,R1,R2,R3,R6是区域0的IR节点,R7是区域1的IR节点,R8是区域2的IR节点,R4和R5是区域0和区域1的ABR节点,R4也是区域0和区域2的ABR节点。

图1 网络拓扑

现根据每个节点的邻居节点的种类,继续将节点进行细分。以n-xIR-yABR的子类别进行分类,其中n表示该节点有n个邻居节点(n=1时该节点为叶子节点),xIR表示x个IR节点的邻居,yABR表示y个ABR节点的邻居,x+y=n。以图1为例,R1的类别是IR,子类别是1-1IR,R4的类别是ABR,子类别是4-4IR,其他节点以此类推。

2.2 分节点污染方法

由于恶意Router-LSA包只能通过源节点向邻居发出,所以在测试时选取邻居数量及类型最多的节点为源节点,以它的某一个邻居为目标节点,向目标节点发送恶意Router-LSA包,再利用同样的方法选择不同的邻居为目标节点进行多次污染测试,对比分析结果。通过该方法能在控制一个源节点的情况下测试到更多数量和类型的目标节点,从而得到目标节点位置选择对污染结果的影响规律。

分节点污染方法的步骤如下:

(1)根据提出的节点分类方法对网络拓扑中每个路由器节点确定子类别(n-xIR-yABR);

(2)选择n,x,y均比较大的节点作为源节点;

(3)每次选择源节点的某一个邻居,利用脆弱点进行测试,记录污染结果,直至所有邻居都被作为目标节点进行过测试;

(4)对比分析不同节点作为目标节点时的污染结果,总结规律。

以图1为例,采取分节点污染方法对其进行测试分析。选取R3(子类型4-2IR-2ABR)为源节点,通过R3分别以R2,R4,R5,R6为目标节点进行多次发包测试,针对这些不同类型和位置的目标节点分析总结每次测试的污染范围和效果。

2.3 污染路径生成树确定方法

目标节点接收到恶意Router-LSA后,将其替换掉原本正确有效的LSA进入链路状态数据库的Router Link States项,并且通过泛洪机制将其从一些特定接口扩散到其他节点。目标节点会把恶意Router-LSA从接收到该条LSA的接口所在区域的其他所有接口泛洪出去,也就是说,恶意LSA只能在某一个区域里泛洪而不会泛洪进其他区域,值得注意的是,对于目标节点而言,恶意LSA将不会从接收接口泛洪。此外,当目标节点是ABR时,除了会在接收恶意Router-LSA的同区域内不作修改地泛洪恶意LSA之外,还会向其他区域泛洪描述区域网络状况的Summary-LSA(由ABR产生,向区域汇总路径)的更新信息。Summary-LSA的泛洪机制和Router-LSA类似,只能在区域内泛洪且不从接收的接口进行泛洪。接收到Summary-LSA的其他区域节点的Summary Net Link States将会被污染。

根据以上对OSPF脆弱点以及泛洪机制的分析,文中提出了一种恶意LSA(假设宣告空链接)污染路径的确定方法。首先,假设Rn是源节点,它的某邻居节点Rt是目标节点,发送恶意Router-LSA包的接口在区域a,区域a以外的所有区域称为其他区域。按照以下方法生成污染路径树。

(1)以Rn为根节点,子节点为Rt(接收恶意Router-LSA);

(2)Rt的子节点根据以下规则确定:Rt是IR时,其子节点是区域a内除了Rn的所有邻居(接收Router-LSA);

(3)Rt是ABR时,其子节点是区域a内除了Rn的所有邻居(接收Router-LSA)以及其他区域的所有邻居(接收Summary-LSA)。

完成前两步之后,网络中所有节点接收到有效的污染更新消息x并且会将其泛洪到的子节点由函数f(x)确定。

根据以上方法构造生成一棵污染路径生成树,从根节点(不包括根节点)到叶子节点即是一条污染路径,如果路径中存在某个节点是非区域a的IR,那么该条路径是Summary-LSA的泛洪路径(不包括作为根节点的子节点时的目标节点),否则是恶意Router-LSA的泛洪路径。

以图1中的R3为源节点,R4为目标节点为例,利用上述方法构造的污染路径生成树如图2所示。

图2 污染路径生成树

从图2中可以看出,恶意Router-LSA污染路径是R4→R6→R3→R2→R1,R4→R6→R3→R4,R4→R6→R3→R5。而Summary-LSA污染路径是R7→R5,R8。

3 仿真测试

3.1 测试环境

该脆弱点适用于一切遵从OSPF协议规范的路由器,主导着路由器市场的Cisco也未能幸免。文中选取Cisco型号为c7200(15.0)的路由器,利用脆弱点分节点污染方法进行了仿真测试。由于实物成本较高,在此采用GNS3模拟器对实验环境进行仿真研究。

3.2 测试拓扑

采用的实验拓扑如图1所示。根据分节点污染方法,选择R3作为测试源节点。在测试时,使R3与本地云相连接,伪装成R3给目标节点(R3的邻居节点)发送带有恶意Router-LSA的协议包。

3.3 测试方法

利用Scapy,通过R3发送恶意Router-LSA包,每次选择一个目标节点(R2,R4,R5,R6),进行多次测试。将该条LSA的Link ID设置成目标路由器的ID,Advertising Router设置成任意不属于该网络中任何路由器的ID,并且序列号大于对应的有效LSA的序列号。同时,在恶意LSA里没有宣告任何链接。以目标节点是R4时为例,测试代码如下:

Fromscapy.all import *

Load_contrib(“ospf”)

R4_FALSE_LSA=IP(src=attacker_source_ip,dst=victim_destination_ip)/OSPF_Hdr(src=attacker_router_id)/OSPF_LSUpd(lsalist=[OSPF_router_LSA(options=0x22,type=1,id=victim_router_id,adrouter=false_adv_router,seq=seq_num,linklist=[]) ])

send(R4_FALSE_LSA,iface=“eth0”)

3.4 测试结果

测试之后,恶意Router-LSA替换掉原本有效的LSA进入目标节点的链路状态数据库,并逐步泛洪至其他节点,从而对一定范围的网络造成了污染。图3和图4是目标节点为R4时,R4和R7在测试前后链路状态数据库的变化图。可以看到,对路由器链路状态数据库的污染确实主要表现在对路由器Router Link States项以及对Summary Net Link States项的篡改上。

图3 R4数据库中Router Link State项的变化

图4 R7数据库中Summary Net Link State项的变化

分析图3图4的结果可知,外部注入的恶意Router-LSA成功避开了自反击机制替换掉原来正确有效的Router-LSA,进入到目标路由器R4的链路状态数据库,篡改了数据库中的Router Link States(Area 0)项。Link ID是50.0.0.1的表项,ADV Router(即上文的Advertising Router)已经由原本R4的ID(50.0.0.1)变成了恶意LSA中宣告的虚假信息11.11.11.11。而R7的链路状态数据库中,Summary Net Link States(Area 1)项也遭到了篡改。由ABR之一的目标节点R4(50.0.0.1)宣告的所有区域0内的网络状态信息均被删除了,只保留了由R4宣告的区域2的网络状态以及同为ABR的R5(40.0.0.1)宣告的网络状态。

选择不同类型和位置的目标节点进行测试,得到的污染效果如表1所示。RLS即为路由器链路状态数据库中的Router Link States项,SNS即为数据库中的Summary Net States项。对比表1由实验得出的受污染节点的范围和图2通过污染路径生成树确定方法理论分析出的结果,可以看出,实验测试结果与理论分析的污染结果完全相同,证实了污染路径生成树方法的有效性。因此当该脆弱点被利用后,可以通过该方法迅速确定整个网络拓扑中所有路由器节点的受污染情况,从而及时做出应对策略。

表1 不同目标路由器节点的污染范围

3.5 测试结论

文中利用提出的OSPF脆弱点分节点污染方法进行仿真测试,每次测试时向不同类型和位置的目标节点注入一条宣告空链接的恶意Router-LSA,证实了目标节点在网络拓扑的节点位置对最终污染范围和效果存在很大的影响,并且得出以下结论:

(1)提出的污染路径生成树方法可以有效确定污染范围和路径。

(2)发包的源节点无法从目标节点接收到恶意LSA,因此只有在拓扑成环时源节点才能收到恶意LSA。例如当目标节点是R4时,R3接收到恶意LSA的过程是R3→R4→R6→R3,而不是直接从R4接收。

(3)Summary Net Link States的更新信息只能在一个区域内泛洪。依然以文中的仿真测试为例,当R4是目标节点时,R4生成的Summary-LSA更新信息泛洪至区域1的R7,修改了R7的Summary Net Link States项,R7再将其泛洪到作为ABR的R5,但没有通过R5泛洪到区域0的R3,即没有能够跨过ABR到达其他区域。

(4)只有当目标节点是ABR时,才会影响到其他节点路由器的Summary Net Link States项,ABR自身的Summary Net Link States项不会因为恶意Router-LSA而改变。

4 防范措施

针对该脆弱点,一般可以采取协议包加密认证,加大攻击者攻击难度;在实现OSPF协议时对LSA实例增加对Router-LSA的Link State ID和Advertising Router字段是否相等的校验,从本质上消除脆弱点等措施预防该脆弱点被利用。

文中利用脆弱点分节点污染方法对脆弱点进行了仿真测试,基于对测试结果的分析,提出以下防范措施以减小该脆弱点被利用之后的影响。

(1)设计链路状态数据的检测和预警机制[12],在其突然发生巨大变化时发出警报并及时采取重启目标节点等有效手段进行防护。

(2)加强对关键节点的防护。首先该脆弱点的利用一定需要控制一个路由器节点。对于n-xIR-yABR类型节点,n,x,y三个值越大,说明该节点作为被控制的源节点或者目标节点时,可以污染到的节点数目和种类越多,危害也越大。因此要加强对该类节点防护。以图1为例,R3,R4等节点都应该是重点防护节点。

(3)改进网络拓扑的设计。尽可能解开拓扑中的环形。仍然以图1测试拓扑为例,解开R3和R6之间链接,把环形拓扑打开,就能极大地减小污染范围。改进拓扑后仍以R3为源节点进行仿真测试,结果如表2所示。

表2 拓扑改进后不同目标节点的污染范围

R6的子类型发生了改变,也无法再成为目标节点,其他节点虽然子类别没有变化,但是由于网络拓扑的变化,污染范围也明显减小。

5 结束语

OSPF协议发展至今,已成为一项比较成熟和完善的路由协议,但是仍然不能忽略它可能存在的安全隐患和威胁。针对OSPF协议某脆弱点的污染特征,提出分节点污染方法和污染路径生成树的确定方法,并通过仿真测试验证了这两种方法的有效性。在构造恶意Router-LSA时宣告的是空链接,将来可考虑在恶意Router-LSA宣告不同形式的链接时,对污染效果的影响进行更深层次的探索和研究。

参考文献:

[1] 梅鸿翔.OSPF路由协议的安全性评测研究[D].成都:电子科技大学,2010.

[2] 王先培,文云冬,高志新,等.OSPF路由协议的脆弱性分析[J].武汉大学学报:工学版,2004,37(3):98-101.

[3] SANGROHA D,GUPTA V.Analyzer router:an approach to detect and recover from OSPF attacks[C]//International symposium on security in computing and communication.Berlin:Springer,2014:370-378.

[4] LI Meng,JING Quanliang,YAO Zhongjiang,et al.On the prevention of invalid route injection attack[C]//International conference on intelligent information processing.Hanzhou,China:[s.n.],2014:294-302.

[5] SOSNOVICH A,GRUMBERG O,NAKIBLY G.Finding security vulnerabilities in a network protocol using parameterized systems[C]//International conference on computer aided verification.[s.l.]:[s.n.],2013:724-739.

[6] WANG Minghao.The security analysis and attacks detection of OSPF routing protocol[C]//7th international conference on intelligent computation technology and automation.Changsha,China:IEEE,2014:836-839.

[7] DIWAN D,NARANG V K,SINGH A K.Security mechanism in RIPv2,EIGRP and OSPF for campus network-a review[J].International Journal of Computer Science Trends and Technology,2017,5(2):399-404.

[8] SHEN N,AGGARWAL R,SHAFFER S.Extensions to OSPF for advertising optional router capabilities[J].Work in Progress,2007,11(3):82-89.

[9] 蔡昭权.OSPF路由协议的攻击分析与安全防范[J].计算机工程与设计,2007,28(23):5618-5620.

[10] NAKIBLY G,MENAHEM E,WAIZEL A,et al.Owing the routing table part2[R].USA:Black Hat,2013.

[11] 夏云峰.基于OSPF路由协议的路由欺骗分析[D].南京:东南大学,2014.

[12] 周 轩,王永杰,覃志波.OSPF协议漏洞机理及其防范措施[J].指挥信息系统与技术,2015,6(5):40-45.

[13] NAKIBLY G,MENAHEM E.OSPF vulnerability to persistent poisoning attacks:a systematic analysis[C]//Proceedings of the 30th annual computer security applications conference.New Orleans,Louisiana,USA:ACM,2014:336-345.

[14] 钟廷龙,李 鑫,郭云飞.OSPF路由协议安全性分析[J].微计算机信息,2005,24:15-17.

[15] MOY J.OSPF version 2[S].[s.l.]:IETF,1998.

[16] NAKIBLY G,KIRSHON A,GONIKMAN D,et al.Persistent OSPF attacks[C]//Proceedings of the 19th annual network and distributed system security symposium.[s.l.]:[s.n.],2012.

猜你喜欢
路由器链路节点
一种移动感知的混合FSO/RF 下行链路方案*
买千兆路由器看接口参数
维持生命
天空地一体化网络多中继链路自适应调度技术
路由器每天都要关
路由器每天都要关
概念格的一种并行构造算法
结合概率路由的机会网络自私节点检测算法
采用贪婪启发式的异构WSNs 部分覆盖算法*
浅析民航VHF系统射频链路的调整