拒绝服务攻击是什么

小白 2020-05-06 09:10:58
QA

拒绝服务攻击即是攻击者想办法让目标机器停止提供服务,是黑客常用的攻击手段之一。其实对网络带宽进行的消耗性攻击只是拒绝服务攻击的一小部分,只要能够对目标造成麻烦,使某些服务被暂停甚至主机死机,都属于拒绝服务攻击。

拒绝服务攻击即是攻击者想办法让目标机器停止提供服务,是黑客常用的攻击手段之一。其实对网络带宽进行的消耗性攻击只是拒绝服务攻击的一小部分,只要能够对目标造成麻烦,使某些服务被暂停甚至主机死机,都属于拒绝服务攻击。拒绝服务攻击问题也一直得不到合理的解决,究其原因是因为网络协议本身的安全缺陷,从而拒绝服务攻击也成为了攻击者的终极手法。攻击者进行拒绝服务攻击,实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,不接收新的请求;二是使用 IP 欺骗,迫使服务器把非法用户的连接复位,影响合法用户的连接。

拒绝服务攻击是什么

基本概念

拒绝服务攻击,英文名称是 Denial of Service,简称 DOS,即拒绝服务,造成其攻击行为被称为 DoS 攻击,其目的是使计算机或网络无法提供正常的服务。最常见的 DoS 攻击有计算机网络带宽攻击和连通性攻击。带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽, 最后导致合法的用户请求无法通过。

连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。常用攻击手段有:同步洪流、WinNuke、死亡之 PING、Echl 攻击、ICMP/SMURF、Finger 炸弹、Land 攻击、Ping 洪流、Rwhod、tearDrop、TARGA3、UDP 攻击、OOB 等。

原理

SYN Flood

SYN 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(Acknowledgment)即确认,这样就同被攻击服务器建立了第二次握手。

(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 洪水攻击)。

SYN COOKIE 防火墙是 SYN cookie 的一个扩展,SYN cookie 是建立在 TCP 堆栈上的,他为 linux 操作系统提供保护。SYN cookie 防火墙是 linux 的 一大特色,你可以使用一个防火墙来保护你的网络以避免遭受 SYN 洪水攻击。

下面是 SYN cookie 防火墙的原理

client firewall server

------ ---------- ------

1. SYN----------- - - - - - - - - - ->

2. <------------SYN-ACK(cookie)

3. ACK----------- - - - - - - - - - ->

4. - - - - - - -SYN--------------->

5. <- - - - - - - - - ------------SYN-ACK

6. - - - - - - -ACK--------------->

7. -----------> relay the ------->

<----------- connection <-------

1:一个 SYN 包从 C 发送到 S

2:防火墙在这里扮演了 S 的角色来回应一个带 SYN cookie 的 SYN-ACK 包给 C

3:C 发送 ACK 包,接着防火墙和 C 的连接就建立了。

4:防火墙这个时候扮演 C 的角色发送一个 SYN 给 S

5:S 返回一个 SYN 给 C

6:防火墙扮演 C 发送一个 ACK 确认包给 S,这个时候防火墙和 S 的连接也就建立了

7:防火墙转发 C 和 S 间的数据

如果系统遭受 SYN Flood,那么第三步就不会有,而且无论在防火墙还是 S 都不会收到相应在第一步的 SYN 包,所以我们就击退了这次 SYN 洪水攻击。

IP 欺骗性攻击

这种攻击利用 RST 位来实现。假设有一个合法用户(61.61.61.61)已经同服务器建立了正常的连接,攻击者构造攻击的 TCP 数据,伪装自己的 IP 为 61.61.61.61,并向服务器发送一个带有 RST 位的 TCP 数据段。服务器接收到这样的数据后,认为从 61.61.61.61 发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户 61.61.61.61 再发送合法数据,服务器就已经没有这样的连接了,该用户就必须从新开始建立连接。攻击时,攻击者会伪造大量的 IP 地址,向目标发送 RST 数据,使服务器不对合法用户服务,从而实现了对受害服务器的拒绝服务攻击。

UDP 洪水攻击

攻击者利用简单的 TCP/IP 服务,如 Chargen 和 Echo 来传送毫无用处的占满带宽的数据。通过伪造与某一主机的 Chargen 服务之间的一次的 UDP 连接,回复地址指向开着 Echo 服务的一台主机,这样就生成在两台主机之间存在很多的无用数据流,这些无用数据流就会导致带宽的服务攻击。

Ping 洪流攻击

