您的位置: 新闻资讯 > 行业动态 > 正文

网络安全那些坑:ICMP Unreachable攻击大揭秘(图文)


来源:mozhe 2025-12-31

什么是 ICMP 协议


ICMP,全称 Internet Control Message Protocol,即互联网控制消息协议,是 TCP/IP 协议族中的一个重要子协议,属于网络层协议 ,就像是网络世界的 “交通协管员” 和 “维修工人”,主要负责在 IP 主机、路由器等网络设备之间传递控制消息,这些消息对于网络的正常运行和故障排查起着关键作用。简单来说,它可以让网络设备之间互相 “交流” 网络通不通、主机是否可达、路由是否可用等网络本身的消息。
ICMP 协议有多种消息类型,不同类型的消息承担着不同的职责,就像不同工种的工人负责不同的工作一样。常见的 ICMP 消息类型包括:
  • Echo reply(回显应答)与 Echo request(回显请求):这一对消息就像是网络中的 “探路者”,常用于测试网络连通性,我们日常使用的 ping 命令就是基于这两种消息。当我们在命令行中输入 “ping [目标 IP 地址]” 时,发送方主机就会向目标主机发送一个 ICMP Echo request 消息,就像是在问:“你在吗?能收到我的消息吗?” 目标主机收到后,如果一切正常,就会回复一个 ICMP Echo reply 消息,告诉发送方:“我在呢,收到你的消息啦!” 通过这种一问一答的方式,我们就可以判断发送方与目标方之间的网络连接是否正常,以及测量往返时间(RTT,Round - Trip Time),从而评估网络的延迟情况。比如,当你 ping 百度的服务器时,如果能收到正常的 Echo reply 消息,就说明你的网络与百度服务器之间的连接是畅通的;如果收不到,那就可能存在网络故障,需要进一步排查。
  • Destination unreachable(目的地不可达):这个消息类型就像是网络中的 “故障通知员”,当路由器收到一个 IP 数据报,但无法将其发送到目标地址时,就会给发送端主机返回一个 Destination unreachable 的 ICMP 消息,并且会在消息中显示不可达的具体原因。这就好比你寄快递时,快递员发现地址错误或者收件人联系不上,就会把快递退回来并告诉你原因。在网络中,常见的不可达原因包括网络不可达(比如目标网络不存在或者网络线路故障)、主机不可达(目标主机离线或者 IP 地址错误)、端口不可达(目标主机上的目标端口未开放,不接收数据)等。比如,当你尝试访问一个不存在的网站时,你的网络设备可能就会收到 Destination unreachable 的 ICMP 消息,提示你该网站的地址无法访问。
  • Time exceeded(超时):这是网络中的 “计时器管理员”,当数据包的 TTL(Time to Live,生存时间)值为 0 时,路由器会丢弃该数据包并发送 Time exceeded 超时报文。简单来说,TTL 就像是数据包的 “生命倒计时”,每经过一个路由器,TTL 值就会减 1,如果 TTL 值减到 0 了,数据包还没到达目的地,就说明这个 “旅程” 太长了,路由器就会把它丢弃,并发送超时报文通知发送方。另外,如果一个 IP 数据报因为过大而被分片,然后在目的主机侧把所有的分片重组,但主机迟迟没有等到所有的分片报文,也会向源发送方发送一个 ICMP 超时报文,表示分片重组超时了。例如,当你使用 traceroute 命令(在 Windows 系统中是 tracert 命令)来跟踪数据包的传输路径时,如果某个路由器返回了 Time exceeded 消息,就说明数据包在到达这个路由器时 TTL 值为 0 了,这可能是因为网络中存在路由环路,导致数据包一直在网络中循环,消耗了 TTL 值。
  • Redirect(重定向):Redirect 消息可以看作是网络中的 “路线优化师”,当路由器发现发送端主机使用了次优的路径发送数据时,它就会返回一个 ICMP Redirect 的消息给这个主机,这个消息包含了最合适的路由信息和源数据。就好像你开车去某个地方,导航发现你走的路线不是最优的,就会给你重新规划一条更短、更顺畅的路线。在网络中,主机收到 Redirect 消息后,可以根据新的路由信息调整数据包的发送路径,从而提高网络传输效率。例如,在一个复杂的企业网络中,可能存在多条通往同一个目的地的路径,当路由器发现某个主机选择的路径不是最优时,就会发送 Redirect 消息,引导主机使用更优的路径,这样可以减少网络拥塞,提高数据传输速度。
  • Source quench(源抑制):这个消息类型是网络中的 “流量调节员”,当路由器或主机因网络拥塞而丢弃数据包时,会发送源抑制报文,请求发送方降低发送速率。在网络传输过程中,如果某个节点(路由器或主机)发现自己接收的数据量太大,处理不过来了,就会向发送方发送 Source quench 消息,就像在说:“我这里太拥挤了,你慢点发!” 发送方收到这个消息后,就会降低数据发送的速率,以缓解网络拥塞。不过,随着网络技术的发展,这个功能在现代网络中已经很少使用了,现在更多地是通过其他更复杂的流量控制机制来管理网络流量。

