网络安全·第三天·ICMP协议安全分析

一、ICMP功能介绍

ICMP(Internet Control Message Protocal)是一种差错和控制报文协议,不仅用于传输差错报文, 还传输控制报文,但是ICMP只是尽可能交付,提供的服务是无连接、不可靠的,并不能保证数据包可以成功的抵达目的地,同样的ICMP也没有验证机制,这也给了攻击者可乘之机。

ICMP的信息是通过IP协议进行传输,它是一种网络层协议,它对网络信息进行一种反馈,主要功能可以概括为①确认数据包可以送往目的IP地址 ②报告IP数据包无法送往的原因。

ICMP有两个非常重要的工具---ping和traceroute,下面小编将介绍这两种工具的具体用法以及工作流程。

二、ping命令及其相关问题

1、工作流程

ping 命令会发送一份ICMP回显请求报文(ICMP Echo Request)给目标主机,并等待目标主机返回ICMP回显应答(ICMP Echo Reply)。ICMP协议要求目标主机在收到请求消息之后,必须返回ICMP应答消息给源主机,基于这一点, 如果源主机在一定时间内收到了目标主机的应答,则表明两台主机之间网络是可达的。但是这也同样使得黑客能发动Dos攻击,这一点我们在后面会讲述其过程。

总而言之,ping是用来探测网络中两台主机之间是否可达的工具,ping工具的运行流程如下:

①.源主机ICMP协议工作

假设有两台主机,小李的主机IP地址为192.168.4.1,小伍的主机IP地址为192.168.4.2,小李想知道网络是否可达小伍的主机,于是他在自己windows主机的cmd上输入命令:ping 192.168.4.2。输入该命令后,主机A会构建一个 ICMP的请求数据包(ICMP Echo Request),然后 ICMP协议会将这个数据包以及目标IP192.168.4.2等信息一同交给IP层协议;

②.IP层工作

IP层协议得到这些信息后,将源地址192.168.4.1、目标地址192.168.4.2、再加上一些其它的控制信息,构建成一个IP数据包;

③.数据链路层工作

IP数据包构建完成后,还需要通过ARP协议找到相应的MAC地址,并且把目标地址与源地址的MAC地址一并交给数据链路层,组装成一个数据帧,将它们传送出出去;

④.目标主机ICMP协议工作

当小伍的主机收到这个数据帧之后,会首先检查它的目标MAC地址是不是本机,如果是就接收下来处理,否则直接丢弃。接收之后会检查这个数据帧,将数据帧中的IP数据包取出来,交给本机的IP层协议,然后IP层协议检查完之后,再将ICMP数据包取出来交给ICMP协议处理,当这一步也处理完成之后,就会构建一个ICMP应答数据包ICMP Echo Reply,回发给小李的主机;

⑤.计算时间并显示结果

在一定的时间内,如果小李的主机收到了应答包,则说明它与小伍的主机之间网络可达,如果没有收到,则说明网络不可达。除了监测是否可达以外,还可以利用应答时间和发起时间之间的差值,计算出数据包的延迟耗时,如下图"时间=xxx"所示。

2、几种常见的ICMP报文类型

通过上述ping工具的介绍,我们知道了两类ICMP报文,ICMP Echo Request报文以及ICMP Echo Reply报文,其中ICMP Echo Request的类型值为8,ICMP Echo Reply的类型值为0。但其实ICMP不仅仅只有这两种报文,这两种报文都是属于ICMP中的询问报文,其余的ICMP报文类型小编总结如下:

①.差错报告报文

类型值为3时:表示终点不可达,顾名思义也就是说IP数据包送不到对方手上。

类型值为4时:表示源点抑制,意思是说,送的太快了,希望对方能慢点送过来。

类型值为11时:表示超时,与源点抑制相反,这个是嫌弃对方送的太慢了。

类型值为5时:表示路由重定向,告知对方下次应将数据报发送给另外的路由器。

类型值为12时:表示参数问题,路由器或目的主机收到的数据报的首部中的字段的值不正确时,就丢弃该数据报,并向源站发送参数问题报文

②.询问报文

类型值为8或者0时:表示回送(Echo)请求或应答。

类型值为13或14时:表示时间戳(Timestamp)请求或应答。

注意:以下情况下,并不会产生差错报告报文!

1.ICMP差错报文,例如ICMP源点抑制报文超时了,此时不会再额外发送一条ICMP报文告知超时的差错。但是ICMP查询报文可能会产生ICMP差错报文!

2.目的地址是广播地址或多播地址的IP数据报

3.作为链路层广播的数据报,这两条都是说的广播

4.不是IP分片的第一片,只有第一片出错才会产生差错报告报文

5.源地址不是单个主机的数据报。即源地址不能为零地址、环回地址、广播地址或多播地址。

3、ICMP Dos攻击

