拒绝服务攻击

黑客的攻击手段之一
展开2个同名词条
收藏
0有用+1
0
同义词dos攻击(拒绝服务)一般指拒绝服务攻击(黑客的攻击手段之一)
拒绝服务攻击即是攻击者想办法让目标机器停止提供服务,是黑客常用的攻击手段之一。其实对网络带宽进行的消耗性攻击只是拒绝服务攻击的一小部分,只要能够对目标造成麻烦,使某些服务被暂停甚至主机死机,都属于拒绝服务攻击。拒绝服务攻击问题也一直得不到合理的解决,究其原因是因为网络协议本身的安全缺陷,从而拒绝服务攻击也成为了攻击者的终极手法。攻击者进行拒绝服务攻击,实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,不接收新的请求;二是使用IP欺骗,迫使服务器把非法用户的连接复位,影响合法用户的连接 [1]
中文名
拒绝服务攻击
外文名
DoS
定    义
攻击者让目标机器停止提供服务
代    表
SYN Flood
攻击对象
服务器
攻击者
骇客

基本概念

播报
编辑
拒绝服务(DoS):DoS是 Denial of service的简称,即拒绝服务,任何对服务的干涉,使得其可用性降低或者失去可用性均称为拒绝服务。例如一个计算机系统崩溃或其带宽耗尽或其硬盘被填满,导致其不能提供正常的服务,就构成拒绝服务 [2]
拒绝服务攻击:造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务 [2]
最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过。连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求 [2]

攻击原理

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

属性分类

播报
编辑
J.Mirkovic和P. Reiher [Mirkovic04]提出了拒绝服务攻击的属性分类法,即将攻击属性分为攻击静态属性、攻击动态属性和攻击交互属性三类,根据DoS攻击的这些属性的不同,就可以对攻击进行详细的分类。凡是在攻击开始前就已经确定,在一次连续的攻击中通常不会再发生改变的属性,称为攻击静态属性。攻击静态属性是由攻击者和攻击本身所确定的,是攻击基本的属性。那些在攻击过程中可以进行动态改变的属性,如攻击的目标选取、时间选择、使用源地址的方式,称为攻击动态属性。而那些不仅与攻击者相关而且与具体受害者的配置、检测与服务能力也有关系的属性,称为攻击交互属性 [5]

攻击静态属性

