ICMP flood(ICMP洪水攻击)

您所在的位置:网站首页 udp广播风暴 ICMP flood(ICMP洪水攻击)

ICMP flood(ICMP洪水攻击)

#ICMP flood(ICMP洪水攻击)| 来源: 网络整理| 查看: 265

最近在学习DDos相关知识,参考一些知识,做了摘要,供自己参考。 参考:http://blog.csdn.net/xlf13872135090/article/details/8059538

什么是ICMP协议? ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

ICMP报文格式 ICMP报文包含在IP数据报中,IP头部就在ICMP报文的前面。 这里写图片描述

ICMP头部中的类型域用于说明ICMP报文的作用及格式,此外还有一个代码域用于详细说明某种ICMP报文的类型,所有数据都在ICMP头部后面。 RFC定义了13种ICMP报文格式,具体如下: 这里写图片描述

几种常见的ICMP报文如下:

响应请求 ping命令,就是响应请求(Type=8)和应答(Type=0),一台主机向一个节点发送一个Type=8的ICMP报文,如果途中没有异常,则目标返回Type=0的ICMP报文,说明这台主机存在。

目标不可到达、源抑制和超时报文 这三种报文的格式是一样的。 a)目标不可到达报文(Type=3)在路由器或主机不能传递数据报时使用,例如我们要连接对方一个不存在的系统端口时,将返回Type=3、Code=3的ICMP报文。常见的不可到达类型还有网络不可到达 (Code=0)、主机不可到达(Code=1)、协议不可到达(Code=2)等。 b)源抑制则充当一个控制流量的角色,它通知主机减少数据报流量,由于ICMP没有恢复传输的报文,所以只要停止该报文,主机就会逐渐恢复传输速率。 c)无连接方式网络的问题就是数据报会丢失,或者长时间在网络游荡而找不到目标,或者拥塞导致主机在规定时间内无法重组数据报分段,这时就要触发ICMP超时报文的产生。超时报文的代码域有两种取值:Code=0表示传输超时,Code=1表示重组分段超时。

时间戳 时间戳请求报文(Type=13)和时间戳应答报文(Type=14)用于测试两台主机之间数据报来回一次的传输时间。传输时,主机填充原始时间戳,接收方收到请求后填充接收时间戳后以Type=14的报文格式返回,发送方计算这个时间差。一些系统不响应这种报文。

这样的攻击有效吗? ping使用的是ECHO应答,ping的返回很慢,用NetXRAY抓包仅为1–5包/秒,这是为什么呢?事实 上,ICMP本身并不慢(由于ICMP是SOCK_RAW产生的原始报文,速度比SOCK_STREAM的SYN和SOCK_DGRAM的UDP要快几乎 10倍!),这样的速度是ping程序故意延迟的,我测试过一些号称“ping洪水”的程序, 发现它们的效率和ping.exe没什么两样,经过Dependency Walker查看程序调用的函数发现,他们用的是icmp.dll提供的IcmpSendEcho这个API,这个函数是计算ECHO时间的,速度当然慢!

什么是ICMP flood?

ICMP flood的成因 足够快的数据包速度+足够的带宽,这才是洪水。 ping.exe和IcmpSendEcho速度慢的另一个原因是它们必须等待目标主机返回REPLY信息,这个过程需要花费大量时间,而Flood—— 洪水,顾名思义,是速度极快的,当一个程序发送数据包的速度达到了每秒1000个以上,它的性质就成了洪水产生器,洪水数据是从洪水产生器里出来的,但这 样还不够,没有足够的带宽,再猛的洪水也只能像公路塞车那样慢慢移动,成了鸡肋。要做真正的洪水,就需要有一条足够宽的高速公路才可以.由于ping.exe无法提速,这就需要专门的工具来做洪水了。

实现ICMP洪水的前提 最大的前提是攻击者的速度,其次是你的机器运行速度和数据吞吐量,由于涉及IP校验和的计算,如果数据处理能力不够,在这步就慢了一个级别,效果当然大打折扣。最后就是目标机器的带宽!如果对方比你大很多那么任何Flood都是无病呻吟。还有许多人都忽略的问题:发送的速度与数据包大小成反比,而且太大的数据包会被路由器等设备过滤掉!找到一个合适的数据包大小,对提高Flood的效率有很大帮助!

洪水——两败俱伤的攻击方式 别以为洪水无所不能,实际上,你展开洪水攻击时,攻击程序在消耗对方带宽和资源时,也在消耗你的带宽和资源。这只是个看谁撑得住的攻击而已。实际上,有经验的攻击者都是用被控制的服务器(肉鸡)来代替自己的机器发动攻击的,不到万不得已或者你对自己的机器网速有自信,否则尽量少用自己的机器来拼搏!

不同方式的ICMP洪水

直接Flood 要做这个的首要条件是你的带宽够,然后就是要一个好用的ICMP Flooder。直接攻击会暴露自己IP(如果对方没有还击能力那还无所谓,固定IP用户不推荐使用这种Flood),如果可以伪造IP一般还是别用为妙。 简单示意图: 攻击者[IP=211.97.54.3]—— ICMP—–>受害者[截获攻击者IP=211.97.54.3]==>换IP回来反击,嘿嘿伪造IP的Flood 如果你是Win2000/XP并且是Administrator权限,可以试试看FakePing,它能随意伪造一个IP来Flood,让对方摸不到头脑,属于比较隐蔽阴险的Flood。 简单示意图: 攻击者[IP=211.97.54.3]——伪造IP=1.1.1.1的ICMP——>受害者[截获攻击者IP=1.1.1.1]==>倒死反射 这种攻击模式里,最终淹没目标的洪水不是由攻击者发出的,也不是伪造IP发出的,而是正常通讯的服务器发出的!实现的原理也不算复杂,Smurf方式把源IP设置为受害者IP,然后向多台服务器发送ICMP报文(通常是ECHO请求),这些接收报文的服务器被报文欺骗,向受害者返回ECHO应答(Type=0),导致垃圾阻塞受害者的门口。从示意图可以看出,它比上面两种方法多了一级路径——受骗的主机(称为“反射源”),所以,一个反射源是否有效或者效率低下,都会对Flood效果造成影响! 简单示意图: 攻击者[IP=211.97.54.3]—-伪造受害者的ICMP—->正常的主机—-应答—>受害者[截获攻击者IP=网易?!]==>哭啊……

以上是几种常见的Flood方式,在测试中,我发现一个有趣的现象:一些防火墙(如天网)只能拦截ECHO请求(Ping)的ICMP报文,对于其他 ICMP报文一概睁只眼闭只眼,不知道其他防火墙有没有这个情况。所以想神不知鬼不觉对付你的敌人时,请尽量避开直接ECHO Flood,换用Type=0的ECHO应答或Type=14的时间戳应答最好,其他类型的ICMP报文没有详细测试过,大家可以试试看Type=3、 4、11的特殊报文会不会有更大效果。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3