淺談DDos攻擊與防禦
DDos簡介
DDos又叫分散式拒絕服務,全稱Distributed Denial of Service,利用DDos造成的攻擊稱為拒絕服務攻擊,其原理就是利用大量的請求造成資源過載,導致服務不可用。
DDos攻擊從層次上可分為網路層攻擊與應用層攻擊,從攻擊手法上可分為快型流量攻擊與慢型流量攻擊,但其原理都是造成資源過載,導致服務不可用。
網路層DDos攻擊
網路層DDos攻擊包括SYN flood、UDP flood、ICMP flood等。
SYN flood攻擊
SYN flood攻擊主要利用了TCP三次握手過程中的bug,我們知道TCP三次握手過程是要建立連線的雙方傳送SYN,SYN+ACK,ACK資料包,而當攻擊方隨意構造源ip去傳送SYN包時,伺服器返回的SYN+ACK就不能得到應答(因為ip是隨意構造的),此時伺服器就會嘗試重新傳送,並且會有至少30s的等待時間,導致資源飽和服務不可用,此攻擊屬於慢型dos攻擊。
UDP flood攻擊
由於udp是一種無連線的協議,因此攻擊者可以偽造大量的源IP地址去傳送udp包,此種攻擊屬於大流量攻擊。正常應用情況下,UDP包雙向流量會基本相等,因此在消耗對方資源的時候也在消耗自己的資源。
ICMP flood攻擊
此攻擊屬於大流量攻擊,其原理就是不斷髮送不正常的ICMP包(所謂不正常就是ICMP包內容很大),導致目標頻寬被佔用,但其本身資源也會被消耗。並且目前很多伺服器都是禁ping的(在防火牆在可以遮蔽icmp包),因此這種方式已經落伍。
網路層DDos防禦
- 網路架構上做好優化,採用負載均衡分流。
- 新增抗DDos裝置,流量清洗。
- 限制單ip請求頻率。
- 防火牆等防護設定禁止icmp包等
網路層的DDos攻擊究其本質其實是無法防禦的,我們能做得就是不斷優化自身的網路架構,以及提升網路頻寬。
應用層DDos攻擊
應用層DDos攻擊不是發生在網路層,是發生在TCP建立握手成功之後,應用程式處理請求的時候。
CC攻擊
CC攻擊還有一段比較有趣的來歷,據說當時綠盟為了防禦DDos攻擊研發了一款產品,叫做“Collapasar”,能夠有效的防禦SYN flood攻擊。然而黑客為了挑釁,研發了一款Challenge Collapasar工具(簡稱CC)。
CC攻擊的原理,就是針對消耗資源比較大的頁面不斷髮起不正常的請求,導致資源耗盡。因此在傳送CC攻擊前,我們需要尋找載入比較慢,消耗資源比較多的網頁,比如需要查詢資料庫的頁面、讀寫硬碟檔案的等。通過cc攻擊,使用爬蟲對某些載入需要消耗大量資源的頁面發起http請求。
slowloris
這是由於webserver中介軟體漏洞引發的拒絕服務攻擊,其原理是以極低的速度往伺服器傳送HTTP請求。apache等中介軟體預設會設定最大併發連結數,而這種攻擊就是會持續保持連線,導致服務飽和不可用。slowloris有點類似基於HTTP協議的SYN flood攻擊。
poc
構造以下畸形http請求包
GET / HTTP/1.1\r\n
Host: Victim host\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n
Content-Length: 42\r\n
完整的http請求頭結尾應該是兩次的\r\n\r\n,這裡少了一次,因此伺服器將會一直等待。
HTTP POST DOS
其原理是在傳送HTTP POST包時,指定一個非常大的Content-Length值,然後以極低的速度發包,保持連線不斷,導致服務飽和不可用。
poc
構造以下畸形http請求包
GET / HTTP/1.1\r\n
Host: Victim host\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n
Content-Length: 9999999999\r\n\r\n
Slow Read attack
Slow Read attack攻擊方式是採用調整TCP協議中的滑動視窗大小,來對伺服器單次傳送傳送的資料大小進行控制,使得伺服器需要對一個回應分成很多個包來傳送。
Server Limit Dos
這是由於cookie導致的dos攻擊,當然其原理還是基於webserver的特性。apache預設最大的http包頭長度為8192位元組,如果超出此長度,則會返回4xx錯誤。如果我們利用儲存型xss漏洞,將一個超長的cookie寫入客戶端頁面,則使用者再訪問此頁面後,由於請求頭載入了惡意的超長cookie,導致其不能訪問該站的頁面(除非清空cookie)
ReDos
這是由於程式碼寫得有缺陷,導致使用正則時,會出現大量佔用資源的情況,導致服務不可用,這是利用了正規表示式在匹配時的某些特性決定的。
應用層DDos防禦
- 判斷User-Agent欄位(不可靠,因為可以隨意構造)
- 網頁中鑲嵌js程式碼(不可靠,因為爬蟲也可攜帶瀏覽器引擎,或者執行js程式碼)
- 針對ip+cookie,限制訪問頻率(由於cookie可以更改,ip可以使用代理,或者肉雞,也不可靠)
- 關閉apache最大連線數等,合理配置中介軟體,緩解ddos攻擊。
- 頁面中新增驗證碼,比如搜尋資料庫時。
- 編寫程式碼時,儘量實現優化,併合理使用快取技術,減少資料庫的讀取操作。
應用層的防禦有時比網路層的更難,因為導致應用層被dos攻擊的因素非常多,有時往往是因為程式設計師的失誤,導致某個頁面載入需要消耗大量資源,有時是因為中介軟體配置不當等等。而應用層DDos防禦的核心就是區分人與機器(爬蟲),因為大量的請求不可能是人為的,肯定是機器構造的。因此如果能有效的區分人與爬蟲行為,則可以很好地防禦此攻擊。
無線DDOS
@更新於2017年5月31日
參考:http://www.freebuf.com/articles/wireless/135598.html
Auth Flood攻擊
Auth Flood攻擊:即身份驗證洪水攻擊。該攻擊目標主要針對那些處於通過驗證、和AP建立關聯的關聯客戶端,攻擊者將向AP傳送大量偽造的身份驗證請求幀(偽造的身份驗證服務和狀態程式碼),當收到大量偽造的身份驗證請求超過所能承受的能力時,AP將斷開其他無線服務連線。
Deauth Flood攻擊
Deauth Flood攻擊即為取消驗證洪水攻擊,它旨在通過欺騙從AP到客戶端單播地址的取消身份驗證幀來將客戶端轉為未關聯/未認證的狀態。對於目前的工具來說,這種形式的攻擊在打斷客戶無線服務方面非常有效和快捷。一般來說,在攻擊者傳送另一個取消身份驗證幀之前,客戶端會重新關聯和認證以再次獲取服務。攻擊者反覆欺騙取消身份驗證幀才能使所有客戶端持續拒絕服務。
Association Flood攻擊
Association Flood攻擊即為關聯洪水攻擊。在無線路由器或者接入點內建一個列表即為連線狀態表,裡面可顯示出所有與該AP建立連線的無線客戶端狀態。它試圖通過利用大量模仿和偽造的無線客戶端關聯來填充AP的客戶端關聯表,從而達到淹沒AP的目的。
由於開放身份驗證(空身份驗證)允許任何客戶端通過身份驗證後關聯。利用這種漏洞的攻擊者可以通過建立多個到達已連線或已關聯的客戶端來模仿很多客戶端,從而淹沒目標AP的客戶端關聯表。
Disassociation Flood攻擊
Disassociation Flood攻擊即為取消關聯洪水攻擊,和deauthenticaiton flood攻擊表現方式很相似。它通過欺騙從AP到客戶端的取消關聯幀來強制客戶端成為未關聯/未認證的狀態。一般來說,在攻擊者傳送另一個取消關聯幀之前,客戶端會重新關聯以再次獲取服務。攻擊者反覆欺騙取消關聯幀才能使客戶端持續拒絕服務。
Disassociation Broadcast攻擊和Disassociation Flood攻擊原理基本一致,只是在傳送程度及使用工具上有所區別,前者很多時候用於配合進行無線中間人攻擊,而後者常用於目標確定的點對點無線DOS,比如破壞或干擾指定機構或部門的無線接入點等。
RF Jamming攻擊
RF Jamming攻擊即為RF干擾攻擊。該攻擊是通過發出干擾射頻達到破壞正常無線通訊的目的。而前面幾種攻擊主要是基於無線通訊過程及協議的。RF為射頻,主要包括無線訊號發射機及收信機等。
相關文章
- 淺談DDOS攻擊攻擊與防禦
- 淺談 JavaScript DDoS 攻擊原理與防禦JavaScript
- 淺談JavaScript DDoS攻擊原理與防禦JavaScript
- 淺談JS DDoS攻擊原理與防禦JS
- 魏興國:深入淺出DDoS攻擊防禦
- 淺談DDOS中NTP放大攻擊的操作過程以及防禦措施?
- DDoS 攻擊與防禦:從原理到實踐
- DDOS伺服器防禦的方法有哪些,如何防禦DDOS攻擊伺服器
- DDOS攻擊原理,種類及其防禦
- Akamai淺談網路攻擊的防禦AI
- DDoS攻擊激增,分享高效可靠的DDoS防禦方案
- 淺談如何提高防禦DDOS的效果
- 淺析DDOS攻擊防護思路
- 細說DDoS攻擊的趨勢與防禦策略(轉)
- WEB攻擊與防禦Web
- CSRF攻擊與防禦
- 網際網路公司如何防禦DDoS攻擊?
- Linux下防禦DDOS攻擊的操作梳理Linux
- 解決DDoS攻擊的趨勢與防禦策略的方法
- DDoS攻擊是什麼?網站DDoS防禦策略有哪些?網站
- 聚焦DDoS安全,分享防禦DDoS攻擊的幾大有效方法
- 【網路安全】如何有效地防禦DDOS攻擊和CC攻擊?
- 在Linux中,什麼是DDoS攻擊?如何在Linux中防禦DDoS攻擊?Linux
- 恆訊科技的DDoS攻擊防禦解決方案
- 如何防禦DDoS攻擊?學習網路安全多久?
- 運維和IT技術需知的DDOS攻擊防禦整理運維
- 如何防禦DDOS攻擊?網路安全技術學多久?
- DDoS攻擊原理是什麼?防禦措施都有哪些呢?
- 伺服器被DDOS攻擊防禦的SHELL指令碼伺服器指令碼
- 伺服器為什麼經常被攻擊?DDoS攻擊和防禦介紹伺服器
- 【網路安全入門知識】如何有效防禦DDoS攻擊和CC攻擊?
- 一文讀懂DDoS,分享防禦DDoS攻擊的幾大有效方法
- 網路攻擊盯上民生領域,應對DDoS和APT攻擊,如何有效防禦?APT
- 防止惡意攻擊,伺服器DDoS防禦軟體科普伺服器
- linux核心dos_ddos攻擊防禦演算法分析Linux演算法
- 遊戲伺服器防ddos攻擊,三招搞定ddos攻擊遊戲伺服器
- DDoS Deflate防Linux下DDOS攻擊Linux
- 淺談 CC 攻擊的防護方法