“拒绝服务”攻击

“拒绝服务”攻击【“拒绝服务”攻击】拒绝服务攻击即攻击者想办法让目标机器停止提供服务或资源访问 。这些资源包括磁碟空间、记忆体、进程甚至网路频宽,从而阻止正常用户的访问 。其实对网路频宽进行的消耗性攻击只是拒绝服务攻击的一小部分,只要能够对目标造成麻烦,使某些服务被暂停甚至主机当机,都属于拒绝服务攻击 。拒绝服务攻击问题也一直得不到合理的解决,究其原因是因为这是由于网路协定本身的安全缺陷造成的,从而拒绝服务攻击也成为了攻击者的终极手法 。
“拒绝服务”攻击 (denial of service attack)一种攻击方法,它通过消耗过多的时间、记忆体或其他资源,阻止对资源的正当访问 。攻击者进行拒绝服务攻击,实际上让伺服器实现两种效果:一是迫使伺服器的缓冲区满,不接收新的请求;二是使用IP欺骗,迫使伺服器把合法用户的连线复位,影响合法用户的连线 。几种攻击原理1.SYN FooldSYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(Distributed Denial Of Service分散式拒绝服务攻击)的方式之一,这是一种利用TCP协定缺陷,传送大量伪造的TCP连线请求,使被攻击方资源耗尽(CPU满负荷或记忆体不足)的攻击方式 。SYN Flood攻击的过程在TCP协定中被称为三次握手(Three-way Handshake),而SYN Flood拒绝服务攻击就是通过三次握手而实现的 。(1) 攻击者向被攻击伺服器传送一个包含SYN标誌的TCP报文,SYN(Synchronize)即同步报文 。同步报文会指明客户端使用的连线埠以及TCP连线的初始序号 。这时同被攻击伺服器建立了第一次握手 。(2) 受害伺服器在收到攻击者的SYN报文后,将返回一个SYN+ACK的报文,表示攻击者的请求被接受,同时TCP序号被加一,ACK(Acknowledgement)即确认,这样就同被攻击伺服器建立了第二次握手 。(3) 攻击者也返回一个确认报文ACK给受害伺服器,同样TCP序列号被加一,到此一个TCP连线完成,三次握手完成 。具体原理是:TCP连线的三次握手中,假设一个用户向伺服器传送了SYN报文后突然当机或掉线,那幺伺服器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下伺服器端一般会重试(再次传送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连线 。这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒~2分钟);一个用户出现异常导致伺服器的一个执行绪等待1分钟并不是什幺很大的问题,但如果有一个恶意的攻击者大量模拟这种情况(伪造IP位址),伺服器端将为了维护一个非常大的半连线列表而消耗非常多的资源 。即使是简单的保存并遍历也会消耗非常多的CPU时间和记忆体,何况还要不断对这个列表中的IP进行SYN+ACK的重试 。实际上如果伺服器的TCP/IP栈不够强大,最后的结果往往是堆叠溢出崩溃—— 既使伺服器端的系统足够强大,伺服器端也将忙于处理攻击者伪造的TCP连线请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,伺服器失去回响,这种情况就称作:伺服器端受到了SYN Flood攻击(SYN洪水攻击) 。2.IP欺骗DOS攻击这种攻击利用RST位来实现 。假设现在有一个合法用户(61.61.61.61)已经同伺服器建立了正常的连线,攻击者构造攻击的TCP数据,伪装自己的IP为61.61.61.61,并向伺服器传送一个带有RST位的TCP数据段 。伺服器接收到这样的数据后,认为从61.61.61.61传送的连线有错误,就会清空缓冲区中建立好的连线 。这时,如果合法用户61.61.61.61再传送合法数据,伺服器就已经没有这样的连线了,该用户就必须从新开始建立连线 。攻击时,攻击者会伪造大量的IP位址,向目标传送RST数据,使伺服器不对合法用户服务,从而实现了对受害伺服器的拒绝服务攻击 。3. UDP洪水攻击攻击者利用简单的TCP/IP服务,如Chargen和Echo来传送毫无用处的占满频宽的数据 。通过伪造与某一主机的Chargen服务之间的一次的UDP连线,回复地址指向开着Echo服务的一台主机,这样就生成在两台主机之间存在很多的无用数据流,这些无用数据流就会导致频宽的服务攻击 。4. Ping洪流攻击由于在早期的阶段,路由器对包的最大尺寸都有限制 。许多作业系统对TCP/IP栈的实现在ICMP包上都是规定64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区 。当产生畸形的,声称自己的尺寸超过ICMP上限的包也就是载入的尺寸超过64K上限时,就会出现记忆体分配错误,导致TCP/IP堆叠崩溃,致使接受方当机 。5. 泪滴(teardrop)攻击泪滴攻击是利用在TCP/IP堆叠中实现信任IP碎片中的包的标题头所包含的信息来实现自己的攻击 。IP分段含有指明该分段所包含的是原包的哪一段的信息,某些TCP/IP(包括service pack 4以前的NT)在收到含有重叠偏移的伪造分段时将崩溃 。6. Land攻击Land攻击原理是:用一个特别打造的SYN包,它的原地址和目标地址都被设定成某一个伺服器地址 。此举将导致接受伺服器向它自己的地址传送SYN-ACK讯息,结果这个地址又发回ACK讯息并创建一个空连线 。被攻击的伺服器每接收一个这样的连线都将保留,直到逾时,对Land攻击反应不同,许多UNIX实现将崩溃,NT变的极其缓慢(大约持续5分钟) 。7. Smurf攻击一个简单的Smurf攻击原理就是:通过使用将回复地址设定成受害网路的广播地址的ICMP应答请求(ping)数据包来淹没受害主机的方式进行 。最终导致该网路的所有主机都对此ICMP应答请求作出答覆,导致网路阻塞 。它比ping of death洪水的流量高出1或2个数量级 。更加複杂的Smurf将源地址改为第三方的受害者,最终导致第三方崩溃 。8.Fraggle攻击原理:Fraggle攻击实际上就是对Smurf攻击作了简单的修改,使用的是UDP应答讯息而非ICMP 。