剖析DDoS攻擊原理
來源:易賢網 閱讀:2046 次 日期:2016-08-03 14:33:46
溫馨提示:易賢網小編為您整理了“剖析DDoS攻擊原理”,方便廣大網友查閱!

相比常規(guī)的滲透測試攻擊來說,DDoS攻擊比前者更具危害性,為什么這么說呢?因為發(fā)動一次大規(guī)模的DDoS攻擊只需要擁有一定數量的僵尸網絡即可,而完成一個滲透測試是需要長期及一定的技術水平才可以。而實施后者(DDoS)的門檻相對前者來說低了許多,而造成的危害后果卻不亞于前者,可以說DDoS攻擊是目前最強大、最難防御的攻擊之一。本文由阿里巴巴的高級專家編寫,帶領大家認識及了解這種攻擊的防御辦法。

1. DDoS攻擊基礎

DDoS(Distributed Denial of service,分布式拒絕服務)攻擊的主要目的是讓指定目標無法提供正常服務,甚至從互聯網上消失,是目前最強大、最難防御的攻擊之一。

按照發(fā)起的方式,DDoS可以簡單分為三類:第一類以力取勝,海量數據包從互聯網的各個角落蜂擁而來,堵塞IDC入口,讓各種強大的硬件防御系統(tǒng)、快速高效的應急流程而無用武之地,這種類型的攻擊典型代表是ICMP Flood和UDP Flood,現在已不常見;第二類以巧取勝,靈動難以察覺,每隔幾分鐘發(fā)一個包甚至只需要一個包,就可以讓豪華配置的服務器不再響應。這類攻擊主要是利用協(xié)議或者軟件的漏洞發(fā)起,如Slowloris攻擊,Hash沖突攻擊等,需要特定環(huán)境機緣巧合下才能出現;第三類是上述兩種的混合,輕靈渾厚兼而有之,既利用了協(xié)議、系統(tǒng)的缺陷,又具備了海量的流量,如SYN Flood攻擊,DNS Query Flood攻擊,是當前的主流攻擊方式。

下文將一一描述這些最常見、最具代表性攻擊方式,并介紹他們的防御方案。

1.1 SYN Flood

SYN Flood是互聯網上最經典的DDoS攻擊方式之一,最早出現于1999年左右,雅虎是當時最著名的受害者。SYN Flood攻擊利用了TCP三次握手的缺陷,能夠以較小代價使目標服務器無法響應,且難以追查。

標準的TCP三次握手過程如下:

客戶端發(fā)送一個包含SYN標志的TCP報文,SYN即同步(Synchronize),同步報文會指明客戶端使用的端口以及TCP連接的初始序號;

服務器在收到客戶端的SYN報文后,將返回一個SYN ACK(即確認Acknowledgement)的報文,表示客戶端的請求被接受,同時TCP初始序號自動加一。

客戶端也返回一個確認報文ACK給服務器端,同樣TCP序列號被加一。

經過這三步,TCP連接就建立完成。TCP協(xié)議為了實現可靠傳輸,在三次握手的過程中設置了一些異常處理機制。第三步中如果服務器沒收到客戶端的最終ACK確認報文,會一直處于SYN_RECV狀態(tài),將客戶端IP加入等待列表,并重發(fā)第二步的SYN ACK報文。重發(fā)一般進行3-5次,大約間隔30秒左右輪詢一次等待列表重試所有客戶端。另一方面,服務器在自己發(fā)出了SYN ACK報文后,會預分配資源為即將建立的TCP連接儲存信息做準備,這個資源在等待重試期間一直保留。更為重要的是,服務器資源有限,可以維護的SYN_RECV狀態(tài)超過極限后就不再接受新的SYN報文,也就是拒絕新的TCP連接建立。

