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

网络协议与攻击模拟_04ICMP协议与ICMP重定向

ICMP协议是网络层协议, 利用ICMP协议可以实现网络中监听服务和拒绝服务,如 ICMP重定向的攻击。

一、ICMP基本概念

1、ICMP协议

ICMP是Internet控制报文协议,用于在IP主机、路由器之间传递控制消息,控制消息指网络通不通、主机是否可达,路由是否可用等等。

  • 案例
    • 环境:GNS3 路由器 交换机 电脑
    • slots设置:交换机要选择NM-6ESW,主机和路由器选NM-1FE-TX
PC#show int f0/0
FastEthernet0/0 is up, line protocol is upHardware is AmdFE, address is cc02.1b08.0000 (bia cc02.1b08.0000)Internet address is 192.168.1.1/24#可知PC的MAC地址为cc02.1b08.0000R3#show int f0/0
FastEthernet0/0 is up, line protocol is upHardware is AmdFE, address is cc03.187c.0000 (bia cc03.187c.0000)
#可知路由器R3的MAC地址为cc03.187c.0000
  • ping一下网关

  • 抓包看到数据有请求有响应

根据抓到得报文可以看出:ICMP报文是有请求有响应的,如果说出现请求超时这种情况,很有可能是数据包可以到达目的地,但是回不来,或者说 根本不能到达目的地,所以请求超时会有多种情况。如果是路由器回复目标主机不可达造成的结果就是路由器没有帮你转发数据。

  • ICMP报文前面是网络层协议,有IPV4报文,接着才是ICMP协议 。

2、ICMP封装结构 

ICMP是主机和路由器之间传递控制报文消息的,ICMP属于网络层协议,是封装在传输层和控制层之间的。

3、ICMP报文结构

  • type类型
  • code 代码
  • Checksum校验和
  • Identifier(BE)和dentifier(LE)是报文的标志符
  • Sequence Number(BE)和Sequence Number(LE)是报文的序列号
  • Data:ICMP的数据

4、ICMP的Type&Code

ICMP报文主要就是看它的类型(type)和代码(code)

  • (8 0) ICMP请求
    ICMP报文type类型都为8,code字段为0,注不正常的请求下面有No response seen字段。
  • (0 0) 回显应答(表示比较正常的应答)
  • (11 0) 超时(传输期间生存时间为0)
  •  (3 1) 不正常应答(目标不可达主机不可达)
  • (3 3) 目标不可达(端口不可达)
  • (3 2) 目标不可达(协议不可达)
  • 类型5 表示重定向
  • (5 0)网络重定向
  • (5 1)主机重定向
  • 类型13 14 时间戳请求 时间戳应答
  • 总计类型是有0到18,这里有个特殊点,就是类型0之后没有类型1 类型2 ,类型0过后是类型3 类型4 类型5 ,也没有类型6 类型7,接着是类型8 类型9……一直到类型18。

注:ICMP报文不同的类型下面可能有不同的代码,可能要去了解下常见的ICMP类型有哪些,某一类型下面有哪些代码。如当你去访问一个不存在或者目标不可达或者说没有响应的目的的时候,数据到达网关后,路由器发现目标无法到达或者回不来的时候,会给主机发送ICMP响应,即ICMP控制报文,根据UCMP控制报文的Type和code可以分析出主机访问目标到底是什么情况。

二、ICMP重定向

1、什么是ICMP重定向

重定向是ICMP控制报文中的一种,在某一种特定的情况下,当路由器检测到一台机器使用的是非优化路由的时候,这个时候路由器回会主机发送ICMP重定向报文,使得它走优化路由。.

2、ICMP重定向举例

(1)引入ICMP重定向