A.第一类ICMP Dos攻击针对带宽,是利用无用的数据来耗尽网络带宽 ,如ICMP Smurf,Smurf在IP协议安全协议的那篇文章中讲解过,都是伪造受害主机的源地址,向网络的广播地址发送大量的ping包,目标系统都很快就会被大量的echo reply信息淹没。

ICMP Dos的工作原理是ICMP协议要求目标主机在收到请求消息之后,必须返回ICMP应答消息给源主机,不理解的同学可以看看小编的这篇文章:

网络安全·第一天·IP协议安全分析-CSDN博客

B.第二类ICMP Dos攻击针对连接 ,这类方法可以终止现有的连接,如Nuke,通过发送一个伪造的类型为3的ICMP终点不可达的差错报告报文来终止合法的连接。

4、ICMP重定向攻击

这个攻击与IP源路由欺骗很相似,黑客利用类型值为5的ICMP路由重定向差错报告报文来改变主机的路由表。自己伪装成路由器,向目标机器发送重定向消息,使目标机器的数据报发送至自己的主机上,从而实现监听、会话劫持或拒绝服务攻击。

5、死亡之ping

这类攻击像极了小朋友耍赖的方式,给大家讲一个我小时候的经历,小编在初中时,同学们都有自己的小帮派,我当时想融入其中一个小帮派,并且被这个小帮派拉入了qq群中。但是后来,这个小帮派里面的人对我都不大友好,总是拉偏架,我在qq上争不过他们,于是就开始了"刷屏",来恶心他们。当时qq的一条消息最长大概是四千多个字,小编长按句号键,直到抵达字数上限后发出。就这么发了几条长信息之后,群里的那些人崩溃了,他们的手机也变得一卡一卡的,小编也成功的被移除了群聊。

死亡之ping的原理同样是刷屏,不断的给目标主机发送长度为65500字节的ping报文,对方阅读这条消息时带宽会有所损耗,当多条很长的ping报文发过去时,会将目标主机的带宽消耗殆尽,从而崩溃。

6、ICMP类攻击的防范

首先,Nuke与重定向攻击都是利用的ICMP差错报告报文,我们可以阻止其它类型的ICMP通信, 这可以在一定程度上防范ICMP出错。同时,还可以设置允许向外**(目标为单台主机)** 发送 ICMP 响应请求,并允许向内发送响应答复消息**(目标为预先定义的主机)。**说白了就是,只允许本主机ping别人,而不允许别人ping自己,颇有种宁教我负天下人,休教天下人负我的意思。

三、traceroute命令

traceroute是常用的网络排错工具,用于定位数据包在转发的过程中,经过了哪些路由器,并告知主机每一跳路由器的ip地址。在windows的环境下,如果我们想追踪ip地址为192.168.4.2的主机,则相应的命令的格式为:tracert 192.168.4.2

traceroute的原理是 :主机首先发出 TTL=1 的3个UDP数据包 ,抵达第一个路由器后,将 TTL 减1,此时TTL的值为0,不再继续转发此数据包,而是返回一个ICMP超时差错报文 ,主机可以从超时报文中提取出数据包所经过的第一个网关地址。然后又发出一个TTL=2的3个UDP数据包,可利用ICMP超时报文获得第二个网关地址,依次递类推,逐渐增加TTL的值,主机便可以获取沿途所有网关的地址。

好的,本期的博客到这里就结束啦,如果觉得小编写的还不错,麻烦给小编一个免费的点赞和收藏可以吗?

相关推荐
SHENGWEI胜为5 小时前
交换机端口显示正常,终端却获取不到 IP 地址?从 DHCP 流程定位故障
服务器·网络·测试工具·缓存·通信工程
IMPYLH7 小时前
Linux 系统备份与镜像
linux·服务器·网络
淘气包海鸟8 小时前
水声网络框架
网络·ns3·水
国科安芯9 小时前
星间激光通信终端CANFD控制网络的时延确定性与辐射可靠性
网络·嵌入式硬件·信息与通信·canfd·低轨卫星·商业航天·抗辐射
中屹指纹浏览器svip9 小时前
网络抖动会标记账号异常?分清两种波动
网络
承渊政道10 小时前
Linux网络学习【传输层协议UDP】
linux·网络·网络协议·学习·ubuntu·udp
小此方10 小时前
Linux网络(三十三):告别O(n)噩梦:从select/poll的挣扎到epoll红黑树+回调的降维打击,一文打通IO多路复用
linux·网络·驱动开发
2301_7779983410 小时前
Linux 网络:数据链路层
linux·服务器·网络
国科安芯10 小时前
空间锂离子电池组管理系统CANFD通信网络的辐射可靠性设计
网络·信息与通信·canfd·电池·低轨卫星·抗辐射
2401_8685347810 小时前
网规物流企业网络问题
网络