十年精华收藏关于路由和路由协议的漏洞
此文章讨论了有关对网络底层协议的攻击和防止攻击的方法,特别是关于路由和路由协议的漏洞,如routing information protocol (rip,路由信息协议), border gateway protocol (边缘网关协议), open shortest path first (ospf,开放最短路径优先协议)等。
路由器在每个网络中起到关键的作用,如果一路由器被破坏或者一路由被成功的欺骗,网络的完整性将受到严重的破坏,如果使用路由的主机没有使用加密通信那就更为严重,因为这样的主机被控制的话,将存在着中间人(man-in-the-middle)攻击,拒绝服务攻击,数据丢失,网络整体性破坏,和信息被嗅探等攻击。
路由是一个巨大又复杂的话题,所以本人只是在此提到一部分知识,而且水平的关系,请大家多多指教。
关于一些很普遍的路由器安全问题
多种路由器存在各种众所周知的安全问题,一些网络底层设备提供商如cisco, livingston, bay等的普通安全问题。
上面地址所收集的漏洞大部分无关于路由协议级的攻击,而是一些由于错误配置,ip信息包错误处理,snmp存在默认的communit name string,薄弱密码或者加密算法不够强壮而造成。上面的一些攻击一般一个标准的nids都能够探测出来。这些类型的攻击对网络底层有一定的削弱性并可以组合一些高极别的协议进行攻击。
正确的配置管理可以处理不少普通的漏洞,如你必须处理一些标准的规程:不使用snmp(或者选择强壮的密码),保持补丁程序是最新的,正确处理访问控制列表,出入过滤,防火墙,加密管理通道和密码,路由过滤和使用md5认证。当然在采用这些规程之前你必须知道这些安全规则的相关的含义和所影响到的服务。
近来有关的一些低部构造防卫检测系统的开发
近来的在网络防护开发项目中比较不错的是一个ids叫jinao. jinao是由darpa发起的,并现在成为一个合作研究项目由mcnc和北卡罗莱纳州大学共同开发。jinao在freebsd和linux上运行的是在线模式(使用divert sockets),在solaris运行在离线模式,并在3个网络上测试-mcnc,ncsu和由pc(操作系统做路由)和商业路由器组合的af/rome 实验室。测试结果显示了可以成功的防止多种类型的网络底层攻击并能很好的高精度的探测这些攻击。
当前,jinao看起来在研究关于open shortest path first (ospf,开放最短路径优先)协议,并且最终jinao会延伸到各种协议。jinao指出,防卫攻击和入侵探测将会集成在网络管理内容中,所以jinao现在正趋向于网络防火墙,入侵探测系统和网络管理系统组合一体。
还有一个工具可以很好的分析高级的协议,如agilent advisor的网络分析工具,它能很好的支持多种路由协议并能定制过滤器来探测各种不正常的行为。
一些工作于路由协议的工具
linux divert sockets描述到:\"divert socket能够在末端主机也能在路由器上进行ip信息包捕获和注入,信息包的捕获和插入发生在ip层上,捕获的信息包在用户空间转向到套接口中,因此这些信息包将不会达到它们的最终目的地,除非用户空间套接口重插入它们。这样在信息包捕获和重新插入之间可以在系统系统内核之外允许各种不同的操作(如路由和防火墙).\".简单的说divert socket就是由user space(用户空间)的程序来处理kernel(内核)中的ip packet(ip信息包),这个divert socket最早应用与freebsd系统中,如nat就是应用了divert socket。这样使开发程序很容易,因为在用户层,而处理ip packet(ip信息包)的效率也比较高,因为是直接处理kernel(内核)中的ip packet(ip信息包)。
divert socket就象上面说最早实现于freebsd中,现在已经移植到linux中并作为jinao ids项目的一部分采用。
另一个叫nemesis packet injection suite,是一个比较强大的网络和安全工具,由obecian开发.最新的nemesis-1.1发行在2000年6月24号。nemesis是一个\"命令行式的unix网络信息包插入套件\",并是一个很好的测试防火墙,入侵探测系统,路由器和其他网络环境的工具。它可以被攻击者使用和授权渗透探测者在主机和网络级的网络安全环境检测。其中这个站点还有一个演化的nemesis叫intravenous,发行于11/30/00. intravenous看起来承载了nemesis所有基本功能,其中不同的是增加了人工智能引擎的内容。
irpas,internetwork routing protocol attack suite,由fx所写,可以在下面的站点找到http://www.phenoelit.de/irpas/.irpas包含了各种可工作于cisco路由设备的协议层的命令行工具,包括如下这些命令: cdp--可发送cisco router discovery protocol (cdp cisco路由发现协议)消息;
igrp是能插入interior gateway routing protocol (igrp 内部网关路由协议)消息;irdp用来发送icmp router discovery protocol (icmp路由发现协议)消息;
irdresponder--可使用精心制作的信息包来响应irdp请求;
ass--autonomous system scanner(自主系统扫描器,现在可下载的版本只支持igrp),这里解释下autonomous system,即一般所说的as,简单的说是一组内部路由器,使用共同协议交流内部网络的信息,更直接的说法就是这些路由器自己自主,交流信息。与之相反的是我们经常知道的外部路由器如一般的电信节点处的路由器。典型的as使用单一的路由协议在它的边界产生和传播路由信息。ass就类似于tcp端口扫描器一样,只不过其是针对自主系统的。使用ass扫描的话,如果自主系统应答,将返回路由进程中的所有路由信息。irpas 的网站也包含一条关于generic routing encapsulation(gre 一般路由封装) 漏洞的文档,其中这个generic routing encapsulation (gre 一般路由封装)漏洞允许外部攻击者绕过nat和破坏一通过vpn的内部rfc1918网络。其中在其他章节还包含了更多的信息和通过irpas的可能攻击策略.
irpas的开发者fx,发送了由ass新版本2.14(还没有发布)扫描的as样本和igrp怎样利用ass的信息(as #10和其他数据)来插入一欺骗的路由给222.222.222.0/24。虽然igrp协议目前不是很多使用,但这个例子却是相当的不错。下面是fx测试的结果:
test# ./ass -ma -i eth0 -d 192.168.1.10 -b15 -v(这里的-i是接口,-d是目的地址,-b15指的是自主系统0-15之间
ass [autonomous system scanner] $revision: 2.14 $
(c) 2k fx
phenoelit (http://www.phenoelit.de)
no protocols selected; scanning all
running scan with:
interface eth0
autonomous systems 0 to 15
delay is 1
in active mode
building target list ...
192.168.1.10 is alive
scanning ...
scanning igrp on 192.168.1.10
scanning irdp on 192.168.1.10
scanning ripv1 on 192.168.1.10
shutdown ...
ok,得到以下的结果
>>>>>>>>>>>> results >>>>>>>>>>>
192.168.1.10
igrp
#as 00010 10.0.0.0 (50000,1111111,1476,255,1,0)
irdp
192.168.1.10 (1800,0)
192.168.9.99 (1800,0)
ripv1
10.0.0.0 (1)
test# ./igrp -i eth0 -f routes.txt -a 10 -s 192.168.1.254 -d 192.168.1.10
当然这里的routes.txt需要你自己指定:
routes.txt:
# format
# destination:delay:bandwith:mtu:reliability:load:hopcount
222.222.222.0:500:1:1500:255:1:0
cisco#sh ip route
codes: c - connected, s - static, i - igrp, r - rip, m - mobile, b - bgp
d - eigrp, ex - eigrp external, o - ospf, ia - ospf inter area
e1 - ospf external type 1, e2 - ospf external type 2, e - egp
i - is-is, l1 - is-is level-1, l2 - is-is level-2, * - candidate default
u - per-user static route
gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
c 10.1.2.0/30 is directly connected, tunnel0
s 10.0.0.0/8 is directly connected, tunnel0
c 192.168.9.0/24 is directly connected, ethernet0
c 192.168.1.0/24 is directly connected, ethernet0
i 222.222.222.0/24 [100/1600] via 192.168.1.254, 00:00:05, ethernet0
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
看到没有,到达222.222.222.0/24经由192.168.1.254
rprobe & srip--这个工具附带在一篇关于rip欺骗非常不错的指南文档中(由humble写),你可以在下面的地址找到这篇文章http://www.technotronic.com/horizon/ripar.txt.rprobe工具会从一路由daemon(守护程序)中请求一rip路由表的拷贝,使用tcpdump或者其他任何嗅探工具可以用来捕获这些结果。接下来,srip可以用来从任意源ip发送一伪造的ripv1或者ripv2消息,srip可以插入新的路由和使当前的路由无效,当然攻击者/渗透测试者需要知道命令行中使用什么参数。关于这些工具的介绍可参看hacking exposed 第二版network device节找到示例。
当然还有其他工作与相关路由协议的工具可被攻击者或者渗透测试者使用,如:routed,gated, zebra, mrt, 和 gasp ,大家可以参看其他的文档。
下面是有关各种协议的浅释和相关漏洞及可以采用的防卫措施
routing information protocol (rip,路由信息协议)
routing information protocol (rip,路由信息协议)是基于距离矢量的路由协议,其所有路由基于(hop)跳数来衡量。由autonomous system (as,自主系统) 来全面的管理整个由主机,路由器和其他网络设备组成的系统。rip是作为一种内部网关协议(interior gateway protocol),即在自治系统内部执行路由功能。相反的大家都知道外部网关路由协议(exterior gateway protocol),如边缘网关协议(bgp),在不同的自治系统间进行路由。rip协议对大型网络来说不是一个好的选择,因为它只支持15跳,ripv1而且只能通信自身相关的路由信息,反之ripv2能对其他路由器进行通信。rip协议能和其他路由协议共同工作,依照cisco,rip协议经常用来与ospf协议相关联,虽然很多文荡指出ospf需代替rip. 应该知道经由rip更新提交的路由可以通过其他路由协议重新分配,这样如果一攻击者能通过rip来欺骗路由到网络,然后再通过其他协议如ospf或者不用验证的bgp协议来重新分配路由,这样攻击的范围将可能扩大。
rip协议相关的漏洞和防范措施
一个测试者或者攻击者可以通过探测520 udp端口来判断是否使用rip,你可以使用熟悉的工具如nmap来进行测试,如下所示,这个端口打开了并没有使用任何访问控制联合任意类型的过滤:
[root@test]# nmap -su -p 520 -v router.ip.address.2
interesting ports on (router.ip.address..2):
port state service
520/udp open route
扫描udp520端口在网站http://www.dshield.org/的\"top 10 target ports\"上被排列在第7位,你表明有许多人在扫描rip,这当然和一些路由工具工具的不断增加有一定的关联。
ripv1 天生就有不安全因素,因为它没有使用认证机制并使用不可靠的udp协议进行传输。ripv2的分组格式中包含了一个选项可以设置16个字符的明文密码字符串(表示可很容的被嗅探到)或者md5签字。虽然rip信息包可以很容易的伪造,但在ripv2中你使用了md5签字将会使欺骗的操作难度大大提高。一个类似可以操作的工具就是nemesis项目中的rip命令--nemesis-rip,但由于这个工具有很多的命令行选项和需要必备的知识,所以nemesis-rip 比较难被script kiddies使用。想使用nemesis-rip成功进行一次有效的rip欺骗或者类似的工具需要很多和一定程度的相关知识。不过\"hacking exposed\"第二版第10章:network devices提到的有些工具组合可以比较容易的进行rip欺骗攻击攻击,这些工具是使用rprobe来获得远程网络rip路由表,使用标准的tcpdump或者其他嗅探工具来查看路由表,srip来伪造rip信息包(v1或者v2),再用fragrouter重定向路由来通过我们控制的主机,并使用类似dsniff的工具来最后收集一些通信中的明文密码。
尽管大家知道欺骗比较容易,但仍然存在一些大的网络提供商仍旧依靠rip来实现一些路由功能,虽然不知道他们是否采用来安全的措施。rip显然目前还是在使用,呵呵但希望很少人使用ripv1,并且使用了采用md5安全机制的ripv2,或者已经移植到了使用md5认证的ospf来提高安全性。
border gateway protocol (bgp,边界网关协议)
bgp是exterior gateway protocol (egp,外部网关协议),此协议执行的时候自主系统之间的路由,现在bgp4是最近的流行标准,bgp使用几种消息类型,其中这文章相关的最重要的消息是update消息类型,这个消息包含了路由表的更新信息,全球internet大部分依靠bgp,因此一些安全问题必须很严肃的对待,l0pht几年就宣称过:他们能在很短的时间内利用路由协议的安全如bgp来搞垮整个internet.
bgp协议相关的漏洞和防范措施
bgp使用tcp 179端口来进行通信,因此nmap必须探测tcp 179端口来判断bgp的存在。
[root@test]# nmap -ss -p 179 -v router.ip.address.2
interesting ports on (router.ip.address..2):
port state service
179/tcp open bgp
一个开放的bgp端口,更容易被攻击
[root@test]# nmap -ss -n -p 179 router.ip.address.6
interesting ports on (router.ip.address.6):
port s
推荐阅读