由于在早期的阶段,路由器对包的最大尺寸都有限制。许多操作系统对 TCP/IP 栈的实现在 ICMP 包上都是规定 64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区。当产生畸形的,声称自己的尺寸超过 ICMP 上限的包也就是加载的尺寸超过 64K 上限时,就会出现内存分配错误,导致 TCP/IP 堆栈崩溃,致使接受方死机。

teardrop 攻击

泪滴攻击是利用在 TCP/IP 堆栈中实现信任 IP 碎片中的包的标题头所包含的信息来实现自己的攻击。IP 分段含有指明该分段所包含的是原包的哪一段的信息,某些 TCP/IP(包括 service pack 4 以前的 NT)在收到含有重叠偏移的伪造分段时将崩溃。

Land 攻击

Land 攻击原理是:用一个特别打造的 SYN 包,它的原地址和目标地址都被设置成某一个服务器地址。此举将导致接受服务器向它自己的地址发送 SYN-ACK 消息,结果这个地址又发回 ACK 消息并创建一个空连接。被攻击的服务器每接收一个这样的连接都将保留,直到超时,对 Land 攻击反应不同,许多 UNIX 实现将崩溃,NT 变的极其缓慢(大约持续 5 分钟)。

Smurf 攻击

一个简单的 Smurf 攻击原理就是:通过使用将回复地址设置成受害网络的广播地址的 ICMP 应答请求(ping)数据包来淹没受害主机的方式进行。最终导致该网络的所有主机都对此 ICMP 应答请求作出答复,导致网络阻塞。它比 ping of death 洪水的流量高出 1 或 2 个数量级。更加复杂的 Smurf 将源地址改为第三方的受害者,最终导致第三方崩溃。

Fraggle 攻击

原理:Fraggle 攻击实际上就是对 Smurf 攻击作了简单的修改,使用的是 UDP 应答消息而非 ICMP。

属性分类

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

攻击静态属性

攻击静态属性主要包括攻击控制模式、攻击通信模式、攻击技术原理、攻击协议和攻击协议层等。

(1)攻击控制方式

攻击控制方式直接关系到攻击源的隐蔽程度。根据攻击者控制攻击机的方式可以分为以下三个等级:直接控制方式(Direct)、间接控制方式(Indirect)和自动控制方式(Auto)。

最早的拒绝服务攻击通常是手工直接进行的,即对目标的确定、攻击的发起和中止都是由用户直接在攻击主机上进行手工操作的。这种攻击追踪起来相对容易,如果能对攻击包进行准确的追踪,通常就能找到攻击者所在的位置。由于直接控制方式存在的缺点和攻击者想要控制大量攻击机发起更大规模攻击的需求,攻击者开始构建多层结构的攻击网络。多层结构的攻击网络给针对这种攻击的追踪带来很大困难,受害者在追踪到攻击机之后,还需要从攻击机出发继续追踪控制器,如果攻击者到最后一层控制器之间存在多重跳板时,还需要进行多次追踪才能最终找到攻击者,这种追踪不仅需要人工进行操作,耗费时间长,而且对技术也有很高的要求。这种攻击模式,是目前最常用的一种攻击模式。自动攻击方式,是在释放的蠕虫或攻击程序中预先设定了攻击模式,使其在特定时刻对指定目标发起攻击。这种方式的攻击,从攻击机往往难以对攻击者进行追踪,但是这种控制方式的攻击对技术要求也很高。Mydoom 蠕虫对 SCO 网站和 Microsoft 网站的攻击就属于第三种类型[TA04-028A]。

(2)攻击通信方式

在间接控制的攻击中,控制者和攻击机之间可以使用多种通信方式,它们之间使用的通信方式也是影响追踪难度的重要因素之一。攻击通信方式可以分为三种方式,分别是:双向通信方式(bi)、单向通信方式(mono)和间接通信方式(indirection)。

双向通信方式是指根据攻击端接收到的控制数据包中包含了控制者的真实 IP 地址,例如当控制器使用 TCP 与攻击机连接时,该通信方式就是双向通信。这种通信方式,可以很容易地从攻击机查找到其上一级的控制器。

单向通信方式指的是攻击者向攻击机发送指令时的数据包并不包含发送者的真实地址信息,例如用伪造 IP 地址的 UDP 包向攻击机发送指令。这一类的攻击很难从攻击机查找到控制器,只有通过包标记等 IP 追踪手段,才有可能查找到给攻击机发送指令的机器的真实地址。但是,这种通信方式在控制上存在若干局限性,例如控制者难以得到攻击机的信息反馈和状态。