SYN Flood正是利用了上文中TCP協(xié)議的設定,達到攻擊的目的。攻擊者偽裝大量的IP地址給服務器發(fā)送SYN報文,由于偽造的IP地址幾乎不可能存在,也就幾乎沒有設備會給服務器返回任何應答了。因此,服務器將會維持一個龐大的等待列表,不停的重試發(fā)送SYN ACK報文,同時占用著大量的資源無法釋放。更關鍵的是,被攻擊服務器的SYN_RECV隊列被惡意的數據包占滿,不再接受新的SYN請求,合法用戶無法完成三次握手建立起TCP連接。也就是說,這個服務器被SYN Flood拒絕服務了。

對SYN Flood有興趣的可以看看這里,這是筆者2006年寫的代碼,后來做過幾次修改,修改bug,并降低了攻擊性,純做測試使用。

1.2 DNS Query Flood

作為互聯網最基礎最核心的服務,DNS自然也是DDoS攻擊的重要目標之一。打垮DNS服務能夠間接的打垮了一個公司的全部業(yè)務,或者打垮一個地區(qū)的網絡服務。前些時候風頭正盛的黑客組織anonymous也曾經宣布要攻擊全球互聯網的13臺根DNS服務器,不過最終沒有得手。

UDP攻擊是最容易發(fā)起海量流量的攻擊手段,而且源IP隨機偽造難以追查。但是過濾比較容易,因為大多數IP并不提供UDP服務,直接丟棄UDP流量即可。所以現在純粹的UDP流量攻擊比較少見了,取而代之的是UDP協(xié)議承載的DNS Query Flood攻擊。簡單地說,越上層協(xié)議上發(fā)動的DDoS攻擊越難以防御,因為協(xié)議越上層,與業(yè)務關聯越大,防御系統(tǒng)面臨的情況越復雜。

DNS Query Flood就是攻擊者操縱大量傀儡機器,對目標發(fā)起海量的域名查詢請求。為了防止基于ACL的過濾,必須提高數據包的隨機性。常用的做法是UDP層隨機偽造源IP地址,隨機偽造源端口等參數。在DNS協(xié)議層,隨機偽造查詢ID以及待解析域名。隨機偽造待解析域名除了防止過濾外,還可以降低命中DNS緩存的可能性,盡可能多的消耗DNS服務器的CPU資源。

1.3 HTTP Flood

上文描述的SYNFlood、DNS Query Flood在現階段已經能做到有效防御了,真正另各大廠商以及互聯網企業(yè)頭疼的是HTTP Flood攻擊。HTTP Flood是針對WEB服務在第七層協(xié)議發(fā)起的攻擊,它巨大危害性主要表現在三個方面,發(fā)起方便;過濾困難;影響深遠。

SYN Flood和DNS Query Flood都需要攻擊者以root權限控制大批量的傀儡機,收集大量root權限的傀儡機是很花費時間精力的一件事情,而且在攻擊過程中傀儡機會由于流量異常被管理員發(fā)現,攻擊者的資源快速損耗而補充緩慢,導致攻擊強度明顯降低而且不可長期持續(xù)。HTTP Flood攻擊則不同,攻擊者并不需要控制大批的傀儡機,取而代之的是通過端口掃描程序在互聯網上尋找匿名的HTTP代理或者SOCKS代理,攻擊者通過匿名代理對攻擊目標發(fā)起HTTP請求。匿名代理是一種比較豐富的資源,花幾天時間獲取上午的代理并不是難事,因此攻擊容易發(fā)起而且可以長期高強度的持續(xù)。

另一方面,HTTPFlood攻擊在HTTP層發(fā)起,極力模仿正常用戶的網頁請求行為,與網站業(yè)務緊密相關,安全廠商很難提供一套通用的且不影響用戶體驗的方案。在一個地方工作的很好的規(guī)則,換一個場景可能帶來大量的誤殺。

最后,HTTP Flood攻擊會引起嚴重的連鎖反應,不僅僅是直接導致被攻擊的WEB前端響應緩慢,還間接攻擊到后端的JAVA等業(yè)務層邏輯以及更后端的數據庫服務,增大他們的壓力,甚至對日至存儲服務器都帶來影響。