ICMP Unreachable 攻击原理

ICMP Unreachable 攻击是一种利用 ICMP 协议中目的地不可达(Destination Unreachable)消息类型来实施的网络攻击,这种攻击就像是黑客在网络中制造的 “虚假路况信息”,通过发送伪造的 ICMP 不可达消息,让目标主机或网络误以为某些目标不可达,从而干扰甚至中断正常的网络通信,破坏网络的可用性 。下面就为大家详细介绍 ICMP Unreachable 攻击的原理。
攻击者实施 ICMP Unreachable 攻击,往往需要经过几个关键步骤 :
  1. 捕获合法数据包:攻击者会先使用网络嗅探工具,对目标网络的流量进行监控和分析 。这就好比是在网络的 “交通要道” 上安装了隐藏的摄像头,偷偷观察过往的 “车辆”(数据包)。通过这种方式,攻击者可以捕获目标主机正在进行的合法通信数据包,获取其中的关键信息,比如源 IP 地址、目的 IP 地址、端口号等 。这些信息就像是打开目标网络大门的 “钥匙”,为后续的攻击提供了必要的条件。例如,攻击者想要攻击某企业的网络,就会在企业网络的边界或内部关键节点进行嗅探,获取企业内部主机与外部服务器通信的数据包,了解通信的双方地址和端口,为伪造 ICMP 不可达消息做准备。
  2. 伪造 ICMP 不可达消息:在获取了合法数据包的信息后,攻击者就开始 “造假” 。他们会根据捕获到的数据,精心构造虚假的 ICMP 不可达消息 。攻击者会伪装成合法的路由器或中间设备,在消息中声称某个路径或主机不可达 。为了让这个 “谎言” 更具欺骗性,攻击者还会伪造消息的源 IP 地址,使其看起来像是来自可信的设备 ,就像骗子伪装成警察来骗取信任一样。比如,攻击者将自己的源 IP 地址伪装成目标网络的默认网关地址,这样目标主机在收到伪造的 ICMP 不可达消息时,就更容易相信这个消息的真实性。
  3. 发送伪造消息:攻击者将伪造好的 ICMP 不可达消息混入正常的网络流量中,发送给目标主机 。由于这些消息看起来和正常的 ICMP 不可达消息无异,目标主机在接收时往往难以分辨其真伪 ,就像真假美猴王站在一起,让人难以辨别。目标主机收到伪造消息后,会根据 ICMP 协议的规则对其进行处理,从而导致错误的判断和行为,最终实现攻击者干扰或中断网络通信的目的。例如,攻击者向目标主机发送大量伪造的网络不可达消息,目标主机就会认为目标网络无法访问,从而停止向该网络发送数据,导致通信中断。