间接通信方式是一种通过第三者进行交换的双向通信方式,这种通信方式具有隐蔽性强、难以追踪、难以监控和过滤等特点,对攻击机的审计和追踪往往只能追溯到某个被用于通信中介的公用服务器上就再难以继续进行。这种通信方式已发现的主要是通过 IRC(Internet Relay Chat)进行通信[Jose Nazario],从 2000 年 8 月出现的名为 Trinity 的 DDoS 攻击工具开始,已经有多种 DDoS 攻击工具及蠕虫采纳了这种通信方式。在基于 IRC 的傀儡网络中,若干攻击者连接到 Internet 上的某个 IRC 服务器上,并通过服务器的聊天程序向傀儡主机发送指令。

(3)攻击原理

DoS 攻击原理主要分为两种,分别是:语义攻击(Semantic)和暴力攻击(Brute)。

语义攻击指的是利用目标系统实现时的缺陷和漏洞,对目标主机进行的拒绝服务攻击,这种攻击往往不需要攻击者具有很高的攻击带宽,有时只需要发送 1 个数据包就可以达到攻击目的,对这种攻击的防范只需要修补系统中存在的缺陷即可。暴力攻击指的是不需要目标系统存在漏洞或缺陷,而是仅仅靠发送超过目标系统服务能力的服务请求数量来达到攻击的目的,也就是通常所说的风暴攻击。所以防御这类攻击必须借助于受害者上游路由器等的帮助,对攻击数据进行过滤或分流。某些攻击方式,兼具语义和暴力两种攻击的特征,比如 SYN 风暴攻击,虽然利用了 TCP 协议本身的缺陷,但仍然需要攻击者发送大量的攻击请求,用户要防御这种攻击,不仅需要对系统本身进行增强,而且也需要增大资源的服务能力。还有一些攻击方式,是利用系统设计缺陷,产生比攻击者带宽更高的通信数据来进行暴力攻击的,如 DNS 请求攻击和 Smurf 攻击,参见 4.2.3 节以及文献[IN-2000-04]和[CA-1998-01]。这些攻击方式在对协议和系统进行改进后可以消除或减轻危害,所以可把它们归于语义攻击的范畴。

(4)攻击协议层

攻击所在的 TCP/IP 协议层可以分为以下四类:数据链路层、网络层、传输层和应用层。

数据链路层的拒绝服务攻击[Convery] [Fischbach01][Fischbach02]受协议本身限制,只能发生在局域网内部,这种类型的攻击比较少见。针对 IP 层的攻击主要是针对目标系统处理 IP 包时所出现的漏洞进行的,如 IP 碎片攻击[Anderson01],针对传输层的攻击在实际中出现较多,SYN 风暴、ACK 风暴等都是这类攻击,面向应用层的攻击也较多,剧毒包攻击中很多利用应用程序漏洞的(例如缓冲区溢出的攻击)都属于此类型。

(5)攻击协议

攻击所涉及的最高层的具体协议,如 SMTP、ICMP、UDP、HTTP 等。攻击所涉及的协议层越高,则受害者对攻击包进行分析所需消耗的计算资源就越大。

攻击动态属性

攻击动态属性主要包括攻击源地址类型、攻击包数据生成模式和攻击目标类型。

(1)攻击源地址类型

攻击者在攻击包中使用的源地址类型可以分为三种:真实地址(True)、伪造合法地址(Forge Legal)和伪造非法地址(Forge Illegal)。

攻击时攻击者可以使用合法的 IP 地址,也可以使用伪造的 IP 地址。伪造的 IP 地址可以使攻击者更容易逃避追踪,同时增大受害者对攻击包进行鉴别、过滤的难度,但某些类型的攻击必须使用真实的 IP 地址,例如连接耗尽攻击。使用真实 IP 地址的攻击方式由于易被追踪和防御等原因,近些年来使用比例逐渐下降。使用伪造 IP 地址的攻击又分为两种情况:一种是使用网络中已存在的 IP 地址,这种伪造方式也是反射攻击所必需的源地址类型;另外一种是使用网络中尚未分配或者是保留的 IP 地址(例如 192.168.0.0/16、172.16.0.0/12 等内部网络保留地址[RFC1918])。

(2)攻击包数据生成模式

攻击包中包含的数据信息模式主要有 5 种:不需要生成数据(None)、统一生成模式(Unique)、随机生成模式(Random)、字典模式(Dictionary)和生成函数模式(Function)。

