当路由收到 IP 数据报,发现数据报的目的地址在路由表上却不存在时,它发送 ICMP 重定向报文给源发送方,提醒它接收的地址不存在,需要重新发送给其他地址进行查找。
在重定向 ICMP 报文中,类型值为 5,代码值为 0。
伪造重定向 ICMP 数据包需要使用 netwox 工具中编号为 86 的模块。
【实例】已知主机 A 的 IP 地址为 192.168.59.132,netwox 工具所在主机 IP 地址为 192.168.59.135。基于 netwox 所在主机向主机 A 实施攻击。为了不让目标主机发现攻击的来源,伪造数据包的源 IP 地址为 192.168.59.136,将目标主机的网关修改为网段中的其他主机,使目标主机发送的数据包重定向到该主机上。
具体步骤如下:
1) 查看目标主机A的网关。在目标主机 A 上,向 www.qq.com (http://www.qq.com) 发送 ping 请求。通过捕获数据包,查看网关信息,如图所示。
图中第 2 帧和第 3 帧为 DNS 协议查询数据包,是通过网关查询 www.qq.com (http://www.qq.com) 主机的 IP 地址信息。从中可以判断,目标主机的网关为 192.168.59.2。
2) 向目标主机发送重定向数据包,设置源 IP 地址为 192.168.59.136,将目标主机发送的数据包重定向到主机 192.168.59.131 上,执行命令如下:
执行命令没有任何输出信息。
3) 在目标主机上向 www.qq.com (http://www.qq.com) 发送 ping 请求,执行命令如下:
输出信息如下:
上述输出信息中,64 bytes from no-data(125.39.52.26):icmp_seq=1 ttl=128 time=25.6 ms 表示成功向目标 www.qq.com (http://www.qq.com) 发送 ping 请求;From localhost(192.168.59.136):icmp_seq=1 Redirect Host(New nexthop:localhost(192.168.59.131)) 表示伪造的重定向 ICMP 数据包,源 IP 地址为 192.168.59.136,Redirect Host 表示目标主机已经重定向,重定向到了主机 192.168.59.131 上。
4) 在目标主机上捕获数据包,验证重定向的数据包,如图所示。
其中,第 11 帧的源 IP 地址为 192.168.59.136(设置的源 IP 地址),目标 IP 地址为 192.168.59.132(设置的目标 IP 地址),Info 列的 Redirect(Redirect for host) 表示该数据包是一个重定向数据包。
在 Internet Control Message Protocol 部分中,Type 值为 5,Code 值为 1,说明该数据包是重定向的数据包;Gateway address:192.168.59.131 表示该主机的网关被重新定向到了 192.168.59.131。
5) 选择第 13 帧,查看网关的重定向信息,如图所示。
第 13 帧的源 IP 地址为 192.168.59.136(设置的源 IP 地址),目标 IP 地址为 192.168.59.2(目标主机 A 的网关)。该数据包也是一个重定向的数据包。
在 Internet Control Message Protocol 部分中,Gateway address:192.168.59.131 表示目标主机 A 的网关被修改为了 192.168.59.131。