在 ICMP Unreachable 攻击中,常见的攻击类型主要包括以下几种:
  • 网络不可达攻击(Network Unreachable,Type 3, Code 0):攻击者发送伪造的网络不可达消息,其目的是让目标主机误以为目标网络不存在或者无法访问 。当目标主机准备向某个特定网络发送数据时,一旦收到这种伪造的网络不可达消息,就会按照 ICMP 协议的规定,放弃发送数据 。这就好比你要去一个地方,却有人告诉你那个地方根本不存在或者去不了,你自然就不会再往那里走了。在实际的网络环境中,比如一家企业的内部网络与外部供应商的网络进行数据交互时,如果攻击者伪造网络不可达消息发送给企业的内部主机,企业主机就会认为无法与供应商网络通信,从而停止数据传输,这将严重影响企业的业务合作。
  • 主机不可达攻击(Host Unreachable,Type 3, Code 1):这种攻击方式是攻击者伪装成合法设备,向目标主机发送消息,告知目标主机其要访问的目标主机不可达 。目标主机收到这样的消息后,会认为对方主机处于离线、死机或者不可达的状态,进而中断与该主机的通信 。以在线游戏为例,玩家在游戏过程中,客户端主机需要不断与游戏服务器进行通信 。如果此时攻击者向客户端主机发送伪造的主机不可达消息,客户端主机就会以为游戏服务器不可达,从而断开与游戏服务器的连接,导致玩家无法正常游戏,严重影响游戏体验。
  • 协议不可达攻击(Protocol Unreachable,Type 3, Code 2):攻击者利用目标主机对特定协议的支持情况来实施攻击 。他们发送伪造的协议不可达消息,声称目标主机不支持所请求的协议 。目标主机收到此类消息后,会按照协议规则放弃使用该协议进行通信 。例如,在一个基于特定应用协议的通信场景中,通信双方原本约定使用某种特定的应用协议进行数据传输 。攻击者发送协议不可达消息,使接收方认为发送方不支持该协议,或者发送方认为接收方不支持该协议,这样双方就无法按照预定协议进行数据传输,进而影响业务的正常开展。
  • 端口不可达攻击(Port Unreachable,Type 3, Code 3):攻击者通过发送伪造的端口不可达消息,让目标主机认为目标主机上的目标端口未开放 。当目标主机尝试与目标端口建立连接时,收到这样的伪造消息后,就会终止通信尝试 。在 Web 服务中,客户端通过特定端口与 Web 服务器建立连接来访问网站内容 。如果攻击者发送端口不可达消息给客户端,客户端就会认为 Web 服务器的目标端口未开放,无法建立连接,从而导致网站无法访问,影响用户对网站的正常访问和使用。

攻击步骤剖析

潜伏的 “间谍”:捕获合法数据包

在 ICMP Unreachable 攻击的筹备阶段,攻击者就如同潜伏在网络暗处的 “间谍”,悄无声息地对目标网络展开严密监控 。他们借助专业的网络嗅探工具,如 Wireshark、tcpdump 等,将网卡设置为混杂模式,使网卡能够接收所有流经的网络数据包,而不仅仅是发送给自己的数据包 。这就好比在网络的主干道上安装了一个全方位的监控摄像头,能够捕捉到每一辆过往车辆(数据包)的信息 。
攻击者通过长时间的嗅探,捕获目标主机在正常通信过程中产生的合法数据包 。这些数据包中蕴含着丰富的信息,包括源 IP 地址、目的 IP 地址、端口号、协议类型等 。其中,源 IP 地址和目的 IP 地址确定了通信双方的身份,端口号则明确了通信所使用的应用层服务,协议类型表明了数据包遵循的网络协议规则 。这些信息对于攻击者来说至关重要,它们是后续实施攻击的关键依据,就像一把把钥匙,能够打开目标网络的防御大门 。

狡猾的伪装:伪造 ICMP 不可达消息

在获取了合法数据包的关键信息后,攻击者便开始施展他们的 “伪装术”,精心伪造 ICMP 不可达消息 。这一过程就如同骗子精心伪造证件,企图以假乱真 。攻击者使用数据包构造工具,如 Scapy 等,根据捕获的数据包内容,按照 ICMP 协议的格式和规范,构建虚假的 ICMP 不可达消息 。
在伪造消息时,攻击者会对消息的各个字段进行巧妙设置 。他们会将消息类型设置为 “目的地不可达(Destination Unreachable)”,并根据攻击目的选择相应的代码 。比如,若要实施网络不可达攻击,就将代码设置为 0;若进行主机不可达攻击,则设置为 1 。同时,攻击者还会伪装消息的源 IP 地址,将其设置为目标主机信任的设备 IP 地址,如目标网络的默认网关地址或其他合法路由器的 IP 地址 。这样一来,当目标主机接收到伪造的 ICMP 不可达消息时,就更容易上当受骗,误以为消息来自可信的网络设备 。

暗箭难防:发送伪造消息

攻击者完成伪造 ICMP 不可达消息的准备工作后,就会将这些 “暗箭” 混入正常的网络流量中,向目标主机发动攻击 。他们通过网络发送工具,将伪造的消息源源不断地发送出去,就像在熙熙攘攘的人群中混入了伪装的敌人,难以被察觉 。
由于伪造的 ICMP 不可达消息在格式和内容上与正常的消息几乎一模一样,目标主机在接收时往往难以分辨真伪 。目标主机按照 ICMP 协议的处理流程,对收到的消息进行解析和处理 。当它解析出消息为目的地不可达类型时,就会根据消息中的代码和相关信息,做出错误的判断和决策 。比如,目标主机可能会误以为目标网络、主机、协议或端口不可达,从而放弃与目标进行通信,或者修改自身的路由表,导致网络通信出现混乱 。这种攻击方式具有很强的隐蔽性和欺骗性,常常在目标主机毫无防备的情况下造成严重的破坏 。