在攻击者实施风暴式拒绝服务攻击时,攻击者需要发送大量的数据包到目标主机,这些数据包所包含的数据信息载荷可以有多种生成模式,不同的生成模式对受害者在攻击包的检测和过滤能力方面有很大的影响。某些攻击包不需要包含载荷或者只需包含适当的固定的载荷,例如 SYN 风暴攻击和 ACK 风暴攻击,这两种攻击发送的数据包中的载荷都是空的,所以这种攻击是无法通过载荷进行分析的。但是对于另外一些类型的攻击包,就需要携带相应的载荷。

攻击包载荷的生成方式可以分为 4 种:第一种是发送带有相同载荷的包,这样的包由于带有明显的特征,很容易被检测出来。第二种是发送带有随机生成的载荷的包,这种随机生成的载荷虽然难以用模式识别的方式来检测,然而随机生成的载荷在某些应用中可能生成大量没有实际意义的包,这些没有意义的包也很容易被过滤掉,但是攻击者仍然可以精心设计载荷的随机生成方式,使得受害者只有解析到应用层协议才能识别出攻击数据包,从而增加了过滤的困难性。第三种方式是攻击者从若干有意义载荷的集合中按照某种规则每次取出一个填充到攻击包中,这种方式当集合的规模较小时,也比较容易被检测出来。最后一种方式是按照某种规则每次生成不同的载荷,这种方式依生成函数的不同,其检测的难度也是不同的。

(3)攻击目标类型

攻击目标类型可以分为以下 6 类:应用程序(Application)、系统(System)、网络关键资源(Critical)、网络(Network)、网络基础设施(Infrastructure)和因特网(Internet)。

针对特定应用程序的攻击是较为常见的攻击方式,其中以剧毒包攻击较多,它包括针对特定程序的,利用应用程序漏洞进行的拒绝服务攻击,以及针对一类应用的,使用连接耗尽方式进行的拒绝服务攻击。针对系统的攻击也很常见,像 SYN 风暴、UDP 风暴[CA-1996-01]以及可以导致系统崩溃、重启的剧毒包攻击都可以导致整个系统难以提供服务。针对网络关键资源的攻击包括对特定 DNS、路由器的攻击。而面向网络的攻击指的是将整个局域网的所有主机作为目标进行的攻击。针对网络基础设施的攻击需要攻击者拥有相当的资源和技术,攻击目标是根域名服务器、主干网核心路由器、大型证书服务器等网络基础设施,这种攻击发生次数虽然不多,但一旦攻击成功,造成的损失是难以估量的[Naraine02]。针对 Internet 的攻击是指通过蠕虫、病毒发起的,在整个 Internet 上蔓延并导致大量主机、网络拒绝服务的攻击,这种攻击的损失尤为严重。

交互属性

攻击的动态属性不仅与攻击者的攻击方式、能力有关,也与受害者的能力有关。主要包括攻击的可检测程度和攻击影响。

(1)可检测程度

根据能否对攻击数据包进行检测和过滤,受害者对攻击数据的检测能力从低到高分为以下三个等级:可过滤(Filterable)、有特征但无法过滤(Unfilterable)和无法识别(Noncharacterizable)。

第一种情况是,对于受害者来说,攻击包具有较为明显的可识别特征,而且通过过滤具有这些特征的数据包,可以有效地防御攻击,保证服务的持续进行。第二种情况是,对于受害者来说,攻击包虽然具有较为明显的可识别特征,但是如果过滤具有这些特征的数据包,虽然可以阻断攻击包,但同时也会影响到服务的持续进行,从而无法从根本上防止拒绝服务。第三种情况是,对于受害者来说,攻击包与其他正常的数据包之间,没有明显的特征可以区分,也就是说,所有的包,在受害者看来,都是正常的。

(2)攻击影响

根据攻击对目标造成的破坏程度,攻击影响自低向高可以分为:无效(None)、服务降低(Degrade)、可自恢复的服务破坏(Self-recoverable)、可人工恢复的服务破坏(Manu-recoverable)以及不可恢复的服务破坏(Non-recoverable)。