有意思的是,HTTPFlood還有個剖有歷史淵源的昵稱叫做CC攻擊。CC是Challenge Collapsar的縮寫,而Collapsar是國內一家著名安全公司的DDoS防御設備。從目前的情況來看,不僅僅是Collapsar,所有的硬件防御設備都還在被挑戰(zhàn)著,風險并未解除。

1.4 慢速連接攻擊

一提起攻擊,第一反應就是海量的流量,海量的報文。但是有一種攻擊卻反其道而行之,以慢著稱,以至于有些攻擊目標被打死了都不知道是怎么死的,這就是慢速連接攻擊,最具代表性的是rsnake發(fā)明的SlowLoris。

HTTP協(xié)議規(guī)定,HTTP Request以rnrn結尾表示客戶端發(fā)送結束,服務端開始處理。那么,如果永遠不發(fā)送rnrn會如何?SlowLoris就是利用這一點來做DDoS攻擊。攻擊者在HTTP請求頭中將Connection設置為Keep-Alive,要求Web Server保持TCP連接不要斷開,隨后緩慢的每隔幾分鐘發(fā)送

一個key value格式的數據到服務端,如a:brn,導致服務端認為HTTP頭部沒有接收完成而一直等待。如果攻擊者使用多線程或者傀儡機來做同樣的操作,服務器的WEB容器很快就被攻擊者占滿了TCP連接而不再接受新的請求。

很快的,SlowLoris開始出現各種變種。比如POST方法向WEB Server提交數據,填充一大大Content-Length但是緩慢的一個字節(jié)一個字節(jié)的POST真正數據內容的等等。

2. DDoS攻擊進階

2.1 混合攻擊

之前介紹了幾種基礎的攻擊手段,其中任意一種都可以用來攻擊網絡,甚至擊垮阿里、百度、騰訊這種巨型網站。但是這些并不是全部,不同層次的攻擊者能夠發(fā)起完全不同的DDoS攻擊,運用之妙,存乎一心。

高級的攻擊者從來不會使用單一的手段進行攻擊,而是根據目標的環(huán)境靈活組合。普通的SYN Flood容易被流量清洗設備通過反向探測、SYN Cookie等技術手段過濾掉,但是如果在SYN Flood中混入SYN ACK數據包,使每一個偽造的SYN數據包都有一個與之對應的偽造的客戶端確認報文,這里的對應是指源IP地址、源端口、目的IP、目的端口、TCP窗口大小、TTL等都符合同一個主機同一個TCP Flow的特征,流量清洗設備的反向探測和SYN Cookie性能壓力將會顯著增大。其實SYN數據報文配合其它各種標致位,都有特殊的攻擊效果,這里不一一介紹。

對DNS QueryFlood而言,也有獨特的技巧。DNS可以分為普通DNS和授權域DNS,攻擊普通DNS,IP地址需要隨機偽造,并且指明服務器要求做遞歸解析。但是攻擊授權域DNS,偽造的源IP地址則不應該是純隨機的,而應該是事先收集的全球各地ISP的DNS地址,這樣才能夠達到最大攻擊效果,流量清洗設備將處于添加IP黑名單和不添加IP黑名單的尷尬處境。添加會導致大量誤殺,不添加黑名單則每個報文都需要反向探測加大性能壓力。

另一方面,前文提到為了加大清洗設備的壓力不命中緩存而需要隨機化請求的域名,但是需要注意的是,待解析域名必須在偽造中帶有一定的規(guī)律性,比如說只偽造域 名的某一部分而固化一部分,用來突破清洗設備設置的白名單。道理很簡單,騰訊的服務器可以只解析騰訊的域名,完全隨機的域名可能會直接被丟棄,需要固化。 但是如果完全固定,也很容易直接被丟棄,因此又需要偽造一部分。