真实案例警示

在网络安全的战场上,ICMP Unreachable 攻击带来的危害不容小觑,众多企业和个人都曾深受其害,下面就为大家分享一些真实发生的案例,让我们更加直观地认识这种攻击的破坏力。

企业网络通信中断,业务受损

某中型制造企业,日常业务高度依赖与外部供应商的网络通信,从原材料采购订单的下达,到生产进度的实时沟通,都通过网络进行。然而,有一天,企业内部网络突然出现异常,与多家重要供应商的通信频繁中断,导致订单无法及时下达,生产进度受到严重影响,部分生产线甚至被迫停工。
经企业网络安全团队紧急排查,发现是遭受了 ICMP Unreachable 攻击。攻击者通过嗅探企业网络流量,捕获了与供应商通信的数据包,随后伪造大量网络不可达的 ICMP 消息,发送给企业内部主机。企业主机误以为目标网络无法访问,停止了与供应商的通信,给企业造成了巨大的经济损失,不仅生产停滞带来了直接的成本增加,还因无法按时交付产品,面临违约赔偿,对企业声誉也产生了负面影响 。

在线游戏玩家掉线,游戏体验全无

对于广大在线游戏玩家来说,流畅的游戏体验至关重要,而一场 ICMP Unreachable 攻击,却能瞬间打破这份美好。在一款热门的多人在线竞技游戏中,许多玩家在激烈对战时,突然与游戏服务器断开连接,屏幕上显示网络连接异常。玩家们多次尝试重新连接,都无法成功,只能无奈退出游戏,眼睁睁看着自己的游戏排名和积分受到影响。
原来,这是一场有针对性的主机不可达攻击。攻击者利用游戏玩家与服务器通信的数据包,伪造主机不可达的 ICMP 消息发送给玩家客户端。客户端主机收到消息后,认为游戏服务器不可达,中断了连接,导致玩家无法正常游戏。这次攻击不仅让玩家们的游戏体验大打折扣,也引发了玩家对游戏平台网络安全的质疑,对游戏运营商的口碑造成了一定损害 。

如何防范 ICMP Unreachable 攻击

在了解了 ICMP Unreachable 攻击的原理、步骤以及实际危害后,我们迫切需要找到有效的防范方法,来保护我们的网络安全。就像在现实生活中,我们会为房屋安装坚固的门锁、设置警报系统来防止盗贼入侵一样,在网络世界里,我们也有多种手段来抵御 ICMP Unreachable 攻击 。下面就为大家详细介绍一些实用的防范策略 。

防火墙的严密守护

防火墙是网络安全的第一道防线,它就像是网络的 “安全卫士”,可以通过多种方式来防范 ICMP Unreachable 攻击 。
  • 设置访问控制规则:防火墙可以根据管理员预先设定的规则,对进出网络的 ICMP 消息进行严格筛选 。例如,只允许特定来源(如内部网络的路由器、可信的外部合作伙伴 IP 地址)的 ICMP 不可达消息进入网络,而对于其他未知或可疑来源的消息,则坚决予以阻止 。这就好比在小区门口设置门禁,只有登记过的车辆和人员才能进入,有效阻挡了非法分子的进入 。通过这样的访问控制,能够大大减少伪造的 ICMP 不可达消息进入目标网络的机会 。
  • 开启状态检测功能:状态检测防火墙能够实时监测网络连接的状态信息,对 ICMP 消息的合法性进行深度检查 。它不仅会查看消息的基本内容,还会分析消息与当前网络连接状态的关联性 。比如,当一个 ICMP 不可达消息声称某个连接不可达时,状态检测防火墙会检查该连接是否真实存在以及当前的状态是否正常 。如果发现消息与实际连接状态不符,或者消息的格式、内容存在异常,防火墙就会判定该消息为可疑消息,并进行拦截 。这种智能的检测方式能够有效识别出攻击者伪造的 ICMP 不可达消息,为网络提供更高级别的保护 。

系统配置的加固