如果目标系统在拒绝服务攻击发生时,仍然可以提供正常服务,则该攻击是无效的攻击。如果攻击能力不足以导致目标完全拒绝服务,但造成了目标的服务能力降低,这种效果称之为服务降低。而当攻击能力达到一定程度时,攻击就可以使目标完全丧失服务能力,称之为服务破坏。服务破坏又可以分为可恢复的服务破坏和不可恢复的服务破坏,网络拒绝服务攻击所造成的服务破坏通常都是可恢复的。一般来说,风暴型的 DDoS 攻击所导致的服务破坏都是可以自恢复的,当攻击数据流消失时,目标就可以恢复正常工作状态。而某些利用系统漏洞的攻击可以导致目标主机崩溃、重启,这时就需要对系统进行人工恢复;还有一些攻击利用目标系统的漏洞对目标的文件系统进行破坏,导致系统的关键数据丢失,往往会导致不可恢复的服务破坏,即使系统重新提供服务,仍然无法恢复到破坏之前的服务状态。

动机

与其他类型的攻击一样,攻击者发起拒绝服务攻击的动机也是多种多样的,不同的时间和场合发生的、由不同的攻击者发起的、针对不同的受害者的攻击可能有着不同的目的。这里,把拒绝服务攻击的一些主要目的进行归纳。需要说明的是,这里列出的没有也不可能包含所有的攻击目的;同时,这些目的也不是排他性的,一次攻击事件可能会有着多重的目的。

作为练习手段

由于 DoS 攻击非常简单,还可以从网上直接下载工具进行自动攻击。因此,这种攻击可以被一些自认为是或者想要成为黑客而实际上是脚本小子(Script Kiddies)的人用做练习攻击技术的手段。而其他的一些特权提升攻击(除通过蠕虫等进行自动攻击外),通常都会或多或少地牵涉到一些技术性的东西,从而掌握起来会有一定的难度。

炫耀

黑客们常常以能攻破某系统作为向同伴炫耀,提高在黑客社会中的可信度及知名度的资本,拒绝服务攻击虽然技术要求不是很高,有时也被一些人特别是一些“所谓的”黑客用来炫耀。

仇恨或报复

仇恨或报复也常常是攻击的动机。寻求报复通常都基于强烈的感情,攻击者可能竭尽所能地发起攻击,因而一般具有较大的破坏性。同时,拒绝服务攻击当是报复者的首选攻击方式,因为他们的目的主要是破坏而非对系统的控制或窃取信息。因仇恨而发起攻击的人员有:

前雇员,由于被解雇、下岗或者因为其他不愉快的原因辞职而感到不满的。

现雇员,感到其雇主应该提升自己、增加薪水或以其他方式承认其工作,而愿望没有得到满足的,尤其是哪些因为类似原因,打算辞职的。

现雇员,因为政治斗争、升职竞争等原因而恶意破坏他人工作成绩的。

外部人员,由于对公司充满仇恨,例如不满的客户或者竞争对手的雇员,他们可能希望损害公司的利益或者使其陷入困境。

外部人员,他们可能仇恨公司所雇用的某个人,这个人也许是前男/女朋友,前配偶等。

4.恶作剧或单纯为了破坏

有些系统的使用需要账户(用户名)和口令进行身份认证,而当以某个用户名登录时,如果口令连续错误的次数超过一定值,系统会锁定该账户,攻击者可以采用此方法实施对账户的拒绝服务攻击。此外,我们在现实生活中常常见到一些公共设施如通信电缆被恶意毁坏;在网络社会中,类似的情况也时有发生,这些攻击常常是为了恶作剧。

经济原因

有的攻击者攻击系统是为了某种经济利益,无论是直接的还是间接的。比如 A、B 是两家相互竞争的依赖 Internet 做生意的公司,如果其中一个公司的服务质量降低或者顾客不能访问该公司的网络,顾客可能会转向另一家公司,则 A 就可能对 B 公司提供的网上服务实施拒绝服务攻击,在这里,攻击者 A 可以通过对 B 的攻击而获取经济利益。攻击者也可以受雇而发起攻击,例如在上例中,一些黑客可能受 A 的雇佣而攻击 B 的网络,类似的实际案例早有报道。

敲诈、勒索也逐渐成为了一些攻击者进行拒绝服务攻击的目的。由于拒绝服务攻击会导致较大的损失,一些攻击者以此作为敲诈勒索的手段。例如,2004 年欧洲杯足球赛期间发生的一起针对一个赌博公司的敲诈案[BBC04],攻击者威胁说如果该公司不付钱就会攻击其网站,使之下线。在其他的重要体育赛事期间,也发生过多起类似的犯罪行为。

