当前位置: 首页 > article >正文

网络安全·第三天·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的值,主机便可以获取沿途所有网关的地址。

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

相关文章:

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

一、ICMP功能介绍 ICMP(Internet Control Message Protocal)是一种差错和控制报文协议,不仅用于传输差错报文, 还传输控制报文,但是ICMP只是尽可能交付,提供的服务是无连接、不可靠的,并不能保…...

SpringBoot对接火山引擎大模型api实现图片识别与分析

文章目录 一、前言二、创建应用三、后端1.SDK集成2.调用Rest API 四、前端 一、前言 Spring AI实战初体验——实现可切换模型AI聊天助手-CSDN博客 如上,在上一篇博客,我们已经实现了spring ai对接本地大模型实现了聊天机器人,但是目前有个新…...

单片机方案开发 代写程序/烧录芯片 九齐/应广等 电动玩具 小家电 语音开发

在电子产品设计中,单片机(MCU)无疑是最重要的组成部分之一。无论是消费电子、智能家居、工业控制,还是可穿戴设备,小家电等,单片机的应用无处不在。 单片机,简而言之,就是将计算机…...

Open Interpreter:重新定义人机交互的开源革命

引言 在人工智能技术蓬勃发展的今天,人机交互的方式正经历着前所未有的变革。Open Interpreter,作为一个开源项目,正在重新定义我们与计算机的互动方式。它允许大型语言模型(LLMs)在本地运行代码,通过自然…...

解决前端使用Axios时的跨域问题

跨域问题是前端开发中常见的问题,当你的前端应用尝试访问不同域名、端口或协议的API时就会出现。以下是几种解决方案: 1. 后端解决方案 CORS (推荐) 后端需要设置正确的响应头: Access-Control-Allow-Origin: * // 或指定具体域名 Acces…...

ARCGIS PRO 在已建工程地图中添加在线地图

一、手工添加 如图所示: 1、在上方的菜单栏中点击“插入”,选择“连接” 2、新建ArcGIS Server 3、在弹出框中输入在线图集的URL,点击“确定” https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer 4、查看在…...

ScholarCopilot:“学术副驾驶“

这里写目录标题 引言:学术写作的痛点与 AI 的曙光ScholarCopilot 的核心武器库:智能生成与精准引用智能文本生成:不止于“下一句”智能引用管理:让引用恰到好处 揭秘背后机制:检索与生成的动态协同快速上手&#xff1a…...

MATLAB仿真多相滤波抽取与插值的频谱变化(可视化混叠和镜像)

MATLAB画图仿真多相滤波抽取与插值的频谱变化 可视化多速率信号处理抽取与插值的频谱变化 实信号/复信号 可视化混叠和镜像 目录 前言 一、抽取的基本原理 二、MATLAB仿真抽取运算 三、内插的基本原理 四、MATLAB仿真内插运算 总结 前言 在多速率系统中增加信号采样率的运…...

mongodb 远程访问

mongodb 远程访问 MongoDB 数据库的远程访问通常需要一些配置步骤,以确保安全性并正确设置网络访问权限。以下是一些基本步骤来允许远程访问 MongoDB 数据库: 修改 MongoDB 配置文件 首先,你需要编辑 MongoDB 的配置文件(通常是 …...

DAY 44 leetcode 28--字符串.实现strStr()

题号28 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 我的解法 双指针,slow定位&…...

MySQL-存储引擎索引

存储引擎 MySQL体系结构 1). 连接层 最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于 TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程 池的概念,为通过认证安…...

图像处理有哪些核心技术?技术发展现状如何?

在数字化信息爆炸的时代,文档图像预处理技术正悄然改变着我们处理文字信息的方式。无论是手持拍摄的收据、扫描仪中的身份证,还是工业机器人采集的复杂文档,预处理技术都在背后默默提升着OCR(光学字符识别)系统的性能。…...

【小沐学GIS】基于C++绘制三维数字地球Earth(QT5、OpenGL、GIS、卫星)第五期

🍺三维数字地球系列相关文章如下🍺:1【小沐学GIS】基于C绘制三维数字地球Earth(OpenGL、glfw、glut)第一期2【小沐学GIS】基于C绘制三维数字地球Earth(OpenGL、glfw、glut)第二期3【小沐学GIS】…...

KEGG注释脚本kofam2kegg.py--脚本010

采用kofam结合kegg官网htxt进行注释 用法: python kofam2kegg.py kofam.out ath00001.keg my_kegg_output code: import sys from collections import defaultdictdef parse_kofam_file(kofam_file):ko_to_genes defaultdict(list)with open(kofam_file) as f:…...

spring cloud OpenFeign 详解:安装配置、客户端负载均衡、声明式调用原理及代码示例

OpenFeign 详解&#xff1a;安装配置、客户端负载均衡、声明式调用原理及代码示例 1. OpenFeign 安装与配置 (1) 依赖管理 <!-- pom.xml 添加以下依赖 --> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud…...

【Java八股】

JVM JVM中有哪些引用 在Java中&#xff0c;引用&#xff08;Reference&#xff09;是指向对象的一个变量。Java中的引用不仅仅有常规的直接引用&#xff0c;还有不同类型的引用&#xff0c;用于控制垃圾回收&#xff08;GC&#xff09;的行为和优化性能。JVM中有四种引用类型…...

用 Deepseek 写的uniapp血型遗传查询工具

