Chinaunix首页 | 论坛 | 博客
  • 博客访问: 317287
  • 博文数量: 239
  • 博客积分: 481
  • 博客等级: 下士
  • 技术积分: 1170
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-15 17:28
文章分类

全部博文(239)

文章存档

2014年(13)

2013年(6)

2012年(122)

2011年(98)

分类:

2011-10-12 09:15:55

发现最新式的DDOS攻击方式

DdoS攻击是利用一批受控制的机器向一台机器发起攻击,这样来势迅猛的攻击令人难以防备,因此具有较大的破坏性。通过本文的介绍,希望大家更多的了解DDos攻击。

  下面简单介绍攻击者如何以64字节ACK包换取服务器1518大数据包重传,如果源IP伪造成功,攻击者从理论上将获得20余倍的带宽放大攻击效果 .如果有两个目标网站,本方法将一箭双雕。

  攻击原理:利用TCP协议收到ACK后的快速重传机制,攻击正常TCP/IP栈示意图当我们获得http response回应后,立即回复一个ack数据包,此ack数据包的seq值是http response数据包中的ack seq值,而ack seq值为http response数据包的seq序号值。

  这样当server收到此ack数据包后,会认为是自己刚才发送的http response包在wang中已丢失,会利用快速重传机制加以重传。如果我们拼命发送大量的ack包,则服务器就会不断进行重传。Ack数据包的大小只需64字节,但http response通常都在512字节左右,最长可达1518字节。因为正常tcp序号的不可预测性,所以我们在这次攻击中暴露了自己的真实IP.

  攻击采用静态syn cookieddos设备防护下的服务器,所谓静态syn cookie就是以客户端请求之syn包为参数计算回复syn ack中的seq值,并在ack包回传时判断连接合法性的方法,这种方法被ddos厂商大量采用,并且获得数量可观的国家发明专利,你经常会听到ddos厂商的人说他们的设备比多了,可轻松达到百兆线速syn防御,但百兆30M攻击流量就可以干掉,说这种话的ddos厂商,我可以打赌他们的设备80%采用了这种syn cookie算法。

  Syn cookie算法的好处是只在synflood攻击时消耗CPU资源,这对于X86下强悍的通用CPU来说,正适用。

  读者可能会感到很奇怪,为什么如此成熟的不采用,而让ddos厂商成天挤对?这有如下几个方面的原因:1:防火墙也用syn cookie进行synflood防御的,但大多不是静态syn cookie,而是严格记录连接状态采用动态syn cookie,所以当syn flood攻击时不光消耗CPU,还要消耗大量内存。这也就是我本文开头提及的本方法可以攻击大部分ddos厂商和小部分防火墙厂商的原因。

  2syn cookie/syn proxybsd内核源码的一部分,在Linux最新版的2.6内核中syn proxy还没有被包含。所以ddos设备也大多由bsd组成。当然bsd是开源的,移植也不是什么大问题喽。

  3:防火墙大多以Linux下的开源软件netfilter为基础,但netfilterhash算法和连接表设计不是很优秀,防火墙转发性能的瓶颈就在于此,如果再加入syn proxy表项,会进一步降低对数据包的处理能力或加大连接表体积。高端防火墙大都支持数百万的连接数,这百万的表项就够防火墙喝一壶的了,再加一个syn proxy表项,性能还不得掉的稀里哗拉的?

  4:防火墙很重要的一个功能就是DNAT,在没有DNAT操作前,防火墙不知道这些syn包的最终目的地是自身还是DMZ区的服务器,所以syn包必须DNAT后才知道是否要进行syn cookie保护。但这时就已经进入到netfilter处理框架了,性能当然就跟不上了。你见过几个ddos设备支持NAT?如果支持了,他的性能也会下降不少。如果防火墙工作在桥模式下,不经过netfilter处理框架,防火墙就可以摇身一变成为性能卓越的抗ddos设备了,吗功能都没有,当然一身轻松了。呵呵但您买的是防火墙,会这么大材小用吗?

  言归正传,采用静态syn cookieddos设备,我们只需要重放一个ack包就可以达到与服务器的三次握手效果,因此可以做到源IP地址伪装。(这个伪装的源IP地址是你以前用过的,并且与ddos设备通讯过,并保存下来的,现在将它重放而己。如果你看不懂我在说什么,参照我写的《对国内ddos厂商点评》一文,抓包分析一下就知道了)。第二步就是发送一个正常的http request请求,随后就是大量的虚假ack请求重传。

  天知道,谁在用我们伪装的源IP地址,做为一个连带的牺牲品。你可能会认为受害服务器B会回复rst包给受害服务器A.这是有可能,但如果服务器B前面加装了一个状态检测防火墙,就会直接丢弃这个反射的http response数据包。

  本思路有价值的地方:1. 利用一条合法连接,对服务器进行下行带宽攻击,现在的状态检测设备不一定可以发现2. 目标服务器应用层程序感知不到这种攻击,可以逃避基于应用层流量统计的防御方式,因为重传是TCP协议特性,TCP协议自动完成。重传的数据包,对应用层来说是透明的。

  3. 现在只是一种思路,不局限于TCP协议。UDP加入重传机制后,也可以保证通讯可靠性。并且这是私人或公司独立开发的协议,会比TCP协议更大。

  4. drdos的带宽放大效果也只不过是6倍而己,并且消耗的是上行带宽。

  5. 真正的威胁不在现在,而是在对长肥管道的攻击效果。对方下行带宽越宽,攻击效果越明显。TCP会禁用分片,所以重传数据包大小依靠你与服务器之间最小的那个设备的MTU值,所以你见到的TCP协议的IP首部中的长度字段不会超时1518.但在长肥管道中,IP首部的长度字段会达到65535的极大值,对这些数据包的重传攻击,会达到令人吃惊的11024的放大效果。

  1M1G 1G1T明白?就是因为这点,我才会提供本思路,否则125的消耗也是蛮力。

  攻击完善的TCP协议其实是很困难的:1.具体可以参见RFC2581中关于Fast Retransmit/Fast Recovery的说明部分。

  2.你的ack包构造不好,服务器协议栈还是会利用超时重传,而不是快速重传。

  DdoS攻击是黑客最常用的攻击手段,我们一定要对其多多防范才是

阅读(465) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~