茍峰
(四川大學計算機學院,成都610065)
拒絕服務(Denial of Service,DoS)攻擊主要以網絡帶寬、系統資源、協議漏洞為目標,致使目標機器無法為合法用戶提供服務。其中最為常見的是在傳輸層利用TCP/IP 協議的漏洞發起DoS 攻擊,如TCP Flood、ACK Flood、ICMP Echo 以及Smurf 等多種攻擊手段,其核心是利用TCP 的關鍵字段導致服務器大量資源被惡意占用。隨著計算機硬件、網絡基礎設施以及網絡防御技術的發展,單一的DoS 攻擊已經難以達到預期效果,進而演化出了分布式拒絕服務(Distributed Denial of Service,DDoS)攻擊,攻擊者通過木馬病毒等手段控制大量肉雞,利用反射、重放、IP 欺騙等技術向攻擊目標發送Gb 級甚至Tb 級的攻擊流量,從而致使目標癱瘓或者宕機。2018 年3 月1 日,知名代碼托管網站GitHub 遭遇了有史以來最嚴重的Memcached DDoS 網絡攻擊,峰值流量達到了1.7Tbps[1]。盡管如此,傳統拒絕服務攻擊始終是以高速率的持續泛洪流量為特點,因此也易于檢測與防范。2001 年,美國Asta Networks 公司在Internet2 Abilene 骨干網絡上檢測到一種新的DoS 攻擊手段,與傳統的高速率、泛洪式DoS 攻擊不同,該DoS 攻擊方式具有流量發送速率低、隱蔽性強、具有突發性以及造成危害大的特點,融入正常流量中難以被傳統的DoS 攻擊檢測機制發現。這種低速率DoS(Low-rate DoS,LDoS)攻擊被Kuzmanovic 等人稱為“地鼠攻擊”(Shrew Attacks)[2]。近來研究者已將低速率拒絕服務攻擊以系統自適應機制為目標的思路應用到了應用層,提出了針對應用層的低速率拒絕服務攻擊(Low-Rate DoS Attack against Application Servers,LoRDAS)。
Kuzmanovic 等人率先開展了對LDoS 攻擊的研究,該攻擊主要針對TCP 協議的擁塞控制機制的不足,通過發送惡意的低速率周期性高突發攻擊流量,導致網絡傳輸性能極大降低,一個簡單的LDoS 攻擊模型如圖1 所示。該模型可用三元組(T,τ,δ)來表示,其中,T 為攻擊周期,表示連續兩次攻擊之間的間隔;τ 為攻擊持續時間,表示周期內攻擊持續的時間長度;δ 為攻擊強度,表示LDoS 攻擊流的速率。

圖1 LDoS攻擊模型
自該攻擊方式出現以來,學術界主要重點還是在應用層上進行攻擊檢測與防御的研究。Guirguis 等人[3]提出了針對網絡資源自適應瞬態的降質(Reduction of Quality,RoQ)攻擊,通過系統瞬態發生變化時發起攻擊,致使系統始終處于不穩定的狀態,并且證明了應用隊列主動管理(Active Management Queue)技術也難以緩解該攻擊帶來的影響。隨后,Guirguis 等人又針對終端系統[4]研究了在Web 服務器上利用接收控制器觀察RoQ 攻擊對HTTP 請求的效能影響,實驗證明攻擊者針對目標服務器只需要很小的代價便能產生極大的攻擊效果。Gabriel 等人[5]首先針對迭代服務器發起LDoS攻擊,通過預測服務器對客戶請求響應的瞬時發送攻擊請求,從而使得攻擊請求占滿服務器的待處理請求緩存。王傳安等人[6]利用馬爾可夫鏈構造了針對SIP服務器的LDoS 生死鏈攻擊模型,通過構造特定的LDoS 攻擊數據包,實現在低速率條件下使得SIP 服務器緩存服務隊列的位置盡可能被攻擊請求占據,從而拒絕合法用戶的請求。趙陽[7]對基于HTTP 協議的LDoS 攻擊進行了分析,將傳統的三元組改進為五元組攻擊模型。Park 等人[8]針對HTTP/1.1 服務器提出一種攻擊策略,三次握手之后客戶端發出一個GET 請求,然后立即告知服務端自己的接收窗口大小為0,造成服務端對這條連接一直等待。在涉及HTTP 協議的攻擊方面,主要還是針對的HTTP/1.1 版本。Tripathi 等人[9]提出了針對HTTP/2 的低速率拒絕服務攻擊,并提出相比與HTTP/1.1,HTTP/2 有更多的攻擊面。
根據理論,實現針對應用層的拒絕服務攻擊的核心在于讓攻擊者的惡意請求始終占據服務器緩存服務隊列的位置,在服務器處理完一個請求后的空閑位置立即被惡意請求占據。應用服務器模型如圖2 所示。

圖2 應用層服務器模型
在LoRDAS 攻擊場景中,主要考慮應用層服務器的以下兩個模塊:①服務器端緩存客戶端到達請求的服務隊列;②負責處理客戶端請求的服務模塊。在實際應用條件中,緩存客戶請求的服務隊列長度是有限的,一旦隊列進入滿狀態,那么將拒絕任何新到達的請求,也就產生圖2 中的溢出丟棄事件。服務模塊可按照某種隊列管理方式(如FIFO、LIFO)來獲取服務隊列中的請求,每處理完一個請求,便向對應的客戶端發送一個處理響應。服務模塊繼續處理新的請求,同時服務隊列也會產生一個空閑響應,接收新到達的請求入隊。
令ts表示服務模塊處理一個請求所耗費的服務時間,根據文獻[10],將相似請求的服務時間看作一個均值為-、方差為TS_var隨機變量TS,即:

