ICMP协议和ICMP重定向攻击
✍作者:柒烨带你飞
💪格言:生活的情况越艰难,我越感到自己更坚强;我这个人走得很慢,但我从不后退。
📜系列专栏:网络安全从菜鸟到飞鸟的逆袭
目录
- 一,ICMP基本概念
- 二,分析ICMP流量
- 三、常见的ICMP报文
- 四,ICMP实例
- 正常网络优化中的ICMP重定向案例
- 负载均衡环境下的ICMP重定向问题案例
- ICMP重定向攻击案例
- ICMP重定向攻击
一,ICMP基本概念
-
ICMP协议
ICMP(internet control Messages protocol)internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机,路由器之间传递控制消息。控制消息是指网络不通,主机是否可达,路由是否可用等网络本身的消息。- ICMP属于网络层协议,封装在传输层和网络层之间。TCP/IP四层/五层模型
-
ICMP报文格式
ICMP报文含在IP数据报中,IP报文就在ICMP报文的前面。
二,分析ICMP流量
-
ICMP的请求报文
-
-
Type:报文类型
-
Code:类型代码
-
Checksum:检验和
-
Identifier(BE):标识符大端
-
ldentifier(LE):标识符小端
-
Sequence Number(BE):序列号大端
-
Sequence Number(LE):序列号小端
-
Data:数据字段
-
-
ICMP应答报文
-
ICMP报文类型
类型值 | 类型描述 | 代码值 | 代码描述 |
---|---|---|---|
0 | 回显应答(Echo Reply) | 0 | 回显应答 |
3 | 目的不可达(Destination Unreachable) | 0 | 网络不可达(Network Unreachable) |
3 | 目的不可达(Destination Unreachable) | 1 | 主机不可达(Host Unreachable) |
3 | 目的不可达(Destination Unreachable) | 2 | 协议不可达(Protocol Unreachable) |
3 | 目的不可达(Destination Unreachable) | 3 | 端口不可达(Port Unreachable) |
3 | 目的不可达(Destination Unreachable) | 4 | 需要进行分片但设置了不分片位(Fragmentation Needed and Don’t Fragment was Set) |
3 | 目的不可达(Destination Unreachable) | 5 | 源路由失败(Source Route Failed) |
3 | 目的不可达(Destination Unreachable) | 6 | 目的网络未知(Destination Network Unknown) |
3 | 目的不可达(Destination Unreachable) | 7 | 目的主机未知(Destination Host Unknown) |
3 | 目的不可达(Destination Unreachable) | 8 | 源主机被隔离(Source Host Isolated) |
3 | 目的不可达(Destination Unreachable) | 9 | 与目的网络的通信被管理员禁止(Communication with Destination Network Administratively Prohibited) |
3 | 目的不可达(Destination Unreachable) | 10 | 与目的主机的通信被管理员禁止(Communication with Destination Host Administratively Prohibited) |
3 | 目的不可达(Destination Unreachable) | 11 | 对请求的服务类型,网络不可达(Network Unreachable for TOS) |
3 | 目的不可达(Destination Unreachable) | 12 | 对请求的服务类型,主机不可达(Host Unreachable for TOS) |
3 | 目的不可达(Destination Unreachable) | 13 | 通信被禁止(Communication Administratively Prohibited) |
3 | 目的不可达(Destination Unreachable) | 14 | 主机越权(Host Precedence Violation) |
3 | 目的不可达(Destination Unreachable) | 15 | 优先级中断生效(Precedence Cutoff in Effect) |
4 | 源抑制(Source Quench) | 0 | 源抑制 |
5 | 重定向(Redirect) | 0 | 对网络的重定向(Redirect for Network) |
5 | 重定向(Redirect) | 1 | 对主机的重定向(Redirect for Host) |
5 | 重定向(Redirect) | 2 | 对网络和服务类型的重定向(Redirect for TOS and Network) |
5 | 重定向(Redirect) | 3 | 对主机和服务类型的重定向(Redirect for TOS and Host) |
8 | 回显请求(Echo Request) | 0 | 回显请求 |
9 | 路由器通告(Router Advertisement) | 0 | 路由器通告 |
10 | 路由器请求(Router Solicitation) | 0 | 路由器请求 |
11 | 超时(Time Exceeded) | 0 | 传输期间生存时间为0(TTL - 0 during transit) |
11 | 超时(Time Exceeded) | 1 | 在数据报组装期间生存时间为0(TTL - 0 during reassembly) |
12 | 参数问题(Parameter Problem) | 0 | 指针指示错误(Pointer indicates the error) |
12 | 参数问题(Parameter Problem) | 1 | 缺少必需的选项(Missing a Required Option) |
12 | 参数问题(Parameter Problem) | 2 | 错误的长度(Bad Length) |
13 | 时间戳请求(Timestamp Request) | 0 | 时间戳请求 |
14 | 时间戳应答(Timestamp Reply) | 0 | 时间戳应答 |
15 | 信息请求(Information Request) | 0 | 信息请求(已废弃) |
16 | 信息应答(Information Reply) | 0 | 信息应答(已废弃) |
17 | 地址掩码请求(Address Mask Request) | 0 | 地址掩码请求 |
18 | 地址掩码应答(Address Mask Reply) | 0 | 地址掩码应答 |
19 - 255 | 保留(Reserved) | - | - |
三、常见的ICMP报文
1、响应请求
ping命令,就是响应请求(Type=8)和应答(Type=0),一台主机向一个节点发送一个Type=8的ICMP
报文,如果途中没有异常,则目标返回Type=O的CMP报文,说明这台主机存在
2、目标不可到达
·目标不可到达报文(Type=3)在路由器或主机不能传递数据报时使用,例如我们要连接对方一个不存在的系统端口时,将返回Type=3、Code=3的ICMP报文。常见的不可到达类型还有网络不可到达(Code=0)、主机不可到达(Code=1)、协议不可到达(Code=2)等
3、源抑制
源抑制则充当一个控制流量的角色,它通知主机减少数据报流量,由于ICMP没有恢复传输的报文,所以只要停止该报文,主机就会逐渐新恢复传输速率
4、超时报文
·无连接方式网络的问题就是数据报会丢失,或者长时间在网络游荡而找不到目标,或者拥塞导致主机在规定时间内无法重组数据报分段,这时就要触发ICMP超时报文的产生。超时报文(Type=11)的代码域有两种取值:Code=0表示传输超时,Code=1表示重组分段超时
5、时间戳
·时间戳请求报文(Type=13)和时间戳应答报文(Type=14)用于测试两台主机,之间数据报来回一次的传输时间。传输时,主机填充原始时间戳,接收方收到请求后填充接收时间戳后以Type=14的报文格式返回,发送方计算这个时间差
四,ICMP实例
以下是一些ICMP重定向的案例分析:
正常网络优化中的ICMP重定向案例
- 案例背景:在一个企业网络中,有多个部门的主机连接到一台核心路由器上,核心路由器连接着多个分支路由器,各分支路由器又连接着不同的子网。
- 重定向过程:某主机要访问另一个子网中的服务器,它将数据包发送到默认网关核心路由器。核心路由器收到数据包后,检查路由表发现该数据包的最佳转发路径应该是通过某个分支路由器。于是,核心路由器在将数据包转发给分支路由器的同时,向源主机发送一个ICMP重定向报文,通知主机下次访问该服务器时可以直接将数据包发送到分支路由器。
- 案例结果:源主机收到ICMP重定向报文后,更新自己的路由缓存,之后访问该服务器的数据包就直接发送到分支路由器,减少了核心路由器的负担,优化了网络传输路径,提高了网络效率。
负载均衡环境下的ICMP重定向问题案例
- 案例背景:某公安厅客户采用A10负载均衡设备对服务器实现流量均衡,负载均衡设备与服务器配置在同一网段,服务器网关指向负载均衡器的接口地址,而负载均衡器的网关指向同一网段的路由器接口地址。
- 问题现象:客户端偶尔能打开登录界面,点击登录键后出现白页,或登录后点击页面链接出现白页。抓包结果显示,客户端的请求包都被正常转发给后台服务器,却一直未见回包。
- 问题分析:由于服务器与路由器接口本属同一网段,现在却通过负载均衡设备转发,这样负载均衡设备可能会向服务器发ICMP重定向报文,导致服务器的路由出现混乱,使得回包无法正常返回。
- 解决方案:执行ip icmp disable redirect命令将ICMP重定向关闭,问题得以解决。
ICMP重定向攻击案例
- 案例背景:在一个局域网中,有一台Windows 10主机和一台Kali Linux主机,Kali主机想要对Windows 10主机进行中间人攻击。
- 攻击过程:Kali主机下载netwox工具并使用命令netwox 86 -d eth0 -g 192.168.72.126 -i 192.168.72.2进行攻击,其中192.168.72.126是Kali主机的IP地址,192.168.72.2是原网关的IP地址。Kali主机向Windows 10主机发送伪造的ICMP重定向报文,通知Windows 10主机将默认网关更改为Kali主机的IP地址。
- 攻击结果:Windows 10主机收到伪造的ICMP重定向报文后,信任该报文并将默认网关修改为Kali主机的IP地址。之后,Windows 10主机发往因特网的数据包都会先发送到Kali主机,Kali主机可以截获、篡改这些数据包后再转发给原网关,从而实现中间人攻击。
ICMP重定向攻击
实验环境
- 一台win7
- 一台kali
apt-get install netwox
netwox 86 -f "host 192.168.2.165" -g 192.168.2.185 -i 192.168.2.1
此命令用于进行 ICMP 重定向攻击,使用 netwox 86 工具,根据 -f 过滤器指定目标主机为 192.168.2.165。通过发送伪造的 ICMP 重定向消息,让目标主机相信 192.168.2.185 是一个更好的网关,而不是其当前使用的 192.168.2.1 网关。当目标主机收到该伪造的 ICMP 重定向消息时,会修改其路由表,将原本发送到 192.168.2.1 的数据包重定向到 192.168.2.185,这样攻击者可以将自己插入到目标主机的网络路径中,以达到中间人攻击或流量嗅探的目的。
实施攻击后,目标就主机不能上网了,在win7上抓包ICMP,会发现全被重定向了
攻击者也可以实施中间人攻击,但是被攻击机器的所有流量都会经过攻击者,攻击者就可以对被攻击主机进行流量嗅探了
echo 1 > /proc/sys/net/ipv4/ip_forward #开启ip转发
攻击者在kali上开启ip转发功能win7就能正常上网了
Netwox 是一个功能强大的网络工具集,包含了大量的网络攻击、测试和诊断工具。以下是一些常见的 Netwox 命令及其说明:
一、信息收集类
- netwox 1:
- 功能:显示网络接口信息。
- 示例:
netwox 1
- 解释:执行此命令后,将显示系统中所有网络接口的详细信息,包括接口名称、MAC 地址、IP 地址、子网掩码、广播地址等,帮助你了解当前网络接口的配置情况,这对于后续的网络操作和故障排除很有帮助。
- netwox 2:
- 功能:显示 IP 地址和 MAC 地址的对应关系。
- 示例:
netwox 2
- 解释:该命令会列出网络中设备的 IP 地址和它们对应的 MAC 地址,通过 ARP 协议获取信息,可用于发现网络中的活跃设备及其 MAC 地址。
二、扫描类
- netwox 40:
- 功能:端口扫描。
- 示例:
netwox 40 -a 192.168.1.1 -p 1-1024
- 解释:对 IP 地址为
192.168.1.1
的主机进行端口扫描,扫描范围是从端口 1 到端口 1024。可以帮助你发现目标主机开放的服务端口,以确定可能的攻击面或服务可用性。
- netwox 51:
- 功能:Ping 扫描。
- 示例:
netwox 51 -i 192.168.1.0/24
- 解释:对
192.168.1.0/24
网段内的主机进行 Ping 扫描,判断哪些主机是存活的。它通过发送 ICMP Echo 请求,并根据响应来判断主机是否在线。
三、攻击类
- netwox 86:
- 功能:ARP 欺骗。
- 示例:netwox 86 -f “host <目标主机IP>” -g <攻击者IP或指定重定向的IP> -i <目标主机原网关IP>
- netwox 76:
- 功能:TCP SYN 洪水攻击。
- 示例:
netwox 76 -i 192.168.1.1 -p 80
- 解释:对 IP 地址为
192.168.1.1
的主机的 80 端口进行 TCP SYN 洪水攻击。通过发送大量的 TCP SYN 数据包,而不完成三次握手,消耗目标服务器的资源,使其无法正常处理合法的 TCP 连接请求,从而导致服务拒绝。
四、服务类
- netwox 110:
- 功能:简单 HTTP 服务器。
- 示例:
netwox 110 -p 8080
- 解释:在本地启动一个监听 8080 端口的 HTTP 服务器,可用于测试 HTTP 客户端的请求,或模拟一个简单的 HTTP 服务。
- netwox 119:
- 功能:简单的 DNS 服务器。
- 示例:
netwox 119 -p 53
- 解释:在本地启动一个监听 53 端口的 DNS 服务器,可用于测试 DNS 查询请求或进行 DNS 相关的实验和攻击模拟。
使用 Netwox 时需要特别注意:
- 合法性:Netwox 包含许多具有攻击性的工具,未经授权使用可能违反法律和道德规范,只能在合法的网络测试、研究和授权的渗透测试环境中使用。
- 网络影响:一些攻击命令会对网络和目标系统造成严重影响,可能导致网络瘫痪或服务不可用,请谨慎操作。
Netwox 还有许多其他工具,可以通过 netwox -l
命令查看所有可用的工具列表及其编号,然后通过 netwox <工具编号> -h
查看具体工具的详细帮助信息,以根据不同的需求选择合适的工具进行网络操作和测试。
博主的其他系列专栏📜📜📜
- 1 环境配置集合
- 2 C语言小实例项目
- 3 HTML入门 + 实战小案例
创作不易,😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!留下你的看法和建议💕
我们下期见✍️