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入门 + 实战小案例
创作不易,😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!留下你的看法和建议💕
我们下期见✍️
相关文章:

ICMP协议和ICMP重定向攻击
✍作者:柒烨带你飞 💪格言:生活的情况越艰难,我越感到自己更坚强;我这个人走得很慢,但我从不后退。 📜系列专栏:网络安全从菜鸟到飞鸟的逆袭 目录 一,ICMP基本概念二&…...

leetcode203-移除链表元素
leetcode203 什么是链表 之前不懂链表的数据结构,一看到链表的题目就看不明白 链表是通过next指针来将每个节点连接起来的,题目中给的链表是单向链表,有两个值,一个val表示值,一个next:表示连接的下一个…...
Rust 中构建 RESTful API
在 Rust 中构建 RESTful API,你可以选择几个不同的框架。每个框架有不同的特点、优缺点和适用场景,下面我将介绍几个常用的 Rust Web 框架,并分析它们的优缺点。 Actix Web 简介: Actix Web 是一个非常高性能的 Web 框架…...

Sqlmap入门
原理 在owasp发布的top10 漏洞里面,注入漏洞一直是危害排名第一,其中数据库注入漏洞是危害的。 当攻击者发送的sql语句被sql解释器执行,通过执行这些恶意语句欺骗数据库执行,导致数据库信息泄漏 分类 按注入类型 常见的sql注入…...

迈向 “全能管家” 之路:机器人距离终极蜕变还需几步?
【图片来源于网络,侵删】 这是2024年初Figure公司展示的人形机器人Figure 01,他可以通过观看人类的示范视频,在10小时内经过训练学会煮咖啡,并且这个过程是完全自主没有人为干涉的! 【图片来源于网络,侵删】…...

移动端 REM 适配
移动端 REM 适配 Vant 中的样式默认使用 px 作为单位,如果需要使用 rem 单位,推荐使用以下两个工具: postcss-pxtorem 是一款 postcss 插件,用于将单位转化为 remlib-flexible 用于设置 rem 基准值 下面我们分别将这两个工具配…...
逐笔成交逐笔委托Level2高频数据下载和分析:20241230
逐笔委托逐笔成交下载 链接: https://pan.baidu.com/s/11Tdq06bbYX4ID9dEaiv_lQ?pwdcge6 提取码: cge6 Level2逐笔成交逐笔委托数据分享下载 利用Level2的逐笔交易和委托数据,这种以毫秒为单位的详细信息能揭露众多关键信息,如庄家意图、伪装行为&…...

C#实现字符串反转的4种方法
见过不少人、经过不少事、也吃过不少苦,感悟世事无常、人心多变,靠着回忆将往事串珠成链,聊聊感情、谈谈发展,我慢慢写、你一点一点看...... 1、string.Reverse 方法 string content "Hello World";string reverseStri…...
UDP 单播、多播、广播:原理、实践
一、引言 在计算机网络通信领域,UDP(User Datagram Protocol,用户数据报协议)是一种重要的传输层协议。它以无连接、低开销的特点,在众多实时性要求高的应用场景中发挥关键作用。UDP 支持单播、多播和广播三种通信模式…...
深入浅出:Go语言中的bytes包与字节串操作详解
标题:深入浅出:Go语言中的bytes包与字节串操作详解 引言 在Go语言的世界里,bytes包是一个非常重要的标准库,它为开发者提供了高效处理字节切片(byte slice)的功能。无论是处理二进制数据、UTF-8编码的字符串,还是进行高效的数据读写操作,bytes包都扮演着不可或缺的角色…...

数据库存储上下标符号,sqlserver 2008r2,dm8
sqlserver 2008r2: 数据类型需要用nvarchar插入数据时字符串前需要用N create table test( col1 varchar(50), col2 nvarchar(50) ) insert into test(col1,col2) values(U⁴⁵⁶⁷⁸⁹⁰D₁₂₃₄₅₆₇₈₉₀,U⁴⁵⁶⁷⁸⁹⁰D₁₂₃₄₅₆₇₈₉₀) insert into…...

LabVIEW串口通信调试与数据接收问题
在使用LabVIEW进行串口通信时,常常会遇到无法接收数据的情况。这可能与串口设置、连接、设备响应等多方面因素相关。本文将详细讨论如何使用LabVIEW进行串口通信,并提供常见问题的排查与解决方法,帮助用户更高效地进行数据接收调试。通过调整…...
oneplus3t-lineage-14编译-android7
lineageOS-14(android7)的开发者模式/usb调试(adb)有root功能, 而lineageOS-16(android9)无 oneplus3t-lineage-14编译-android7 1 清华linageos镜像 x lineage-14.1-20180223-nightly-oneplus3-signed.zip ntfs分区挂载为普通用户目录 , ext4分区挂载为普通用户目录 bfs…...

存储过程(SQL)
1.存储过程 存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 2.MySQL存储过程创建…...

【I/O编程】UNIX文件基础
IO编程的本质是通过 API 操作 文件。 什么是 IO I - Input 输入O - Output 输出 这里的输入和输出都是站在应用(运行中的程序)的角度。外部特指文件。 这里的文件是泛指,并不是只表示存在存盘中的常规文件。还有设备、套接字、管道、链接…...

完美解决phpstudy安装后mysql无法启动
phpstudy数据库无法启动有以下几个原因。 **一、**自己在电脑上安装了MySQL数据库,MySQL的服务名为MySQL,这会与phpstudy的数据库的服务名发生冲突,从而造成phpstudy中的数据库无法启动,这时我们只需要将自己安装的MySQL的服务名改掉就行。 但是&#…...
自己造轮子-基于Ceres的GNSS-INS松耦合组合导航算法
之前硕士期间的研究课题涉及到GNSS-INS组合导航,入门看的武汉大学牛老师团队的KF-GINS,不得不说,大组的东西还是很棒的,很适合组合导航入门,KF-GINS主要是基于ESKF的GNSS/INS松耦合组合导航系统,博主就不在…...

「实战应用」如何为DHTMLX JavaScript 甘特图添加进度线
DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。 今天,您将学习如何使用进度线补充JavaScript 甘特图,以便于监控项目进度。 DHTMLX Gantt 最新试用版下载 …...
MySQL面试题2025 每日20道
1、MySQL 中的数据排序是怎么实现的? 简单 在 MySQL 中,数据排序是通过 ORDER BY 子句来实现的。当你执行一个查询语句时,可以在 SELECT 语句的末尾添加 ORDER BY 来指定按照哪个列进行排序,以及升序(ASC)…...

HTML学习笔记(4)
目录 一、背景相关样式 二、定位position 三、javascript 1、变量的定义 2、数据类型 3、绑定事件 一、背景相关样式 background-image: url(); // 背景图片 background-repeat: repeat; // 背景图片是否平铺 no-repeat background-size: 200px; // 背景图片尺寸 cover把…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...