ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
ICMP重定向
ICMP重定向报文是ICMP控制报文中的一种。是用来提示主机改变自己的主机路由从而使路由路径最优化的一种ICMP报文。其概念理解的要义是原主机路由不是最佳路由,而其默认网关提醒主机优化自身的主机路由而发送的报文。
ICMP重定向原理
ICMP重定向信息是路由器向主机提供实时的路由信息,当一个主机收到ICMP重定向信息时,它就会根据这个信息来 更新自己的路由表。由于缺乏必要的合法性检查,如果一个黑客想要被攻击的主机修改它的路由表,黑客就会发送 ICMP重定向信息给被攻击的主机,让该主机按照黑客的要求来修改路由表。
实验环境:
攻击机kali: 192.168.43.103 网关192.168.43.1
被攻击机 centos 7:192.168.43.190 网关192.168.43.1
在此前需要开启攻击机的路由转发功能,此处使用kali作为攻击机
在etc/sysctl.conf 将转发参数改为“1”
正常情况下,被攻击机器ping baidu.com返回如下所示
发起攻击
netwox 86 -f “host {被攻击主机ip地址}” -g “{新指定的网关ip地址}” -i “{当前网关ip地址}”
netwox 86 -f "host 192.168.43.190" -g "192.168.43.103" -i "192.168.43.1"
这句话的意思是,嗅探网络中来自主机192.168.43.190的数据包,一旦出现,就以网关192.168.43.103的名义,向数据包的源地址发送一个ICMP重定向报文,使之使用192.168.43.103作为默认的路由。
被攻击后,被攻击机器的数据包被重定向到了指定的网关,如下图所示
红色框中:
第二行:从localhost发出的数据被重定向到了攻击机192.168.32.103
第三行:由于攻击机开启了IPV4转发,攻击机将数据包又重定向到了真正的网关192.168.32.1
关闭攻击机的IP转发,再进行测试
在etc/sysctl.conf 将转发参数改为“0”
执行攻击命令 netwox 86 -f "host 192.168.43.190 " -g "192.168.43.103" -i "192.168.43.1"
执行ping baidu.com查看结果,可以看到虽然将目标机器与网关通信的流量重定向到了192.168.43.103(攻击机IP),但攻击机没有对流量进行转发
解决方法:
忽略icmp重定向
Centos发行版本的系统可修改 /etc/sysctl.conf添加如下内容
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0