Task2: ICMP Redirect Attack
①ICMP重定向攻击工作原理
路由器使用ICMP重定向消息为主机提供最新的路由信息,主机最初具有最少的路由信息。 当主机接收到ICMP重定向消息时,它将根据消息修改其路由表。 由于缺乏验证,如果攻击者希望受害者以特定方式设置路由信息,则可以向受害者发送伪造的ICMP重定向消息,并欺骗受害者修改其路由表。
注:实验过程中遇到的问题或者必要知识点的储备如下
(1)实验涉及到对数据包路由情况的观察,可以安装traceroute。
$ sudo su
Password: (enter root password)
# apt-get update
# apt-get install inetutils-traceroute
# traceroute www.baidu.com
从下图中可以看到数据包从Machine2到百度服务器的路由情况
(2)如何设置主机启用/禁止数据包转发功能
主机启用/禁止转发数据包功能
# sysctl -w net.ipv4.ip_forward=1
# sysctl -w net.ipv4.ip_forward=0
这是笔者实验过程中遇到的问题。
实验开始,我并不知道计算机要转发数据包需要启用该功能,同时也不知道计算机是默认禁用转发数据包功能的。所以在构造好icmp重定向报文并发送后,并不能达到改变数据包路由路径的效果。
(3)如何设置计算机的数据包转发功能
为演示攻击过程,实验用到的3台虚拟机作用各不相同。在攻击之前,3台机器访问外网都直接通过局域网的默认网关(192.168.175.2),在攻击之后,受害者(Machine2)访问外网则先经过攻击者(Machine1)发送的icmp重定向报文指定的主机M,再由该主机和默认网关通信。则主机M应该开启数据包转发功能,而受害者则不能开启数据包转发。
(4)如何构造icmp重定向报文
使用netwox 86号指令。
86 --gw 192.168.175.139 --src-ip 192.168.175.2
该指令设置icmp重定向数据包的源IP地址为局域网的默认网关,指定新的网关为192.168.175.139。未设置过滤器,所以局域网内除攻击者外所有的主机访问外网都要经过新网关这一跳。
86 --filter "host 192.168.175.140" --gw 192.168.175.139 --src-ip 192.168.175.2
该指令设置icmp重定向数据包的源IP地址为局域网的默认网关,指定新的网关为192.168.175.139。设置过滤器“host 192.168.175.140”,所以局域网内IP地址为192.168.175.140的主机访问外网需要经过新网关这一跳,而其他主机直接经过局域网默认网关。
②过程演示
attacker:Machine1(192.168.175.139)
victim:Machine2(192.168.175.140)
observer:Machine3(192.168.175.141)
(1)攻击前victim访问外网数据包的路由路径
(2)开启attacker数据包转发功能,禁止victim数据包转发功能(默认禁止)
(3)attacker发送icmp重定向报文
netwox 86 --filter "host 192.168.175.140" --gw 192.168.175.139 --src-ip 192.168.175.2
(4)攻击后victim访问外网数据包的路由路径
为什么两次的路由路径有差异?
因为主机维护了路由缓存。可以通过“ip route flush cache”指令清除路由缓存;“route -n”指令查看路由缓存。