摘要:提出了一種通用的基于概率包標記大規模DDoS攻擊源跟蹤方法#65377;相比其他方法,該方法通過引入包標記中繼算法既適用于直接類型的DDoS攻擊路徑恢復,也適用于反射類型的DDoS攻擊路徑恢復#65377;此外,通過巧妙運用方程組惟一解判定原理對路由IP實施編碼,運用基于一次性密鑰的HMAC方法對攻擊路徑的每條邊進行編碼和驗證,不需要ISP路由拓撲,便能夠在被攻擊點相應的解碼并高效可靠地恢復出真實的攻擊路徑#65377;分析表明,該方法能與IPv4協議較好地兼容,具有較好的抗干擾性#65377;
關鍵詞:分布式拒絕服務;攻擊源追蹤;概率包標記;收斂性;消息散列鑒別碼
中圖分類號:TP393.08文獻標志碼:A
文章編號:1001-3695(2007)10-0131-04
0引言
當前,DDoS攻擊已經成為Internet安全的一個嚴重威脅#65377;尤其隨著攻擊工具自動化程度越來越高,而破壞力和隱蔽性越來越強#65377;這種類型的攻擊已經成為政府#65380;商業實體等機構所面臨的最大威脅#65377;DDoS攻擊源追蹤技術作為DDoS防御手段的最后一道屏障,可以為更好地防范DDoS提供信息,也可以作為追蹤真實的攻擊者的重要信息基礎#65377;因此,如何在有限的資源環境下,成功地追蹤到DDoS攻擊源頭已經成為目前研究的熱點#65377;
DDoS的攻擊源追蹤方法主要分為鏈路測試技術[1,2]#65380;日志記錄技術[3]#65380;基于ICMP的技術[4]#65380;數據包標志技術[5,6]等幾大類#65377;表1對這些方法的優缺點進行了總結#65377;從表中可以看出,基于數據標志技術的攻擊源追蹤方法相比其他幾種方法體現出了較高的靈活性#65380;穩定性#65380;高效性和實用性#65377;盡管基于數據包標志技術的攻擊源追蹤方法需要適當地修改當前的IPv4協議,但根據Stoica和Zhang的研究成果[7],在現代的網絡流量中,僅有少于0.25%的流量存在分片,IP數據包頭中的數據分片處理用字段(共32 bit)可以用來存放數據包的標記信息,而基本不會影響到通信質量#65377;
基于數據包標記的DDoS攻擊源追蹤是一種非常有效的方法#65377;本文針對該方法進行了較為深入的研究,在充分考慮了安全性#65380;可靠性和性能的基礎上提出了一種通用的大規模DDoS攻擊源追蹤算法#65377;實驗證明,該方法具有較好的收斂性和抗干擾性,能夠較好地改善攻擊源的不確定性#65377;
1相關工作
DDoS攻擊可以粗略地分成兩大類,即直接攻擊(direct attacks)和反射攻擊(reflector attacks)#65377;直接攻擊是攻擊者通過傀儡機直接向被攻擊點發送大量攻擊分組;而反射攻擊則是一種間接攻擊,攻擊者利用中間節點(路由器和主機)進行攻擊#65377;大部分已有的研究成果僅針對直接攻擊類型的DDoS有效,而針對反射攻擊類型DDoS源追蹤的研究成果還相對較少#65377;
在針對直接攻擊類型的DDoS追蹤的研究成果方面,存在較多文獻#65377;Savage等人[5]提出了一種概率包標記的方法,其基本原理是:路由器對IP數據包進行標記,被攻擊方可以通過分析一定數量的這種數據包中的標記信息,完成攻擊路徑的有效重構#65377;由于該方法往往作為眾多研究人員的指導性方法,因此也被稱為基本包標記方法#65377;然而,在分布式拒絕服務中存在多攻擊路徑情況下的高誤警率和高計算復雜度使得這種方法的實用性較差#65377;Song等人[8]采用分段標記策略針對基本包標記方法的缺陷進行了較大改進,同時考慮了追蹤方法本身的安全性,分別提出了高級包標記方法和帶認證的標記方法,但這兩個方法同時又引入了追蹤方法對ISP網絡拓撲的依賴性,也造成了追蹤方法的實用性不高#65377;Snoeren等人[6]提出了一種使用審計技術的源路徑隔離引擎(SPIE),可以對單個分組進行源追蹤#65377;流量審計通過計算和存儲每個分組的32 bit哈希摘要來進行,而不需要存儲分組本身#65377;它一方面降低了存儲需求;另一方面又避免了SPIE被用于竊聽網絡流量的內容#65377;然而這種方法由于需要對每個數據包都進行追蹤,難免造成存儲的累積負擔較大,而且在大數據流量的情況下,由于散列值的碰撞會造成嚴重誤警#65377;Dean等人[9]提出了一種基于線性代數和編碼理論的代數標記追蹤方法,其缺點也在于無法有效地處理多攻擊路徑的問題#65377;
在針對反射攻擊類型的DDoS源追蹤的研究成果方面,Chen等人[10]在Dean提出的方法基礎上進行了較好的改進,解決了無法追蹤多攻擊路徑的問題;同時也提出針對反射攻擊類型的DDoS源追蹤的方法,但該方法沒有考慮到追蹤方法本身的安全性和抗干擾性#65377;
本文重點對反射類型DDoS攻擊源追蹤技術進行研究#65377;對于反射類型的DDoS攻擊,假設從攻擊點到反射點之間的距離 (經過的路由器數) 為len1,從反射點到被攻擊點的距離為len2#65377;顯然當len1為0時,反射類型的DDoS攻擊就蛻變成了直接類型的DDoS攻擊#65377;因此,從攻擊源追蹤角度考慮,直接類型的DDoS攻擊可以視為反射類型DDoS攻擊的特例#65377;由于反射點的存在造成了攻擊源頭到反射點這段路徑過程中標記的丟失,應用于直接類型DDoS攻擊源追蹤的方法往往只能追蹤到反射攻擊過程中的反射點,需要在反射點上引入高效的標記中繼機制,以便被攻擊點能夠獲取在攻擊點到反射點之間的數據包標記信息#65377;此外,為了有效排除正常訪問數據包標記和攻擊者通過控制路由器而偽造的數據包標記對恢復真實攻擊路徑所帶來的嚴重干擾,也需要引入相應驗證機制#65377;本文在Dean#65380;Chen和Snoeren等人的研究成果基礎上,以線性代數中方程組惟一解判定原理為理論基礎,采用基于散列消息鑒別碼的驗證方法,提出了一套既適用于直接類型的DDoS攻擊又適用于反射攻擊類型的DDoS攻擊源追蹤的解決方案#65377;仿真結果表明,該方法具有較高的安全性和抗干擾性#65377;
2基于認證的概率包標記攻擊源追蹤算法
本文的攻擊源跟蹤方法由三個算法組成,即路由器標記算法#65380;反射點標記中繼算法和攻擊對象攻擊路徑重構算法#65377;
為了獲取最優收斂性,要求各個節點標記數據包到達被攻擊點的概率相等,并且使這些概率的和為1#65377;也就是說需要使這些概率等于1/d,d為攻擊路徑的長度#65377;本文采用了與文獻[11]相同的動態概率來標記數據包,即1/i,i為路由器在攻擊路徑上的序號#65377;該序號可以通過推斷初始的TTL[12]和經過各個節點路由時的TTL來確定#65377;路由器標記算法如下:
Certified Packect Marking algorithm in router Ri
for each packet P{
confer the initial TTL,Let it be TI;
generate a random number u[0,1);
if (u<=1/TI-P.ttl))}
P.distance=0;
p.x=x;
Let the router′s IP be A0.A1.A2.A3
P.path=A0+A1x+A2x2+A3x3;
Provided that should be forwarded to router Rj according to routing protocol;
M=IP(Ri)+IP(Rj);
Calculate secret K using hash function f;
}
else if (P.distance>=0)P.distance=P.distance+1;
}
為了使攻擊源追蹤方法適用于反射類型的DDoS攻擊,本文在反射點中設計了中繼由攻擊點到反射點一段路徑中的標記信息的算法#65377;反射點標記中繼算法反映了算法的核心思想#65377;主要分為三個部分,即緩存標記#65380;中繼標記和自毀#65377;本文在緩存標記和中繼標記兩個部分,通過改進BloomFilter[13]過濾器的數據結構,較大程度減少了算法對反射點的內存效率影響,有效實現了標記信息的緩存和中繼#65377;同時,為了避免標記信息中繼過剩現象,設置了一個時間閾值T,在T時間內針對某IP倘若不存在反射情況,那么針對此IP的緩存標記信息將視為過時,并從緩存中刪除掉,通過自毀實現了此功能#65377;
為經過路由器的每個數據包均保存一份摘要值將耗費大量的存儲空間,bloomFilter過濾器作為記錄摘要的數據結構具有很高的空間效率#65377;該過濾器用獨立的一致的哈希函數為每個分組計算k個不同的數據包摘要,然后使用N位結果標志2N大小的位數組#65377;數組初始化為0,根據收到的數據包的計算結果把相應的標志改為1#65377;成員測試通過對數據包計算k個摘要來進行,如果其中有一個結果對應的位是0,那么表中就沒有該數據包;如果所有位都是1,那么該分組有很大可能保存在表中#65377;圖1是本文對bloomFilter過濾器數據結構改進后的結果#65377;采用了一個2 bit的數組,前一位數組與bloomFilter過濾器位數組相同,后一位數組用于存放對應IP的不同標記節點所組成線性鏈表的初始指針#65377;可見,通過應用改進bloomFilter過濾器數據結構,可以高效實現IP查找和最優的空間復雜度#65377;
反射點標記中繼算法如下:
Select n hash function present as hash0,hash1,hash2,hash3,hash4,hash5,hash6,hash7,…,hashn-1,hashn let H be a 2 bit array whose length is 2n, an n is the length of the hash function′s output;
let mark be the tuple(path ,distance, x,cert);
Storing marked information at Reflector Rf:
for each incoming request packet w{
if any FirstBit(H(hashi(w.source)))=0{
FirstBit(H(hashi(w.source)))=1,i∈{0,1,n-1,n};
add a timer in the linklist;
add a entry m in the linklist;
m.count=0;
m.mark=w.mark;
Else{
add a entry m in the linklist;
m.count=0;
m.mark=w.mark;
}
}
}
Relay operation at Reflector Rf:
for each outgoing reply packet w{
if all FirstBit(H(hashi(w.destination))=1{
select an entry m from the linklist whose count is the smallest and distance is the smallest;
write m.mark into w.mark;
increase m.count by 1;
reset Timer;
if (m.count==bound){
Destroy the linklist;
Destroy the 2 bit array;
//bound=ln(32)/(p(1-p)31)
}
}
}
Seltdestroy at Reflector Rf:
If timer=T and no entry is visited during T{
Destroy timer;
Destroy the linklist;
Destroy the 2 bit array;
}
在被攻擊點,本文將采集到的數據包標記分別按照distance#65380;x進行分組,得到分組集合{P0,P1,…,Pn-1,Pn }#65377;表2列出了Pi的分組結果,重構攻擊路徑時,由被攻擊點到最遠的攻擊點根據distance值按增量為1逐漸進行恢復#65377;當恢復距離為i 的路由時,取出Pi,并從Pi中分別尋找不同的x值的分組中具有相同cert值的條目,由此形成多個由4個方程組成的方程組#65377;由線性代數原理可知,這些方程組具有惟一解,這些解即為距離為i的路由的IP#65377;雖然已知距離為1,2,…,i-1的路由,但無法確定求解出的IP和哪些距離為i-1的路由IP形成攻擊路徑中的邊,因此需要采用HMAC算法根據距離為i的路由在標記邊時采用的密鑰重新計算消息散列鑒別碼,將該值與cert值進行比較#65377;若兩值相同,則表示求解出的IP和某個已知的距離為i-1的路由IP組成了攻擊路徑中的一條邊;若兩值不同,則表示求解出邊不是攻擊路徑中的邊#65377;為了正確地重復計算出消息散列鑒別碼,需要恢復出標記時路由采用的密鑰#65377;如前所述,采用生成密鑰的散列函數具有Kj-1=f(Kj)的特性,只要被攻擊點獲取收到標記時路由的密鑰值就能反推出以往任何時候的密鑰值,因此只要反復嘗試推導出的密鑰計算消息散列鑒別碼與cert比較即可#65377;至于如何獲取當前路由的密鑰,可以通過網站#65380;電話等任何安全通信渠道向ISP索取#65377;
被攻擊點路徑重構算法如下:
let G denote the reconstructed attack paths graph and be initialized with only one node V for the victim;
group all marked packets by distance;
group each set of packets by x values;
let Pd denote the set of packets marked with distance d(0≤d≤maxd)and Xk denote the packet subset of Pd with x=k;
let maxd be the distance from the furthest attacker to the victim;
for d=1 to maxd {
select a packet from every Xk of Pd which has the same cert value,let the value be H;
for each H{
get path0=A0+A1x0+A2x20+A3x30
path1=A0+A1x1+A2x21+A3x31
path2=A0+A1x2+A2x22+A3x32
path3=A0+A1x3+A2x23+A3x33
//x and pathi are from the selected packet
calculate A0,A1,A2,A3
find A0,A1,A2,A3 in the router list table,if there exists this IP,get is key(let the router be R′)
While(1)do{
Kj-1=f(Kj)
for every router R inserted into G in the last loop whose distance is d-1{
if HMAC (A0.A1.A2.A3+IP(R),Kj)==H{
insert R′ into G next to R;
else j=j-1;
}
quit this while loop;
}
}
}
3兼容與可靠性分析
3.1協議兼容性分析
重載的IP報文頭如圖2所示#65377;Distance域占用5 bit空間;node域占用14 bit空間;x占用2 bit空間;cert域占用10 bit空間#65377;這些空間占用了IP數據包頭中的分片相關信息共31 bit的信息,根據Stoica和Zhang的研究成果[7]可知,目前數據包分片在現有網絡通信過程中非常少見,因此將標記替代IP分片信息占用空間不會對基于TCP/IP的通信帶來影響,替代后的IP協議具有較好的兼容性#65377;
3.2抗干擾性分析
在本方案中,由于對邊標記進行了HMAC驗證,對攻擊路徑中的節點偽造標記方案具有較好的抗干擾性#65377;本文考慮了兩種類型數據包對正確恢復攻擊路徑的影響:a)正常訪問的數據包,這類數據包如果被打上標記,將對恢復攻擊路徑產生較為嚴重的干擾;b)攻擊者通過控制節點路由器偽造邊標記的數據包,這類數據包將在恢復路徑時,產生大量錯誤的路徑,無法正確恢復正確的攻擊路徑#65377;這兩種數據包對直接類型DDoS攻擊路徑的恢復均造成較為嚴重的干擾,而對于反射類型的DDoS攻擊路徑恢復而言僅有后一種數據包會產生干擾#65377;
本文算法采用了文獻[14]中基于TTL的數據包合法性判定的基本原理,較為有效地對被攻擊點接收到的數據包來源的真實性進行了判定,從而在一定程度上緩解了正常訪問數據包標記對攻擊路徑恢復造成的影響;而對于攻擊者控制了某個ISP路由情況,如圖3所示#65377;當B節點被攻擊者控制時,倘若攻擊者修改了node域的值,但由于攻擊者無法獲取B節點的密鑰,無法正確地修改HMAC值#65377;當偽造的邊標記到達被攻擊點后,恢復邊的兩個端點的IP地址經過HMAC計算后的結果無法與標記中的HMAC值相等#65377;算法能夠有效地將偽造的邊標記在恢復攻擊路徑時排除掉,避免了干擾#65377;
4結束語
本文提出的方案從各方面的性能來看,均比以往的一些包標記策略有較大改善#65377;當然,該方案也存在一些待完善的地方#65377;比如:如何設計一套更有效的密鑰生成的hash函數,更加精確地確定密鑰生成周期;如何避免使用14位二進制編碼不大于10 200 node值造成的編碼空間的浪費等,這都需要作進一步研究#65377;
參考文獻:
[1]
STONE R.Centertrack:An IP overlay network for tracking DoS floods[C]//Proc of the 9th USENIX Sec Symp.San Francisco,US:USENIX Association Press,2000:199-212.
[2]BURCH H,CHESWICK B.Tracing anonymous packets to their approximate source[C]//Proc of the14th Conf Systems Administration.Berkeley, CA:USENIX Assocition Press,2000:313-322.
[3]SAGER G.Security Fun with OCxmon and cflowd[K].[S.l.]:Internet-2 Working Group,1998.
[4]BELLOVIN S,LEECH M,TAYLOR T.ICMP traceback messages[R].[S.l.]:IETF,2001.
[5]SAVAGE S,WETHERALL D,KARLIN A,et al.Practical network support for IP traceback[C]//Proc of the ACM SIGCOMM Conf. Stockholm:ACM Press,2000:295-306.
[6]ALEX C S, CRAIG PARTRIDGE, LUIS A,et al.Timothy strayer,hashbased IP traceback[C]//Proc of the ACM SIGCOMM Conf.New York:ACM Press,2001:314.
[7]STOICA I,ZHANG H.Providing guaranteed services without per flow management[C]//Proc of ACM SIGCOMM.New York:ACM Press,1999:81-94.
[8]SONG D,PERRIG A.Advanced and authenticated marking schemes for IP traceback[C]//Proc of the IEEE INFOCOM.Anchorage,Alaska:[s.n.],2001:878-886.
[9] DEAN D,FRANKLIN M,STUBBLEFIELD A.An algebraic approach to IP traceback[J].ACM Transactions on Information and System Security,2002,5(2):119137.
[10]CHEN Zhaole,LEE M.An IP traceback technique against denial of service attacks[C]//Proc of 19th Annual Computer Security Application Conference (ACSAC ’03).[S.l.]:IEEE,2003:96114.
[11]李金明,王汝傳.DDoS攻擊源追蹤的一種新包標記方案研究[J].通信學報,2005,26(11):18-29.
[12]LIU J S,LEEZ J,CHUNG Y C.Efficient dynamic probabilistic packet marking for IP traceback[C]//Proc of 11th IEEE International Conference on Network.Australia:[s.n.],2003: 475-480.
[13]BURTON H B.Space/time tradeoffs in hash coding with allowable errors[J].Communications of the ACM,1970,13(7):422-426.
[14]JIN C,WANG H,SHIN K G.HopCount filtering:an effective defense against spoofed DDoS traffic[C]//Proc of the 10th ACM International Conference on Computer and Communications Security (CCS).Washington D C:ACM Press,2003:30-41.
“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”