引言 在现代社会中&#xff0c;了解血型遗传规律对于优生优育、医疗健康等方面都有重要意义。本文将介绍如何使用Uniapp开发一个跨平台的血型遗传查询工具&#xff0c;帮助用户预测孩子可能的血型。 一、血型遗传基础知识 人类的ABO血型系统由三个等位基因决定&#xff1a;I…...

程序化广告行业(84/89):4A广告代理公司与行业资质解读

程序化广告行业&#xff08;84/89&#xff09;&#xff1a;4A广告代理公司与行业资质解读 大家好&#xff01;在探索程序化广告行业的道路上&#xff0c;每一次知识的分享都是我们共同进步的阶梯。一直以来&#xff0c;我都希望能和大家携手前行&#xff0c;深入了解这个充满机…...

go语言gRPC使用流程

1. 安装工具和依赖 安装 Protocol Buffers 编译器 (protoc) 下载地址&#xff1a;https://github.com/protocolbuffers/protobuf/releases 使用说明&#xff1a;https://protobuf.dev/ 【centos环境】yum方式安装&#xff1a;protoc[rootlocalhost demo-first]# yum install …...

【眼底辅助诊断开放平台】项目笔记

这是一个标题 任务一前端页面开发&#xff1a;后端接口配置&#xff1a; 任务二自行部署接入服务 日志修改样式和解析MD文档接入服务 Note前端登陆不进去/更改后端api接口304 Not Modifiedlogin.cache.jsonERR_CONNECTION_TIMED_OUT跨域一般提交格式proxy.ts src/coponents 目录…...

Java笔记5——面向对象(下)

目录 一、抽象类和接口 1-1、抽象类&#xff08;包含抽象方法的类&#xff09; 1-2、接口 ​编辑​编辑 二、多态 ​编辑 1. 自动类型转换&#xff08;向上转型&#xff09; 示例&#xff1a; 注意&#xff1a; 2. 强制类型转换&#xff08;向下转型&#xff09; 示…...

NI的LABVIEW工具安装及卸载步骤说明

一.介绍 最近接到个转交的项目&#xff0c;项目主要作为上位机工具开发&#xff0c;在对接下位机时&#xff0c;有用到NI的labview工具。labview软件是由美国国家仪器&#xff08;NI&#xff09;公司研制开发的一种程序开发环境&#xff0c;主要用于汽车测试、数据采集、芯片测…...

[reinforcement learning] 是什么 | 应用场景 | Andrew Barto and Richard Sutton

目录 什么是强化学习&#xff1f; 强化学习的应用场景 广告和推荐 对话系统 强化学习的主流算法 纽约时报&#xff1a;Turing Award Goes to 2 Pioneers of Artificial Intelligence wiki 资料混合&#xff1a;youtube, wiki, github 今天下午上课刷到了不少&#xff0…...

css一些注意事项

css一些注意事项 .bg_ {background-image: url(/static/photo/activity_bg.png);background-size: 100% auto;background-repeat: no-repeat;background: linear-gradient(to bottom, #CADCEA, #E8F3F6);min-height: 100vh; } 背景图片路径正确但是并没有显示 // 方案1&…...

[从零开始学数据库] 基本SQL

注意我们的主机就是我们的Mysql数据库服务器 这里我们可以用多个库 SQL分类(核心是字段的CRUD)![](https://i-blog.csdnimg.cn/img_convert/0432d8db050082a49258ba8a606056c7.png) ![](https://i-blog.csdnimg.cn/img_convert/bdf5421c2b83e22beca12da8ca89b654.png) 重点是我…...

react/vue中前端多图片展示页面优化图片加载速度的五种方案

需求背景 在多项目中 例如官网项目中 会出现很多大图片显示的情况 这个时候就会出现图片过大 公司带宽不够之类导致页面加载速度过慢及页面出现后图片仍然占位但并未加载出来 或者因为网络问题导致图片区域黑块等等场景 这个时候我们就要对图片和当前场景进行优化 方案定…...

qt中的正则表达式

问题&#xff1a; 1.在文本中把dog替换成cat&#xff0c;但可能会把dog1替换成cat1&#xff0c;如果原本不想替换dog1&#xff0c;就会出现问题 2文本中想获取某种以.txt为结尾的多有文本&#xff0c;普通的不能使用 3如果需要找到在不同的系统中寻找换行符&#xff0c;可以…...

AT_abc400_e [ABC400E] Ringo‘s Favorite Numbers 3 题解

题目传送门 题目大意 题目描述 对于正整数 N N N&#xff0c;当且仅当满足以下两个条件时&#xff0c; N N N 被称为 400 number&#xff1a; N N N 恰好有 2 2 2 种不同的素因数。对于 N N N 的每个素因数 p p p&#xff0c; N N N 被 p p p 整除的次数为偶数次。更严…...

git 提交标签

Git 提交标签 提交消息格式&#xff1a; <type>: <description> &#xff08;示例&#xff1a;git commit -m "feat: add user login API"&#xff09; 标签适用场景feat新增功能&#xff08;Feature&#xff09;。fix修复 Bug&#xff08;Bug fix&…...

关于 Spring Batch 的详细解析及其同类框架的对比分析,以及如何自己设计一个java批处理框架(类似spring batch)的步骤

以下是关于 Spring Batch 的详细解析及其同类框架的对比分析&#xff1a; 一、Spring Batch 核心详解 1. 核心概念 作业&#xff08;Job&#xff09;&#xff1a;批处理任务的顶层容器&#xff0c;由多个步骤&#xff08;Step&#xff09;组成。 步骤&#xff08;Step&#…...