又如,Renaud Bidou 在 Black Hat USA 2005 会议中介绍了一个以拒绝服务攻击进行敲诈勒索的例子。受害者是位于莫斯科的一个从事货币兑换的俄罗斯金融公司,受害者的业务都是从网上在线处理的。攻击者先用大约每秒 150 000 个数据包的 SYN 风暴攻击受害者的服务器(所有数据包指向同一个 IP 的同一个端口,即受害者关键业务所用的端口),攻击 30 分钟后,攻击者通过 ICQ 联系,要求受害者在 36 小时内支付指定数量的赎金,整个第一波攻击持续 60 分钟后停止。从第一波攻击开始起 36 小时后,由于没有收到赎金,攻击者发起了第二波攻击,在此次攻击中,攻击者从每秒 50 000 个数据包开始,按每 5 分钟以每秒 50 000 个数据包的力度递增,到 20 分钟时达到攻击的极限——每秒 200 000 个数据包,所有这些数据包都被受害者的 SYNCookies 措施所阻塞。第二波攻击的持续时间不长,到 35 分钟以后,受害者的业务得以恢复。

随着越来越多的受害者选择向敲诈者妥协,以拒绝服务攻击进行敲诈勒索的案例越来越多。同时,由于拒绝服务攻击常常涉及超出国界的 Internet 连接,对拒绝服务攻击这种犯罪行为的起诉也比较困难,这进一步加剧了问题的严重性。

政治原因

这类攻击的目的是对某种政治思想的表达或者压制他人的表达。如 2001 年 5 月间,由美国间谍飞机撞毁我巡逻机引发的,中美黑客之间的一场网络大战①,以及 2003 年伊拉克战争期间美国与伊拉克黑客之间的发生的相互攻击对方国内网络的事件就属政治原因引起的(当然,拒绝服务攻击只是当时双方采取的攻击手段之一)。又比如,某银行贷款给一家公司用于在某处建一对环境污染严重的化工厂,环境保护主义者可能会攻击该银行,后果或者是导致该银行的损失,达到报复该银行的目的,或者是迫使该银行取消该项贷款,达到保护环境的目的。

信息战

在战争条件下,交战双方如果采取信息战的方式,则拒绝服务攻击就是最常用的战术手段之一。例如,1991 年,在海湾战争开战前数周,美国特工买通了安曼国际机场的工作人员,用带有病毒的芯片替换了运往伊拉克的打印机芯片。该病毒由美国国家安全局设计,目的就是为了破坏巴格达的防空系统,从而为美方的空中打击创造有利条件。据一本名为《不战而胜:波斯湾战争中未揭露的历史》(Triumph without Victory: The Unreported History of the Persian Gulf War)的图书称,该病毒可以逃避层层安全检测,当病毒存在于计算机上时,每次伊拉克的技术人员开一个窗口访问信息的时候,其计算机屏幕上的信息就会消失。有报道称该病毒最后确实起作用了。这里,美方通过激发病毒使得伊拉克防空系统使用的打印机不能正常工作,就是一种拒绝服务攻击。

辅助手段

前面讨论的目的都是由拒绝服务攻击直接达到的,事实上,拒绝服务攻击还可以作为特权提升攻击、获得非法访问的一种辅助手段。这时候,拒绝服务攻击服从于其他攻击的目的。通常,攻击者不能单纯通过拒绝服务攻击获得对某些系统、信息的非法访问,但其可作为间接手段。

SYN 风暴攻击可以用于 IP 劫持、IP 欺骗等。当攻击者想要向 B 冒充 C 时,其通常需要 C 不能响应 B 的消息,为此,攻击者可以先攻击 C(如果它是在线的)使其无法对 B 的消息进行响应。然后攻击者就可以通过窃听发向 C 的数据包,或者通过猜测发向 C 的数据包中的序列号等,然后冒充 C 与第三方通信。

一些系统在启动时会有漏洞,可以通过拒绝服务攻击使之重启,然后在该系统重启时针对漏洞进行攻击。如 RARP-boot,如果能令其重启,就可以将其攻破。只需知道 RARP-boot 在引导时监听的端口号(通常为 69),通过向其发送伪造的数据包几乎可以完全控制其引导(Boot)过程。

有些网络配置成当防火墙关闭时所有数据包都能通过(特别是对于那些提供服务比安全更加重要的场合,如普通的 ISP),则可通过对防火墙的拒绝服务攻击使其失去作用达到非法访问受防火墙保护的网络的目的。

对 Windows 系统的大多数配置变动在生效前都需要重新启动系统。这么一来,如果攻击者已经获得了对系统的管理性特权的变动之后,可能需要采取拒绝服务攻击的手段使系统重启或者迫使系统的真正管理员重启系统,以便其改动的配置生效。

