DDoS攻擊
DDoS攻擊的方法
攻擊網絡帶寬資源
我們可以采用對目標的網絡帶寬資源進行攻擊,目的就是浪費對方有限的網絡帶寬資源,使得目標服務出現網絡滯緩直至網絡帶寬資源匱乏,無法訪問或訪問速度慢。
直接攻擊
直接攻擊,使用大量的受控主機直接向被攻擊目標發送大量的網絡數據包,占用目標的網絡帶寬,並消耗服務器和網絡設備的數據處理能力,達到拒絕服務攻擊的目的。【洪水攻擊和人海戰術可以一樣的理解】
- 直接攻擊方法:主要有 ICMP/IGMP洪水攻擊和UDP洪水攻擊兩種。
ICMP/IGMP洪水攻擊
網絡控制消息協議(ICMP)是TCP/IP協議級當中核心之一,用於在網絡中發送控制消息,提供可能發生在通信環境中的各種問題反饋。
因特網組管理協議(IGMP)是用於管理因特網協議多播組成員的一種通信協議。
攻擊者使用受控主機向目標發送大量的ICMP或IGMP報文,進行洪水攻擊以消耗目標的網絡帶寬資源。在早期使用cmd中的ping命令就可以ping目標主機發送大量的ICMP數據包,當數據包的大小超過了目標網絡帶寬的極限(當時都是百兆網卡)時候,就會造成目標的網絡卡頓(ping素有死亡之ping的雅稱);當然這種攻擊已經幾乎無效,因為目標可以直接過濾掉無效的數據包,使之攻擊無效。
UDP洪水攻擊
用戶數據包協議,是一種面向無連接的不可靠的傳輸層協議,主要用於不要求分組到達目標的傳輸(內容較小的傳輸任務)
利用UDP數據包發出的洪水攻擊,與ICMP/IGMP的洪水攻擊的原理機制差不多,在UDP方面通常選擇小包或大包方式攻擊目標。
小包指的是 64 字節的數據包,這也是以太網上傳輸的數據幀的最小值。在相同的流量下,包體積越小,數據包的數量就越多;而由於交換機、路由器等網絡設備需要對每個數據包進行校驗,因此使用UDP小包攻擊能夠最大程度的增大網絡設備處理數據包的壓力,造成處理速度緩慢和傳輸延遲等攻擊效果
打包指的是1500字節以上的數據包,其大小超過了以太網的最大傳輸單元。使用大包攻擊,可以最大程度的占用網絡傳輸的數據帶寬,迫使目標在接收數據不得不進行分片重組,以此造成網絡擁堵,服務響應緩慢的目的。
反射和放大攻擊
使用ICMP和UDP等洪水攻擊方式直接對目標展開網絡帶寬資源的消耗攻擊,這種攻擊方法的局限性非常的大,而且很容易找到源頭,即使偽造了自己的IP位置。
反射攻擊(DRDoS),利用路由器、服務器等設備對請求發出應答,從而反射攻擊流量並隱藏攻擊來源的一種方法。
反射攻擊
反射攻擊時,攻擊者使用受控主機發送大量的數據包,這些數據包的特別之處在於:其目的IP地址指向的是作為反射器的網絡設施,而源IP地址則被偽造成被攻擊目標的IP地址。反射器在收到數據包是,會認為該數據包是由目標所發出的請求,因此會將響應的數據發送給目標,當大量的響應數據包涌向同一個目標時,就會消耗目標的網絡帶寬資源,以此造成DDoS攻擊的目的。
該攻擊方法需要在互聯網上尋找大量的“反射器”,某些種類的反射攻擊不難實現,對於ACK的反射攻擊,只需要在互聯網上找到開放TCP端口的服務器即可。
反射攻擊是無證(不握手)的,所以如果有認證或握手的化,就無法實現下一步;故此反射攻擊是建立在UDP協議的網絡之上而進行的。
放大攻擊是一種特殊的反射攻擊,特殊之處在於反射器對於網絡流量具有放大作用,因此可以這種反射器成為放大器。
ACK反射攻擊
TCP連接時候,需要三次握手(SYN—ACK,SYN——ACK),在這個連接的過程中服務端接收客戶端發來的SYN連接請求,會對請求進行ACK應答;攻擊者就可以利用三次握手時的ACK應答的機制,進行ACK反射攻擊。
攻擊者將SYN請求的源IP地址偽造成攻擊目標的IP地址,服務器在建立TCP連接時的ACK應答數據包,就會根據SYN請求包中的IP地址發送ACK數據包,而ACK數據包就會發給目標主機;當大量的ACK數據包返回到偽造的IP(即目標主機IP)之后,就會造成目標的網絡帶寬擁堵;攻擊實施時,網絡掃描大量的反射器地址,然后向這些地址發送偽造后的源IP的SYN請求包。
DNS放大攻擊
DNS域名系統;作為將域名和IP地址相互映射的一個分布式數據庫,主要使用的是UDP協議。通常,DNS響應數據包會比查詢數據包大,因此攻擊者可以利用普通的DNS查詢請求發起一個反射放大(多倍)攻擊。更有效方法是使用RFC 2671中定義的DNS擴展機制EDNS0;
攻擊者可以利用dig和EDNS0進行高效的DNS放大攻擊;攻擊者向開放的DNS解析器發送dig查詢命令,將OPT RR字段中的UDP報文大小設置為大值4096,並將源IP地址偽造成目標的IP地址,DNS解析器收到查詢請求后就會將解析的結果發送給攻擊目標IP。
NTP放大攻擊
網絡時間協議NTP,是用來使計算機時間同步化的一種協議,他可以使計算機與時鍾源進行同步化並提高精確度的時間校正,NTP使用UDP-123端口進行通信。
在NTP協議的服務器上,通常會實現一系列的Mode 7的調試接口,而接口中的monlist請求能夠獲取到與目標NTP服務器進行同步的最后600個客戶端的IP地址等通信。這意味着,只需要發送一個很小的請求包,就能夠觸發大量連續的包含IP地址信息等數據的UDP響應數據包。
與ACK反射攻擊和DNS放大攻擊的機制類似,發送NTP放大攻擊也需要進行實現的網絡掃描,獲得大量的NTP服務器。
SNMP放大攻擊
簡單網絡管理協議SNMP,是目前最廣泛的網絡管理協議,SNMP使用UDP 161端口進行通訊;利用SNMP協議中默認的通訊字符串和GetBulk請求,攻擊者能夠進行SNMP放大攻擊。
由於SNMP服務效果好,所以SNMP協議幾乎寫入了每一台網絡設備中,各種設備都是默認的開啟了SNMP服務;同時SNMP都采用了默認的通訊字符串,這些通訊字符串是程序獲取設備信息和修改配置必不可少的,最常見的默認通訊字符串是public和private,除此之外還有很多廠商私有的默認通訊字符串。
在SNMP中定義的get請求可以嘗試以此獲取多個MIB對象,但響應消息的大小收到設備處理能力的限制,如果設備不能返回全部請求的響應,則會返回一條錯誤信息。后來添加了getbulk請求,該請求會通知設備返回盡可能多的數據,這使得管理程序能夠通過發送一次請求就獲得大段的檢索信息。
攻擊者向開啟SNMP服務的王阿羅設備發送getbulk請求,使用默認通信字符串作為認證憑據,並將源IP為偽裝為目標的IP地址;設備接收到getbulk請求后,會將響應數據包結果發給經偽裝的源IP地址(即目標IP地址)
攻擊鏈路 *
攻擊鏈路與直接攻擊方式和反射/放大攻擊方式有所不同;其攻擊的目標不是端到端的帶寬資源,而是骨干網上的鏈路的帶寬資源。
Coremelt是一種正對鏈路的分布式拒絕服務的攻擊方式,攻擊者需要控制一個分布足夠廣泛的僵屍網絡來發送Coremelt攻擊。
攻擊系統資源
在很多時候都會誤以為DDoS攻擊都是消耗網絡帶寬資源的攻擊,但是除此之外,DDoS也有消耗系統資源的攻擊方式。
攻擊TCP連接
TCP是一種面向連接、可靠的、基於字節流的傳輸層協議,不同的主機應用層之間需要可靠的端到端的連接,但是IP層無法提供這樣的流機制,在現實中都是依靠TCP協議來實現。
TCP的連接過程俗稱為“三次握手”,在三次握手的階段都是很容易受到DDoS攻擊的。
TCP連接洪水攻擊
TCP洪水攻擊是在“建立連接”階段對TCP資源進行攻擊的。
在三次握手進行的過程中,服務器會創建並保存TCP連接的信息,但這個信息通常會被保存在連接表的結構中;但是連接表的大小是有限的,一旦服務器接收到的連接數量超過了連接表存儲的數量時,服務器就無法創建新的TCP連接了。
攻擊者可以利用大量的受控主機,向目標主機建立TCP連接,占滿目標主機的連接表使得目標主機無法接收新的TCP連接。
SYN洪水攻擊
SYN洪水攻擊是最經典的一種DDoS攻擊方式,這種攻擊(SYN洪水攻擊)方式是主要的DDoS攻擊方式之一。
TCP半開連接:
在建立TCP連接過程中,服務器返回了響應的SYN+ACK報文后,如果客戶端沒有對其進行確認,服務器就會重傳SYN+ACK報文並等待客戶端的確認,由此就會形成TCP的半開狀態,在半開狀態下,如果一直維持半開連接就會一直保存在服務器的連接表中。
由於連接表的大小是有限的,如果在短時間內產生大量的半開連接,而連接又是沒有意義的連接,就會大量的占滿連接表的空間。
受控主機系向目標發送大量的SYN報文,跳過最后的ACK報文發送,使得連接處於半開狀態;但由此hi很容易的暴露受控主機的IP地址,同時響應報文會作為反射流量占用攻擊者的帶寬資源;所以更有力的方法就是:攻擊者將SYN報文的源IP地址偽造成其他主機的IP地址或者不存在的IP地址,這樣使得目標會將響應報文發送給偽造的IP地址,從而占用連接i幀元並隱藏攻擊源。
PSH+ACK洪水攻擊
TCP數據傳輸過程中,可以通過設置PSH標志位來表示當前數據傳輸結束,需要服務端進行處理。
在正常的TCP傳輸過程中,如果待發送的數據會清空發送緩沖區,那么操作系統的TCP/IP協議棧就會自動為該TCP數據包設置PSH標志,同樣當服務端接收到一個設置了PSH+ACK標志的報文時,意味着當前數據傳輸已經結束,因此需要立即將這些數據遞交給服務進程並清空接收緩沖區,而無需等待判斷是否會有額外的數據。
由於帶有PSH標志的TCP數據包會強制要求接收端將接收緩沖區清空並將數據提交給應用服務進行處理,因此當攻擊者利用受控主機向目標發送大量的PSH+ACK報文數據包的時候,目標就會消耗大量的系統資源不斷的進行接收緩沖區的清空處理,導致無法正常處理數據,從而造成DDoS。
單獨使用PSH+ACK洪水攻擊的作用不會太明顯,更有效的方式是SYN洪水攻擊與ACK攻擊方式相結合,這樣可以繞過一部分防護設備,增強攻擊的效果。
RST洪水攻擊
TCP斷開時,通常會有帶有FIN標志報文的四次交互(四次揮手)來斷TCP的連接,但若是客戶端或服務端出現異常,則無法正常的完成四次揮手終止連接,就會使用RST報文將連接強制終止。
RST表示復位,用來在異常的時候關閉連接,發送端發送RST報文關閉連接時,不需要等待緩沖區中的數據報全部發送完畢,而會直接丟棄緩沖區中的數據包並發送RST報文;同樣接收端在接收到RST報文后也就會清空緩沖區關閉兩者之間的TCP連接。
攻擊這可以利用RST報文的這個特性,發送偽造的帶有RST標志的TCP報文,強制中斷客戶端與服務端的TCP連接;在偽造RST報文的過程中服務器的IP地址和端口號是已知的,攻擊者還需要設法獲得客戶端的IP地址和端口號,並且使得RST報文的序列號處於服務器的接收窗口內。【如果攻擊者和目標處於同一內網下,可以通過ARP欺騙或這網路嗅探獲得】
在不知道客戶端的IP和端口情況下,常常采用“盲打”的猜解策略,只要巨大數據量的中的一條RST報文可以和客戶端的ip和端口匹配上,就能夠中斷連接。
通常這種強制截斷TCP連接的DDoS攻擊方法,往往是針對在線用戶的游戲、視頻服務。
Sockstress攻擊
Sockstress攻擊不屬於洪水攻擊,而是一種慢速攻擊方法。
在TCP連接時,並不是將數據直接遞交給應用程序處理,而是先臨時存儲在接收緩沖區中,該接收緩沖區的大小是由TCP窗口表示的;如果TCP窗口大小為0,則表示接收緩沖區已經被填滿,發送端應該停止發送數據,知道接收端的窗口發送了更新。Sockstress攻擊就是利用該原理長時間的維持TCP連接,完成DDoS的目的。
首先完成TCP連接,但是在第三次握手的ACK應答中,攻擊者將TCP窗口設置為0 ,隨后進行以此數據請求;攻擊目標在傳輸數據時候,發現TCP窗口為0,就會停止傳輸數據,並發出TCP窗口探測包,詢問攻擊者TCP窗口的更新,如果窗口沒有更新就會一直維持這TCP連接的狀態,一直等待數據的發送並不斷的發送TCP窗口探測包。由此攻擊者利用大量的受控主機,目標就會一直維持TCP連接的狀態並一直收到窗口更新的探測數據,TCP連接表就會每逐漸被消耗。
Sockstress的另一攻擊方法就是將TCP窗口設置為一個 非常小的字節值,這樣攻擊目標就不得不吧需要發送的數據切分成大量的*字節數據大小分片,將會極大的消耗目標的內存和處理器資源,使得服務緩慢。
攻擊SSL連接
安全套接層(SSL)是為了網絡通信提供安全及數據完整性的一種安全協議;SSL能夠在傳輸層對網絡進行加密,以防止傳輸的數據明文被監聽和截獲。
然而,SSL協議在加密、解密和秘鑰協商的過程中會消耗大量的系統資源,嚴重降低機器的性能,通常只在傳輸加密機制內容信息的時候才會使用SSL協議進行傳輸。
在SSL協議秘鑰協商過程中,客戶端與服務器端消耗的CPU計算資源因為秘鑰的算法不同消耗的資源不同。例如使用RSA系列的公鑰密碼算法,那么服務器端索要消耗的資源就要比客戶端多;在極端的情況下,使用RSA 4096進行加密解密,服務器端需要花費相當於客戶端資源的25倍才能完成計算。由此,攻擊者可以利用SSL協議消耗資源的特性進行DDoS攻擊。
THC SSL DoS攻擊
在進行SSL數據傳輸之前,通信雙方首先要進行SSL握手,以協商加密的算法交換加密秘鑰,進行身份認證;通常情況下這樣的SSL握手過程只需進行一次即可,但是在SSL協議中只有Renegotiation選項,通過它可以進行秘鑰的重新協商以建立新的秘鑰。
利用Renrgotiation選項,造成目標的資源耗盡;在進行SSL連接握手之后,攻擊者反復不斷的進行秘鑰重新協商過程,而秘鑰重新協商過程需要服務器投入比客戶端多15倍的CPU計算資源;攻擊者只需要一台普通的台式機就可以拖慢一台高性能的服務器,而如果有大量的主機同時攻擊,則會使服務器忙與協商秘鑰而完全停止響應。
SSL洪水攻擊
在SSL握手的過程中,服務器會消耗較多的CPU計算資源進行加解密,並進行數據的有效性校驗;對於客戶端發過來的數據,服務器端需要花費大量的計算資源進行加解密,之后才能對數據的有效性進行校驗;重要的是不論數據是否有效,服務器都必須先進行解密才能夠做檢查;由此攻擊者可以利用這個特性來進行SSL洪水攻擊。
SSL洪水攻擊,一個要點是需要攻擊者能夠在客戶端大量的發出攻擊請求,這就需要客戶端所進行的計算盡可能的少;對於SSL洪水攻擊,比較好的方式是在數據傳輸之前進行SSL握手的過程中發動攻擊;攻擊者並不需要完成SSL握手和秘鑰交換,而只需要在這個過程中讓服務器去解密和驗證,就能夠大量的消耗服務器端的計算資源,因此,攻擊這可以非常的容易的構造秘鑰交換過重的請求數據,達到減少客戶端的計算量的目的。
攻擊者可以使用SSLSqueeze等工具發動SSL洪水攻擊。
攻擊應用資源
攻擊DNS服務
DNS服務是互聯網的一項核心服務;通過使用DNS,人們在訪問網站時不需要記憶其IP地址,而只需輸入域名則可以訪問。針對DNS服務的攻擊方法主要有DNS QUERY洪水攻擊和DNS NXDOMAIN洪水攻擊兩種方式。
DNS QUERY洪水攻擊
DNS QUERY洪水攻擊是指向DNS服務器發送大量查詢請求以達到拒絕服務的效果。
在DNS解析的過程中,客戶端發起一次查詢請求,DNS服務器可能需要進行額外的多次查詢才可以完成解析的過程並給出應答,在這個過程中會消耗一定的計算和網絡資源;如果攻擊者利用大量的受控主機不斷發送不同域名的解析請求,那么DNS服務器的緩沖會被不斷刷新,而大量的解析請求不能命中緩沖又導致DNS服務器必須消耗額外的資源進行迭代查詢,這會極大地增加DNS服務器的資源消耗,導致DNS響應緩慢甚至完全拒絕服務。
DNS QUERY洪水攻擊的要點在於每一個DNS解析請求所查詢的域名應是不同的,這樣可能比較有效的避開DNS解析的記錄,更加有效的消耗資源。
DNS NXDOMAIN洪水攻擊
DNS NXDOMAIN洪水攻擊是DNS QUERY洪水攻擊的變種攻擊方式,區別在於后者是向DNS服務器查詢一個真實存在的域名,而前者是向DNS服務器查詢的一個不存在的域名。
在進行DNS NXDOMAIN洪水攻擊是,DNS服務器會進行多次域名查詢,同時,其緩存會被大量的NXDOMAIN記錄所填滿,導致響應正常用戶的DNS解析請求的速度邊慢;這與DNS QUERY方式所達到的效果類似。除此之外,一部分DNS服務器在獲取不到域名的解析結果時,還會再次進行遞歸查詢,向上一級的DNS服務器發送解析請求並不等待應答,這進一步增加了DNS服務器的資源消耗。
攻擊Web服務
HTTP洪水攻擊
Web服務通常使用HTTP協議進行請求和響應數據的傳輸。
常見的HTTP請求有GET請求和POST請求兩種;通常GET請求用於從Web服務器獲取數據和資源;POST請求用於向Web服務器提交數據和資源。處理這些HTTP請求的過程中,Web服務器通常需要解析請求、處理和執行服務端腳本、驗證用戶權限並多次訪問數據庫,這回消耗大量的計算資源和IO訪問資源。
由於HTTP協議是基於TCP協議的,需要完成三次握手建立TCP連接才能開始HTTP通信,因此HTTP洪水攻擊時無法使用偽造源IP地址來攻擊;攻擊者一般都會采用HTTP代理服務器來進行攻擊。
與DNS服務類似,Web服務也存在緩存機制;如果攻擊者的大量請求都命中了服務器緩存,那么這種攻擊主要作用就會體現在消耗目標網絡帶寬資源上,對於計算機和IO資源的消耗是非常有限的;因此,高效的HTTP洪水攻擊應不斷發出針對不同資源和頁面的HTTP請求,並盡可能請求無法被緩存的資源,從而加重服務器的負擔。
此外,如果服務器端還支持HTTPS服務,那么HTTPS洪水攻擊更是一種有效的攻擊方法,因為HTTPS在處理HTTP數據之上還需要調用資源對請求進行解密操作;故此會導致過大的服務負擔。
Slowloris攻擊
Slowloris攻擊是一種針對Web服務器的慢速HTTP攻擊。在HTTP協議中規定:以連續的“\r\n\r\n”作為結束標志;許多服務器在處理HTTP服務請求的時候,會等待頭部傳輸結束后在進行處理。因此,如果Web服務器沒有接收到連續的“\r\n\r\n”結束標志,就會一直接收數據並保持與客戶端的額連接,利用該特性就可讓受控主機長時間的的與Web服務器保持連接,並逐漸的消耗服務器的連接資源。
攻擊者在發送HTTP GET請求時,緩慢的發送無用的header字段,並且一直不發送結束標志,如此以來就可以長時間的占用與Web服務器的連接並保持該鏈接不被超時原因而中斷。然而Web服務器的並發連接數量是有限的,如果攻擊者利用大量的受控主機發送不完整的HTTP GET請求並長時間的占用連接資源,就會拖垮Web服務器。
慢速POST請求攻擊
慢速POST請求攻擊,是一種針對Web服務器的慢速HTTP攻擊,與Slowloris不同的是,慢速POST請求攻擊利用緩慢發送HTTP BODY的方式占用並耗盡Web服務器的連接資源。
在HTTP頭信息中,可以使用COnternt-Length字段時,服務器會將該字段的值作為HTTP BODY的長度;當Web服務器接收到含有Content-Lengthde的頭部信息的時候會對HTTP BODY的數據內容進行處理。利用這個特性我們可以是攻擊者長時間的與Web服務器保持連接,並逐漸耗盡Web服務器的連接資源。
數據處理過程攻擊
Web服務器端接收到HTTP請求后,需要檢查並處理其中的數據,通過惡意構造請求數據的內容,攻擊者可以顯著的增加數據處理過程中的資源消耗。
混合攻擊(歸類)
攻擊協議層 | 網絡層攻擊 | 傳輸層攻擊 | 應用層攻擊 |
---|---|---|---|
洪水攻擊方法 | ICMP/IGMP洪水攻擊 | UDP洪水攻擊 TCP洪水攻擊 SYN洪水攻擊 PSH+ACK洪水攻擊 ACK反射攻擊 RST洪水攻擊 SSL洪水攻擊 |
DNS QUERY洪水攻擊 DNS NXDOMAIN洪水攻擊 DNS放大攻擊 HTTP放大攻擊 SNMP放大攻擊 NTP放大攻擊 |
慢速攻擊方法 | Sockstress攻擊 THC SSL DoS攻擊 |
Slowloris攻擊 慢速 POST 請求攻擊 數據處理過程攻擊 |
《DDoS攻擊與防范深度剖析》第3章節—筆記
筆記歸類:網絡安全類
作者:王宇陽
郵箱:2821319009@qq.com
時間:2019-06-09