网络中有三台主机{主机A(192.168.1.10)主机B (192.168.2.1)主机C(192.168.3.1}

一台交换机和两台路由器,主机A通过交换机连接到路由器R1和R2,主机A的网关是R1,

主机B接R2,主机C接R1。网络拓扑如下:

现主机A(1.10)要访问主机B(3.1),因为主机A的网关是(1.254),初始R1没有配置到R2的路由,所以主机A是无法到达主机B的。

此时如果在R1路由器添加到R2的静态路由,主机A访问主机B的数据流向如下:

主机A->R1->R2->主机B

这样走的话就比较复杂了,因为从网络拓扑来看,主机A如果能够走R2到主机B的话显然是最优路线,那么就要引入了ICMP重定向l了。

(2)ICMP重定向

此时我们可以在R2路由器R1上直接设置主机重定向,让主机A访问主机B的时候直接走路由器R2.

即在此情况下,当路由器R1检测到主机A使用的是非优化的路由,路由器R1就会想主机A发送ICMP重定向报文,使主机A的路由改变。

此时,如果有黑客直接给逐句A发送ICMP重定向,将主机A的路由改变了,可能在成逐句A无法进行网络通信,或直接将主机A的网关改成自己来达成截取流量的目的,这就是ICMP重定向攻击。

3、ICMP重定向原理性实验

实验环境:GNS3(两台路由器、一台交换机、一台主机)2.1和3.1的网络通过路由器的loopback虚拟接口来实现

(1)网络搭建与配置

PC(config)#no ip routing
PC(config)#int f0/0
PC(config-if)#ip add 192.168.1.10 255.255.255.0
PC(config-if)#no shut
PC(config-if)#exit
PC(config)#ip default-gateway 192.168.1.254
PC(config)#R1#
R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int f0/0
R1(config-if)#ip add 192.168.1.254 255.255.255.0
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#int loopback 0
R1(config-if)#ip
*Mar  1 00:13:05.739: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
R1(config-if)#ip add 192.168.2.1 255.255.255.0
R1(config-if)#R2#conf
Configuring from terminal, memory, or network [terminal]?
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#int f0/0
R2(config-if)#ip add 192.168.1.253 255.255.255.0
R2(config-if)#no shut
R2(config-if)#no shut
*Mar  1 00:09:59.695: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar  1 00:10:00.695: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
R2(config-if)#exit
R2(config)#int loopback 0
*Mar  1 00:10:18.415: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
R2(config-if)#ip add 192.168.3.1 255.255.255.0

(2)主机Aping测试

R1、R2以及192.168.2.1都可以ping通,但是192.168.3.1无法ping通(没有路由)

(3)配置路由

直接在R1路由器配置一条路由,使得数据通过R1转发到192.168.3.0

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#ip route 192.168.3.0 255.255.255.0 192.168.1.253
R1(config)#

(4)抓包分析

开启三条链路的抓包,然后主机ping192.168.3.1抓取数据进行分析。

  • 主机A->交换机数据流量

第一条报文是no response,没有响应也就是cmd上面显示请求超时的那条报文。

我们来看下ICMP报文的type和code字段,type类型为5,code为0表示对网络进行重定向

下一条报文就请求到了

  • 交换机->R1数据流量

左边链路是

1.10请求3.1

1.10收到路由器的重定向,

1.10去请求1.253的MAC地址

接下来后续的包就直接交给了1.253

主机A访问3.1的时候网关直接发送ICMP重定向报文给主机A,

由于主机A的网关R1发现自己路由表中有直接到达192.1683.1的路由

所以看到下一跳地址直接向R2发送了ARP请求,请求R2的MAC地址,R2发送ARP应答将自己的MAC地址响应给R1.

  • 右边链路的抓包情况

右边这条链路很清楚,它就没有重定向的过程。直接是1.10请求3.1,3.1响应1.10

(4)总结

整个过程:

192.168.1.10请求192.168.3.1

192.168.1.10收到网关的ICMP重定向报文

网关请求R2(192.168.1.253)的MAC地址

接下来后续的包就直接交给了R1(192.168.1..253)

在GNS3中,重定向的路由直接改了PC网关;

4、ICMP重定向攻击

(1)环境

  • kali虚拟机(netwox工具、ettercap工具)

(2)工具

  • netwox

  • ettercap 

 如果遇到直接点击ettercap图标无法启动,尝试终端输入ettercap -G运行

(3)ettercap 攻击模拟

  • 选择网卡

  • 扫描

  • 查看扫描到的IP-MAC列表 

  • windows虚拟机作为被攻击目标 

  • kali作为攻击机

  •  在扫描列表中找到被攻击主机,右击选中,然后Add to Target1

在列表中任选一个Add to Target2

  • 点击右上角小地球标识,ICMP redirect

  •  重定向到哪里去,这里输入的是一个虚假的MAC地址

  • windows上面抓包

  • 正常还是可以访问网络的

  •  这里抓到了ICMP报文

正常实施ICMP重定向攻击的话,Windows这台主机是不能通信的,实验结果的话在虚拟机里面很难实现。 

(4)netwox攻击模拟

web.ecs.syr.edu/~wedu/Teaching/cis758/netw522/netwox-doc_html/tools/index.html

  • 用法
    • 参数:-d 指定网卡  -f  过滤器   -g  新的网关  -s   欺骗IP  -c  ICMP代码    -i   源IP地址
    • 使用示例:netwox的86模块 -g 指定新的网关

  • 指定新网关并实施攻击

  • netwox是直接对网络中的所有主机进行了重定向

  •  ping下百度可以ping通,还是可以正常访问到网络的。

  • 查找ping百度的报文进行分析

  •  kali向Windows10发送了重定向报文,将它的网关改成了192.168.183.134

相关文章:

网络协议与攻击模拟_04ICMP协议与ICMP重定向

ICMP协议是网络层协议, 利用ICMP协议可以实现网络中监听服务和拒绝服务,如 ICMP重定向的攻击。 一、ICMP基本概念 1、ICMP协议 ICMP是Internet控制报文协议,用于在IP主机、路由器之间传递控制消息,控制消息指网络通不通、主机是…...

pytest-mock 数据模拟

文章目录 mock 测试unittest.mockMock类MagicMock类patch装饰器create_autospec函数断言的方法 pytest-mock 使用 mock 测试 在单元测试时,有些数据需要依赖其他服务或者不好获取到,此时需要使用mock来模拟对应的函数、对象等。 mock模拟数据的python…...

单片机原理及应用:定时器/计数器综合应用

本文是《单片机原理及应用》专栏中的最后一篇文章,笔者以编译器的安装配置——51单片机简介——LED和数码管外设——开关和按键控制功能切换——外部中断系统——定时器与计数器为知识大纲,介绍了C语言编程控制51单片机的入门教程。作为收尾,…...

R语言【paleobioDB】——pbdb_intervals():通过参数选择,返回多个地层年代段的基本信息

Package paleobioDB version 0.7.0 paleobioDB 包在2020年已经停止更新,该包依赖PBDB v1 API。 可以选择在Index of /src/contrib/Archive/paleobioDB (r-project.org)下载安装包后,执行本地安装。 Usage pbdb_interval (id, ...) Arguments 参数【..…...

阅读笔记lv.1

阅读笔记 sql中各种 count结论不同存储引擎计算方式区别count() 类型 责任链模式常见场景例子(闯关游戏) sql中各种 count 结论 innodb count(*) ≈ count(1) > count(主键id) > count(普通索引列) > count(未加索引列)myisam 有专门字段记录…...

小鼠的滚动疲劳仪-转棒实验|ZL-200C小鼠转棒疲劳仪

转棒实验|ZL-200C小鼠转棒疲劳仪用于检测啮齿类动物的运动功能。通过测量动物在滚筒上行走的持续时间,来评定**神经系统*病或损坏以及药物对运动协调功能和疲劳的影响。 疲劳实验中,让小鼠在不停转动的棒上运动,肌肉会很快进入疲劳状态&#…...

平衡搜索二叉树(AVL树)

目录 前言 一、AVL树的概念 二、AVL树的定义 三、AVL树的插入 四、AVL树的旋转 4.1、右单旋 4.2、左单旋 4.3、左右双旋 4.4、右左双旋 五、AVL树的验证 5.1、 验证其为二叉搜索树 5.2、 验证其为平衡树 六、AVL树的性能 前言 二叉搜索树虽可以缩短查找的效率&…...

2024年1月12日学习总结

学习目标 完成集中学习的readme 完成联邦学习的代码编写 边学习边总结 学习内容 Introduction to Early Stopping 1、Overfitting 过拟合是所有机器学习,深度学习中可能出现的一个比较严重的问题。具体表现就是:你的模型在训练集上处理的效果非常好&…...

PCL 使用克拉默法则进行四点定球(C++详细过程版)

目录 一、算法原理二、代码实现三、计算结果本文由CSDN点云侠原创,PCL 使用克拉默法则进行四点定球(C++详细过程版),爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 一、算法原理 已知空间内不共面的四个点,设其坐标为 A (…...

前端导致浏览器奔溃原因分析

内存泄漏 内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。(程序某个未使用的变量或者方法,长期占…...

力扣:209.长度最小的子数组

1.题目分析: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 …...

常见类型的yaml文件如何编写?--kind: Service

基本说明 在 Kubernetes 中,Service 是一种抽象的方式,用于定义一组 Pod 的访问方式和网络服务。Service 提供了一个稳定的网络端点(Endpoint),使得其他服务或外部用户可以通过 Service 来访问被管理的 Pod。 负载均…...

linux环境下安装postgresql

PostgreSQL: Linux downloads (Red Hat family)postgresql官网 PostgreSQL: Linux downloads (Red Hat family) 环境: centos7 postgresql14 选择版本 执行启动命令 配置远程连接文件 vi /var/lib/pqsql/14/data/postgresql.conf 这里将listen_addresses值由lo…...

专业课145+合肥工业大学833信号分析与处理考研经验合工大电子信息通信

今年专业课145也是考研科目中最满意的一门,其他基本相对平平,所以这里我总结一下自己的专业课合肥工业大学833信号分析与处理的复习经验。 我所用的教材是郑君里的《信号与系统》(第三版)和高西全、丁玉美的《数字信号处理》&…...

FreeRtos Queue (一)

本篇主要讲队列的数据结构和初始化 一、队列的数据结构 二、队列初始化完是什么样子的 队列初始化的函数调用关系:xQueueGenericCreate->prvInitialiseNewQueue->xQueueGenericReset 所以,最终初始化完的队列是这样的 假设申请了4个消息体&…...

深入理解 Hadoop (五)YARN核心工作机制浅析

概述 YARN 的核心设计理念是 服务化(Service) 和 事件驱动(Event EventHandler)。服务化 和 事件驱动 软件设计思想的引入,使得 YARN 具有低耦合、高内聚的特点,各个模块只需完成各自功能,而模…...

优化 - 重构一次Mysql导致服务器的OOM

概述 优化了一次前后端处理不当导致的CPU的一次爆机行为,当然,这和服务器的配置低也有着密不可分的关系,简单的逻辑学告诉我们,要找到真正的问题,进行解决,CPU爆机的关键点在于前后端两个方面,…...

【光波电子学】基于MATLAB的多模光纤模场分布的仿真分析

基于MATLAB的多模光纤模场分布的仿真分析 一、引言 (1)多模光纤的概念 多模光纤(MMF)是一种具有较大纤芯直径的光纤结构,其核心直径通常在10-50微米范围内。与单模光纤(SMF)相比,…...

0104 AJAX介绍

Ajax 的全称是 Asynchronous Javascript And XML (异步 JavaScript 和 XML )。 通俗的理解:在网页中利用 XMLHttpRequest 对象和服务器进行数据交互的方式,就是 Ajax Ajax 能让我们轻松实现网页与服务器之间的数据交互。 浏览器…...

代码随想录算法训练营第24天 | 理论基础 77. 组合

目录 理论基础 什么是回溯法 回溯法的效率 回溯法解决的问题 如何理解回溯法 回溯法模板 77. 组合 💡解题思路 💻实现代码 理论基础 什么是回溯法 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 回溯法的效率 虽然回溯法很难&#xff…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

2.2.2 ASPICE的需求分析

ASPICE的需求分析是汽车软件开发过程中至关重要的一环&#xff0c;它涉及到对需求进行详细分析、验证和确认&#xff0c;以确保软件产品能够满足客户和用户的需求。在ASPICE中&#xff0c;需求分析的关键步骤包括&#xff1a; 需求细化&#xff1a;将从需求收集阶段获得的高层需…...

Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目

应用场景&#xff1a; 1、常规某个机器被钓鱼后门攻击后&#xff0c;我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后&#xff0c;我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...