DDOS攻击的方法(二)---攻击系统资源

  • A+
所属分类:安全闲碎

2、攻击系统资源

误区:DDOS攻击都是消耗网络宽带资源的攻击。

     很多时候,新闻报道中提到DDOS攻击,都会以“攻击流量达到*****”的语句来描述攻击的猛烈程度,这种以攻击流量的宽带作为DDOS攻击危害程度描述指标的说法,通常会让人们误以为DDOS攻击都是消耗网络宽带资源的攻击。

     事实上,除了网络宽带资源,DDOS攻击还有消耗系统资源和应用资源的攻击方法,而攻击流量的大小只是决定攻击危害程度的一个方面,对于相同种类的攻击,通常攻击流量越大,其危害也越大,而如果在相同攻击流量的情况下,不同的攻击方法造成的危害和影响则不尽相同。

     有时候,人们会错误的将SYN洪水攻击认为是消耗网络宽带资源的DDOS攻击,而事实上,这种攻击的主要危害在于耗尽系统链接表资源,相同攻击流量的SYN洪水攻击会比UDP洪水攻击的危害更大。


2.1 攻击TCP连接

     TCP是一种面向连接的、可靠的、基于字节流的传输层通讯协议,不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层无法提供这样的流机制,在现实的互联网中,这种连接通常通过TCP协议来实现。

     TCP连接包括三个阶段:连接创建,数据传送和连接终止,由于在协议的设计过程当中只专注于协议的可用性,而没有对协议的安全性进行比较周密和详细的考虑,因此TCP协议存在很多安全缺陷和安全性问题。

     TCP连接的三个阶段都容易受到拒绝服务攻击的影响,我们会在这里对这些攻击手段分别进行介绍。


2.1.1 TCP连接洪水攻击

     TCP连接洪水攻击是在连接创建阶段对TCP资源进行攻击的。

     在三次握手进行的过程中,服务器会创建并保存TCP连接的信息,这个信息通常被保存在连接表结构中,但是,连接表的大小是有限的,一旦服务器接收到的连接数量超过了连接表能存储的数量,服务器就无法创建新的TCP连接了。

     攻击者可以利用大量受控主机,通过快速建立大量恶意的TCP连接占满被攻击目标的连接表,使目标无法接受新的TCP连接请求,从而达到拒绝服务攻击的目的。

DDOS攻击的方法(二)---攻击系统资源

TCP连接洪水攻击是攻击TCP连接的最基本方法,当有大量的受控主机发起攻击时,其效果非常明显。


2.1.2 SYN洪水攻击

     SYN洪水攻击是最经典的一种拒绝服务攻击方式,这种攻击方式在2000年以前就出现过,直到现在依然被攻击者大规模的广泛使用,近年来,SYN洪水攻击仍然占据全部分布式拒绝服务攻击的三分之一以上。

     TCP半开连接:

     在建立TCP连接的过程中,如果在服务器返回SYN+ACK报文后,客户端由于某种原因没有对其进行确认,这时服务器端就需要重传SYN+ACK报文,并等待客户端的确认报文直到TCP连接超时,这种等待客户确认的连接状态通常被称为半开连接

DDOS攻击的方法(二)---攻击系统资源

在连接超时之前,半开连接会一直保存在服务器的连接表中。


     由于连接表的大小是有限的,如果在短时间内产生大量的半开连接,而这些连接又无法很快的结束,连接表就会很快被占满,导致新的连接TCP连接无法建立。

     SYN洪水攻击就是攻击者利用受控主机发送大量的TCP SYN报文,使服务器打开大量的半开连接,占满服务器的连接表,从而影响正常用户与服务器建立会话,造成拒绝服务。

     攻击者在发送TCP SYN报文时,可以在收到服务器返回的SYN+ACK报文后,跳过最后的ACK报文发送,使连接处于半开状态,但是这样会很明显的暴露出进行SYN洪水攻击的IP地址,同时相应报文会作为反射流量占用攻击者的宽带资源,所以更好的方式是攻击者将SYN报文的源IP地址随机伪造其他主机的IP地址或者不存在的IP地址,这样攻击目标将会应答发送给被伪造的IP地址,从而占用连接资源并隐藏攻击来源。

