DDOS簡介
DDOS(Distributed Denial of Service),又稱分布式拒絕服務攻擊。駭客通過控制多個肉雞或服務器組成的僵屍網絡,對目標發送大量看似合法請求,從而占用大量網絡資源,癱瘓網絡,阻止用戶對網絡資源的正常訪問。
DDOS危害
出口帶寬堵死
游戲掉線導致客戶流失
服務器連接數多,連接資源被耗盡
服務器卡、慢、死機、無法連接
攻擊來源
高性能服務器配合發包軟件
可聯網的設備(如打印機、攝像頭、電視等等)
移動設備(數量多,增長速度快,其高性能利於組建僵屍網絡)
個人PC(存在漏洞的PC或一些黑客迷自願成為DDOS一員)
駭客控制的僵屍網絡(僵屍網絡又分為IRC型、HTTP型、P2P型)
DDOS原理及分類
消耗資源分類
DDOS按消耗的資源類型可分三類:網絡帶寬資源、系統資源、應用資源。
-
網絡帶寬資源: 直接攻擊、反射攻擊、攻擊鏈路
-
直接攻擊
使用大量受控主機直接向攻擊目標發送大量數據包,達到拒絕服務的目的。 常見的有ICMP/IGMP flood ,UDP flood
-
反射攻擊
攻擊者偽裝成受害人,欺騙路由器或服務器產生大量響應,進而攻擊受害者; ACK應答、DNS響應數據、NTP及SNMP等協議的響應數據可以成為攻擊方式。
-
攻擊鏈路
攻擊的目標不是互聯網端點的服務器的帶寬資源,而是骨干網上的鏈路的帶寬資源
-
-
系統資源DDOS 人為增加連接資源進行消耗和占用,阻止正常連接的建立,從而達到拒絕服務的目的。
-
攻擊TCP鏈接
SYN flood短時間內產生大量的TCP半開連接,實現攻擊
-
攻擊SSL鏈接
安全套接層SSL協議密鑰協商、加密和解密過程會消耗大量的系統資源,也成了攻擊目標。 攻擊者需要讓服務器不停的去解密和驗證,就能夠消耗服務器計算資源。
-
-
應用資源DDOS 由於DNS和WEB服務的廣泛性和重要性,這兩種服務也就成了DDoS的主要目標。
-
攻擊DNS服務
DNS query與DNS NXDOMAIN
-
攻擊Web服務
大量正常HTTP請求
不完整的HTTP請求
慢速的HTTP長連接
構造惡意的HTTP請求
-
攻擊報文特征分類
根據報文特征可分為:畸形報文、傳輸層DDoS攻擊、WEB應用DDoS攻擊、DNS DDoS攻擊、連接型DDoS攻擊。
畸形報文
非標准的報文格式,有些機器解析這些報文時耗時很大,甚至出錯,更甚至崩潰。大量的這種報文對目標機器構成很大威脅。 有以下畸形包種類:frag flood,smurf,land flood攻擊,IP畸形包、TCP畸形包、UDP畸形包等。
- frag flood:如果發送總長度超過65535字節的IP碎片,一些老的系統內核在處理的時候就會出現問題,導致崩潰或拒絕服務。如果分片之間偏移量經過精心構造,一些系統就無法處理。
- smurf:修改目的地址,並發送ICMP echo廣播報文到一個網絡中,此網絡中的所有機器都發送ICMP echo-reply到目的地址機器,此機器遭到攻擊。
- land flood:源、目的IP相同的IPv4報文,一個特別打造的SYN包中的源地址和目標地址都被設置成某一個服務器地址,這時將導致接受服務器向它自己的地址發送SYN-ACK消息,結果這個地址又發回ACK消息並創建一個空連接,每一個這樣的連接都將保留直到超時掉。
- IP畸形包:數據包中的總長度、版本等錯誤。
- TCP畸形包:構造的TCP SYN/SYN-ACK里的option和payload有錯誤,導致協議棧解析錯誤。
- UDP畸形包:包長度和payload有錯誤。
傳輸層DDoS攻擊
通過大流量的方式對目標機器造成攻擊。有以下攻擊類型:SYN flood,SYN-ACK flood,ACK flood,FIN/RST flood,UDP flood,ICMP flood(這個屬於網絡層)等。
- SYN flood:一個用戶向服務器發送SYN報文后,如果服務器在發出SYN-ACK報文后無法收到客戶端ACK報文,這種情況下服務器端一般會重發,並等待一段時間后丟棄這個未完成的連接,這段時間的長度我們稱為SYN timeout,一般來說這個時間是分鍾的數量級(大約為30秒到2分鍾)。一個用戶出現異常導致服務器的一個線程等待1分鍾並不是什么很大的問題,但如果有一個惡意的攻擊者大量的模擬這種情況,服務器端將為了維護一個非常大的半連接列表而消耗非常多的資源。即使是簡單的保存並遍歷也會消耗非常多的CPU時間和內存,何況還要不斷對這個列表中的IP進行SYN-ACK的重試。
- SYN-ACK flood:SYN-ACK報文出現在第二次握手中,是用來確認第一次握手的。一方收到SYN-ACK報文后,首先會判斷該報文是不是屬於三次握手范疇之內的報文。如果都沒有進行第一次握手就直接收到了第二次握手的報文,那么就會向對方發送RST報文,告知對方其發來報文有誤,不能建立連接。SYN-ACK Flood攻擊正是利用了這一點,攻擊者利用工具或者操縱僵屍主機,向目標服務器發送大量的SYN-ACK報文,這些報文都屬於憑空出現的第二次握手報文,服務器忙於回復RST報文,導致資源耗盡,無法響應正常的請求。
- ACK flood:在收到一個ACK報文時,如果目的端口未開放,系統會直接向源IP發送RST報文。如果端系統的相關端口是對外開放的,那么其在收到ACK報文時,首先會檢查這個ACK報文是否屬於TCP連接表中的一個已有連接(這個過程會對端系統主機CPU資源造成一定的消耗),如果是的話,則正常處理,如果不屬於任何一個已有連接,那么系統會向源IP發送RST報文。
- FIN/RST flood:TCP交互過程中還存在FIN和RST報文,FIN報文用來關閉TCP連接,RST報文用來斷開TCP連接。這兩種報文也可能會被攻擊者利用來發起DDoS攻擊,導致目標服務器資源耗盡,無法響應正常的請求。
- UDP flood:利用大量UDP小包沖擊DNS服務器或Radius認證服務器、流媒體視頻服務器。攻擊者發送大量的偽造源IP地址的小UDP包,因為是無連接性的協議,所以只要開了一個UDP的端口提供相關服務的話,那么就可以針對相關的服務進行攻擊。
- ICMP flood:通過向目標發送大量的大包。
Web應用DDoS攻擊
針對WEB應用的DDoS攻擊類型可分為:HTTP GET flood, HTTP POST flood, CC攻擊等。
- HTTP GET flood:攻擊者利用攻擊工具或者操縱僵屍主機,向目標服務器發起大量的HTTP GET報文,請求服務器上涉及數據庫操作的URI或其它消耗系統資源的URI,造成服務器資源耗盡,無法響應正常請求。
- HTTP POST flood:攻擊者利用攻擊工具或者操縱僵屍主機,向目標服務器發起大量的HTTP POST報文,消耗服務器資源,使服務器無法響應正常請求,這就是HTTP POST Flood攻擊。
- CC攻擊:CC攻擊利用代理服務器向網站發送大量需要較長計算時間的URL請求,如數據庫查詢等,導致服務器進行大量計算而很快達到自身的處理能力而形成DOS,而攻擊者一旦發送請求給代理后就主動斷開連接,因為代理並不因為客戶端這邊連接的斷開就不去連接目標服務器,因此攻擊機的資源消耗相對很小,而從目標服務器看來,來自代理的請求都是合法的。
DNS DDoS攻擊
域名作為廣大民眾訪問互聯網的起點和入口,是全球互聯網通信的基礎。域名解析系統作為承載全球億萬域名正常使用的系統,是互聯網的基礎設施。而域名系統又是一種公開服務,很容易被黑客作為攻擊的對象。域名系統的故障會導致互聯網陷入癱瘓,所以保護域名系統也變得至關重要。DNS DDoS攻擊類型有:DNS Request Flood、DNS Reply Flood和緩存投毒等。
- DNS Request Flood:黑客偽造客戶端源IP發送大量的DNS請求報文,造成DNS request flood攻擊。DNS request flood是當前最常見的DNS攻擊,這類攻擊可以針對緩存服務器,也可以針對授權服務器。
- DNS Reply Flood:DNS服務器收到DNS reply報文時,不管自己有沒有發出去過解析請求,都會對這些DNS reply報文進行處理。DNS reply flood就是黑客發送大量的DNS reply報文到DNS緩存服務器,導致緩存服務器因為處理這些DNS reply報文而資源耗盡,影響正常業務。
- DNS反射攻擊:DNS反射攻擊是DNS reply flood的一種變異,顧名思義,黑客偽造源地址發起request,reply都返回到目標機器上。
- DNS緩存投毒:緩存投毒攻擊就是黑客偽造了惡意的DNS reply報文,導致緩存服務器無意中將惡意的域名和IP地址映射關系存儲到自己的緩存中。當客戶端再通過緩存服務器請求這個域名解析時,就會被指向惡意主機。
連接型DDoS攻擊
連接型攻擊類型分為:TCP連接耗盡攻擊,TCP慢速連接攻擊,連接耗盡攻擊,loic, hoic, slowloris, Pyloris, xoic等慢速攻擊。
- TCP連接耗盡攻擊:攻擊者與被攻擊目標完成三次握手后,立刻發送FIN或RST報文,釋放本端連接,同時快速發起新的連接,以此來消耗被攻擊目標的系統資源。
- TCP慢速連接攻擊:攻擊者與被攻擊目標完成三次握手后,發送很少的報文來維持連接狀態,通過這種異常的TCP連接來消耗被攻擊目標的系統資源。攻擊者還會使用一些其他的攻擊手段,比如構造大量的並發連接、設置很小的TCP窗口、發送重傳報文等,其目的都是消耗被攻擊目標的系統資源。