攻击静态属性主要包括攻击控制模式、攻击通信模式、攻击技术原理、攻击协议和攻击协议层等 [5]
(1)攻击控制方式
攻击控制方式直接关系到攻击源的隐蔽程度。根据攻击者控制攻击机的方式可以分为以下三个等级:直接控制方式(Direct)、间接控制方式(Indirect)和自动控制方式(Auto) [5]
直接控制方式是对目标的确定、攻击的发起和中止都是由用户直接在攻击主机上进行手工操作的。这种攻击追踪起来相对容易,如果能对攻击包进行准确的追踪,通常就能找到攻击者所在的位置 [5]
在间接控制方式的攻击中,DDOS的攻击策略侧重于通过很多“僵尸主机”(被攻击者入侵过或可间接利用的主机)向受害主机发送大量看似合法的网络包,从而造成网络阻塞或服务器资源耗尽而导致拒绝服务,分布式拒绝服务攻击一旦被实施,攻击网络包就会犹如洪水般涌向受害主机,从而把合法用户的网络包淹没,导致合法用户无法正常访问服务器的网络资源 [5]
自动控制方式的攻击是在释放的蠕虫或攻击程序中预先设定了攻击模式,使其在特定时刻对指定目标发起攻击。这种方式的攻击,从攻击机往往难以对攻击者进行追踪,但是这种控制方式的攻击对技术要求也很高 [5]
(2)攻击通信方式
在间接控制的攻击中,控制者和攻击机之间可以使用多种通信方式,它们之间使用的通信方式也是影响追踪难度的重要因素之一。攻击通信方式可以分为三种方式,分别是:双向通信方式(bi)、单向通信方式(mono)和间接通信方式(indirection) [5]
双向通信方式是指根据攻击端接收到的控制数据包中包含了控制者的真实IP地址,例如当控制器使用TCP与攻击机连接时,该通信方式就是双向通信。这种通信方式,可以很容易地从攻击机查找到其上一级的控制器 [5]
单向通信方式指的是攻击者向攻击机发送指令时的数据包并不包含发送者的真实地址信息,例如用伪造IP地址的UDP包向攻击机发送指令。这一类的攻击很难从攻击机查找到控制器,只有通过包标记等IP追踪手段,才有可能查找到给攻击机发送指令的机器的真实地址。但是,这种通信方式在控制上存在若干局限性,例如控制者难以得到攻击机的信息反馈和状态 [5]
间接通信方式是一种通过第三者进行交换的双向通信方式,这种通信方式具有隐蔽性强、难以追踪、难以监控和过滤等特点,对攻击机的审计和追踪往往只能追溯到某个被用于通信中介的公用服务器上就再难以继续进行。这种通信方式已发现的主要是通过IRC(Internet Relay Chat)进行通信,从2000年8月出现的名为Trinity的DDoS攻击工具开始,已经有多种DDoS攻击工具及蠕虫采纳了这种通信方式 [5]
(3)攻击原理
DoS攻击原理主要分为两种,分别是:语义攻击(Semantic)和暴力攻击(Brute) [5]
语义攻击指的是利用目标系统实现时的缺陷和漏洞,对目标主机进行的拒绝服务攻击,这种攻击往往不需要攻击者具有很高的攻击带宽,有时只需要发送1个数据包就可以达到攻击目的,对这种攻击的防范只需要修补系统中存在的缺陷即可。暴力攻击指的是不需要目标系统存在漏洞或缺陷,而是仅仅靠发送超过目标系统服务能力的服务请求数量来达到攻击的目的,也就是通常所说的风暴攻击。所以防御这类攻击必须借助于受害者上游路由器等的帮助,对攻击数据进行过滤或分流。某些攻击方式,兼具语义和暴力两种攻击的特征,比如SYN风暴攻击,虽然利用了TCP协议本身的缺陷,但仍然需要攻击者发送大量的攻击请求,用户要防御这种攻击,不仅需要对系统本身进行增强,而且也需要增大资源的服务能力。还有一些攻击方式,是利用系统设计缺陷,产生比攻击者带宽更高的通信数据来进行暴力攻击的,如DNS请求攻击和Smurf攻击。这些攻击方式在对协议和系统进行改进后可以消除或减轻危害,所以可把它们归于语义攻击的范畴 [5]
(4)攻击协议层
攻击所在的TCP/IP协议层可以分为以下四类:数据链路层、网络层、传输层和应用层 [5]
数据链路层的拒绝服务攻击[Convery] [Fischbach01][Fischbach02]受协议本身限制,只能发生在局域网内部,这种类型的攻击比较少见。针对IP层的攻击主要是针对目标系统处理IP包时所出现的漏洞进行的,如IP碎片攻击[Anderson01],针对传输层的攻击在实际中出现较多,SYN风暴、ACK风暴等都是这类攻击,面向应用层的攻击也较多,剧毒包攻击中很多利用应用程序漏洞的(例如缓冲区溢出的攻击)都属于此类型 [5]
(5)攻击协议
攻击所涉及的最高层的具体协议,如SMTP、ICMP、UDP、HTTP等。攻击所涉及的协议层越高,则受害者对攻击包进行分析所需消耗的计算资源就越大 [5]

攻击动态属性

