拒絕服務(wù)攻擊(DDOS)現(xiàn)狀分析 |
發(fā)布時間: 2012/8/10 17:22:41 |
技術(shù) 拒絕服務(wù)技術(shù)的創(chuàng)新已經(jīng)基本塵埃落定,而上個世紀(jì)最后十年的發(fā)明也逐漸遙遠。然而,隨著寬帶接入、自動化和如今家庭計算機功能的日益強大,使得對拒絕服務(wù)攻擊的研究有些多余。尤其是當(dāng)我們發(fā)現(xiàn)一些本已在90年代末銷聲匿跡的古老的攻擊方式,(例如land ,其使用類似的源和目標(biāo) IP 地址和端口發(fā)送 UDP 信息包)這些攻擊技術(shù) 現(xiàn)在又卷土重來時,這個結(jié)論就更加顯而易見。在這一方面唯一的進步就是可以發(fā)起并行任務(wù),從而可以通過簡單的 486 處理器所無法實現(xiàn)的方式來顯著提高攻擊強度。 另一個要考慮的重點是事實上IP堆棧似乎并未正確地安裝補丁程序。計算機不再會因為單一的信息包而崩潰;但是,CPU操作會為了處理這種信息包而保持高速運行。因為補丁失效期間生成的信息包是有限的,所以要實現(xiàn)有效的攻擊并不容易?赡苁羌夹g(shù)提高得太快。不管是什么原因,這些陳舊過時的攻擊方式現(xiàn)在又卷土重來,而且還非常有效。 使用拒絕服務(wù) 拒絕服務(wù)攻擊開始可能只是為了“取樂”,對系統(tǒng)操作員進行某種報復(fù)或是實現(xiàn)各種復(fù)雜的攻擊,例如對遠程服務(wù)的隱形欺騙。某人因在某一信道上遭到侮辱后也經(jīng)常會將IRC服務(wù)器作為攻擊目標(biāo)。這種情況下的網(wǎng)絡(luò)和因特網(wǎng)使用是“保密的”,這些攻擊對其造成的影響微乎其微。 隨著時間的流逝,因特網(wǎng)逐漸成為一種通信渠道,hacktivism(網(wǎng)絡(luò)激進主義)越來越流行。地理政治形勢、戰(zhàn)爭、宗教問題、生態(tài)等任何動機都可能成為對公司、政治組織或甚至國家的IT基礎(chǔ)架構(gòu)發(fā)動進攻的動機。 最近的拒絕服務(wù)攻擊更多的是與聯(lián)機游戲有關(guān)。某些玩家對在游戲中被人殺死或丟失他們喜愛的武器不滿意,因此發(fā)動拒絕服務(wù)攻擊,許多服務(wù)器已經(jīng)成為這種攻擊的犧牲品。 但是如今使用拒絕服務(wù)的目的大多數(shù)是純粹的敲詐勒索。越來越多的企業(yè)開始依賴他們的IT基礎(chǔ)架構(gòu)。郵件、關(guān)鍵數(shù)據(jù)、甚至電話都通過網(wǎng)絡(luò)來處理。如果沒有這些主要的通信渠道,大多數(shù)公司都難以在競爭中幸存。而且,因特網(wǎng)還是一種生產(chǎn)工具。例如,搜索引擎和博彩web 站點都完全依賴網(wǎng)絡(luò)連接。 因此,隨著公司直接或間接地依賴因特網(wǎng),原有的敲詐信逐漸轉(zhuǎn)變成數(shù)字形式。首先在短暫而非緊要的時間段內(nèi)發(fā)動攻擊。然后受害者就不得不支付“保護費”。 網(wǎng)絡(luò)協(xié)議攻擊 這些攻擊瞄準(zhǔn)傳輸信道,并因此以IP堆棧作為攻擊目標(biāo),IP堆棧是內(nèi)存和 CPU 之類關(guān)鍵資源的進入點。 SYN洪水 SYN洪水是典型的基于概念的拒絕服務(wù)攻擊,因為這種攻擊完全依賴于TCP連接的建立方式。在最初的 3 向握手期間,服務(wù)器填寫保存內(nèi)存中會話信息的 TCB(傳輸控制塊)表。當(dāng)服務(wù)器收到來自客戶機的初始 SYN 信息包時,向客戶機發(fā)送回一個 SYN-ACK 信息包并在 TCB 中創(chuàng)建一個入口。只要服務(wù)器在等待來自客戶機的最終 ACK 信息包,該連接便處于 TIME_WAIT 狀態(tài)。如果最終沒有收到 ACK 信息包,則將另一個 SYN-ACK 發(fā)送到客戶機。最后,如果經(jīng)多次重試后,客戶機沒有認(rèn)可任何 SYN-ACK 信息包,則關(guān)閉會話并從 TCB 中刷新會話。從傳輸?shù)谝粋 SYN-ACK 到會話關(guān)閉這段時間通常大約為 30 秒。 在這段時間內(nèi),可能會將數(shù)十萬個SYN信息包發(fā)送到開放的端口且絕不會認(rèn)可服務(wù)器的SYN-ACK 信息包。TCB 很快就會超過負荷,且堆棧無法再接受任何新的連接并將現(xiàn)有的連接斷開。因為攻擊者不用接收來自服務(wù)器的 SYN-ACK 信息包,所以他們可以偽造初始 SYN 信息包的源地址。這就使得跟蹤攻擊的真實來源更加困難。此外,因為 SYN-ACK 信息包沒有發(fā)送到攻擊者,所以這樣還為攻擊者節(jié)省了帶寬。 生成這種攻擊很容易,只要在命令行輸入一條命令就足夠了。 #hping3--rand-source–S –L 0 –p 存在的變體也很少,通常為了增加CPU的使用率會將某些異常添加到SYN 信息包。這些可能是序列號或源端口0等合法的異常。 SYN-ACK洪水 SYN-ACK洪水的作用基礎(chǔ)是令CPU資源枯竭。從理論上講,這種信息包是 TCP 3 向握手的第二步,而且在 TCB 中應(yīng)該有對應(yīng)的入口。瀏覽 TCB 將會使用 CPU 資源,尤其 TCB 很大時會耗用更多的 CPU 資源。因此,負荷較重時,這種對資源的使用會影響系統(tǒng)性能。 這也就是SYN-ACK攻擊所仰仗的利器。向系統(tǒng)發(fā)送一個巨荷的SYN-ACK 信息包會顯著增加系統(tǒng) CPU 的使用率。因此,用于組織 TCB 的哈希算法和哈希表大小之選擇會影響攻擊的效率(請參閱“概念”和“邏輯缺陷”)。而且,因為這些 SYN-ACK 信息包不屬于現(xiàn)有的連接,所以目標(biāo)機器不得不將 RST 信息包發(fā)送到源機器,從而增加了鏈路上的帶寬占用率。對于 SYN 洪水,攻擊者為了避免接收到 RST,當(dāng)然可以偽造源機器的 IP 地址,這樣還可以提高攻擊者的可用帶寬。 這也只需要一條簡單的命令就可以進行這種攻擊。 一個重要因子是由第三方服務(wù)器基于反射機制而生成SYN-ACK信息包的能力。在將SYN 信息包發(fā)送到服務(wù)器的開放端口時,該服務(wù)器將 SYN-ACK 信息包發(fā)送回源機器。此時任何服務(wù)器都可能為這種攻擊充當(dāng)中繼。發(fā)送到服務(wù)器的簡單 SYN 信息包帶有偽造的源,其發(fā)送到目標(biāo)時生成 SYN-ACK 返回目標(biāo)。這種技術(shù)讓跟蹤更加困難。而且,在某些情況下,還可以繞過某些防偽機制。尤其當(dāng)目標(biāo)和攻擊者屬于同一干道而且部署的 uRPF (參閱“防偽”) 距離目標(biāo)機器和攻擊者足夠遠時,更有可能避開防偽機制。 通過與SYN洪水聯(lián)結(jié)還可以提高此種攻擊的強度。SYN洪水在TCB 中創(chuàng)建入口,而TCB因此變得越來越大。由于此時瀏覽 TCB 所需的時間更長,所以 SYN-ACK 洪水的功效大大增加。 UDP洪水
UDP同樣天生就是拒絕服務(wù)攻擊的傳播媒介。按照指定,在封閉端口上接收UDP信息包的服務(wù)器將無法到達 ICMP 端口的信息包發(fā)送回給源機器。ICMP 信息包的數(shù)據(jù)部分填充有原始 UDP 信息包中的至少前 64 個字節(jié)。因為沒有標(biāo)準(zhǔn)限度或額度,所以很可能在封閉的端口上發(fā)送巨量的信息包。在為生成 ICMP 而進行負荷極大的必需操作時,,錯誤的信息包消耗了大量 CPU 資源,最終導(dǎo)致CPU 資源枯竭。 同樣,也可以從命令行生成這種攻擊。而且,也可以通過偽造而使得ICMP信息包不會降低攻擊者的帶寬。 異常 異常屬于特殊情況,其可以令I(lǐng)P堆棧出現(xiàn)行為錯誤而造成各種不同的后果,例如崩潰、凍結(jié)等等。異?蓜澐譃閮纱箢悾悍欠〝(shù)據(jù)和隔離異常。 非法數(shù)據(jù)是標(biāo)準(zhǔn)所不予考慮的或予以顯式否定的值或內(nèi)容。大于指定長度的信息包、重疊的TCP標(biāo)記組合、含非空認(rèn)證序列號的SYN 信息包或甚至錯誤的選項類型都屬于基于非法數(shù)據(jù)的異常攻擊。 隔離異常是基于那些堆棧不能正常處理的異常情況(即便從標(biāo)準(zhǔn)的視角看它們完全合法)。著名的“死亡之ping”就是關(guān)于巨型(但仍然合法)ICMP回顯請求信息包。如果信息包帶有相同的源地址、目標(biāo)地址和端口,其仍然是合法的,不過對IP 協(xié)議棧有害。古老的 land 攻擊最近已脫胎換骨成為 imland,而且正在破壞 IP協(xié)議棧。只有少數(shù)異常攻擊仍然能夠利用單一信息包擊倒系統(tǒng)。大多數(shù)堆棧都已打上補丁程序,而且可能大多數(shù)異常都已經(jīng)過測試和開發(fā)。然而,處理這種信息包仍然會占用 CPU 的不少資源。當(dāng)5 年前異常攻擊出現(xiàn)并得到補丁程序的修補時,攻擊能力還受到 CPU 和帶寬的限制。處理異常情況時產(chǎn)生的額外計算負擔(dān)不太重要。如今,工作站與服務(wù)器之間的差距日益縮小,而且任何人都可以使用寬帶。這種條件下可能發(fā)動巨型負荷的異常,使得目標(biāo)機器的 CPU 資源枯竭。 同樣,也可以從單一的命令行實現(xiàn)這種攻擊。 #hping3--rand-source–SAFRU –L 0 –M 0 –p --flood 同樣,仍然可以選擇進行偽造來進行有效有效攻擊。 應(yīng)用程序級攻擊 網(wǎng)絡(luò)已證明易受攻擊。然而網(wǎng)絡(luò)只是全球系統(tǒng)中的傳輸部分,是中斷通信的良好手段。不過,應(yīng)用程序通常是實際的攻擊目標(biāo),而且這些應(yīng)用程序也受到無數(shù)的拒絕服務(wù)問題的襲擾。 基于會話的攻擊 大多數(shù)應(yīng)用程序連接是通過會話(通常經(jīng)過TCP機制的標(biāo)識) 來處理。同步會話的數(shù)量是影響給定應(yīng)用程序性能的重要因素,因此必須限制會話的數(shù)量。如果該限制只是基于網(wǎng)絡(luò)和傳輸信息(IP+TCP),那么生成拒絕服務(wù)是很容易的。一次簡單的攻擊便可打開 TCP 會話并讓這些會話保持打開狀態(tài),從而可以迅速填滿所有可用的會話槽,阻止建立任何新的會話。這種“待決”會話攻擊是與 SYN 洪水等價的 7 層攻擊。但是如果在第 4 層上需要有數(shù)千兆數(shù)據(jù)流量,則需要在幾秒內(nèi)發(fā)送數(shù)千個信息包來阻止建立任何新的會話,。 例如,很容易在web服務(wù)器上實施這種攻擊。 完整和合法的會話也可以破壞應(yīng)用程序,簡單的F5攻擊只需保持F5 鍵處于按下狀態(tài)就可以強制完全刷新在 Internet Explorer 上加載的 web 頁面。使用這種古老而簡易的攻擊,便會僅僅因為需要服務(wù)的 web 頁面數(shù)過多而導(dǎo)致資源枯竭。這種會話洪水攻擊還可以破壞通信信道的其他關(guān)鍵路徑。 − 電信鏈接:從服務(wù)器傳送到客戶機的數(shù)據(jù)量可以填滿與因特網(wǎng)的鏈接。這種情況下,通過該鏈接無法進行任何通信;針對性的拒絕服務(wù)攻擊漫延至全球; − 服務(wù)器應(yīng)用程序:大量同步連接可以達到服務(wù)器處理同步會話能力的上限,這種攻擊類似于“待決的”會話攻擊。如果未設(shè)置上限,則處理大量會話時可能消耗絕大多數(shù)的系統(tǒng)資源。 − 第三方應(yīng)用程序:大多數(shù)應(yīng)用程序都鏈接到中間軟件和數(shù)據(jù)庫。在任一情況下,由于這些第三方應(yīng)用程序在處理原始應(yīng)用程序發(fā)出的巨量請求時可能遇到內(nèi)部問題,因此就可能出現(xiàn)瓶頸。這些結(jié)果也可能是內(nèi)部缺陷造成的(如下所述)。 繼F5攻擊技術(shù)之后,會話洪水技術(shù)便再無發(fā)展。不過,人們已發(fā)現(xiàn)且廣泛使用平衡因子而使得這種攻擊仍然是拒絕服務(wù)中一種最惡性的可能情形。
開發(fā)的應(yīng)用程序是為了在正常情況下提供特定的服務(wù),而攻擊的目的就是令應(yīng)用程序的行為方式出現(xiàn)異常。這種攻擊的某些機制是通用的,但是這種攻擊的大多數(shù)機制是專用于各個不同應(yīng)用程序的概念和邏輯,因此想要羅列出全部有缺陷的應(yīng)用程序和消滅這些缺陷的方法是不可能的。 內(nèi)部 內(nèi)存處理顯然是可以導(dǎo)致拒絕服務(wù)攻擊的第一內(nèi)部機制。簡單的“緩沖溢出”使得重寫堆棧成為可能,從而讓應(yīng)用程序乃至整個系統(tǒng)都不穩(wěn)定。在不同級別的應(yīng)用程序通道中缺少輸入檢查,也使得攻擊會沿著第三方應(yīng)用程序傳播而增加攻擊的可能性。 然而,內(nèi)部缺陷更加難以琢磨,更加難以修補。依賴于NFA引擎的規(guī)則表達式可能極具危險性。NFA引擎分析表達式的所有可能路徑。如有一個字符令搜索失效,該引擎便會返回前一個匹配點并重試表達式的所有組合。若針對精心制作的輸入而啟動像通配符 * 之類極耗資源的運算符和像 (int|integer) 之類 OR 條件的組合,則會產(chǎn)生致命的影響。 SQL也是邏輯攻擊的一種明顯傳播媒介,因為在大型而復(fù)雜的表格上,SQL查詢可能在應(yīng)用程序級生成不同的錯誤行為。首先遇到的缺陷就是缺少索引和數(shù)據(jù)庫結(jié)構(gòu)中通常使用的字符串列。如果沒有正確的索引,涉及對同一個表的多個列進行篩選和排序操作的SQL 請求便會產(chǎn)生指數(shù)級數(shù)量的操作,這會消耗巨量的 CPU 資源并顯著增加應(yīng)用程序響應(yīng)時間。如果搜索和排序的字段是字符串,則這些操作消耗的資源甚至?xí)唷?/p> 第二種缺陷與內(nèi)存有關(guān)。在超大型表中,類似于“SELECT*”的請求可能產(chǎn)生數(shù)百萬個結(jié)果。臨時數(shù)據(jù)庫結(jié)構(gòu)和用于存儲結(jié)果的應(yīng)用程序結(jié)構(gòu)消耗大量內(nèi)存,結(jié)果可能會導(dǎo)致各種后果:數(shù)據(jù)交換過量、響應(yīng)時間延長或整個系統(tǒng)拒絕服務(wù)。 另一種重要的拒絕服務(wù)攻擊可以針對用于組織和搜索內(nèi)存中數(shù)據(jù)的哈希函數(shù)來實施。哈希表入口是指向?qū)ο箧溄颖淼闹甘痉。搜索操作需要兩個步驟。首先,計算哈希函數(shù)以在哈希表中查找匹配的入口。然后,逐個比較列表中的對象。沖突是這種機制的第一個缺陷。如果哈希表不夠大和/或哈希算法使得容易產(chǎn)生沖突,便可能會產(chǎn)生多個入口而與哈希表中相同的入口匹配。按這種方式對表格進行的任何搜索操作都將需要執(zhí)行很多運算,而且消耗CPU資源,其本身很可能導(dǎo)致拒絕服務(wù),或者會加強針對依賴于這種機制的某個應(yīng)用程序的攻擊效果。 運行模式 每個應(yīng)用程序都有特定的功能和運行方式。因此要描述出所有的缺陷是不可能的。然而,某些典型和有效的示例可以對常見的無掩蔽性操作提供線索。 DHCP服務(wù)器容易遭受的攻擊盡管很微小但卻能快速耗盡其可用IP地址的池。前面已經(jīng)分析過協(xié)議本身的缺陷(請參閱第 3 層連接攻擊)。除此之外,在 DHCP 交換的第一階段中,DHCP 服務(wù)器在沒有得到來自客戶機的任何確認(rèn)情況下會鎖定 IP 地址。令 DHCP 服務(wù)器用盡可用的 IP 地址便只是使用 chaddr 數(shù)據(jù)字段中指定的不同 MAC 地址來發(fā)送多個 DHCPDISCOVER 請求的問題。甚至不需要偽造 MAC。廣播、缺少認(rèn)證和“早期處理”組合起來構(gòu)成拒絕服務(wù)攻擊的關(guān)鍵因素。 另一種“先進”的攻擊是基于設(shè)計不良的運行方式,這就是DNS服務(wù)器的洪水攻擊。當(dāng)DNS 服務(wù)器接收到對不在其緩存中的名稱之解析請求,或當(dāng)請求指定應(yīng)答必須具有權(quán)威性時,服務(wù)器將請求發(fā)送到 TLD(頂級域名)服務(wù)器,以便獲得域的 SOA(頒發(fā)機構(gòu)起始)地址。一旦獲得該地址,目標(biāo) DNS 服務(wù)器便向 SOA 服務(wù)器發(fā)出另一個請求以便解析該請求的名稱。獲得應(yīng)答后,便立即將這些應(yīng)答發(fā)送回給客戶機。由于不需要由客戶機進行認(rèn)證,且客戶機與服務(wù)器之間的通信是基于 UDP 協(xié)議,所以很輕易就可以將數(shù)千個請求從偽造的來源發(fā)送到服務(wù)器?梢詫Σ煌墑e的攻擊效率作如下區(qū)分。 − 針對不存在的域上主機之請求:這種情況下,TLD 將一個錯誤發(fā)送到目標(biāo) DNS 服務(wù)器,該服務(wù)器再將該錯誤轉(zhuǎn)發(fā)到客戶機。這種影響相對較低,而且需要攻擊者提供大量請求。然而,很輕易就可以創(chuàng)建一個工具來生成這種攻擊,因為任何字段(主機、域)可以是隨機的,且不必是真實字段。 − 針對極少數(shù)現(xiàn)有域上主機之請求:這種情況下,目標(biāo)服務(wù)器就每個域向 TLD 發(fā)送一個請求以獲取 SOA。然后,把來自攻擊者的每個請求轉(zhuǎn)發(fā)到 SOA。不存在的主機會生成錯誤。另一方面,與現(xiàn)有主機有關(guān)的請求從 SOA 生成應(yīng)答,這些應(yīng)答是轉(zhuǎn)發(fā)到源的較大信息包。這種情況下,較高的數(shù)據(jù)流量和更重要的處理可以提高攻擊的效率。因為查找?guī)讉現(xiàn)有的域比較簡單,所以這種攻擊仍然相對容易實施。然而,攻擊的效率主要取決于這些域的 SOA 對目標(biāo)服務(wù)器發(fā)送給它們的大量請求進行處理的能力和這些域上眾多主機名的可用性。 − 針對多個現(xiàn)有域上主機之請求。在這最后一種情況下,幾乎所有發(fā)送到目標(biāo)服務(wù)器的請求都會令目標(biāo)服務(wù)器產(chǎn)生到 TLD 的請求,隨后便是到 SOA 的請求和對應(yīng)答的處理。這種攻擊很難實施,因為它需要定義包含數(shù)千個現(xiàn)有域和主機的列表。然而,它特別有效,只在每秒內(nèi)進行幾千次請求就能使得大多數(shù) DNS 服務(wù)器崩潰。 這種DNS的情況之出現(xiàn)大都是因為使用無態(tài)協(xié)議,使得攻擊者可在不受影響的情況下在服務(wù)器端產(chǎn)生較高的數(shù)據(jù)流量和處理負荷。 對上下文和會話的處理是應(yīng)用程序中另一常見的重要缺陷。在SMTP服務(wù)器對HELO 命令參數(shù)的有效性實施特定檢查的情況下,由于不能對結(jié)果進行即時處理而會增強這一缺陷的影響。根據(jù)標(biāo)準(zhǔn),只有出現(xiàn) RCPT TO 命令時才可以拒收郵件。因此,建立一個會話并發(fā)出數(shù)千個 HELO 請求將會讓目標(biāo)服務(wù)器重復(fù)處理參數(shù),這些參數(shù)通常位于規(guī)則的表達式上。最糟糕的情況是在執(zhí)行名稱解析時,因為這會添加更多的處理和數(shù)據(jù)流量。因為單條 HELO 命令約有 100 個字節(jié),所以有可能從通過寬帶接入而連接到因特網(wǎng)的標(biāo)準(zhǔn) PC 對郵件服務(wù)器發(fā)動十分有效的攻擊。如果一檢測到異常便中斷會話,則這種攻擊不可能實現(xiàn)。 改善效率 大多數(shù)拒絕服務(wù)攻擊實施起來非常簡單。然而某些情況下,標(biāo)準(zhǔn)PC和寬帶接入并不足以發(fā)動有效的攻擊。尤其當(dāng)在目標(biāo)基礎(chǔ)結(jié)構(gòu)上實施群集和負載平衡之類機制時更是如此。在此情況下將會把一個單一的目標(biāo)IP 地址物理鏈接到許多服務(wù)器,從而產(chǎn)生大規(guī)模攻擊需求。 有兩種方式能使得攻擊在這種情況下有效。第一種方式是找到一些提高攻擊媒介能力(信息包、會話的數(shù)量或帶寬等)的平衡因子。第二種方式取決于影響通信路徑上設(shè)備或資源的某些副作用。 小型信息包 最常見的副作用是需由內(nèi)聯(lián)網(wǎng)絡(luò)或安全設(shè)備來處理的巨量小型信息包的影響。根據(jù)在這些設(shè)備上實施的功能,將信息包從一個接口轉(zhuǎn)發(fā)到另一個接口可能需要若干操作。簡單的路由器必須根據(jù)其路由表做出決策。在信息包篩選操作中,必須檢查第4層標(biāo)頭來驗證篩選器。有態(tài)檢驗因需要檢查會話表而增加了復(fù)雜性。像逆向代理等最后一個應(yīng)用程序?qū)釉O(shè)備必須在第7 層處理信息包。像信息包銷毀或 NAT 等某些其他操作甚至需要更多的處理,因為必須重寫信息包并重新計算若干校驗和。 小型信息包產(chǎn)生的影響很容易用數(shù)字來說明。一般來說,指定用于處理特定帶寬的設(shè)備在處理64字節(jié)的信息包時幾乎不能提供大于10% 聲明性能的吞吐量。任何依賴于小于 100 字節(jié)信息包的攻擊可能首先會令路由器和防火墻崩潰,而不僅僅是影響目標(biāo)服務(wù)器。 本文出自:億恩科技【1tcdy.com】 服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |