1、DDos的概念
? ? ? ?DDoS,Distributed Denial of Service即分布式拒絕服務;網絡攻擊是指借助于客戶或服務器技術,將整個計算機聯合起來作為攻擊的平臺,對任意或多個目標發動DDoS攻擊,而有效提高拒絕服務攻擊的威懾力。
2、DDos攻擊的種類
? ? ? ?它的類型有這些:但不限于{?DDoS攻擊、傳輸層(4層)DNSDDoS攻擊、Web應用DDoS攻擊、畸形報文、?連接型DDoS攻擊}
(1)DDoS攻擊
? ? ? ?域名作為廣大民眾訪問互聯網的起點和入口,是全球互聯網通信的基礎。域名解析系統作為承載全球億萬域名正常使用的系統,是互聯網的基礎設施。而域名系統又是一種公開服務,很容易被黑客作為攻擊的對象。域名系統的故障會導致互聯網陷入癱瘓,所以保護域名系統也變得至關重要。DNSDDoS攻擊類型有:DNS Request Flood、DNS Reply Flood和緩存投毒等。
? ? ? ? 1)?DNS Request Flood:黑客偽造客戶端源IP發送大量的DNS請求報文,造成DNS request flood攻擊。DNS request flood是當前最常見的DNS攻擊,這類攻擊可以針對緩存服務器,也可以針對授權服務器;
? ? ? ? 2)?DNS Reply Flood:DNS服務器收到DNS reply報文時,不管自己有沒有發出去過解析請求,都會對這些DNS reply報文進行處理。DNS reply flood就是黑客發送大量的DNS reply報文到DNS緩存服務器,導致緩存服務器因為處理這些DNS reply報文而資源耗盡,影響正常業務;
? ? ? ? 3)?DNS反射攻擊:DNS反射攻擊是DNS reply flood的一種變異,顧名思義,黑客偽造源地址發起request,reply都返回到目標機器上;
? ? ? ? 4)?DNS緩存投毒:緩存投毒攻擊就是黑客偽造了惡意的DNS reply報文,導致緩存服務器無意中將惡意的域名和IP地址映射關系存儲到自己的緩存中。當客戶端再通過緩存服務器請求這個域名解析時,就會被指向惡意主機。
(2)傳輸層(4層)DNS? DDos攻擊
? ? ? 1)?通過大流量的方式對目標機器造成攻擊。有以下攻擊類型:syn flood,syn-ack flood,ack flood,fin/rst flood,udp flood,icmp flood(這個屬于網絡層)等。syn flood:一個用戶向服務器發送syn報文后,如果服務器在發出sys+ack報文后無法收到客戶端ack報文,這種情況下服務器端一般會重試(再次發送syn+ack給客戶端),并等待一段時間后丟棄這個未完成的連接,這段時間的長度我們稱為syn timeout,一般來說這個時間是分鐘的數量級(大約為30秒-2分)。
? ? ? ? 一個用戶出現異常導致服務器的一個線程等待1分鐘并不是什么很大的問題,但如果有一個惡意的攻擊者大量的模擬這種情況,服務器端將為了維護一個非常大的半連接列表而消耗非常多的資源。即使是簡單的保存并遍歷也會消耗非常多的CPU時間和內存,何況還要不斷對這個列表中的IP進行syn+ack的重試。
? ? ? ? 2)?syn-ack flood:SYN-ACK報文出現在第二次握手中,是用來確認第一次握手的。一方收到SYN-ACK報文后,首先會判斷該報文是不是屬于三次握手范疇之內的報文。如果都沒有進行第一次握手就直接收到了第二次握手的報文,那么就會向對方發送RST報文,告知對方其發來報文有誤,不能建立連接。SYN-ACK Flood攻擊正是利用了這一點,攻擊者利用工具或者操縱僵尸主機,向目標服務器發送大量的SYN-ACK報文,這些報文都屬于憑空出現的第二次握手報文,服務器忙于回復RST報文,導致資源耗盡,無法響應正常的請求。
? ? ? ? 3)?ack flood:在收到一個ACK報文時,如果目的端口未開放,那么端系統會直接向源IP發送RST報文。如果端系統的相關端口是對外開放的,那么其在收到ACK報文時,首先會檢查這個ACK報文是否屬于TCP連接表中的一個已有連接(這個過程會對端系統主機CPU資源造成一定的消耗),如果是的話,則正常處理,如果不屬于任何一個已有連接,那么端系統會向源IP發送RST報文。
? ? ? ?4)?fin/rst flood:TCP交互過程中還存在FIN和RST報文,FIN報文用來關閉TCP連接,RST報文用來斷開TCP連接。這兩種報文也可能會被攻擊者利用來發起DDoS攻擊,導致目標服務器資源耗盡,無法響應正常的請求。
? ? ? ? 5)?udp flood:利用大量UDP小包沖擊DNS服務器或Radius認證服務器、流媒體視頻服務器。攻擊者發送大量的偽造源IP地址的小UDP包,因為是無連接性的協議,所以只要開了一個UDP的端口提供相關服務的話,那么就可以針對相關的服務進行攻擊。
? ? ? ? 6)?icmp flood:通過向目標發送大量的大包。
(3)Web應用DDoS攻擊
目前Web應用這么多,攻擊的種類又分為:http get flood, http post flood, cc攻擊等
? ? ? ? 1)?http get flood:攻擊者利用攻擊工具或者操縱僵尸主機,向目標服務器發起大量的HTTP GET報文,請求服務器上涉及數據庫操作的URI或其它消耗系統資源的URI,造成服務器資源耗盡,無法響應正常請求;
? ? ? ?2)?http post flood:攻擊者利用攻擊工具或者操縱僵尸主機,向目標服務器發起大量的HTTP POST報文,消耗服務器資源,使服務器無法響應正常請求,這就是HTTP POST Flood攻擊;
? ? ? ?3)?cc攻擊:CC攻擊利用代理服務器向網站發送大量需要較長計算時間的URL請求,如數據庫查詢等,導致服務器進行大量計算而很快達到自身的處理能力而形成DOS,而攻擊者一旦發送請求給代理后就主動斷開連接,因為代理并不因為客戶端這邊連接的斷開就不去連接目標服務器,因此攻擊機的資源消耗相對很小,而從目標服務器看來,來自代理的請求都是合法的。
(4)?畸形報文
? ? ? ?非標準的報文格式,有一些機器解析這些報文時耗時很大,甚至出錯,更甚至崩潰;大量的這種報文對目標機器構成很大威脅。有以下畸形包種類: frag flood,smurf,land flood攻擊,ip畸形包、tcp畸形包、udp畸形包等。
? ? ? ?1)?frag flood: 鏈路層MTU限制了數據幀的最大長度,不同網絡類型都有一個上限值。以太網MTU是1500,可以用netstat -i命令查看;如果IP層有數據包要傳,而且數據包的長度超過了MTU,那么IP層就會對數據包進行分片,使每一片長度小于或等于MTU;IP首部有兩個字節表示數據包的大小,所以IP數據包最長只能為0xFFFF,就是65535字節;如果發送總長度超過65535字節的IP碎片,一些老的系統內核在處理的時候就會出現問題,導致崩潰或拒絕服務;如果分片之間偏移量經過精心構造,一些系統就無法處理;
? ? ? ?2)?smurf: 修改目的地址,并發送ICMP echo廣播報文到一個網絡中,此網絡中的所有機器都發送ICMP echo-reply到目的地址機器,此機器遭到攻擊;
? ? ? ? 3)?land flood: 源目IP相同的IPv4報文,一個特別打造的SYN包中的源地址和目標地址都被設置成某一個服務器地址,這時將導致接受服務器向它自己的地址發送SYN一ACK消息,結果這個地址又發回ACK消息并創建一個空連接,每一個這樣的連接都將保留直到超時掉。對Land攻擊反應不同,許多UNIX系統將崩潰,而 Windows NT 會變的極其緩慢(大約持續五分鐘);
? ? ? ? 4)?ip畸形包: 數據包中的總長度和版本等錯誤;
? ? ? ? 5)?tcp畸形包: syn/syn-ack里的option、payload有錯誤;
? ? ? ? 6)?udp畸形包: 包長度、payload有錯誤。
(5)?連接型DDoS攻擊
? ? ? ?連接型的DDoS攻擊類型有:TCP連接耗盡攻擊、TCP慢速連接攻擊、連接耗盡攻擊、loic、?hoic、?slowloris、?Pyloris、?xoic等慢速的網絡攻擊
? ? ? ? 1)?TCP連接耗盡攻擊:攻擊者與被攻擊目標握手三次后,立即發送FIN或RST消息?,釋放本地連接,并快速啟動新連接,消耗被攻擊目標的系統資源;
? ? ? ? 2)?TCP慢連接攻擊:攻擊者與被攻擊目標握手三次后,發送少量數據包來維持連接狀態,通過這種異常的TCP連接消耗被攻擊目標的系統資源;攻擊者還會使用一些其他的攻擊手段,如構造大量的并發連接、設置一個小的TCP窗口、發送重傳消息等,所有這些都是為了消耗被攻擊目標的系統資源。
? ? ? ? 3)?loic、hoic、slowloris、Pyloris、xoic等都是攻擊工具。