咱們能夠採用對目標的網絡帶寬資源進行攻擊,目的就是浪費對方有限的網絡帶寬資源,使得目標服務出現網絡滯緩直至網絡帶寬資源匱乏,沒法訪問或訪問速度慢。web
直接攻擊,使用大量的受控主機直接向被攻擊目標發送大量的網絡數據包,佔用目標的網絡帶寬,並消耗服務器和網絡設備的數據處理能力,達到拒絕服務攻擊的目的。【洪水攻擊和人海戰術能夠同樣的理解】算法
網絡控制消息協議(ICMP)是TCP/IP協議級當中核心之一,用於在網絡中發送控制消息,提供可能發生在通訊環境中的各類問題反饋。數據庫
因特網組管理協議(IGMP)是用於管理因特網協議多播組成員的一種通訊協議。緩存
攻擊者使用受控主機向目標發送大量的ICMP或IGMP報文,進行洪水攻擊以消耗目標的網絡帶寬資源。在早期使用cmd中的ping命令就能夠ping目標主機發送大量的ICMP數據包,當數據包的大小超過了目標網絡帶寬的極限(當時都是百兆網卡)時候,就會形成目標的網絡卡頓(ping素有死亡之ping的雅稱);固然這種攻擊已經幾乎無效,由於目標能夠直接過濾掉無效的數據包,使之攻擊無效。安全
用戶數據包協議,是一種面向無鏈接的不可靠的傳輸層協議,主要用於不要求分組到達目標的傳輸(內容較小的傳輸任務)服務器
利用UDP數據包發出的洪水攻擊,與ICMP/IGMP的洪水攻擊的原理機制差很少,在UDP方面一般選擇小包或大包方式攻擊目標。網絡
小包指的是 64 字節的數據包,這也是以太網上傳輸的數據幀的最小值。在相同的流量下,包體積越小,數據包的數量就越多;而因爲交換機、路由器等網絡設備須要對每一個數據包進行校驗,所以使用UDP小包攻擊可以最大程度的增大網絡設備處理數據包的壓力,形成處理速度緩慢和傳輸延遲等攻擊效果併發
打包指的是1500字節以上的數據包,其大小超過了以太網的最大傳輸單元。使用大包攻擊,能夠最大程度的佔用網絡傳輸的數據帶寬,迫使目標在接收數據不得不進行分片重組,以此形成網絡擁堵,服務響應緩慢的目的。dom
使用ICMP和UDP等洪水攻擊方式直接對目標展開網絡帶寬資源的消耗攻擊,這種攻擊方法的侷限性很是的大,並且很容易找到源頭,即便僞造了本身的IP位置。tcp
反射攻擊(DRDoS),利用路由器、服務器等設備對請求發出應答,從而反射攻擊流量並隱藏攻擊來源的一種方法。
反射攻擊時,攻擊者使用受控主機發送大量的數據包,這些數據包的特別之處在於:其目的IP地址指向的是做爲反射器的網絡設施,而源IP地址則被僞形成被攻擊目標的IP地址。反射器在收到數據包是,會認爲該數據包是由目標所發出的請求,所以會將響應的數據發送給目標,當大量的響應數據包涌向同一個目標時,就會消耗目標的網絡帶寬資源,以此形成DDoS攻擊的目的。
該攻擊方法須要在互聯網上尋找大量的「反射器」,某些種類的反射攻擊不難實現,對於ACK的反射攻擊,只須要在互聯網上找到開放TCP端口的服務器便可。
反射攻擊是無證(不握手)的,因此若是有認證或握手的化,就沒法實現下一步;故此反射攻擊是創建在UDP協議的網絡之上而進行的。
放大攻擊是一種特殊的反射攻擊,特殊之處在於反射器對於網絡流量具備放大做用,所以能夠這種反射器成爲放大器。
TCP鏈接時候,須要三次握手(SYN—ACK,SYN——ACK),在這個鏈接的過程當中服務端接收客戶端發來的SYN鏈接請求,會對請求進行ACK應答;攻擊者就能夠利用三次握手時的ACK應答的機制,進行ACK反射攻擊。
攻擊者將SYN請求的源IP地址僞形成攻擊目標的IP地址,服務器在創建TCP鏈接時的ACK應答數據包,就會根據SYN請求包中的IP地址發送ACK數據包,而ACK數據包就會發給目標主機;當大量的ACK數據包返回到僞造的IP(即目標主機IP)以後,就會形成目標的網絡帶寬擁堵;攻擊實施時,網絡掃描大量的反射器地址,而後向這些地址發送僞造後的源IP的SYN請求包。
DNS域名系統;做爲將域名和IP地址相互映射的一個分佈式數據庫,主要使用的是UDP協議。一般,DNS響應數據包會比查詢數據包大,所以攻擊者能夠利用普通的DNS查詢請求發起一個反射放大(多倍)攻擊。更有效方法是使用RFC 2671中定義的DNS擴展機制EDNS0;
攻擊者能夠利用dig和EDNS0進行高效的DNS放大攻擊;攻擊者向開放的DNS解析器發送dig查詢命令,將OPT RR字段中的UDP報文大小設置爲大值4096,並將源IP地址僞形成目標的IP地址,DNS解析器收到查詢請求後就會將解析的結果發送給攻擊目標IP。
網絡時間協議NTP,是用來使計算機時間同步化的一種協議,他可使計算機與時鐘源進行同步化並提升精確度的時間校訂,NTP使用UDP-123端口進行通訊。
在NTP協議的服務器上,一般會實現一系列的Mode 7的調試接口,而接口中的monlist請求可以獲取到與目標NTP服務器進行同步的最後600個客戶端的IP地址等通訊。這意味着,只須要發送一個很小的請求包,就可以觸發大量連續的包含IP地址信息等數據的UDP響應數據包。
與ACK反射攻擊和DNS放大攻擊的機制相似,發送NTP放大攻擊也須要進行實現的網絡掃描,得到大量的NTP服務器。
簡單網絡管理協議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是一種面向鏈接、可靠的、基於字節流的傳輸層協議,不一樣的主機應用層之間須要可靠的端到端的鏈接,可是IP層沒法提供這樣的流機制,在現實中都是依靠TCP協議來實現。
TCP的鏈接過程俗稱爲「三次握手」,在三次握手的階段都是很容易受到DDoS攻擊的。
TCP洪水攻擊是在「創建鏈接」階段對TCP資源進行攻擊的。
在三次握手進行的過程當中,服務器會建立並保存TCP鏈接的信息,但這個信息一般會被保存在鏈接表的結構中;可是鏈接表的大小是有限的,一旦服務器接收到的鏈接數量超過了鏈接表存儲的數量時,服務器就沒法建立新的TCP鏈接了。
攻擊者能夠利用大量的受控主機,向目標主機創建TCP鏈接,佔滿目標主機的鏈接表使得目標主機沒法接收新的TCP鏈接。
SYN洪水攻擊是最經典的一種DDoS攻擊方式,這種攻擊(SYN洪水攻擊)方式是主要的DDoS攻擊方式之一。
TCP半開鏈接:
在創建TCP鏈接過程當中,服務器返回了響應的SYN+ACK報文後,若是客戶端沒有對其進行確認,服務器就會重傳SYN+ACK報文並等待客戶端的確認,由此就會造成TCP的半開狀態,在半開狀態下,若是一直維持半開鏈接就會一直保存在服務器的鏈接表中。
因爲鏈接表的大小是有限的,若是在短期內產生大量的半開鏈接,而鏈接又是沒有意義的鏈接,就會大量的佔滿鏈接表的空間。
受控主機系向目標發送大量的SYN報文,跳過最後的ACK報文發送,使得鏈接處於半開狀態;但由此hi很容易的暴露受控主機的IP地址,同時響應報文會做爲反射流量佔用攻擊者的帶寬資源;因此更有力的方法就是:攻擊者將SYN報文的源IP地址僞形成其餘主機的IP地址或者不存在的IP地址,這樣使得目標會將響應報文發送給僞造的IP地址,從而佔用鏈接i幀元並隱藏攻擊源。
TCP數據傳輸過程當中,能夠經過設置PSH標誌位來表示當前數據傳輸結束,須要服務端進行處理。
在正常的TCP傳輸過程當中,若是待發送的數據會清空發送緩衝區,那麼操做系統的TCP/IP協議棧就會自動爲該TCP數據包設置PSH標誌,一樣當服務端接收到一個設置了PSH+ACK標誌的報文時,意味着當前數據傳輸已經結束,所以須要當即將這些數據遞交給服務進程並清空接收緩衝區,而無需等待判斷是否會有額外的數據。
因爲帶有PSH標誌的TCP數據包會強制要求接收端將接收緩衝區清空並將數據提交給應用服務進行處理,所以當攻擊者利用受控主機向目標發送大量的PSH+ACK報文數據包的時候,目標就會消耗大量的系統資源不斷的進行接收緩衝區的清空處理,致使沒法正常處理數據,從而形成DDoS。
單獨使用PSH+ACK洪水攻擊的做用不會太明顯,更有效的方式是SYN洪水攻擊與ACK攻擊方式相結合,這樣能夠繞過一部分防禦設備,加強攻擊的效果。
TCP斷開時,一般會有帶有FIN標誌報文的四次交互(四次揮手)來斷TCP的鏈接,但如果客戶端或服務端出現異常,則沒法正常的完成四次揮手終止鏈接,就會使用RST報文將鏈接強制終止。
RST表示復位,用來在異常的時候關閉鏈接,發送端發送RST報文關閉鏈接時,不須要等待緩衝區中的數據報所有發送完畢,而會直接丟棄緩衝區中的數據包併發送RST報文;一樣接收端在接收到RST報文後也就會清空緩衝區關閉二者之間的TCP鏈接。
攻擊這能夠利用RST報文的這個特性,發送僞造的帶有RST標誌的TCP報文,強制中斷客戶端與服務端的TCP鏈接;在僞造RST報文的過程當中服務器的IP地址和端口號是已知的,攻擊者還須要設法得到客戶端的IP地址和端口號,而且使得RST報文的序列號處於服務器的接收窗口內。【若是攻擊者和目標處於同一內網下,能夠經過ARP欺騙或這網路嗅探得到】
在不知道客戶端的IP和端口狀況下,經常採用「盲打」的猜解策略,只要巨大數據量的中的一條RST報文能夠和客戶端的ip和端口匹配上,就可以中斷鏈接。
一般這種強制截斷TCP鏈接的DDoS攻擊方法,每每是針對在線用戶的遊戲、視頻服務。
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協議祕鑰協商過程當中,客戶端與服務器端消耗的CPU計算資源由於祕鑰的算法不一樣消耗的資源不一樣。例如使用RSA系列的公鑰密碼算法,那麼服務器端索要消耗的資源就要比客戶端多;在極端的狀況下,使用RSA 4096進行加密解密,服務器端須要花費至關於客戶端資源的25倍才能完成計算。由此,攻擊者能夠利用SSL協議消耗資源的特性進行DDoS攻擊。
在進行SSL數據傳輸以前,通訊雙方首先要進行SSL握手,以協商加密的算法交換加密祕鑰,進行身份認證;一般狀況下這樣的SSL握手過程只需進行一次便可,可是在SSL協議中只有Renegotiation選項,經過它能夠進行祕鑰的從新協商以創建新的祕鑰。
利用Renrgotiation選項,形成目標的資源耗盡;在進行SSL鏈接握手以後,攻擊者反覆不斷的進行祕鑰從新協商過程,而祕鑰從新協商過程須要服務器投入比客戶端多15倍的CPU計算資源;攻擊者只須要一臺普通的臺式機就能夠拖慢一臺高性能的服務器,而若是有大量的主機同時攻擊,則會使服務器忙與協商祕鑰而徹底中止響應。
在SSL握手的過程當中,服務器會消耗較多的CPU計算資源進行加解密,並進行數據的有效性校驗;對於客戶端發過來的數據,服務器端須要花費大量的計算資源進行加解密,以後才能對數據的有效性進行校驗;重要的是不論數據是否有效,服務器都必須先進行解密纔可以作檢查;由此攻擊者能夠利用這個特性來進行SSL洪水攻擊。
SSL洪水攻擊,一個要點是須要攻擊者可以在客戶端大量的發出攻擊請求,這就須要客戶端所進行的計算儘量的少;對於SSL洪水攻擊,比較好的方式是在數據傳輸以前進行SSL握手的過程當中發動攻擊;攻擊者並不須要完成SSL握手和祕鑰交換,而只須要在這個過程當中讓服務器去解密和驗證,就可以大量的消耗服務器端的計算資源,所以,攻擊這能夠很是的容易的構造祕鑰交換太重的請求數據,達到減小客戶端的計算量的目的。
攻擊者可使用SSLSqueeze等工具發動SSL洪水攻擊。
DNS服務是互聯網的一項核心服務;經過使用DNS,人們在訪問網站時不須要記憶其IP地址,而只需輸入域名則能夠訪問。針對DNS服務的攻擊方法主要有DNS QUERY洪水攻擊和DNS NXDOMAIN洪水攻擊兩種方式。
DNS QUERY洪水攻擊是指向DNS服務器發送大量查詢請求以達到拒絕服務的效果。
在DNS解析的過程當中,客戶端發起一次查詢請求,DNS服務器可能須要進行額外的屢次查詢才能夠完成解析的過程並給出應答,在這個過程當中會消耗必定的計算和網絡資源;若是攻擊者利用大量的受控主機不斷髮送不一樣域名的解析請求,那麼DNS服務器的緩衝會被不斷刷新,而大量的解析請求不能命中緩衝又致使DNS服務器必須消耗額外的資源進行迭代查詢,這會極大地增長DNS服務器的資源消耗,致使DNS響應緩慢甚至徹底拒絕服務。
DNS QUERY洪水攻擊的要點在於每個DNS解析請求所查詢的域名應是不一樣的,這樣可能比較有效的避開DNS解析的記錄,更加有效的消耗資源。
DNS NXDOMAIN洪水攻擊是DNS QUERY洪水攻擊的變種攻擊方式,區別在於後者是向DNS服務器查詢一個真實存在的域名,而前者是向DNS服務器查詢的一個不存在的域名。
在進行DNS NXDOMAIN洪水攻擊是,DNS服務器會進行屢次域名查詢,同時,其緩存會被大量的NXDOMAIN記錄所填滿,致使響應正經常使用戶的DNS解析請求的速度邊慢;這與DNS QUERY方式所達到的效果相似。除此以外,一部分DNS服務器在獲取不到域名的解析結果時,還會再次進行遞歸查詢,向上一級的DNS服務器發送解析請求並不等待應答,這進一步增長了DNS服務器的資源消耗。
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攻擊是一種針對Web服務器的慢速HTTP攻擊。在HTTP協議中規定:以連續的「\r\n\r\n」做爲結束標誌;許多服務器在處理HTTP服務請求的時候,會等待頭部傳輸結束後在進行處理。所以,若是Web服務器沒有接收到連續的「\r\n\r\n」結束標誌,就會一直接收數據並保持與客戶端的額鏈接,利用該特性就可以讓受控主機長時間的的與Web服務器保持鏈接,並逐漸的消耗服務器的鏈接資源。
攻擊者在發送HTTP GET請求時,緩慢的發送無用的header字段,而且一直不發送結束標誌,如此以來就能夠長時間的佔用與Web服務器的鏈接並保持該連接不被超時緣由而中斷。然而Web服務器的併發鏈接數量是有限的,若是攻擊者利用大量的受控主機發送不完整的HTTP GET請求並長時間的佔用鏈接資源,就會拖垮Web服務器。
慢速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