攻击动态属性主要包括攻击源地址类型、攻击包数据生成模式和攻击目标类型 [5]
(1)攻击源地址类型
攻击者在攻击包中使用的源地址类型可以分为三种:真实地址(True)、伪造合法地址(Forge Legal)和伪造非法地址(Forge Illegal) [5]
攻击时攻击者可以使用合法的IP地址,也可以使用伪造的IP地址。伪造的IP地址可以使攻击者更容易逃避追踪,同时增大受害者对攻击包进行鉴别、过滤的难度,但某些类型的攻击必须使用真实的IP地址,例如连接耗尽攻击。使用真实IP地址的攻击方式由于易被追踪和防御等原因,近些年来使用比例逐渐下降。使用伪造IP地址的攻击又分为两种情况:一种是使用网络中已存在的IP地址,这种伪造方式也是反射攻击所必需的源地址类型;另外一种是使用网络中尚未分配或者是保留的IP地址(例如192.168.0.0/16、172.16.0.0/12等内部网络保留地址[RFC1918]) [5]
(2)攻击包数据生成模式
攻击包中包含的数据信息模式主要有5种:不需要生成数据(None)、统一生成模式(Unique)、随机生成模式(Random)、字典模式(Dictionary)和生成函数模式(Function) [5]
在攻击者实施风暴式拒绝服务攻击时,攻击者需要发送大量的数据包到目标主机,这些数据包所包含的数据信息载荷可以有多种生成模式,不同的生成模式对受害者在攻击包的检测和过滤能力方面有很大的影响。某些攻击包不需要包含载荷或者只需包含适当的固定的载荷,例如SYN风暴攻击和ACK风暴攻击,这两种攻击发送的数据包中的载荷都是空的,所以这种攻击是无法通过载荷进行分析的。但是对于另外一些类型的攻击包,就需要携带相应的载荷 [5]
攻击包载荷的生成方式可以分为4种:第一种是发送带有相同载荷的包,这样的包由于带有明显的特征,很容易被检测出来。第二种是发送带有随机生成的载荷的包,这种随机生成的载荷虽然难以用模式识别的方式来检测,然而随机生成的载荷在某些应用中可能生成大量没有实际意义的包,这些没有意义的包也很容易被过滤掉,但是攻击者仍然可以精心设计载荷的随机生成方式,使得受害者只有解析到应用层协议才能识别出攻击数据包,从而增加了过滤的困难性。第三种方式是攻击者从若干有意义载荷的集合中按照某种规则每次取出一个填充到攻击包中,这种方式当集合的规模较小时,也比较容易被检测出来。最后一种方式是按照某种规则每次生成不同的载荷,这种方式依生成函数的不同,其检测的难度也是不同的 [5]
(3)攻击目标类型
攻击目标类型可以分为以下6类:应用程序(Application)、系统(System)、网络关键资源(Critical)、网络(Network)、网络基础设施(Infrastructure)和因特网(Internet) [5]
针对特定应用程序的攻击是较为常见的攻击方式,其中以剧毒包攻击较多,它包括针对特定程序的,利用应用程序漏洞进行的拒绝服务攻击,以及针对一类应用的,使用连接耗尽方式进行的拒绝服务攻击。针对系统的攻击也很常见,像SYN风暴、UDP风暴[CA-1996-01]以及可以导致系统崩溃、重启的剧毒包攻击都可以导致整个系统难以提供服务。针对网络关键资源的攻击包括对特定DNS、路由器的攻击。而面向网络的攻击指的是将整个局域网的所有主机作为目标进行的攻击。针对网络基础设施的攻击需要攻击者拥有相当的资源和技术,攻击目标是根域名服务器主干网核心路由器、大型证书服务器等网络基础设施,这种攻击发生次数虽然不多,但一旦攻击成功,造成的损失是难以估量的[Naraine02]。针对Internet的攻击是指通过蠕虫、病毒发起的,在整个Internet上蔓延并导致大量主机、网络拒绝服务的攻击,这种攻击的损失尤为严重 [5]

交互属性

播报
编辑
攻击的动态属性不仅与攻击者的攻击方式、能力有关,也与受害者的能力有关。主要包括攻击的可检测程度和攻击影响 [3]
(1)可检测程度
根据能否对攻击数据包进行检测和过滤,受害者对攻击数据的检测能力从低到高分为以下三个等级:可过滤(Filterable)、有特征但无法过滤(Unfilterable)和无法识别(Noncharacterizable) [3]
第一种情况是,对于受害者来说,攻击包具有较为明显的可识别特征,而且通过过滤具有这些特征的数据包,可以有效地防御攻击,保证服务的持续进行。第二种情况是,对于受害者来说,攻击包虽然具有较为明显的可识别特征,但是如果过滤具有这些特征的数据包,虽然可以阻断攻击包,但同时也会影响到服务的持续进行,从而无法从根本上防止拒绝服务。第三种情况是,对于受害者来说,攻击包与其他正常的数据包之间,没有明显的特征可以区分,也就是说,所有的包,在受害者看来,都是正常的 [3]
(2)攻击影响
根据攻击对目标造成的破坏程度,攻击影响自低向高可以分为:无效(None)、服务降低(Degrade)、可自恢复的服务破坏(Self-recoverable)、可人工恢复的服务破坏(Manu-recoverable)以及不可恢复的服务破坏(Non-recoverable) [3]
如果目标系统在拒绝服务攻击发生时,仍然可以提供正常服务,则该攻击是无效的攻击。如果攻击能力不足以导致目标完全拒绝服务,但造成了目标的服务能力降低,这种效果称之为服务降低。而当攻击能力达到一定程度时,攻击就可以使目标完全丧失服务能力,称之为服务破坏。服务破坏又可以分为可恢复的服务破坏和不可恢复的服务破坏,网络拒绝服务攻击所造成的服务破坏通常都是可恢复的。一般来说,风暴型的DDoS攻击所导致的服务破坏都是可以自恢复的,当攻击数据流消失时,目标就可以恢复正常工作状态。而某些利用系统漏洞的攻击可以导致目标主机崩溃、重启,这时就需要对系统进行人工恢复;还有一些攻击利用目标系统的漏洞对目标的文件系统进行破坏,导致系统的关键数据丢失,往往会导致不可恢复的服务破坏,即使系统重新提供服务,仍然无法恢复到破坏之前的服务状态 [3]

