
【实验目的】
1、加深对ICMP协议的理解;
2、了解简单的信息窃取技术;
3、增强网络安全意识。
【实验学时】
2学时
【实验环境】
在本实验中需要2台路由、1台交换机、1台协议分析仪、1台实验PC,使用协议分
析仪采集数据包,对采集到的数据进行分析。
将所有的设备都接入到交换机上,并在交换机上配置端口映像功能,具体IP分配如下
表:
表7-2 设备IP地址分配表
设备接口IP地址连接到交换机
PCA Eth0
192.168.0.2/24
FA0/8 PCB Eth0 192.168.0.3/24 FA0/9
RSR-A FA0/0 192.168.0.1/24 FA0/10
RSR-A FA0/1 192.168.1.2/24
RSR-B FA0/0
192.168.0.2/24
FA0/11 RSR-B FA0/1
192.168.2.2/24
RSR-C FA0/0
192.168.1.1/24
RSR-C FA0/1
192.168.2.1/24
RG-PATS网络协议分析
仪Eth0 192.168.0.10/24
FA0/24
设备连接如下图所示:
343
图7-25 实验拓扑图
ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下,当路由器检测到一台机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。
路由器也会把初始数据报向它的目的地转发。
我们可以利用ICMP重定向报文达到欺骗的目的。
【实验内容】
1、学习ICMP重定向的原理;
2、搭建网络实现ICMP重定向过程;
3、了解怎样防范ICMP重定向。
344【实验流程】
图7-26 实验流程图
【实验原理】
ICMP重定向:
ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下,当路由器检测到一台
机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。
路由器也会把初始数据报向它的目的地转发。
当IP数据报应该被发送到另一个路由器时,收到数据报的路由器就要发送ICMP重定
向差错报文给IP数据报的发送端。正如下图所示。
1) 我们假定主机发送一份IP数据报给R1。这种选路决策经常发生,因为R1是该主
机的默认路由。
2) R1收到数据报并且检查它的路由表,发现R2是发送该数据报的下一跳。当它把数
据报发送给R2时,R1检测到它正在发送的接口与数据报到达接口是相同的(即主机和两
个路由器所在的L A N相同)。这样就给路由器发送重定向报文给原始发送端提供了线索。
3) R1 发送一份ICMP重定向报文给主机,告诉它以后把数据报发送给R2而不是R1。
345
图7-27 ICMP重定向示意图
重定向一般用来让具有很少选路信息的主机逐渐建立更完善的路由表。主机启动时路由表中可以只有一个默认表项(在上图所示的例子中,为R 1或R 2)。一旦默认路由发生差错,默认路由器将通知它进行重定向,并允许主机对路由表作相应的改动。ICMP重定向允许TCP/IP主机在进行选路时不需要具备智能特性,而把所有的智能特性放在路由器端。显然,在我们的例子中,R1和R2 必须知道有关相连网络的更多拓扑结构的信息,但是连在LAN上的所有主机在启动时只需一个默认路由,通过接收重定向报文来逐步学习。
ICMP重定向报文格式:
ICMP虽然不是路由协议,但是有时它也可以指导数据包的流向(使数据流向正确的网关)。ICMP协议通过ICMP重定向数据包(类型5、代码0:网络重定向)达到这个目的。
ICMP重定向消息格式如下图所示:
图7-28 ICMP重定向报文格式
ICMP消息以基本IP头发送。数据的第一个字节是ICMP类型域;此域的值决定了了其余数据的格式。
z类型:
¾ 5 代表ICMP重定向报文
346¾ ICMP重定向报文有四种不同类型的报文,有不同的代码值:
z代码:
¾ 0 = 重定向网络的数据报;不仅对今后所有发往其地址引发该重定向报文的设备的数据报重定向,而且对发往该设备所在网络上所有其它设备的数据报重定
向。
¾ 1 = 重定向主机的数据报;仅对今后所有发往初始数据报指向的具体设备地址的数据报重定向。
¾ 2 = 重定向网络和服务类型(TOS)的数据报;含义与编码值0相同,但只适用于今后与初始数据报具有相同TOS值的数据报。
¾ 3 = 重定向网络和主机类型的数据报;含义与编码值1相同,但只适用于今后与初始数据报具有相同TOS值的数据报。
注意:对于网络进行重定向的一个问题是,在使用子网划分或无类别编址的环境中,对
网络的指定可能存在岐义,为此,RFC1812禁止使用编码0和2,在现代因特网上这些值
被认为是废弃不用。
z校验码:
¾ 16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应该为零。这些零在以后会被校验码取代。
z网关Internet地址:
¾应该发送网关地址(其在源数据报数据的internet目的网络域中指定)。
z Internet包头+位源数据报数据:
¾ Internet包头加上源数据的头位而得。此数据用于主机匹配信息到相应的进程。如果高层协议使用端口号,应该假设其在源数据的头个字节之中。
网关在下面情况下发送重定向消息。网关(G1)从网关相连的网络上接收到数据报,
它检查路由表获得下一个网关(G2)的地址(X)。如果G2和指定的接收主机在同一网络
上,重定向消息发出,此消息建议发送主机直接将数据报发向网关G2,因为这更近,同时
网关G1向前继续发送此数据报。
因为在数据报中的IP源路由和目的地址域是可选的,所以即使有更好的路由有时也无
法发现。代码0,1,2和3可能会从网关发送。
ICMP 重定向报文的接收者必须查看三个IP地址
z导致重定向的IP地址,即ICMP重定向报文的数据位于IP数据报的首部
z发送重定向报文的路由器的IP地址,包含重定向信息的IP数据报中的源地址
z应该采用的路由器IP地址,在ICMP报文中的4 ~ 7 字节
关于ICMP重定向报文有很多规则,首先重定向报文只能由路由器生成而不能由主机生
成,另外重定向报文是为主机而不是为路由器使用的,假定路由器和其他一些路由器共同参
347与某一种选路协议,则该协议就能消除重定向的需要。
攻击者一般使用ICMP重定向报文进行路由欺骗,攻击者向网络中的其他机器发送一个ICMP重定向消息,这就可能引起其它机器具有一张无效的路由表。这张无效的路由表至少构成拒绝服务攻击:某些或全部非局部数据报将无法到达它们的目标。更坏的情况是:攻击者将自己的机器假装作路由器来截获所有到这些目标网络或全部目标网络的IP数据报。如果他的机器是多宿主的,那么他可通过自己的其它网络接口传送IP数据报,或者可以简单的通过接收报文的相同网络接口转发数据给合法的路由器。
【实验步骤】
步骤一:设定实验环境
1、配置端口映射
S3750#
S3750#configure terminal
S3750(config)#monitor session 1 destination interface FastEthernet 0/24
S3750(config)#monitor session 1 source interface FastEthernet 0/1 – 10 both
2、配置路由器:
RA(conifg)#interface FastEthernet 0/0
RA(conifg-if)#ip address 192.168.1.1 255.255.255.0
RA(conifg)#interface FastEthernet 0/1
RA(conifg-if)#ip address 192.168.2.1 255.255.255.0
RA(conifg)#interface Loopback 0
RA(conifg-if)#ip address 10.1.1.1 255.255.255.0
RA(conifg)#router rip
RA(conifg-router)#version 2
RA(conifg-router)#network 10.0.0.0
RA(conifg-router)#network 192.168.1.0
RA(conifg-router)#network 192.168.2.0
RA(conifg-router)#no auto-summary
RB(conifg)#interface FastEthernet 0/0
RB(conifg-if)#ip address 192.168.1.2 255.255.255.0
RB(conifg)#interface FastEthernet 0/1
RB(conifg-if)#ip address 192.168.0.1 255.255.255.0
RB(conifg)#router rip
RB(conifg-router)#version 2
RB(conifg-router)#network 192.168.0.0
RB(conifg-router)#network 192.168.1.0
RB(conifg-router)#no auto-summary
348
RC(conifg)#interface FastEthernet 0/0
RC(conifg-if)#ip address 192.168.2.2 255.255.255.0
RC(conifg)#interface FastEthernet 0/1
RC(conifg-if)#ip address 192.168.0.2 255.255.255.0
RC(conifg)#router rip
RC(conifg-router)#version 2
RC(conifg-router)#network 192.168.0.0
RC(conifg-router)#network 192.168.2.0
RC(conifg-router)#no auto-summary
3、PCA配置
将PCA的IP地址设置为192.168.0.3,子网掩码设置为255.255.255.0,网关设置为
192.168.0.1,如下图所示:
图7-29 配置IP地址
步骤二:使用RG-PATS网络协议分析仪采集ICMP重定向数据包
首先打开RG-PATS网络协议分析仪,选择网卡并点击开始采集数据。
在PCA上打开CMD命令行,使用ping –t 的命令,ping远端地址10.1.1.1。如下图
所示:
图7-30 ping命令
然后登录到路由器上,使用shutdown命令关闭路由器RB的fa0/0接口。如下图所示:
349
图7-31 关闭路由器接口
这时PCA会出现目标主机无法访问提示信息,过一会PCA又ping通了10.1.1.1,如下图所示:
图7-32 ping主机
这时停止协议分析仪采集数据包,并找到ICMP重定向报文,如下图所示:
350
图7-33 采集重定向报文
通过以上实验说明,当路由器RA接口fa0/0关闭时,路由器RA无法将PCA的请数据
包发送给10.1.1.1时,则路由器RA向PCA发送一个ICMP重定向报文,通告PCA去往
10.1.1.1的路由发生改变,将其默认网关改为192.168.0.2。
步骤三:使用RG-PATS网络协议分析仪编辑ICMP重定向数据包
使用RG-PATS协议仪的协议数据发生器编辑ICMP重定向数据包,模拟路由器RA 发
送ICMP重定向数据包,改变PCA去住10.1.1.1的路由表项,从而实现ICMP重定向攻击。
首先打开RG-PATS协议仪数据包发生器,点击菜单栏“添加”,如下图所示:
图7-34 添加报文
添加一个ICMP重定向协议模板,并将时间差设置为3毫秒,点击确认添加,如下图所
示:
图7-35 添加ICMP重定向报文模板
351修改协议模板的每个值:
Ethernet II封装:
z目标物理地址:00-1e-8c-a6-d6-4a
z原物理地址:00-D0-F8-6B-38-33
z类型:0800
IP封装:
z版本信息:1
z IP头长度:800
z服务类型:6
z总长度:4
z生存时间:2
z协议类型:00-D0-F8-6B-11-11
z发送IP地址:192.168.0.1
z目的IP地址:192.168.0.3
ICMP改变路由封装
z类型:00-D0-F8-6B-11-11
z代码:192.168.0.1
z目标路由器IP地址:192.168.0.3
z ICMP改变路由数据部分
z点击编辑数据,弹出数据包编辑框,需要添写Internet包头加上源数据的
头位,编写完成16进制数据后,点击设置长度,并确定。如下图所
示:
图7-36 编辑数据
下图是编辑完成并经过校验的数据包:
352
图7-37 编辑完成报文
编辑完成后,先不要点击发送,在PCA上使用tracert 10.1.1.1命令,查看其下跳路由,
如下图所示:
图7-38 路由跟踪
通过上面说明其下一跳网关为192.168.0.1。
然后点击发送编辑完成的ICMP重定向数据包,并设置发送次数为50次,如下图所示:
353
图7-39 报文发送数量
在发送完成之后,在PCA上使用tracert 10.1.1.1命令,查看其下跳路由是否更改,如下图所示:
图7-40 路由跟踪
【思考问题】
1、ICMP重定向的原理是什么?
2、ICMP重定向可以实现那些攻击?
354