DDOS攻击的方法(二)---攻击系统资源

 

SYN洪水攻击发动简单,效果明显,有大量的攻击工具都能够发动这种攻击,至今依然是攻击者最爱好的攻击方法之一。


2.1.3 PSH+ACK洪水攻击

     在TCP数据传输的过程中,可以通过设置PSH标志位来表示当前数据传输结束,需要服务端进行处理。

     在正常的TCP传输过程当中,如果待发送的数据会清空发送缓冲区,那么操作系统的TCP/IP协议栈就会自动为该数据包设置PSH标志,同样,当服务端接收到一个设置了PSH+ACK标志的报文时,意味着当前数据传输已经结束,因此需要立即将这些数据投递交给服务进程并清空接收缓冲区,而无须等待判断是否还会有额外的数据到达。

     由于带有PSH标志位的TCP数据包会强制要求接收端将接收缓冲区清空并将数据提交给应用服务进行处理,因此当攻击者利用受控主机向攻击目标发送大量的PSH+ACK数据包时,被攻击目标就会消耗大量的系统资源不断地进行接收缓冲区的清空处理,导致无法正常处理数据,从而造成拒绝服务。

DDOS攻击的方法(二)---攻击系统资源

单独使用PSH+ACK洪水攻击对服务器产生的影响并不十分明显,更有效的方式是SYN洪水攻击与ACK洪水攻击相结合,这样能够绕过一部分防护设备,增强攻击的效果。


2.1.4 RST洪水攻击

     在TCP连接的终止阶段,通常是通过带有FIN标志报文的四次交互(TCP四次握手)来切断客户端与服务端的TCP连接,但是客户端或服务器其中之一出现异常状况,无法正常完成TCP四次握手以终止连接时,就会使用RST报文将连接强制中断。

     TCP RST攻击:

     在TCP连接中,RST表示复位,用来在异常时关闭连接,发送端在发送RST报文关闭连接时,不需要等待缓冲区中的数据报全部发送完毕,而会直接丢弃缓冲器的数据并发送RST报文,同样,接收端在收到RST报文后,也会清空缓冲区并关闭连接,并且不必发送ACK报文进行确认。

     攻击者可以利用RST报文的这个特性,发送伪造的带有RST标志位的TCP报文,强制中断客户端与服务端的TCP连接,在伪造RST报文的过程中,服务端的IP地址和端口号是已知的,攻击者还需要设法获取客户端的IP地址和端口号,并且使RST报文的序列号处于服务器的接收窗口之内,如果攻击者和被攻击客户端或服务器处于同一内网,这些信息可以通过欺骗和嗅探等方式获取到。

     TCP RST攻击的原理如图所示

DDOS攻击的方法(二)---攻击系统资源

 

很多情况下,攻击者不会与被攻击客户端或服务器处于同一内网,导致发动TCP RST攻击时难以获取端口和序列号,在这种情况下,攻击者可以利用大量的受控主机猜测端口和序列号,进行盲打,发送RST洪水攻击,只要在数量巨大的RST报文中有一条与攻击目标的端口号相同,并且序列号落在目标的接收窗口之中,就能够终端连接。

     RST洪水攻击的原理如图所示

DDOS攻击的方法(二)---攻击系统资源

严格来说,TCP RST攻击和RST洪水攻击是针对用户的拒绝攻击方式,这种攻击通常被用来攻击在线游戏或比赛的用户,从而影响比赛的结果并获得一定的经济利益。