其次,對DNS的攻擊不應該只著重于UDP端口,根據DNS協(xié)議,TCP端口也是標準服務。攻擊的時候,可以UDP和TCP攻擊同時進行。

HTTP Flood的著重點,在于突破前端的cache,通過HTTP頭中的字段設置直接到達WEB Server本身。另外,HTTP Flood對目標的選取也非常關鍵,一般的攻擊者會選擇搜索之類需要做大量數據查詢的頁面作為攻擊目標,這是非常正確的,可以消耗服務器盡可能多的資源。但是這種攻擊容易被清洗設備通過人機識別的方式識別出來,那么如何解決這個問題?很簡單,盡量選擇正常用戶也通過APP訪問的頁面,一般來說就是各種WEB API。正常用戶和惡意流量都是來源于APP,人機差別很小,基本融為一體難以區(qū)分。

SlowLoris之類的慢速攻擊,是通過巧妙的手段占住連接不釋放達到攻擊的目的,但是這也是雙刃劍,每一個TCP連接既存在于服務端也存在于自身,自身也需要消耗資源維持TCP狀態(tài)因此連接不能保持太多。如果可以解決這一點,攻擊性會得到極大增強,也就是說SlowLoris可以通過stateless的方式發(fā)動攻擊,在客戶端通過嗅探捕獲TCP的序列號和確認維護TCP連接,系統(tǒng)內核無需關注TCP的各種狀態(tài)變遷,一臺筆記本即可產生多大65535個TCP連接。

上文描述的,都是技術層面的攻擊增強。在人的方面,還可以有一些別的手段。如果SYN Flood發(fā)出大量數據包正面強攻,再輔之以SlowLoris慢速連接,多少人能夠發(fā)現其中的秘密?即使服務器宕機了也許還只發(fā)現了SYN攻擊想去加強TCP層清洗而忽視了應用層的行為。種種攻擊,都可以互相配合,達到最大的效果。攻擊時間的選擇,也是一大關鍵,比如說選擇維護人員吃午飯的時候,維護人員下班堵在路上或者在地鐵里無線上網卡都沒有信號的時候,或者目標企業(yè)在舉行大規(guī)?;顒恿髁匡j升的時候,等等。

這里是純粹的攻擊性行為,因此不提供代碼,也不做深入介紹。

2.2 來自P2P網絡的攻擊

前面的攻擊方式,多多少少都需要一些傀儡機,即使是HTTP Flood也需要搜索大量的匿名代理。如果有一種攻擊,只需要發(fā)出一些指令,就有機器自動上來執(zhí)行,才是完美的方案。這種攻擊已經出現了,那就是來自P2P網絡的攻擊。

大家都知道,互聯網上的P2P用戶和流量都是一個極為龐大的數字。如果他們都去一個指定的地方下載數據,成千上萬的真實IP地址連接過來,沒有哪個設備能夠支撐住。拿BT下載來說,偽造一些熱門視頻的種子,發(fā)布到搜索引擎,就足以騙到許多用戶和流量了,但是這只是基礎攻擊。

高級的P2P攻擊,是直接欺騙資源管理服務器。如迅雷客戶端會把自己發(fā)現的資源上傳到資源管理服務器,然后推送給其它需要下載相同資源的用戶,這樣,一個鏈接就發(fā)布出去。通過協(xié)議逆向,攻擊者偽造出大批量的熱門資源信息通過資源管理中心分發(fā)出去,瞬間就可以傳遍整個P2P網絡。

更為恐怖的是,這種攻擊是無法停止的,即使是攻擊者自身也無法停止,攻擊一直持續(xù)到P2P官方發(fā)現問題更新服務器且下載用戶重啟下載軟件為止。

以上就是本文的全部內容,希望對大家的學習有所幫助。

更多信息請查看技術文章
易賢網手機網站地址:剖析DDoS攻擊原理

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網