一个以电子商务为主的信息资讯门户网站——90219.com
网站首页 | 信息资讯 | 网上商城 | 企业黄页 | 人才市场 | 供求信息 | 房产交易 | 二手市场
消费e店 | 时尚生活 | 在线影院 | flash动漫 | 笑话频道 | 真情交友 | 电子相册 | 博客日志
您所在的位置:潍坊商业信息港 > 浏览正文
DDOS攻击之分析大全
90219.com  发布:2007-6-3 20:11:02  来自:转载  浏览:
DDOS攻击
(1)DDoS攻击原理以及常见方法
什么是DOS攻击 DOS:即Denial Of Service,`拒绝服务的缩写,可不能认为是微软的dos操作系统了。好象在5?1的时候闹过这样的笑话。拒绝服务,就相当于必胜客在客满的时候不再让人进去一样,呵呵,你想吃馅饼,就必须在门口等吧。DOS攻击即攻击者想办法让目标机器停止提供服务或资源访问,这些资源包括磁盘空间、内存、进程甚至网络带宽,从而阻止正常用户的访问。比如: * 试图FLOOD服务器,阻止合法的网络通讯 * 破坏两个机器间的连接,阻止访问服务 * 阻止特殊用户访问服务 * 破坏服务器的服务或者导致服务器死机 不过,只有那些比较阴险的攻击者才单独使用DOS攻击,破坏服务器。通常,DOS攻击会被作为一次入侵的一部分,比如,绕过入侵检测系统的时候,通常从用大量的攻击出发,导致入侵检测系统日志过多或者反应迟钝,这样,入侵者就可以在潮水般的攻击中混骗过入侵检测系统。 有关TCP协议的东西 TCP(transmission control protocol,传输控制协议),是用来在不可靠的因特网上提供可靠的、端到端的字节流通讯协议,在RFC793中有正式定义,还有一些解决错误的东西在RFC 1122中有记录,RFC 1323则有TCP的功能扩展。 我们常见到的TCP/IP协议中,IP层不保证将数据报正确传送到目的地,TCP则从本地机器接受用户的数据流,将其分成不超过64K字节的数据片段,将每个数据片段作为单独的IP数据包发送出去,最后在目的地机器中再组合成完整的字节流,TCP协议必须保证可靠性。 发送和接收方的TCP传输以数据段的形式交换数据,一个数据段包括一个固定的20字节头,加上可选部分,后面再跟上数据,TCP协议从发送方传送一个数据段的时候,还要启动计时器,当数据段到达目的地后,接收方还要发送回一个数据段,其中有一个确认序号,它等于希望收到的下一个数据段的顺序号,如果计时器在确认信息到达前超时了,发送方会重新发送这个数据段。 上面,我们总体上了解一点TCP协议,重要的是要熟悉TCP的数据头(header)。因为数据流的传输最重要的就是header里面的东西,至于发送的数据,只是header附带上的。客户端和服务端的服务响应就是同header里面的数据相关,两端的信息交流和交换是根据header中的内容实施的,因此,要实现DOS,就必须对header中的内容非常熟悉。 下面是TCP数据段头格式。 Source Port和 Destination Port :是本地端口和目标端口 Sequence Number 和 Acknowledgment Number :是顺序号和确认号,确认号是希望接收的字节号。这都是32位的,在TCP流中,每个数据字节都被编号。 Data offset :表明TCP头包含多少个32位字,用来确定头的长度,因为头中可选字段长度是不定的。 Reserved : 保留的6位,现在没用,都是0 接下来是6个1位的标志,这是两个计算机数据交流的信息标志。接收和发送断根据这些标志来确定信息流的种类。下面是一些介绍: URG:(Urgent Pointer field significant)紧急指针。用到的时候值为1,用来处理避免TCP数据流中断 。 ACK:(Acknowledgment field significant)置1时表示确认号(Acknowledgment Number)为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。 PSH:(Push Function),PUSH标志的数据,置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。 RST:(Reset the connection)用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。如果接收到RST位时候,通常发生了某些错误。 SYN:(Synchronize sequence numbers)用来建立连接,在连接请求中,SYN=1,ACK=0,连接响应时,SYN=1,ACK=1。即,SYN和ACK来区分Connection Request和Connection Accepted。 FIN:(No more data from sender)用来释放连接,表明发送方已经没有数据发送了。 知道这重要的6个指示标志后,我们继续来。 16位的WINDOW字段:表示确认了字节后还可以发送多少字节。可以为0,表示已经收到包括确认号减1(即已发送所有数据)在内的所有数据段。 接下来是16位的Checksum字段,用来确保可靠性的。 16位的Urgent Pointer,和下面的字段我们这里不解释了。不然太多了。呵呵,偷懒啊。 我们进入比较重要的一部分:TCP连接握手过程。这个过程简单地分为三步。 在没有连接中,接受方(我们针对服务器),服务器处于LISTEN状态,等待其他机器发送连接请求。 第一步:客户端发送一个带SYN位的请求,向服务器表示需要连接,比如发送包假设请求序号为10,那么则为:SYN=10,ACK=0, 然后等待服务器的响应。 第二步:服务器接收到这样的请求后,查看是否在LISTEN的是指定的端口,不然,就发送RST=1应答,拒绝建立连接。如果接收 连接,那么服务器发送确认,SYN为服务器的一个内码,假设为100,ACK位则是客户端的请求序号加1,本例中发送的数据是: SYN=100,ACK=11,用这样的数据发送给客户端。向客户端表示,服务器连接已经准备好了,等待客户端的确认 这时客户端接收到消息后,分析得到的信息,准备发送确认连接信号到服务器 第三步:客户端发送确认建立连接的消息给服务器。确认信息的SYN位是服务器发送的ACK位,ACK位是服务器发送的SYN位加1。 即:SYN=11,ACK=101。 这时,连接已经建立起来了。然后发送数据,。这是一个基本的请求和连接过程。需要注意的是这些标志位的关系,比如SYN、ACK。  服务器的缓冲区队列(Backlog Queue) 服务器不会在每次接收到SYN请求就立刻同客户端建立连接,而是为连接请求分配内存空间,建立会话,并放到一个等待队列中。如果,这个等待的队列已经满了,那么,服务器就不在为新的连接分配任何东西,直接丢弃新的请求。如果到了这样的地步,服务器就是拒绝服务了。  如果服务器接收到一个RST位信息,那么就认为这是一个有错误的数据段,会根据客户端IP,把这样的连接在缓冲区队列中清除掉。这对IP欺骗有影响,也能被利用来做DOS攻击。 上面的介绍,我们了解TCP协议,以及连接过程。要对SERVER实施拒绝服务攻击,实质上的方式就是有两个: 一, 迫使服务器的缓冲区满,不接收新的请求。 二, 使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接 这就是DOS攻击实施的基本思想。具体实现有这样的方法: 1、SYN FLOOD 利用服务器的连接缓冲区(Backlog Queue),利用特殊的程序,设置TCP的Header,向服务器端不断地成倍发送只有SYN标志的TCP连接请求。当服务器接收的时候,都认为是没有建立起来的连接请求,于是为这些请求建立会话,排到缓冲区队列中。 如果你的SYN请求超过了服务器能容纳的限度,缓冲区队列满,那么服务器就不再接收新的请求了。其他合法用户的连接都被拒绝掉。可以持续你的SYN请求发送,直到缓冲区中都是你的只有SYN标记的请求。 现在有很多实施SYN FLOOD的工具,呵呵,自己找去吧。 2、IP欺骗DOS攻击 这种攻击利用RST位来实现。假设现在有一个合法用户(1.1.1.1)已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP为1.1.1.1,并向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后,认为从1.1.1.1发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户1.1.1.1再发送合法数据,服务器就已经没有这样的连接了,该用户就必须从新开始建立连接。 攻击时,伪造大量的IP地址,向目标发送RST数据,使服务器不对合法用户服务。 3、 带宽DOS攻击 如果你的连接带宽足够大而服务器又不是很大,你可以发送请求,来消耗服务器的缓冲区消耗服务器的带宽。这种攻击就是人多力量大了,配合上SYN一起实施DOS,威力巨大。不过是初级DOS攻击。呵呵。Ping白宫??你发疯了啊! 4、自身消耗的DOS攻击 这是一种老式的攻击手法。说老式,是因为老式的系统有这样的自身BUG。比如Win95 (winsock v1), Cisco IOS v.10.x, 和其他过时的系统。 这种DOS攻击就是把请求客户端IP和端口弄成主机的IP端口相同,发送给主机。使得主机给自己发送TCP请求和连接。这种主机的漏洞会很快把资源消耗光。直接导致当机。这中伪装对一些身份认证系统还是威胁巨大的。 上面这些实施DOS攻击的手段最主要的就是构造需要的TCP数据,充分利用TCP协议。这些攻击方法都是建立在TCP基础上的。还有其他的DOS攻击手段。 5、塞满服务器的硬盘 通常,如果服务器可以没有限制地执行写操作,那么都能成为塞满硬盘造成DOS攻击的途径,比如: 发送垃圾邮件。一般公司的服务器可能把邮件服务器和WEB服务器都放在一起。破坏者可以发送大量的垃圾邮件,这些邮件可能都塞在一个邮件队列中或者就是坏邮件队列中,直到邮箱被撑破或者把硬盘塞满。 让日志记录满。入侵者可以构造大量的错误信息发送出来,服务器记录这些错误,可能就造成日志文件非常庞大,甚至会塞满硬盘。同时会让管理员痛苦地面对大量的日志,甚至就不能发现入侵者真正的入侵途径。 向匿名FTP塞垃圾文件。这样也可以塞满硬盘空间。 6、合理利用策略 一般服务器都有关于帐户锁定的安全策略,比如,某个帐户连续3次登陆失败,那么这个帐号将被锁定。这点也可以被破坏者利用,他们伪装一个帐号去错误登陆,这样使得这个帐号被锁定,而正常的合法用户就不能使用这个帐号去登陆系统了。
(2)分布式反射:新一代的DDoS攻击
攻击在凌晨两点左右开始,那时我正好还在工作,所以我才有机会迅速的抓取到一部分的洪水攻击的信息。这次攻击使Verio (我们的网络提供商)的集合路由器将攻击数据挤满了我们的两条T1 。我们的网站服务器因为这次攻击而无法处理其它合法的请求。我们被完全的炸下了网。 
我们以前就曾遭受过UDP 和ICMP 洪水攻击,这些攻击其实都可以由被攻击者入侵的主机、zombie 工具及Windows 系统简单的实现,我们也被一些经典的SYN 洪水攻击过。所以当我查看了一下那些显示我们是被SYN/ACK 数据攻击的攻击数据包后,眉毛跳了一下。毕竟这些事实并不重要,就像我以前说的那样,一个SYN/ACK 包只是一个SYN 数据包带了一个ACK标记。任何有限权制作"raw socket"的人都可以制作出这种数据包来 —— 不管他是恶意的还是无意的。 
真正的惊讶是当我看到这些发起攻击的地址 : 


 20072261244763.gif (42.89 KB)
2007-2-6 21:53
此处省略了近200个攻击的网络地址

我们看起来是在被超过200 多个网络核心基础设施路由器攻击. 
发生什么事了? 
看到这些分别来自Verio 、Qwest 、和 Above.net 的洪水数据包,我想它们都是完全合法的SYN/ACK 连接回应包,它们显示了一个TCP 源端口:179 。换句话说,就像一个网页服务器的数据包会从HTTP 的80 号端口返回一样,这些数据包是从"BGP"的179 号端口返回的。 
BGP 是中介路由器支持的"边界网关协议"(Border Gateway Protocol )。 路由器使用BGP与他们的邻居进行即时的信息交流来交换他们的" 路由表" ,这是为了通知它们彼此路由器可以在哪个IP 范围进行转交。 
BGP 的细节并不重要,重要的是每个良好连接(高宽带)的中介路由器都会接受在他们179端口上的连接。换句话来说,任何一个SYN 数据包到达一个网络路由器上后都会引出一个该路由的SYN/ACK 回应包来。 
我突然知道什么会一定发生….. 
这些被利用来攻击的两百台主机不可能全存在安全问题,甚至可能没有任何一台有安全问题。 
我认识到它们只不过全是一些普通的的TCP 服务器,它们是在认为我们想建立一个TCP 连接到它们自带的BGP 服务的情况下才向grc.com 发送SYN/ACK 数据包的。 
换句话说,一个恶意的入侵者在其他的Internet 角落里利用带有连接请求的syn 数据包对网络路由器进行洪水攻击。这些数据包带有虚假的IP 地址,这些地址都是grc.com 的。这样以来,路由器认为这些Syn 数据包是从grc.com 发送来的,所以它们便对它们发送SYN/ACK数据包作为三次握手过程的第二个步。 


 20072261245397.gif (50.89 KB)
2007-2-6 21:53
恶意的数据包其实就被那些被利用的主机“反射”到了受害者主机上。这些被反射的数据包返回到受害者主机上后,就形成了洪水攻击。
阻拦反射攻击 
我们有一些好消息,这种攻击看起来可以很简单的阻拦。因为我们自己不是网络服务提供商,以我们从来没有任何连接到远程带有BGP 服务的路由器上的需要。这样以来,我便要求Verio去阻拦任何从BGP 服务端口179 发起的入站数据。因为这个恶意攻击者的SYN 数据包的目标是网络上中介路由的179 号端口,任何反射的数据包也应该会从那个端口发出。 
Verio 的工程师加了一个filter 到提供我们网络服务的集合路由上,它用来阻拦(丢弃)任何从179 端口发来的数据包。从179 号端口发送来的数据包洪水立即停止了。 
但我们并没有回到Internet 上。 
一个刚从网上抓到的数据包显示我们现在正被一群全新的网络服务器攻击。因为这第二群攻击是在我们阻拦了从179 端口发送来的攻击以后才出现的,所以这第二拨攻击没有办法跟第一拨的攻击力相比。 
我们现在正在被从端口22 (Secure Shell), 23 (Telnet), 53 (DNS), 和80 (HTTP/Web)上发送来的SYN/ACK 数据包攻击。这其中还有一些从端口4001 (代理服务器端口)和6668(IRC 聊天)发送来的数据包。 
很可惜的是,因为这第二波攻击完全出乎我的意料,所以我没有抓到这第二波攻击的完整的数据包来作为取样。不过,我先前在第一波攻击中所抓到一些日志有展现一些非BGP 所发出的SYN/ACK 包。 
这是一小部分先前从HTTP(网页服务)端口80 上所发出SYN/ACK 攻击数据包的样本 


 20072261245309.gif (20.7 KB)
2007-2-6 21:53
这蜂拥而来的SYN/ACK 数据包和一些非路由的网络服务器告诉了我们,任何用于普通目的TCP 连接许可的网络服务器都可以用做数据包反射服务器。当我看到我们光阻拦从BGP 端口传来的数据是远远不够的,我开发了一套更全面的解决方案来对付这种攻击。这套方案我们会在下面讨论。 
在装置好对付反射攻击的filter 后,我们立即就可以重新返回网上了。经过我不可以监控在装置filter 后的攻击状况,但看到下面的这些信息还是让我冒了一阵冷汗… 
直到攻击停止,Verio 的路由丢弃了将近十亿(1,072,519,399)的恶意SYN/ACK 数据包。 
我是在认识我到没有抓到第二波非BGP 的数据包后才联系Verio ,从而得知这个数据的。我想要重新装备我们的防御系统,好让我们继续遭受攻击,这样才能抓到那些我先前没有收集到的 
资料,但当我这样做的时候,攻击已经停止了。 
反射攻击的防御及预防 
通过Internet 进行交流的电脑一般都可以被分为两类:客户端及服务端。这两个角色可以随着环境转换(例如一个网页服务器可能会是一个邮件服务器的客户端),不过大部分的TCP 连接都意味着一个客户端和服务端的关系。客户端一般会从一个高数位的端口发起连接到服务端上处于监听状态的底数位端口上。 
因为任何反射的SYN/ACK 数据包必须要弹到一个TCP 服务器上,并且因为几乎所有的服务端口都在1 到1023 这个范围之内,阻拦所有在服务端口范围之内入站的数据包会防止大部分的攻击造成的阻塞。不过这样做有产生一些问题….. 
保护服务器 
首先,这次对grc.com 的攻击包含了从端口4001 和6668 来的SYN/ACK 数据包。所以,如果从这些端口发出的数据太多的话,这些特殊的高数位服务端口也需要被阻拦。在阻拦高数位端口的入站数据包存在一个问题,那就是一些合法的客户端的端口所发生的数据可能也会被我们设置的filter 给拦截掉。 
第二个问题是如果我们只是简单的拦截所有从1024 以下端口发送的数据的话,那么像当一个在blanket filter 后的服务器作为客户端的话,它将无法和其它服务器进行交流。就像我们刚才举的例子一样,当一个网页服务器作为一个SMTP 服务器的客户端时,这个情况就会变的非常复杂。因为远程SMTP 服务器的数据包会试图从SMTP 服务器的25 号端口返回,这时它就会被我们设置的反反射攻击的filter 给拦截掉。为了解决这个问题,我们需要在配置文件里设置例外端口,这样才可以让合法数据包正常通过。 
保护客户端 
这里有一些坏消息。客户端主机,例如那些典型的终端用户,将无法被保护。因为多数的客户端在大部分时间里都是连接到远程的服务器端上的,这些服务器端很可能会被利用来攻击这些无辜的客户端。 
译者注: 
国内的网管可能都冒了一身的冷汗,以前的分布式拒绝服务式攻击可以算是可见不可及。毕竟那是需要几百台受控的肉鸡才能实现的,可现在这个技术可以利用任何不存在安全漏洞的主机来进行攻击,后果可以想象。原作者上面所说的利用filter 来拦截数据包只是暂时之策,服务器不用来提供服务还有什么用?所以真正的解决办法还是要从基础的配置做起,这种攻击不是使用半连接来挂掉主机,所以对付以前那种传统的SYN Flood 的方法可能无法在这里行通。到目前为止,通过利用防火墙来阻挡那些序列号不对的数据包恐怕是最好的方法了。希望网络安全界的人士能尽快研究出更好的解决方法。
(编辑:特约编辑) 留言评论】【在线投稿】【打印网页】【关闭窗口】【↑顶部
  + 相关信息咨讯
 ·DDOS与DDOS追踪的介绍
 ·DDoS攻击的原理及工具介绍
 ·十二款世界顶级防火墙下载,全有注册码或补丁免费
版权与免责声明:
1.凡本网注明来源为“潍坊商业信息港”的所有作品,包括文字与图片,未经本网授权不得转载。违反上述声明者,本网将依法追究法律责任。
2. 凡注明"来源:xxx(非本站)"的作品,均转载自其它媒体,本网转载的目的在于传播更多信息,此类稿件并不代表本网观点,本网不承担此类稿件侵权行为的直接责任及连带责任。
3. 如因作品内容、版权等需要同本网联系的,请在作品在本网发表之日起30日内联,否则视为放弃相关权利