第三章 DDoS攻擊原理及防範
分布式拒絕服務攻擊(DDoS)是目前黑客經常采用而難以防範的攻擊手段。本文從概念開始詳細介紹了這種攻擊方式,著重描述了黑客是如何組織並發起的DDoS攻擊,結合其中的SynFlood實例,您可以對DDoS攻擊有一個更形象的了解。最後作者結合自己的經驗與國內網絡安全的現況探討了一些防禦DDoS的實際手段。
DDoS攻擊概念
DoS的攻擊方式有很多種,最基本的DoS攻擊就是利用合理的服務請求來占用過多的服務資源,從而使合法用戶無法得到服務的響應。
DDoS攻擊手段是在傳統的DoS攻擊基礎之上產生的一類攻擊方式。單一的DoS攻擊一般是采用一對一方式的,當攻擊目標CPU速度低、內存小或者網絡帶寬小等等各項性能指標不高它的效果是明顯的。隨著計算機與網絡技術的發展,計算機的處理能力迅速增長,內存大大增加,同時也出現了千兆級別的網絡,這使得DoS攻擊的困難程度加大了-目標對惡意攻擊包的"消化能力"加強了不少,例如你的攻擊軟件每秒鍾可以發送3,000個攻擊包,但我的主機與網絡帶寬每秒鍾可以處理10,000個攻擊包,這樣一來攻擊就不會產生什麼效果。
這時侯分布式的拒絕服務攻擊手段(DDoS)就應運而生了。你理解了DoS攻擊的話,它的原理就很簡單。如果說計算機與網絡的處理能力加大了10倍,用一台攻擊機來攻擊不再能起作用的話,攻擊者使用10台攻擊機同時攻擊呢?用100台呢?DDoS就是利用更多的傀儡機來發起進攻,以比從前更大的規模來進攻受害者。
高速廣泛連接的網絡給大家帶來了方便,也為DDoS攻擊創造了極為有利的條件。在低速網絡時代時,黑客占領攻擊用的傀儡機時,總是會優先考慮離目標網絡距離近的機器,因為經過路由器的跳數少,效果好。而現在電信骨幹節點之間的連接都是以G為級別的,大城市之間更可以達到2.5G的連接,這使得攻擊可以從更遠的地方或者其他城市發起,攻擊者的傀儡機位置可以在分布在更大的範圍,選擇起來更靈活了。
被DDoS攻擊時的現象
被攻擊主機上有大量等待的TCP連接
網絡中充斥著大量的無用的數據包,源地址為假
製造高流量無用數據,造成網絡擁塞,使受害主機無法正常和外界通訊
利用受害主機提供的服務或傳輸協議上的缺陷,反複高速的發出特定的服務請求,使受害主機無法及時處理所有正常請求
嚴重時會造成係統死機
攻擊運行原理
如圖一,一個比較完善的DDoS攻擊體係分成四大部分,先來看一下最重要的第2和第3部分:它們分別用做控製和實際發起攻擊。請注意控製機與攻擊機的區別,對第4部分的受害者來說,DDoS的實際攻擊包是從第3部分攻擊傀儡機上發出的,第2部分的控製機隻發布命令而不參與實際的攻擊。對第2和第3部分計算機,黑客有控製權或者是部分的控製權,並把相應的DDoS程序上傳到這些平台上,這些程序與正常的程序一樣運行並等待來自黑客的指令,通常它還會利用各種手段隱藏自己不被別人發現。在平時,這些傀儡機器並沒有什麼異常,隻是一旦黑客連接到它們進行控製,並發出指令的時候,攻擊傀儡機就成為害人者去發起攻擊了。
有的朋友也許會問道:"為什麼黑客不直接去控製攻擊傀儡機,而要從控製傀儡機上轉一下呢?"。這就是導致DDoS攻擊難以追查的原因之一了。做為攻擊者的角度來說,肯定不願意被捉到(我在小時候向別人家的雞窩扔石頭的時候也曉得在第一時間逃掉,),而攻擊者使用的傀儡機越多,他實際上提供給受害者的分析依據就越多。在占領一台機器後,高水平的攻擊者會首先做兩件事:1.考慮如何留好後門(我以後還要回來的哦)!2.如何清理日誌。這就是擦掉腳印,不讓自己做的事被別人查覺到。比較不敬業的黑客會不管三七二十一把日誌全都刪掉,但這樣的話網管員發現日誌都沒了就會知道有人幹了壞事了,頂多無法再從日誌發現是誰幹的而已。相反,真正的好手會挑有關自己的日誌項目刪掉,讓人看不到異常的情況。這樣可以長時間地利用傀儡機。
但是在第3部分攻擊傀儡機上清理日誌實在是一項龐大的工程,即使在有很好的日誌清理工具的幫助下,黑客也是對這個任務很頭痛的。這就導致了有些攻擊機弄得不是很幹淨,通過它上麵的線索找到了控製它的上一級計算機,這上級的計算機如果是黑客自己的機器,那麼他就會被揪出來了。但如果這是控製用的傀儡機的話,黑客自身還是安全的。控製傀儡機的數目相對很少,一般一台就可以控製幾十台攻擊機,清理一台計算機的日誌對黑客來講就輕鬆多了,這樣從控製機再找到黑客的可能性也大大降低。
黑客是如何組織一次DDoS攻擊的?
這裏用"組織"這個詞,是因為DDoS並不象入侵一台主機那樣簡單。一般來說,黑客進行DDoS攻擊時會經過這樣的步驟:
1.搜集了解目標的情況
下列情況是黑客非常關心的情報:
被攻擊目標主機數目、地址情況
目標主機的配置、性能
目標的帶寬
對於DDoS攻擊者來說,攻擊互聯網上的某個站點,如http://www.WWWW.com,有一個重點就是確定到底有多少台主機在支持這個站點,一個大的網站可能有很多台主機利用負載均衡技術提供同一個網站的www服務。以yahoo為例,一般會有下列地址都是提供http://www.WWW.com服務的:
66.218.71.87
66.218.71.88
66.218.71.89
66.218.71.80
66.218.71.81
66.218.71.83
66.218.71.84
66.218.71.86
如果要進行DDoS攻擊的話,應該攻擊哪一個地址呢?使66.218.71.87這台機器癱掉,但其他的主機還是能向外提供www服務,所以想讓別人訪問不到http://www.WWW.com的話,要所有這些IP地址的機器都癱掉才行。在實際的應用中,一個IP地址往往還代表著數台機器:網站維護者使用了四層或七層交換機來做負載均衡,把對一個IP地址的訪問以特定的算法分配到下屬的每個主機上去。這時對於DDoS攻擊者來說情況就更複雜了,他麵對的任務可能是讓幾十台主機的服務都不正常。
所以說事先搜集情報對DDoS攻擊者來說是非常重要的,這關係到使用多少台傀儡機才能達到效果的問題。簡單地考慮一下,在相同的條件下,攻擊同一站點的2台主機需要2台傀儡機的話,攻擊5台主機可能就需要5台以上的傀儡機。有人說做攻擊的傀儡機越多越好,不管你有多少台主機我都用盡量多的傀儡機來攻就是了,反正傀儡機超過了時候效果更好。
但在實際過程中,有很多黑客並不進行情報的搜集而直接進行DDoS的攻擊,這時候攻擊的盲目性就很大了,效果如何也要靠運氣。其實做黑客也象網管員一樣,是不能偷懶的。一件事做得好與壞,態度最重要,水平還在其次。
2.占領傀儡機
黑客最感興趣的是有下列情況的主機:
鏈路狀態好的主機
性能好的主機
安全管理水平差的主機
這一部分實際上是使用了另一大類的攻擊手段:利用形攻擊。這是和DDoS並列的攻擊方式。簡單地說,就是占領和控製被攻擊的主機。取得最高的管理權限,或者至少得到一個有權限完成DDoS攻擊任務的帳號。對於一個DDoS攻擊者來說,準備好一定數量的傀儡機是一個必要的條件,下麵說一下他是如何攻擊並占領它們的。
首先,黑客做的工作一般是掃描,隨機地或者是有針對性地利用掃描器去發現互聯網上那些有漏洞的機器,象程序的溢出漏洞、cgi、Unicode、ftp、數據庫漏洞...(簡直舉不勝舉啊),都是黑客希望看到的掃描結果。隨後就是嚐試入侵了,具體的手段就不在這裏多說了,感興趣的話網上有很多關於這些內容的文章。
總之黑客現在占領了一台傀儡機了!然後他做什麼呢?除了上麵說過留後門擦腳印這些基本工作之外,他會把DDoS攻擊用的程序上載過去,一般是利用ftp。在攻擊機上,會有一個DDoS的發包程序,黑客就是利用它來向受害目標發送惡意攻擊包的。
3.實際攻擊
經過前2個階段的精心準備之後,黑客就開始瞄準目標準備發射了。前麵的準備做得好的話,實際攻擊過程反而是比較簡單的。就象圖示裏的那樣,黑客登錄到做為控製台的傀儡機,向所有的攻擊機發出命令:"預備~,瞄準~,開火!"。這時候埋伏在攻擊機中的DDoS攻擊程序就會響應控製台的命令,一起向受害主機以高速度發送大量的數據包,導致它死機或是無法響應正常的請求。黑客一般會以遠遠超出受害方處理能力的速度進行攻擊,他們不會"憐香惜玉"。