令tI表示一個請求從到達服務隊列至服務模塊處理完成產生處理響應這整個過程在系統內的時間。為了簡化處理,考慮服務器僅有一個隊列長度為N 的服務隊列和一個服務模塊,假設服務隊列包含N-1 個請求,且服務模塊對每一個請求的處理時間均為ts,那么可以得到tI范圍為:

LoRDAS 攻擊的目標在于使服務隊列僅包含來自攻擊者的請求流量,讓服務隊列始終處于滿狀態,從而拒絕合法請求。傳統DoS 攻擊實現這一目標是通過發送泛洪請求,而LoRDAS 攻擊則通過估計服務模塊處理完一個請求的時間ts[10],在這個時間附近周期性發送惡意請求,達到一種低速率實現攻擊的目的。
考慮如圖3 所示的攻擊場景。它是一個C/S 架構的網絡模型,其中迭代服務器將會接收來自攻擊者和合法用戶的流量。根據應用服務器模型,到達的請求將會進屋服務器的特定服務隊列。在該場景中,合法用戶的請求服從泊松分布,即合法用戶請求到達的間隔時間ta的概率分布為:

其中λ 表示用戶請求的平均到達速率,由于這里考慮單一的迭代服務器,用戶請求均在服務器端聚合,假設用戶數為n,第i 位用戶的到達速率為λi,則:

對與攻擊者,如果數量過多,那么將退化為傳統的DDoS 攻擊,因此應用一至兩個攻擊者來模擬LoRDAS與分布式的LoRDAS。

圖3 攻擊場景
處理響應的產生時間依賴與服務模塊的服務處理時間TS,攻擊者要實現在服務器每產生一個處理響應就立刻入隊一個惡意請求,需要能夠預測出處理響應的發生時間,這樣才能使攻擊請求的到達與處理響應的產生實現同步。除了對服務處理時間TS的預估,還要考慮鏈路的RTT,這同樣影響到攻擊的同步效果。攻擊請求占據空閑隊列的攻擊細節如圖4 所示。

圖4 LoRDAS攻擊細節模型
在圖4 中,虛線部分為LoRDAS 攻擊的補充機制,這是為了應對攻擊者的突發請求沒有成功搶占服務隊列空閑位置的情況。當攻擊者收到一個來自服務器的處理響應,即斷開一個連接的情況下,攻擊者立刻回復一個攻擊請求作為響應。當攻擊者預估到服務器隊列的空閑時刻,立即發起三次攻擊請求來占據服務器隊列緩存。由公式(1)知,每個請求的服務時間ts是服從正態分布的,故在圖4 中發起攻擊的時刻與隊列空閑預估的時刻是有差異的。
上述LoRDAS 攻擊成功的關鍵在于其利用了服務器工作中的兩個因素:①存在某種確定的模式,如固定的時長,這也是攻擊者能夠估計隊列空閑時刻的基礎;②服務器處理完請求后的處理響應與服務隊列的隊列空閑事件幾乎在同時時間發生,這使得攻擊者成功預估到服務器的響應時刻后就能立刻發起惡意流量占據服務隊列。因此,服務端應對該攻擊可以從改變上述行為來對抗攻擊者的時間預估。并且,防御策略至少需要滿足一下兩個條件:
(1)盡可能的降低攻擊造成的影響;
(2)對合法用戶的影響要盡量的小。
基于此,可以采用隨機化服務時間(Random Service Rime,RST)的策略,旨在降低服務器請求處理行為的可預測性,同時可以消除存在的確定性操作模式。通過隨機化原有固定時間模式的機制來減少LoRDAS攻擊對服務器的攻擊面,使得攻擊者更加難以預測服務器產生請求處理響應的時刻。服務器應用RST 防御LoRDAS 的過程如圖5 所示。

圖5 應用RST之后的LoRDAS攻擊細節模型
應用服務器中RST 的程序代碼實現如下所示:
Web Server with RST program
1. while service module idle:
2. take a request from the service queue;
3. tsseconds later,finish process a request;
4. Extra delay:
6. produce deal response&idle response
在服務器應用RST 后針對LoRDAS 的攻擊有兩個明顯的效果:①處理響應發生的時間發生了偏移,不再易受攻擊者控制;②與攻擊者初始預測到的時間相比,處理響應的產生時間分布有了額外的方差。從總體上說RST 降低了攻擊方的攻擊效果。
本文分析了DoS 攻擊的新類型——針對應用層的低速率拒絕服務攻擊LoRDAS。LoRDAS 攻擊以應用層服務器為目標,通過發送較低速率的攻擊請求實現拒絕合法用戶請求服務的目的。本文以最基本的迭代服務器為基礎建立應用服務器處理模型,針對LoRDAS攻擊進行了分析,攻擊者通過預測服務器產生請求處理響應的時刻發起惡意請求,從而是的服務器的緩存隊列被惡意請求占滿,達到拒絕合法用戶請求入隊的目的。同時對這種通過預測處理響應時刻的攻擊提出了隨機化服務時間RST 的防御機制。