CDP协议是一个发现协议,一台运行C D P的路由器或交换机能够得知与它直接相连的邻居端口和主机名信息。这样通过CDP的我们能得到相关联的路由器名、路由器端口信息、IOS版本信息、IOS平台信息、硬件版本信息,以及相关的链路信息从而描述出整个网络的拓扑情况。这时候黑客就会利用CDP欺骗攻击。
针对中央管理软件,各种高端网管软件Cisco works 、IBM Tivoli 、HP open view,都依赖CDP完成Cisco主机发现。如果发送伪造的CDP帧,声称在网络上新出现了一台Cisco设备,那么管理软件将试图通过SNMP与其联系,此时就有机会捕获所使用的SNMPCommunity name string ,这样很可能是网络中其他Cisco设备所使用的名称,而且很可能会导致这些设备遭到攻击。此外,CDP欺骗还可用于恶作剧,分散网络管理员的注意力。
第二个目标就是Cisco IP 电话Cisco ip电话打开后,就会和相连的交换机开始交换CDP数据,相互识别,交换机利用CDP通知电话,让它知道语音流量将使用那个VLAN,不难发现,这里有机会实施欺骗攻击,例如注入CDP帧。这样会为电话分配一个错误的VLAN。
这些手动伪造的CDP帧是如何制造出来的呢?主要有两种工具可定制伪造CDP帧。下面让我们先看看Linux平台下的CDP工具程序——Yersinia。
Yersinia 是执行第二层攻击的一个工具,帮助黑箱测试者在他的日常工作中检查2层协议配置的可靠性。Yersinia 能够操作第二层网络协议和允许攻击者阻挡交换机通过注入伪生成树协议,DHCP, VLAN 中继协议和其他信息到网络中。
针对这些攻击的防御措施
运行CDP的交换机/路由器定时广播带有CDP更新数据的报文,用cdp timer命令决定CDP更新数据间隔,缺省值为60秒,而且CDP默认已启用。
我们在一台Cisco Catalyst 2924交换机上对CDP数据包的诊断输出信息。可以看到,交换机在每个活动接口发送CDP数据包。
SW#debug cdp packet
03:36:26 CDP-PA Packet received form R1 on interface FastEthernet0/5
03:36:26 **Entry found in cache**
03:36:30 CDP-PA version 2packet sent out on FastEthernet 0/1
03:36:30 CDP-PA version 2packet sent out on FastEthernet 0/2
03:36:30 CDP-PA version 2packet sent out on FastEthernet 0/3
03:36:30 CDP-PA version 2packet sent out on FastEthernet 0/4