在操作系统层面,我们也可以采取一系列措施来增强系统对 ICMP Unreachable 攻击的抵抗力 。
  • 修改系统注册表:以 Windows 系统为例,我们可以通过修改注册表来限制 ICMP 消息的接收频率和数量 。在注册表中找到相关的键值项,如 “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters”,在该项下创建或修改名为 “EnableICMPRedirect” 的 DWORD 值,将其设置为 0,可以禁止系统接收 ICMP 重定向消息,从而防止攻击者利用重定向消息进行攻击 。另外,还可以设置 “ICMPRedirects” 的值来限制系统接收 ICMP 不可达消息的数量 。这就像是给系统的 “耳朵” 戴上了 “耳塞”,只允许少量必要的 ICMP 消息进入,减少了系统受到攻击的风险 。
  • 使用系统自带防火墙:Windows、Linux 等操作系统都自带了防火墙功能,我们可以充分利用这些功能来配置规则,过滤非法的 ICMP 消息 。在 Windows 系统中,打开 “控制面板”,找到 “Windows 防火墙”,进入 “高级设置”,在 “入站规则” 和 “出站规则” 中分别添加针对 ICMP 协议的规则 。例如,创建一个入站规则,只允许来自特定 IP 地址范围的 ICMP Echo Request 消息进入,而禁止其他类型的 ICMP 消息,特别是目的地不可达类型的消息 。这样,系统就能够按照我们设定的规则,对 ICMP 消息进行有效的过滤,保护系统免受攻击 。

网络设备的优化

路由器、交换机等网络设备在网络中起着关键的枢纽作用,对它们进行合理配置,可以有效防范 ICMP Unreachable 攻击 。
  • 设置访问控制列表(ACL):路由器可以通过设置 ACL 来限制 ICMP 消息的源地址和目的地址 。例如,只允许内部网络的主机向外部网络发送特定类型的 ICMP 消息,同时禁止来自外部的可疑 ICMP 不可达消息进入内部网络 。具体来说,在路由器的配置界面中,定义一系列规则,如 “deny icmp any any destination - unreachable”,表示拒绝所有源地址和目的地址的 ICMP 不可达消息,然后再根据实际需求,添加允许合法 ICMP 消息通过的规则 。这样,路由器就能够根据 ACL 的规则,对经过它的 ICMP 消息进行严格的筛选和控制 。
  • 启用端口安全功能:交换机可以启用端口安全功能,限制连接到端口的设备 MAC 地址 。通过将合法设备的 MAC 地址绑定到相应的端口,防止非法设备接入网络发送攻击报文 。比如,在企业网络中,将员工电脑的 MAC 地址与交换机端口进行绑定,只有绑定的设备才能正常连接到网络 。如果攻击者试图通过接入网络发送伪造的 ICMP 不可达消息,由于其设备 MAC 地址未被绑定,交换机将阻止其连接,从而有效防范了攻击 。

总结与展望

ICMP Unreachable 攻击利用 ICMP 协议的特性,通过伪造不可达消息,对网络通信的可用性造成严重威胁。从捕获合法数据包,到伪造消息并发送,每一步都精心策划,给目标主机和网络带来诸如通信中断、业务受损等严重后果,真实案例便是最好的警示 。
面对这一威胁,我们通过防火墙设置访问控制规则和开启状态检测功能、系统层面修改注册表和利用自带防火墙、网络设备配置访问控制列表和启用端口安全功能等多种防范措施,构建起多层次的防御体系 。但网络安全是一场没有硝烟的持久战,ICMP Unreachable 攻击也在不断演变,新的攻击手段和变种可能随时出现 。
展望未来,随着人工智能、机器学习技术在网络安全领域的深入应用,我们有理由期待更智能、更高效的网络安全防护系统的出现 。这些新技术能够实时监测网络流量,自动识别异常行为,快速准确地检测出 ICMP Unreachable 攻击等各种网络威胁,并及时采取有效的防御措施 。同时,量子计算技术的发展也可能给网络安全带来新的变革,一方面可能使现有的加密算法面临被破解的风险,但另一方面也会促使新的量子安全加密技术的诞生,为网络安全提供更强大的保护 。
作为网络的使用者和守护者,我们每个人都应时刻保持警惕,关注网络安全领域的新技术、新动态,不断提升自己的网络安全意识和防护能力 。只有这样,我们才能在这个日益数字化的世界里,有效抵御各种网络攻击,确保网络通信的安全与稳定,让网络更好地为我们的生活和工作服务 。

关于墨者安全
墨者安全致力于安全防护、服务器高防、网络高防、ddos防护、cc防护、dns防护、防劫持、高防服务器、高防dns、网站防护等方面的服务,全网第一款指纹识别技术防火墙,自研的WAF指纹识别架构,提供任意CC和DDoS攻击防御

热门文章

X

7x24 小时

免费技术支持

15625276999


-->