摘要:根據由僵尸網絡引發的DDOS變種攻擊,提出了一種在基于攻擊源端的SYN Flood測試模型。部署在攻擊源的方法可以在檢測到DDOS攻擊后及時的過濾攻擊數據,最大程度的降低了攻擊對整個Internet帶來的危害。文中針對目前最新的DDOS變種攻擊特點,利用自適應閾值與計數式多狀態布魯姆過濾器相結合的方法對SYNACK網絡數據包進行過濾和監測,并對過濾器的更新機制進行了改進。分析表明,該方法可以有效地解決僵尸網絡帶來的問題。
關鍵字:分布式拒絕服務攻擊;布魯姆過濾器;攻擊源端檢測;SYN 淹沒攻擊
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2009)27-7627-03
A SYN Flood Variation Attack Detection Model in Botnet
SHI Nan
(College of Computer and Information Engineering, Henan University, Kaifeng 475001, China)
Abstract: According to the variation of DDOS which induced by Botnet, a source-end detection model are proposed. The source-end defense mechanism can filter attack data at once that reduces damages to Internet in some case. This paper presents an enhanced detection mechanism incorporating the Bloom Filter to handle these variations of TCP SYN attacks. It shows that this model overcomes the problem of the use of Botnet.
Key words: DDoS; bloom filter; source-end detection; SYN flood
自從首度現身于1999年,分布式拒絕服務(distributed denial of service, DDoS)攻擊已經成為威脅互聯網正常運行的主要因素,其中以TCP 同步湮沒(SYN Flood)最為普遍的[1]。SYN Flood 利用TCP連接建立時的“三步握手”協議的設計缺陷,通過發送大量的半連接請求來惡意消耗受害者的CPU和內存等重要資源,同時也限制了合法用戶的正常連接請求。攻擊通常使用偽造的源IP地址發動SYN Flood以躲避受害者以及其它一些入侵檢測系統的追蹤。
1 相關研究
當前比較常用的抵御SYN Flood的方法很多,其中Daniel J等人提出了SYN cookies[2],它是根據SYN請求所計算出的cookie值來為合法用戶分配真正的TCP連接,然而在攻擊發生時,cookie值的計算反而會急劇增加目標端的系統開銷。Jonathan L提出的SYN cache[3]利用一個全局的hash 表來代替backlog隊列存儲特定服務端口的半連接信息,使系統所能接受的半連接狀態的連接個數大大增加,但新的半連接請求會在hash表中覆蓋以往的信息,從而使真正的合法用戶不能建立完整的連接。以上兩種方法只能在某種程度上緩和攻擊的強度卻不能用于檢測SYN Flood攻擊。據統計DDoS攻擊主要是通過TCP/IP協議實現的,其中95%的是TCP攻擊[5],所以檢測攻擊的方法大多是基于TCP屬性的,為了尋找DDOS的攻擊特征,需要重點分析在攻擊發生時,網絡數據流的顯著變化。網絡數據是相當龐大的,在監聽網絡數據時不能存儲所有的信息,我們只關心DDOS與正常用戶相比有異常的數據部分。在Internet上很多基于TCP協議的數據流是對稱的,而在發生SYN Flood攻擊時這些對稱信息將會發生改變。很多檢測方法的基本思想就是利用這些不對稱的信息來判斷是否存在DDoS攻擊。比如基于SYN到達速率[4],基于SYN-SYN/ACK數據包的個數[6]以及基于SYN-FIN/RST的對稱關系的SYN Flood攻擊[7]。以上這些算法雖然在當時取得了很好的檢測性能,但是面對如今由僵尸網絡的引發的DDOS變種攻擊卻無能為力[8]。
TCP是一個面向連接的協議。通信雙方建立連接需要經過三次握手。正常TCP連接從建立到結束,存在著對稱關系。在正常的傳輸情況下SYN和SYN/ACK總是對稱出現的,客戶端向服務器端發出一個TCP請求時,客戶端同時也會收到一個SYN/ACK應答(如圖1a所示)。然而在攻擊發生時,由于攻擊方偽造了源IP地址,所以攻擊源端是不會收到這個SYN/ACK應答包的(如圖1b所示)。所以說伴隨著大量SYN請求的建立,發出的SYN數據包與收到的SYN/ACK應答包以及FIN/RST數據釋放包的個數差異會越來越大,也就發生了異常。
而在僵尸網絡中,多個僵尸主機所發送的DDoS變種攻擊會送虛假的SYN/ACK應答使這個僵尸網絡中各個攻擊源端發送的SYN與收到的SYN/ACK達到了數量上的平衡(圖2)。上述的攻擊特征也就失效了。針對這種DDOS變種攻擊,我們提出了一種新的基于改進的SYN-SYN/ACK的攻擊源端檢測模型。
2 基于布魯姆過濾器的計數器
布魯姆過濾器(Bloom Filter)[9]作為一種精簡的信息表示方案,既能表示集合,支持集合元素查詢,又能有效地過濾掉不屬于集合的元素。自算法首次提出以來,已廣泛應用于各種計算機系統中,用以表達龐大數據集合、提高查找效率。近年來它也被廣泛應用于網絡測量管理,資源路由,IDS等技術[10]。
標準布魯姆過濾器查詢算法具體描述如下,數據集合 S={s1,s2,…,sn}共有n個元素通過K個相互獨立的哈希函數 h1,h2,…,hk 映射到長度為m的位串向量 V 中,初始值為0。對于任意元素a∈S,V中對應的位置h1(a),h2(2),…,hk(a)置為1。
2.1計數式多狀態布魯姆過濾器
由于標準布魯姆過濾器中的V向量所有位被集合元素所共享,僅支持集合元素的插入操作,不支持元素的刪除。為了支持集合動態變化時元素刪除操作, Esta和Varghese提出計數式多狀態布魯姆過濾器[11]。如圖3所示, 為k個相互獨立的函數分別構建一個行表,其中函數hi對應第i行,1≤i≤k,每一行有m個計數器。當在Bloom Filter中插入一個元素a時,每行對應的hk(a)的值加1,刪除時減1。當查詢x元素在不在哈希表中時,檢測每一行的hi(x),1≤i≤k, 如果對應的位置都是非0 的,則說明該元素在表中。 這種方法可以更平均地將數據映射到哈希表中以減少由哈希數據沖突帶來的誤警。
詳細分析了僵尸網絡引發的DDOS變種攻擊后,我們發現在攻擊源端,攻擊者發出的SYN數據報的源IP地址(大多是隨機產生的)與收到的另一僵尸網絡發來的SYN/ACK虛假應答包的目的IP地址并不相同,如圖4所示。根據這一特性,就可以把真正的SYN/ACK應答包與虛假的應答包區分開。
該文使用2個計數式多狀態布魯姆過濾器BHOUTSYN和BHINSYN/ACK分別記錄在攻擊源端流出的SYN與流入SYN/ACK的數量。BHOUTSYN與BHINSYN/ACK采用相同的k個哈希函數h1,h2,…,hk以及m。當第一次握手的SYN包被檢測出來后,SYN包的源IP地址與目的IP地址會被提取出來并做異或運算記為xOUTSYN,xOUTSYN=syn.scr?茌syn.dest。并計算過濾器BHOUTSYN中k個哈希函數的值hi(xOUTSYN),1≤i≤k。在哈希表中被哈希函數所擊中的計數器加1.同樣的當第二次握手的SYN/ACK到達后,提取SYN/ACK包的源IP地址與目的IP地址,做異或操作后記為xINSYN/ACK,xINSYN/AC=syn/ack.scr?茌syn/ack.des。計算BHINSYN/ACK中k個哈希函數的值hi(xNSYN/ACK),1≤i≤k。對應位置的計數器加1。
在正常的TCP三步握手情況下,xOUTSYN與BHINSYN/ACK相同,由于兩個過濾器采用相同的k個哈希函數以及m,所以BHOUTSYN與BHINSYN/ACK所維護的哈希表中大于0的元素的位置分布是大致相同的,且兩表中hi(x)對應位置的計數器的值也是一樣的。當這兩個參數出現偏差且到達一定的門限時,我們就認定發生SYN Flood攻擊。
2.2 過濾器的更新機制
由于攻擊者發送SYN數據包時的偽源IP地址是隨機產生的,所以在很短時間內攻擊者就會發送大量的xOUTSYN相異的包,從而導致了哈希表中元素的碰撞。這時就需要引入一個更新機制來防止過濾器的溢出。為了使過濾器能夠根據網路中流量的多少自適應的更新,該文采用了RATIO標準[13]。定義r為計數式多狀態布魯姆過濾器中非0計數器所占的比率。當r大于一定的門限R(在該文中為80%)則表示過濾器溢出。這時兩個布魯姆過濾器就會同時自動更新。
2.2.1 三種情況下r的取值
在正常情況下,綜上所述BHOUTSYN中hi(x)的數據寫入率近似等于BHINSYN/ACK。
① 中的hi(x)且非0元素的位置分布近似相同,除此之外兩個哈希表對應位置存貯的數值近似相同。記r=min(rOUTSYN,rINSYN/ACK)。其中rOUTSYN為BHOUTSYN表中的非0計數器所占的比率。rINSYN/ACK為BHINSYN/ACK表中的非0計數器所占的比率。
② 在遭遇普通的SYN Flood中,BHOUTSYN中hi(x)的數據寫入率遠遠高于BHINSYN/ACK中的hi(x)。所以此時的r= rOUTSYN。
③ 在遭遇僵尸網絡引發的DDOS變種攻擊時,BHOUTSYN中hi(x)的數據寫入率近似等于BHINSYN/ACK中的hi(x)但兩個哈希表中大于0的元素的位置分布是完全不同的。所以此時的r=min(rOUTSYN,rINSYN/ACK)。
2.2.2 兩個過濾器內計數器的更新
當count[i]≧0時,把BHOUTSYN中hi(x)對應的值更新為count[i],即。BHOUTSYN.hi(x).vahue=count[i]
當count[i]<0時,把BHINSYN/ACK中hi(x)對應的值更新為∣count[i] ∣,即BHOUTSYN.hi(x).vahue=∣count[i]∣
其中count[i] =BHOUTSYN.hi(x).vahue-BHINSYN/ACK.hi(x).vahue 。
所以說,兩個過濾器在同時更新的下一刻,在不考慮網絡擁塞而導致的SYN或SYN/ACK丟失的情況下,BHOUTSYN.hi(x).vahue中存儲的是攻擊發生時,攻擊者發出的SYN攻擊包的數量。同理BHINSYN/ACK.hi(x).vahue的值為僵尸網絡向攻擊源發出的迷惑某些檢測系統的虛假SYN/ACK應答的數量。若在此時兩個哈希表中只要其中一個的非0計數器的數量仍然超過一個門限Rattack,則說明發生了攻擊。
3 基于自適應閾值算法的檢測模型
自適應檢測方法[12]屬于序列突變檢測的范疇,這類檢測方法的共同特征是:在一些時間間隔內實時采集流量數據以構建檢測統計量,并對其進行某種在線分析,以便及時發現流量中存在的異常情況。
初始化階段:
1) BHOUTSYN,BHINSYN/ACK中所有計數器歸零。
2) BHOUTSYN根據xOUTSYN接受源攻擊端發出的SYN包,BHINSYN/ACK根據xINSYN/ACK接受源攻擊端收到的SYN/ACK包,R=80%。
3) 時間段Δ后,計算r=min(rOUTSYN, rINSYN/ACK)
If r>R
更新BHOUTSYN,BHINSYN/ACK(在更新后會重新計算rOUTSYN,rINSYN/ACK)
4) R0attack = min(rOUTSYN, rINSYN/ACK)
檢測時段:在第n個時間段內
1)BHOUTSYN根據xOUTSYN接受源攻擊端發出的SYN包,rINSYN/ACK根據xINSYN/ACK 接受源攻擊端收到的SYN/ACK包
If r>R
更新BHOUTSYN,BHINSYN/ACK(在更新過程中會重新計算r)
If r>Rn-1attack
報警發現SYN Flood攻擊
Else
Rnattack =α Rn-1attack +(1-α)r
2) 開始第n+1次檢測
4 模型分析
在該文介紹的算法中,報警門限Rattack是根據監測網段的流量變化以及通信質量自適應變化的,這樣就避免了由于網絡擁塞而造成的正常SYN與SYN/ACK數量的不均衡現象。由于過濾器的更新不是隨的時間周期變化而是基于流量變化的,并且報警信息產生僅僅依靠攻擊SYN數據包與虛假SYN/ACK,所以說本算法可以更好的區分正常流量的突然增大與異常攻擊流量的區別,從而解決了SYN Flood異常檢測的難點。
該文方法的特殊性在于:1) 將網絡協議的行為特性與流量分析相結合;2) 根據對檢測統計量統計特性的在線估計進行異常檢測;3) 根據檢測結果自動調整檢測門限,增強了檢測方法對網絡流量變化的自適應性。
5 結束語
攻擊源端的TCP SYN攻擊防范的最大好處是可以及時發現惡意數據,在其危害整個 Internet 之前將其過濾。而在僵尸網絡中,虛假源IP地址的SYN包與偽造的SYN/ACK 包充斥著整個網絡,針對這種DDoS的變種攻擊本文提出利用自適應閾值與計數式多狀態布魯姆過濾器相結合的方法可以在分布規律發生變化時,實時檢測到相關的變化點,為入侵防范提供了依據。
參考文獻:
[1] Arbor Networks, Worldwide ISP Security Report,[EB/OL].(2005-09)[2009-04]. http://www.arbornetworks.com/dmdocuments/Arbor_Worldwide_ISP_Security_Report.pdf
[2] Daniel J. Bernstein and Eric Shenk, SYN cookie,[EB].(1996). http://cr.yp.to/syncookies.html
[3] Jonathan Lemon , Resisting SYN flood Dos attacks with a SYN cache[C]//Proc of BSD Conference. Berkeley: 2002, USENIX Association, 2002:13-20.
[4] Yuichi Ohsita, et al. Detecting Distributed Denial-of-Service Attacks by Analyzing TCP SYN Packets Statistically[C]//Proc IEEE Transaction on Communications, Oct. 2006:2868-2877.
[5] David Moore. Inferring Internet Denial-of-Service Activity [J], ACM Transactions on Computer System (TOCS), May 2006, 24(2):115-139.
[6] Haining Wang. SYN-dog: Sniffing SYN Flooding Sources[C]//Proc of 22nd International Conference on Distributed Computing Systems, Jul. 2002: 421- 428
[7] Haining Wang. Detecting SYN flooding attacks[C], Proc of IEEE INFOCOM. New York: [s. n.], Jun 2002:1530-1539.
[8] Vrizlynn L, Thing L. A Survey of Bots Used for Distributed Denial of Service Attacks[C] //Proc of IFIP International Information Security Conference (SEC), May 2007.
[9] Bloom B. Space/Time trade-offs in hash coding with allowable errors [J]. Communications of the ACM, 1970, 13(7):422?426.
[10] Xie K, Wen J G, Zhang D F, et al, Bloom filter query algorithm[J]. Journal of Software, 2009, 20(1):96?108.
[11] Estan C, Varghese G.New directions in traffic measurement and accounting [C] //Proc of Sigcomm’02, August 2002.
[12] Vasilios A. Siris and Fotini Papagalou, Application of anomaly detection algorithms for detecting SYN ?ooding attacks[J]. Computer Communication, 2006, 29(9):1433-1442.
[13] Chabchoub Y, Fricker C, Guillemin F. Adaptive algorithms for identifying largeows in IP traffic[EB/OL].(2009-01-30)[2009-04-15]. http://hal.inria.fr/docs/00/35/73/43/PDF/Hal.pdf.