四、什么是ICMP洪水?
1.ICMP洪水的成因
ping.exe和IcmpSendEcho速度慢的另一个原因是它们必须等待目标主机返回REPLY信息,这个过程需要花费大量时间,而Flood——洪水,顾名思义,是速度极快的,当一个程序发送数据包的速度达到了每秒1000个以上,它的性质就成了洪水产生器,洪水数据是从洪水产生器里出来的,但这样还不够,没有足够的带宽,再猛的洪水也只能像公路塞车那样慢慢移动,成了鸡肋。要做真正的洪水,就需要有一条足够宽的高速公路才可以。极慢的发送速度 56Kbps小猫等于什么?等于一个未关紧的水龙头,根本没用。 由于ping.exe无法提速,这就需要专门的工具来做洪水了。足够快的数据包速度 足够的带宽,这才是洪水。
2.实现ICMP洪水的前提
最大的前提是攻击者的速度!如果你要用56K拨号去攻击一个512Kbps ADSL用户,后果和一只蚂蚁伸腿想绊倒大象的天方夜谭是一样的!其次是你的机器运行速度和数据吞吐量,由于涉及IP校验和的计算(先设置头校验和域的数值为0,然后对整个数据报头按每16位求异或,再把结果取反,就得到了校验和),如果数据处理能力不够,在这步就慢了一个级别,效果当然大打折扣。最后就是目标机器的带宽!如果对方比你大很多(例如你2M ADSL,别人用DDN或T1),那么任何Flood都是无病呻吟,挠痒都不够!(希望不要再问“小金,你的R-Series怎么不好用啊”、“我用小金的AnGryPing攻击别人半天都没事!”、“独裁者的攻击怎么无效啊?”这样的问题了,天啊,我头都大了!) 还有许多人都忽略的问题:发送的速度与数据包大小成反比,而且太大的数据包会被路由器等设备过滤掉!找到一个合适的数据包大小,对提高Flood的效率有很大帮助!
3.洪水——两败俱伤的攻击方式
别以为洪水无所不能,实际上,你展开洪水攻击时,攻击程序在消耗对方带宽和资源时,也在消耗你的带宽和资源。这只是个看谁撑得住的攻击而已。实际上,有经验的攻击者都是用被控制的服务器(肉鸡)来代替自己的机器发动攻击的,不到万不得已或者你对自己的机器网速有自信,否则尽量少用自己的机器来拼搏!
五、不同方式的ICMP洪水
1.直接Flood
要做这个的首要条件是你的带宽够,然后就是要一个好用的ICMP Flooder,别用ping.exe那种探路用的垃圾,例如我以前发布的AnGryPing,发包速度达到6000---9000包/秒(512 Kbps ADSL),默认是32bytes的ECHO报文洪水,用它即使不能flood别人下去,防火墙也叫得够惨的了。直接攻击会暴露自己IP(如果对方没有还击能力那还无所谓,固定IP用户不推荐使用这种Flood),直接Flood主要是为了顾及Win9x/Me不能伪造IP的缺陷,否则一般还是别用为妙。
简单示意:
ICMP 攻击者[IP=211.97.54.3]--------------------------------->受害者[截获攻击者IP=211.97.54.3]==>换IP回来反击,嘿嘿
2.伪造IP的Flood
如果你是Win2000/XP并且是Administrator权限,可以试试看FakePing,它能随意伪造一个IP来Flood,让对方摸不到头脑,属于比较隐蔽阴险的Flood。
简单示意:
伪造IP=1.1.1.1的ICMP 攻击者[IP=211.97.54.3]--------------------------------->受害者[截获攻击者IP=1.1.1.1]==>倒死
3.反射
用采取这种方式的第一个工具的名称来命名的“Smurf”洪水攻击,把隐蔽性又提高了一个档次,这种攻击模式里,最终淹没目标的洪水不是由攻击者发出的,也不是伪造IP发出的,而是正常通讯的服务器发出的!
实现的原理也不算复杂,Smurf方式把源IP设置为受害者IP,然后向多台服务器发送ICMP报文(通常是ECHO请求),这些接收报文的服务器被报文欺骗,向受害者返回ECHO应答(Type=0),导致垃圾阻塞受害者的门口……
从示意图可以看出,它比上面两种方法多了一级路径——受骗的主机(称为“反射源”),所以,一个反射源是否有效或者效率低下,都会对Flood效果造成影响!
简单示意:
伪造受害者的ICMP 应答 攻击者[IP=211.97.54.3]-------------------------->正常的主机--------------->受害者[截获攻击者IP=……网易?!]==>哭啊……
以上是几种常见的Flood方式,在测试中,我发现一个有趣的现象:一些防火墙只能拦截ECHO请求(Ping)的ICMP报文,对于其他ICMP报文一概睁只眼闭只眼,不知道其他防火墙有没有这个情况。所以想神不知鬼不觉对付你的敌人时,请尽量避开直接ECHO Flood,换用Type=0的ECHO应答或Type=14的时间戳应答最好,其他类型的ICMP报文没有详细测试过,大家可以试试看Type=3、4、11的特殊报文会不会有更大效果。
六、ICMP Flood能防吗?
先反问你一个问题:洪水迅猛的冲来时,你能否拿着一个脸盆来抵挡?(坐上脸盆做现代鲁宾逊倒是个不错的主意,没准能漂到MM身边呢)
软件的网络防火墙能对付一些漏洞、溢出、OOB、IGMP攻击,但是对于洪水类型的攻击,它们根本无能为力,我通常对此的解释是“倾倒垃圾”:“有蟑螂或老鼠在你家门前逗留,你可以把它们赶走,但如果有人把一车垃圾倾倒在你家门口呢?”前几天看到mikespook大哥对此有更体面的解释,转载过来——“香蕉皮原理:如果有人给你一个香蕉和一个香蕉皮你能区分,并把没有用的香蕉皮扔掉。(一般软件防火墙就是这么判断并丢弃数据包的。)但是如果有人在同一时间内在你身上倒一车香蕉皮,你再能区分有用没用也没啥作用了~~因为你被香蕉皮淹没了~~~~(所以就算防火墙能区分是DoS的攻击数据包,也只能识别,根本来不及丢弃~~死了,死了,死了~~)”
所以,洪水没法防!能做的只有提高自己的带宽和预防洪水的发生(虽然硬件防火墙和分流技术能做到,但那价格是太昂贵的,而且一般人也没必要这样做)。
如果你正在被攻击,最好的方法是抓取攻击者IP(除非对方用第一种,否则抓了没用——假的IP)后,立即下线换IP!(什么?你是固定IP?没辙了,打电话找警察叔叔吧)
七、被ICMP Flood攻击的特征
如何发现ICMP Flood?
当你出现以下症状时,就要注意是否正被洪水攻击:
1.传输状态里,代表远程数据接收的计算机图标一直亮着,而你没有浏览网页或下载 2.防火墙一直提示有人试图ping你 3.网络速度奇慢无比 4.严重时系统几乎失去响应,鼠标呈跳跃状行走
如果出现这些情况,先不要慌张,冷静观察防火墙报警的频率及IP来确认是否普通的Ping或是洪水,做出相应措施(其实大多数情况也只能换IP了)。
1.普通ping
这种“攻击”一般是对方扫描网络或用ping -t发起的,没多大杀伤力(这个时候,防火墙起的作用就是延迟攻击者的数据报发送间隔时间,请别关闭防火墙!否则后果是严重的!),通常表现如下:
============================================================== [13:09:20] 61.151.252.106 尝试用Ping 来探测本机, 该操作被拒绝。
[13:09:24] 61.151.252.106 尝试用Ping 来探测本机, 该操作被拒绝。
[13:09:26] 61.151.252.106 尝试用Ping 来探测本机, 该操作被拒绝。
[13:09:30] 61.151.252.106 尝试用Ping 来探测本机, 该操作被拒绝。 ============================================================= 这么慢的速度,很明显是由ping.exe或IcmpSendEcho发出的,如果对方一直不停的让你的防火墙吵闹,你可以给他个真正的ICMP Flood问候。 |