攻击动机

播报
编辑
与其他类型的攻击一样,攻击者发起拒绝服务攻击的动机也是多种多样的,不同的时间和场合发生的、由不同的攻击者发起的、针对不同的受害者的攻击可能有着不同的目的 [6]
作为练习手段
DoS攻击非常简单,掌握起来难度比较小,并且还可从网上直接下载工具进行自动攻击。因此,这种攻击被一些自认为是或者想要成为黑客而实际上是脚本小子(Script Kiddies)的人用做练习攻击技术的手段 [7]
炫耀
黑客们常常以能攻破某系统作为向同伴炫耀,提高在黑客社会中的可信度及知名度的资本,拒绝服务攻击虽然技术要求不是很高,有时也被一些人特别是一些“所谓的”黑客用来炫耀 [7]
仇恨或报复
仇恨或报复也常常是攻击的动机。寻求报复通常都基于强烈的感情,攻击者可能竭尽所能地发起攻击,因而一般具有较大的破坏性。同时,拒绝服务攻击当是报复者的首选攻击方式,因为他们的目的主要是破坏而非对系统的控制或窃取信息 [7]
恶作剧或单纯为了破坏
有些系统的使用需要账户(用户名)和口令进行身份认证,而当以某个用户名登录时,如果口令连续错误的次数超过一定值,系统会锁定该账户,攻击者可以采用此方法实施对账户的拒绝服务攻击 [7]
经济原因
有的攻击者攻击系统是为了某种经济利益,无论是直接的还是间接的。另外,敲诈勒索也逐渐成为了一些攻击者进行拒绝服务攻击的目的。由于拒绝服务攻击会导致较大的损失,一些攻击者以此作为敲诈、勒索的手段 [7]
政治原因
拒绝服务攻击也可作为对某种政冶思想的表达或者压制他人的表达的手段之一 [7]
作为特权提升攻击的辅助手段
拒绝服务攻击还可以作为特权提升攻击、获得非法访问的一种辅助手段。这时候,拒绝服务攻击服从于其他攻击的目的。通常,攻击者不能单纯通过拒绝服务攻击获得对某些系统、信息的非法访问,但其可作为间接手段 [7]
信息战
在战争条件下,交战双方如果采取信息战的方式,则拒绝服务攻击就是最常用的战术手段之一。例如,1991年海湾战争中,美方通过激发芯片中的病毒使得伊拉克防空系统使用的打印机不能正常工作,这就是一种拒绝服务攻击 [7]

防止攻击

播报
编辑
对于拒绝服务攻击而言,目前还没有比较完善的解决方案。拒绝服务攻击,尤其是分布式风暴型拒绝服务攻击,是与目前使用的网络协议密切相关的,它的彻底解决即使不是不可能的,至少也是极为困难的。此外安全具有整体、全面、协同的特性,这一特性在拒绝服务攻击方面体现得尤为突出,没有整个网络社会的齐心协力.共同应对,拒绝服务攻击始终是一个难题。虽然如此,也不是对拒绝服务攻击没有对策,研究人员也在不断地寻求新的解决方案。目前拒绝服务攻击的对策主要可以分为检测、增强容忍性和追踪三个方面 [8]