对 DNS 的拒绝服务攻击可以达到地址冒充的目的。DNS 服务器起到的是把域名解析为 IP 地址的作用。攻击者可以通过把 DNS 致瘫,然后冒充 DNS 的域名解析,把错误的域名-IP 地址的对应关系提供给用户,以便把用户(受害者)的数据包指向错误的网站(如攻击者的网站),或者把受害者的邮件指向错误的(如攻击者的)邮件服务器,这样,攻击者就达到了冒充其他域名的目的。攻击者的最终目的大致有两种:一是窃取受害者的信息,但客观上导致用户不能应用相应的服务,也构成拒绝服务攻击;二是拒绝服务攻击,如蓄意使用户不能访问需要的网站,不能发送邮件到需要的服务器等。

防止攻击

许多现代的 UNIX 允许管理员设置一些限制,如限制可以使用的最大内存、CPU 时间以及可以生成的最大文件等。如果当前正在开发―个新的程序,而又不想偶然地使系统变得非常缓慢,或者使其它分享这台主机的用户无法使用,这些限制是很有用的。Korn Shell 的 ulimit 命令和 Shell 的 Iimit 命令可以列出当前程的资源限制。

SYN Flood 防御

前文描述过,SYN Flood 攻击大量消耗服务器的 CPU、内存资源,并占满 SYN 等待队列。相应的,我们修改内核参数即可有效缓解。主要参数如下:

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_max_syn_backlog = 8192

net.ipv4.tcp_synack_retries = 2

分别为启用 SYN Cookie、设置 SYN 最大队列长度以及设置 SYN+ACK 最大重试次数。

SYN Cookie 的作用是缓解服务器资源压力。启用之前,服务器在接到 SYN 数据包后,立即分配存储空间,并随机化一个数字作为 SYN 号发送 SYN+ACK 数据包。然后保存连接的状态信息等待客户端确认。启用 SYN Cookie 之后,服务器不再分配存储空间,而且通过基于时间种子的随机数算法设置一个 SYN 号,替代完全随机的 SYN 号。发送完 SYN+ACK 确认报文之后,清空资源不保存任何状态信息。直到服务器接到客户端的最终 ACK 包,通过 Cookie 检验算法鉴定是否与发出去的 SYN+ACK 报文序列号匹配,匹配则通过完成握手,失败则丢弃。当然,前文的高级攻击中有 SYN 混合 ACK 的攻击方法,则是对此种防御方法的反击,其中优劣由双方的硬件配置决定

tcp_max_syn_backlog 则是使用服务器的内存资源,换取更大的等待队列长度,让攻击数据包不至于占满所有连接而导致正常用户无法完成握手。net.ipv4.tcp_synack_retries 是降低服务器 SYN+ACK 报文重试次数,尽快释放等待资源。这三种措施与攻击的三种危害一一对应,完完全全地对症下药。但这些措施也是双刃剑,可能消耗服务器更多的内存资源,甚至影响正常用户建立 TCP 连接,需要评估服务器硬件资源和攻击大小谨慎设置。

除了定制 TCP/IP 协议栈之外,还有一种常见做法是 TCP 首包丢弃方案,利用 TCP 协议的重传机制识别正常用户和攻击报文。当防御设备接到一个 IP 地址的 SYN 报文后,简单比对该 IP 是否存在于白名单中,存在则转发到后端。如不存在于白名单中,检查是否是该 IP 在一定时间段内的首次 SYN 报文,不是则检查是否重传报文,是重传则转发并加入白名单,不是则丢弃并加入黑名单。是首次 SYN 报文则丢弃并等待一段时间以试图接受该 IP 的 SYN 重传报文,等待超时则判定为攻击报文加入黑名单。

首包丢弃方案对用户体验会略有影响,因为丢弃首包重传会增大业务的响应时间,有鉴于此发展出了一种更优的 TCP Proxy 方案。所有的 SYN 数据报文由清洗设备接受,按照 SYN Cookie 方案处理。和设备成功建立了 TCP 三次握手的 IP 地址被判定为合法用户加入白名单,由设备伪装真实客户端 IP 地址再与真实服务器完成三次握手,随后转发数据。而指定时间内没有和设备完成三次握手的 IP 地址,被判定为恶意 IP 地址屏蔽一定时间。除了 SYN Cookie 结合 TCP Proxy 外,清洗设备还具备多种畸形 TCP 标志位数据包探测的能力,通过对 SYN 报文返回非预期应答测试客户端反应的方式来鉴别正常访问和恶意行为。

清洗设备的硬件具有特殊的网络处理器芯片和特别优化的操作系统、TCP/IP 协议栈,可以处理非常巨大的流量和 SYN 队列。