2.1.5 Sockstress攻击

     Sockstress攻击是研究人员在2008年提出的一种攻击TCP连接的方法,与前面几种攻击方式不同的是,Sockstress攻击不需要在短时间内发送大量的攻击流量,因此不属于洪水攻击,而是一种慢速攻击。

     在TCP传输数据时,并不是将数据直接递交给应用程序处理,而是先临时存储在接受缓冲区里,该接收缓冲区的大小是由TCP窗口表示的,如果TCP窗口大小为0,则表示接收缓冲区已被填满,发送端应该停止发送数据,知道接收端的窗口发生了更新,Sockstress攻击就是利用该原理长时间维持TCP连接,以达到拒绝服务攻击的目的。

     Sockstress攻击首先会完成TCP三次握手以建立TCP连接,但是在三次握手的最后一次ACK应答中,攻击者将其TCP窗口大小设置为0,随后 进行一次数据请求,攻击目标在传输数据时,发现接收端的TCP窗口大小为0,就会停止传输数据,并发出TCP窗口探测包,询问攻击者其TCP窗口是否有更新,由于攻击者没有更改TCP窗口的大小,被攻击目标就会一直维持TCP连接等待数据发送,并不断进行窗口更新的探测,如果攻击者利用大量的受控主机进行Sockstress攻击,被攻击目标会一直维持大量的TCP连接并进行大量窗口更新探测,其TCP连接表会逐渐耗尽,无法连接新的连接而导致拒绝服务。

     Sockstress攻击的原理如图所示

DDOS攻击的方法(二)---攻击系统资源

Sockstress攻击的另一种方式是将TCP窗口设置为一个非常小的值,例如4字节,这样攻击目标将不得不把需要发送的数据切分成大量4字节大小的分片,这会极大的消耗目标的内存和处理器资源,造成系统响应缓慢和拒绝服务。


2.2 攻击SSL连接

     安全套接层是为网络通信提供安全及数据完整性的一种安全协议,SSL能够在传输层对网络连接进行加密,以防止传输的数据明文被监听和截获。

     然而,SSL协议加密、解密和秘钥协商的过程中会消耗大量的系统资源,严重降低机器的性能,因此,通常只有在传输密码等机密信息时才使用SSL协议进行传输。

     攻击者可以利用SSL协议消耗资源的特性进行拒绝服务攻击。


2.2.1 THC SSL DOS攻击

     在进行SSL数据传输之前,通信双方首先要进行SSL握手,以协商加密算法叫唤加密秘钥,进行身份验证,通常情况下,这样的SSL握手过程只需要进行一次即可,但是在SSL协议中有一个Renegotiation选项,通过它可以进行秘钥的重新协商以建立新的秘钥。

     THC SSL DOS攻击是安全研究人员在2011年提出的一种针对SSL的拒绝服务攻击方法,这种方法就是利用Renegotiation选项,造成被攻击目标资源耗尽,在进行SSL连接并握手之后,攻击者反复不断的进行秘钥重新协商过程,而秘钥重新协商过程需要服务器投入比客户端多15倍的CPU计算资源,攻击者只需要一台普通的台式机就能拖慢一台高性能服务器,而如果有大量主机同时进行攻击,则会使服务器忙于协商秘钥而完全停止响应。

     THC SSL DOS攻击的原理如图所示

DDOS攻击的方法(二)---攻击系统资源

 

另外,即使服务器不支持Renegotiation,攻击者依然可以通过另行打开新的SSL连接的方式来制造类似的攻击效果。


2.2.2 SSL洪水攻击

     在SSL握手的过程中,服务器会消耗较多的CPU计算资源进行加解密,并进行数据的有效性检验,对于客户端发过来的数据,服务器需要先花费大量的计算资源进行解密,之后才能对数据的有效性进行检验,重要的是,不论数据是否是有效的,服务器都必须先进行解密才能够做检查,攻击者可以利用这个特性进行SSL洪水攻击。

     在进行洪水攻击时,一个要点是需要攻击者能够在客户端大量的发出攻击请求,这就需要客户端所进行的计算尽可能的少,对于SSL洪水攻击,比较好的方式是在数据传输之前,进行SSL握手的过程中发动攻击,攻击者并不需要完成SSL握手和秘钥交换,而只需要在这个过程中让服务器去解密和验证,就能够大量的消耗服务器的计算资源,因此,攻击者可以非常容易的构造秘钥交换过程中的请求数据,达到减少客户端计算量的目的。

     SSL洪水攻击的原理如图所示

DDOS攻击的方法(二)---攻击系统资源

攻击者可以使用SSL Squeeze等工具来发动SSL洪水攻击。


本文始发于微信公众号(LemonSec):DDOS攻击的方法(二)---攻击系统资源

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: