ICMP 重定向攻击和ICMP不可达报文攻击

article/2025/9/19 12:38:24

ICMP 重定向攻击和ICMP不可达报文攻击


00X1 写在前面

最近一直在研究各种畸形报文和一些特殊的报文,并且需要根据这些攻击特点进行相应的数据包侦测与拦截。一切其他的攻击以后有时间再来写吧。当我研究到了ICMP重定向和不可达报文攻击的时候,觉得很有趣,ICMP协议在我们网络中经常存在于ping 中,用于测试两台主机之间的网络连通性,以前也听说过这两种形态的攻击,但是没有怎么去理解这些攻击流程,和攻击的原理。
请诸位与我一起学习一下吧

00x2 两种攻击原理介绍

ICMP重定向攻击

这里首先假设有两台电脑,正常情况下,两台机器互相进行网络交流的时候需要经过路由,但是路由器有一个策略,就是当发现网络中有一台机器使用的是非优化路由的时候,路由就会向那台机器发送一个ICMP重定向的特殊报文,告诉机器改变路由,让机器的路由改为最优的,这个优化和非优化可以理解两点直接直线最短,怎么快就怎么弄,这本身是一个对网络有益的机制。
但是这个更改路由的ICMP重定向特殊报文是可以伪造的,并且不需要经过一些校验,合法性检查。也就是说攻击者完全可以向他向受害主机发送ICMP重定向报文,迫使受害主机更改路由表。

危害

ICMP重定向攻击的数据包可以迫使主机更改路由为攻击者的主机,那么主机的流量就需要经过攻击者的主机。
攻击者就可以截获、提取、分析、修改、重放用户user的数据包,对流量进行嗅探劫持、中间人代理,造成多种安全威胁。

ICMP不可达报文攻击

先分析一下出现ICMP不可达报文的情况
在三次握手阶段有两种情况TCP会收到ICMP“目的不可达”报文:
1、client端通过connect系统调用发送SYN请求到server端后,server没有进程在相应的地址或端口处理请求,这时client端会收到ICMP不可达报文。
2、client端通过connect系统调用发送SYN请求后崩溃,server端收到SYN后发送SYN|ACK,client端收到SYN|ACK后会给server发送ICMP不可达报文。
不同的主机对ICMP不可达报文的处理方式不同,有的主机在收到网络或主机不可达的ICMP报文后,对于后续发往此目的地址的报文直接认为不可达,从而切断了目的地与主机的连接。

危害

攻击者可以伪造不可达ICMP报文,在其他主机发送SYN请求的时候,立即发送伪造 的ICMP不可达报文,切断受害者与目的地的连接,造成攻击。

00X3 攻击测试

ICMP重定向攻击

准备: 一台kali虚拟机(攻击者),一台ubuntu 虚拟机(受害者)
工具:netwox工具
下面就是ICMP重定向攻击的拓扑图,借用了一下其他大神的图QAQ。
在这里插入图片描述
攻击者:
在这里插入图片描述
受害者:
在这里插入图片描述
攻击者伪造路由发送ICMP重定向报文到受害者

netwox 86 -f "host 192.168.146.128" -g "192.168.146.129" -i "192.168.146.2"
-f 过滤数据包这里只抓Ubuntu的数据包
-g 重定向包需要受害者更改的新路由,这里指向kali
-i Ubuntu 原来的路由

在这里插入图片描述
Ubuntu wireshark抓包分析

抓到一些重定向的数据包,从默认网关发来的更改路由的数据包,这实际上是攻击者伪造的重定向数据包。
在这里插入图片描述
ICMP数据包中Type:5 ,Gateway address(网关地址):攻击者IP,source是原来的网关地址。这一切都是伪造的数据包。
在这里插入图片描述
接下里我们来使用Ubuntu ping 一下百度,大伙会发现数据包都重定向到我们的攻击者那边去了。
抓一下DNS查询的请求数据包,会发现本来发送到192.168.146.2的数据包,发送到了kali机器上,Ubuntu把kali当成默认网关了。
在这里插入图片描述

ICMP不可达报文攻击

准备的事项和前面一样,这里就不累述了。直接开始。
这里使用netwox 82,对netwox不太熟悉的同学可以查一下netwox详解,看看这个套件怎么用,有哪些用,里面有各种各样的数据包构造工具,挺强大的。

kali攻击

netwox 82 -f "host 192.168.146.128" -i "192.168.146.2"
-f 过滤数据包     -i  受害者当前网关地址/路由地址

在这里插入图片描述
Ubuntu wieshark 抓包分析
下面的数据包我是使用Ubuntu ping baidu.com 才抓到的数据包,仔细看一下,kali伪造192.168.146.2向Ubuntu 发送目标不可达报文。欺骗Ubuntu不能访问百度。
在这里插入图片描述
这是ubuntu ping 的结果。目标不可达的数据包显示是从192.168.146.2发过来的,其实是攻击者伪造发过来的数据包,已经起到了欺骗的效果。
在这里插入图片描述
接下来我们再使用kali ping一下Ubuntu ,看看效果,
也是一样,数据包断断续续,起到了非常好的欺骗效果。
在这里插入图片描述

00X4 如何防护

  1. 可以使用防火墙对ICMP重定向数据包进行过滤,当有这种数据包时,则丢弃这种数据包。
  2. 我是使用snort IPS 对这种数据包进行阻断,其实也是联合防火墙进行阻断,snort ICMP 重定向攻击规则如下:
    ICMP 不可达报文攻击检测规则如下:
    在这里插入图片描述

00X5 总结

ICMP 重定向攻击和ICMP不可达报文攻击 都是利用协议设计的缺陷,从而攻击者可以伪造这两种数据包进行攻击,对受害者进行欺骗。
后续会为大家带来各种畸形报文攻击(LAND攻击,泪滴攻击,蓝色炸弹,smurf攻击等)、泛洪攻击(UDP flood 泛洪,SYN泛洪,TCP泛洪等)、应用层(CC攻击,DNS泛洪等)DOSS攻击的研究,研究其这种攻击形态,已经如何对这些攻击进行检测及阻断。

种一棵树最好的时间是十年前和现在,愿不负韶华


http://chatgpt.dhexx.cn/article/9m5vOkML.shtml

相关文章

网络攻击类型

网络攻击类型 一、SQL Injection:(SQL注入) SQL注入是最常见的攻击方式,它的主要原理是:攻击者通过改变WEB页的参数(如GET/POST数据或是URLS)直接将SQL片断提交到服务器,并在服务器端执行。 二、Cross-Site…

python ddos攻击_DDoS攻击工具

DDoS攻击工具 综合性工具 综合性工具除了可以进行DDoS攻击外,还可用于其他的用途,例如:端口扫描、安全审计、防火墙等。实际上,大部分综合性工具开发的原始目的并不是用于DDoS,而是“网络检查或测试工具” Hping ?…

02.iptables攻击防御

DDOS 攻击 分布式拒绝服务(Distributed Denial of service) 多计算机联合发起DOS攻击,造成目标机器资源耗尽、系统过载 DDOS 攻击方式 Ping flood:大量ping包 Ping of Death:修改后的ping包,如造成逻辑错…

畸形报文攻击(1)

畸形报文攻击(1) 0x01 写在前面 最近在工作之余,都在看CTF东西,然后和朋友们玩狼人杀玩到昏天黑地,差点忘记要把对畸形报文攻击的研究记录下来,这篇文章的内容是畸形报文攻击中的smurf攻击,land攻击,Fragg…

单包攻击防御

单包攻击防御 目录 单包攻击防御 畸形报文攻击防御 1.smurf攻击 处理方式 2.Land攻击 处理方式 3.Fraggle攻击 处理方式 IP分片报文攻击 (IP Fragment攻击) 定义: 处理方式 Ping of Death攻击 定义 处理方式 TCP报文标志位攻…

【计算机网络原理·实验·第八章】SYN攻击Land攻击

SYN攻击和land攻击,使用 虚拟机环境测试。 SYN攻击:发送端发送数据时截获该数据包,然后篡改发送端的源IP地址并发给服务器,服务器会返回给错误的IP地址确认数据包,而收到确认数据包计算机会忽略该请求,然而…

着陆攻击LAND Attack

2019独角兽企业重金招聘Python工程师标准>>> 着陆攻击LAND Attack 着陆攻击LAND Attack也是一种拒绝服务攻击DOS。LAND是Local Area Network Denial的缩写,意思是局域网拒绝服务攻击,翻译为着陆攻击只是一种错误的理解。攻击原理为&#xff0…

浅析GC-垃圾回收

前置知识 CLR:公共语言运行时 CLR(Common Language Runtime):CLR的核心功能包括内存管理,程序集加载,类型安全,异常处理和线程同步,而且还负责对代码实施严格的类型安全检查&#…

【JVM】垃圾回收机制详解(GC)

目录 一.GC的作用区域二.关于对象是否可回收1.可达性分析算法和引用计数算法2.四种引用类型 三.垃圾收集算法1.标记-清除算法2.复制算法3.标记-整理算法4.分代收集算法 四.轻GC(Minor GC)和重GC(Full GC) 一.GC的作用区域 可以看jvm详解之后,再来理解这篇文章更好 …

垃圾回收机制的各种疑问

目录 jvm的内存模型中,运行时数据区分为哪几个部分?JVM如何判断一个对象所占内存是可以被回收的?什么是年轻代?方法区和永久带的联系是什么?为什么要分年轻代和老年代?为什么新生代和老年代要采用不同的回收…

垃圾回收(GC) 很干,很全

说一下垃圾回收机制 垃圾回收主要针对的是JVM的堆内存,我讲一下我了解的hotspot实现的jvm, 分为新生代和老年代,按照以前的说法,还有一个永久代,永久代在方法区里(物理上跟老年代相连),保存了class信息,静态变量,常量池等, jdk1.8之后,方法区实现发生了变化,取消了永久代的概念…

浅谈垃圾回收机制

目录 前言: 1.标记清除(主要) 2.引用计数(次要) 3.一些注意的点 前言: JavaScript的垃圾回收机制是为了防止内存泄漏的,所谓的内存泄漏是指当已经不需要某块内存时这块内存还存在着&#xff…

通过图文给你讲明白java GC的垃圾回收机制

本文原链接 http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html 1. JAVA GC 概述 JAVA GC采用了分代思想,将java堆分成新生代,年老代,永久代。GC算法主要有标记-清除,标记-压缩,复制算法。 新生代…

jvm垃圾回收是什么时候触发的? 垃圾回收算法? 都有哪些垃圾回收器

1.1。那究竟GC为我们做了什么操作呢? 1 ,哪些内存需要回收? 2 ,什么时候回收? 3 ,如何回收? 这时候有人就会疑惑了,既然GC 已经为我们解决了这个矛盾,我们还需…

Java回收垃圾的基本过程与常用算法

目录 一、基本概述 二、垃圾分类 基本背景 举例说明各种引用类型的作用 强引用(Strong Reference) 软引用(Soft Reference) 弱引用(Weak Reference) 虚引用(Phantom Reference&#xff…

java面试-GC垃圾回收机制

原理: GC是垃圾收集的意思(Garbage Collection),Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的。 简而言之,GC是将java的无用的堆对象进行清理,释放内存,以免发生内存泄露。…

JVM垃圾回收算法、GC和分代回收、三色标记并发漏标、垃圾回收器

一.标记清除 标记速度与存活对象线性关系 清除速度与内存大小线性关系 标记清除法分为标记阶段和清除阶段,标记阶段首先找到一些GC Root对象(根对象),根对象是那些一定不能被回收的对象。清除阶段比较简单,加标记的对…

垃圾回收的主要区域是堆,那方法区会回收吗?

有些人认为方法区(如HotSpot虚拟机中的元空间或者永久代)是没有垃圾收集行为的,《Java虚拟机规范》中提到过可以不要求虚拟机在方法区中实现垃圾收集,事实上也确实有未实现或未能完整实现方法区类型卸载的收集器存在(如…

GC(垃圾回收)详解

JVM 1.年轻代:年轻代主要存放新创建的对象,垃圾回收会比较频繁。(稍微讲细一点就是即可,年轻代分成Eden Space和Suvivor Space。当对象在堆创建时,将进入年轻代的Eden Space。垃圾回收器进行垃圾回收时,扫描Eden Spac…

java---垃圾回收算法(GC)

目录 一、如何判断一个对象是否存活 1.引用计数法 2.可达性分析法 二、垃圾回收算法 1.标记清除法 2.复制算法 3.标记整理法 4.分代算法 具体流程 注意事项 空间分配担保原则 总结 一、如何判断一个对象是否存活 Java 堆中存放着几乎所有的对象实例,垃圾…