HTTP Flood 防御

HTTP Flood 攻击防御主要通过缓存的方式进行,尽量由设备的缓存直接返回结果来保护后端业务。大型的互联网企业,会有庞大的 CDN 节点缓存内容。

当高级攻击者穿透缓存时,清洗设备会截获 HTTP 请求做特殊处理。最简单的方法就是对源 IP 的 HTTP 请求频率做统计,高于一定频率的 IP 地址加入黑名单。这种方法过于简单,容易带来误杀,并且无法屏蔽来自代理服务器的攻击,因此逐渐废止,取而代之的是 JavaScript 跳转人机识别方案。

HTTP Flood 是由程序模拟 HTTP 请求,一般来说不会解析服务端返回数据,更不会解析 JS 之类代码。因此当清洗设备截获到 HTTP 请求时,返回一段特殊 JavaScript 代码,正常用户的浏览器会处理并正常跳转不影响使用,而攻击程序会攻击到空处。

DNS Flood 防御

DNS 攻击防御也有类似 HTTP 的防御手段,第一方案是缓存。其次是重发,可以是直接丢弃 DNS 报文导致 UDP 层面的请求重发,可以是返回特殊响应强制要求客户端使用 TCP 协议重发 DNS 查询请求。

特殊的,对于授权域 DNS 的保护,设备会在业务正常时期提取收到的 DNS 域名列表和 ISP DNS IP 列表备用,在攻击时,非此列表的请求一律丢弃,大幅降低性能压力。对于域名,实行同样的域名白名单机制,非白名单中的域名解析请求,做丢弃处理。

慢速连接攻击防

Slowloris 攻击防御比较简单,主要方案有两个。

第一个是统计每个 TCP 连接的时长并计算单位时间内通过的报文数量即可做精确识别。一个 TCP 连接中,HTTP 报文太少和报文太多都是不正常的,过少可能是慢速连接攻击,过多可能是使用 HTTP 1.1 协议进行的 HTTP Flood 攻击,在一个 TCP 连接中发送多个 HTTP 请求。

第二个是限制 HTTP 头部传输的最大许可时间。超过指定时间 HTTP Header 还没有传输完成,直接判定源 IP 地址为慢速连接攻击,中断连接并加入黑名单。

0个人收藏 收藏

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..

相关推荐

  • 安全扫描 Security Scanning

    安全扫描是什么

    安全扫描是一项通过自动化工具或手动方法对系统、网络和应用程序进行全面检查,以识别安全漏洞和威胁的重要安全实践。它有助于提高安全意识、发现漏洞、符合合规要求、降低安全风险,但也面临误报、扫描效率、漏洞修复和持续监控等挑战。
  • 安全事件响应 Security Incident Response

    安全事件响应是什么

    安全事件响应是组织在面对安全威胁时迅速采取措施的过程,包括准备、检测、响应、恢复和总结等阶段。其重要性在于最小化损失、降低风险、提高恢复能力,并符合法律合规要求。最佳实践包括建立安全团队、制定响应计划、定期演练、强化监控和持续改进。
  • 网络安全协议 Network Security Protocol

    网络安全协议是什么

    网络安全协议是确保网络通信安全的规范和技术,包括TLS、IPSec等,用于防止未授权访问、数据泄露、服务中断等威胁,保护隐私和数据完整性,建立信任。
  • ARP 欺骗 ARP Spoofing

    ARP欺骗是什么

    ARP欺骗是通过发送虚假ARP响应来欺骗网络设备,将数据流量重定向到攻击者处的恶意行为。它可能导致信息窃取、数据篡改和中间人攻击等安全威胁。防御方法包括使用ARP欺骗检测工具、配置静态ARP表、监控网络流量和加密通信。
  • IP 欺骗 IP Spoofing

    IP欺骗是什么

    IP欺骗是通过伪造IP地址的网络攻击方式,欺骗目标系统或网络,造成身份伪装、拒绝服务、信息窃取等安全风险。预防IP欺骗需加强网络监控、身份验证,使用加密通信,并更新维护安全设备,以减少安全漏洞。
  • SYN 洪水攻击 SYN Flood Attack

    SYN洪水攻击是什么

    SYN洪水攻击是一种利用TCP协议漏洞的DDoS攻击,通过发送大量伪造的SYN包使目标服务器资源耗尽,导致服务不可用。防范措施包括使用SYN Cookie技术、配置网络设备、部署IDS和IPS、以及使用DDoS防护服务。