DoS攻击存在很多经典的种类,从理清技术发展脉络的角度,下面简单介绍了他们的名称、原理和基本的攻击方式。
; [) {, J/ U) P3 B" b# H& n) T: i6 y) f7 z+ N$ U- @- {* P
1.2.1死亡之 ping5 m$ v+ ?1 ~; v) X! D/ H* L! [
U6 W0 _% ] x t" Y* x6 [
“ping of death”又称“死亡之 ping”,之所以第一个首先列举它,是因为很久以前,被网络媒体夸大的轰轰烈烈的“中美黑客大战”上,主要的攻击方式就是他。其实死亡之ping是利用的ICMP。现在微软系列操作系统中的命令行中都有ping存在,ping程序实际就是使用的ICMP。本来在正常的情况下,TCP/IP的RFC文档中对包的最大尺寸都有严格限制规定,许多操作系统的TCP/IP协议栈都规定ICMP 包大小为64KB,且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区。但是“Ping of Death”故意产生畸形的测试Ping包,加载的尺寸超过64KB的上限,使未采取保护措施的网络系统出现内存分配错误,导致TCP/IP协议栈崩溃,最终达到目标拒绝服务的目的。
: q7 O2 e! y6 e- ?; I! l, X P1 j' N) \: x6 N: \+ A
1.2.2泪滴+ o2 Q: |5 r6 I4 F# N! i
- T$ P, ^ ]& w% c! E. v* c! K; o( F “teardrop”,又称“泪滴”:IP数据包在网络传递时,数据包可以分成更小的片段。攻击者可以通过发送两段(或者更多)数据包来实现TearDrop攻击。第一个包的偏移量为0,长度为N,第二个包的偏移量小于N。为了合并这些数据段,TCP/IP堆栈会分配超乎寻常的巨大资源,从而造成系统资源的缺乏甚至机器的重新启动,达到攻击者需要的拒绝服务的目的。+ D x3 d" S5 N* B# u D
g1 s" J% [6 ^5 ~8 A 1.2.3 UDP洪水
6 V; Z2 g% F# `/ U" Z$ y2 O' F( P1 C! V/ ]: a& D/ ~, \# t
“UDP flood”又称“UDP洪水”:UDP flood最开始一般应用在针对UNIX类的服务器上,攻击者通过伪造与某一主机的Chargen服务之间的一次的 UDP 连接,回复地址指向开着Echo 服务的一台主机,通过将Chargen 和 Echo服务互指,来回传送毫无用处且占满带宽的垃圾数据,在两台主机之间生成足够多的无用数据流,这一拒绝服务攻击飞快地导致网络可用带宽耗尽。
. q8 g) c2 }" d5 [; c `
$ m7 v! f8 ~ W2 M% `9 C3 Q. W7 K 1.2.4 SYN洪水
$ J: S/ }5 b- J% u" v8 w* t
9 c5 l/ n, M2 X0 Y% P$ b% e “SYN flood”又称“SYN洪水”:当用户进行一次标准的TCP(Transmission Control Protocol)连接时,会有一个三次握手的过程。首先请求服务方发送一个SYN消息,服务方收到SYN后,会向请求方回送一个SYN-ACK表示确认,当请求方收到SYN-ACK后,再次向服务方发送一个ACK消息,这样下来一次TCP连接就建立成功了。$ M3 e* o2 A3 @" b
* o: q- h* b- B0 }8 m) d
“SYN Flood”专门针对TCP协议栈在两台主机间初始化连接握手的过程进行DoS攻击,它在实现过程中只进行前2个步骤:当服务方收到请求方的SYN-ACK确认消息后,请求方由于采用源地址欺骗等手段使得服务方收不到ACK回应,于是服务方会在一定时间处于等待接收请求方ACK消息的状态。而对于某台服务器来说,可用的TCP连接是有限的,因为他们只有有限的内存缓冲区用于创建连接,如果这一缓冲区充满了虚假连接的初始信息,该服务器就会对接下来的连接停止响应,直至缓冲区里的连接企图超时。如果恶意攻击方快速连续地发送此类连接请求,该服务器可用的TCP连接队列将很快被阻塞,系统可用资源急剧减少,网络可用带宽迅速缩小,长此下去,除了少数幸运用户的请求可以插在大量虚假请求间得到应答外,服务器将无法向用户提供正常的合法服务。9 l$ {" E' a5 d
( B7 ~2 r( q9 j9 y" y: e
这个攻击方式到今天都有很多攻击者使用,后续的章节中我们将对此攻击方式进行详细分析。
: U8 [+ E. @: F) \9 }& n R4 W+ \
' Y1 b# |& Z2 q+ v8 O5 k; p, a 1.2.5 IP欺骗攻击; F+ K, u! ?! g, k# V5 N
; Q2 B+ k8 W& _ 这种攻击利用TCP协议栈的RST来实现,使用IP欺骗迫使服务器把合法用户的连接复位,影响合法用户的连接。假设现在有一个合法用户(123. 123. 123. 123)已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP为123. 123. 123. 123,并向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后,认为从123. 123. 123. 123发送的连接有错误,就会清空缓冲区中已建立好的连接。这时,合法用户123. 123. 123. 123再发送合法数据,服务器就已经没有这样的连接了,该用户就被拒绝服务而只能重新开始建立新的连接。5 e9 s* x* _' ~, _5 C
3 _8 x) I ]4 Y5 R$ N) U2 c/ |5 ^
0 k% p% m' Z6 w
2 l6 y6 e: {( q2 ]8 q- D V5 p) n |