「華安解密之DDoS攻防」07 HTTP原理篇 HTTP POST Flood&慢速攻擊

楊哥關注的華為官方的【華安解密之DDoS攻防】非常實用,純純的乾貨,決定每天一篇分享給愛看頭條並且愛學習的條友們。

正文如下:


0x01 HTTP POST Flood攻擊與防禦

書接上回,本篇我們來介紹HTTP POST Flood攻擊和HTTP慢速攻擊的原理及防禦方式,先來看HTTP POST Flood攻擊。攻擊者利用攻擊工具或者操縱殭屍主機,向目標服務器發起大量的HTTP POST報文,消耗服務器資源,使服務器無法響應正常請求,這就是HTTP POST Flood攻擊。

華為Anti-DDoS解決方案防禦HTTP POST Flood攻擊與防禦GET Flood攻擊類似,常用手段也是源認證,包括重定向認證和驗證碼認證。

重定向認證

Anti-DDoS系統代替服務器向客戶端響應307狀態碼(針對POST請求方法的重定向),同時向客戶端的瀏覽器注入Cookie,客戶端再次發起請求時會在HTTP報頭上附加Cookie信息,Anti-DDoS設系統通過驗證Cookie信息的真實性來驗證客戶端。

「華安解密之DDoS攻防」07 HTTP原理篇 HTTP POST Flood&慢速攻擊

1、當連續一段時間內去往目標Web服務器的HTTP POST請求報文超過告警閾值後,Anti-DDoS系統啟動源認證機制。源認證機制啟動後,Anti-DDoS系統將會代替服務器與客戶端建立TCP三次握手。

2、Anti-DDoS系統攔截HTTP請求,代替Web服務器回應307狀態碼,並在響應頭部附加上由客戶端IP生成的Cookie。

3、如果這個源是虛假源,或者不支持完整HTTP協議棧的攻擊工具,不會重新發起請求。

4、如果這個源是真實客戶端,Anti-DDoS系統生成的Cookie會寫入到瀏覽器中,並且客戶端會重新發起請求,請求頭部就會帶有該Cookie信息。Anti-DDoS系統收到請求後,驗證Cookie是否正確,如果正確則將該客戶端的源IP地址加入白名單。然後Anti-DDoS系統會回應408狀態碼,表示請求超時,使客戶端重新發起訪問。

5、後續這個客戶端發出的HTTP請求報文命中白名單直接通過。

我們結合一組抓包信息來看一下交互報文的具體情況。

1、Anti-DDoS系統代替Web服務器與客戶端建立TCP三次握手,然後客戶端發起訪問請求。

「華安解密之DDoS攻防」07 HTTP原理篇 HTTP POST Flood&慢速攻擊

2、Anti-DDoS系統代替Web服務器回應307狀態碼,同時在響應頭部附加上由客戶端IP生成的Cookie,然後雙方關閉連接。

「華安解密之DDoS攻防」07 HTTP原理篇 HTTP POST Flood&慢速攻擊


3、真實客戶端會再次與Anti-DDoS系統建立TCP三次握手,並且會重新發起請求,請求頭部就會帶有Cookie信息。

「華安解密之DDoS攻防」07 HTTP原理篇 HTTP POST Flood&慢速攻擊

4、Anti-DDoS系統收到請求後,通過驗證Cookie來判定該客戶端為真實客戶端,將其IP地址加入白名單。然後Anti-DDoS系統會回應408狀態碼,表示請求超時,使客戶端重新發起訪問。

「華安解密之DDoS攻防」07 HTTP原理篇 HTTP POST Flood&慢速攻擊

上面介紹的307重定向認證方式能夠很好地防禦HTTP POST Flood攻擊,但是這種方式也具有一定的侷限性。其一,依賴於客戶端瀏覽器的Cookie的機制,受安全級別限制。如果客戶端的瀏覽器安全級別較高而無法寫入Cookie,會導致認證不通過;其二,第一階段重定向結束後,需要客戶端再次手動執行提交等操作,才能重新發起POST請求。

同HTTP GET Flood的防禦方式相似,HTTP POST Flood的源認證防禦也支持增強方式,即驗證碼認證。

驗證碼認證

此處的驗證碼認證與HTTP GET Flood中的驗證碼機制相同,Anti-DDoS系統要求客戶端輸入驗證碼,以此來判斷請求是否由真實的用戶發起。其弊端也是需要人機交互輸入驗證碼,用戶體驗稍差一些。具體的工作原理請參考HTTP GET Flood攻擊與防禦部分中的介紹,此處不再贅述。

URI動態指紋學習和URI行為監測

防禦HTTP POST Flood攻擊時,也可以使用URI動態指紋學習和URI行為監測防禦方式,作為源認證方式的補充,滿足不同場景的需求。其防禦原理我們在上面的HTTP GET Flood攻擊與防禦部分中已經介紹過,在此也不贅述了。

瞭解兩種Flood類攻擊後,下面我們來認識另外一種針對HTTP協議的DDoS攻擊:慢速攻擊。與Flood類攻擊靠海量的數據洪流“淹沒”目標服務器不同,慢速攻擊反其道而行之,通過發送很少的數據來維持連接狀態,持續消耗目標服務器的資源。

0x02 HTTP慢速攻擊與防禦

HTTP慢速攻擊是利用HTTP協議的正常交互機制,先與目標服務器建立一個連接,然後長時間保持該連接不釋放。如果攻擊者持續與目標服務器建立這樣的連接,就會使目標服務器上的可用資源耗盡,無法提供正常服務。

HTTP慢速攻擊主要包括針對HTTP請求報文頭部結束符的Slow Headers攻擊,以及針對POST請求報文數據長度的Slow POST攻擊。

Slow Headers

我們在HTTP協議基礎部分中介紹HTTP請求報文時,提到過請求頭部的後面會存在一個空行(結束符),其中包括回車符和換行符,告知服務器請求頭部結束,後面不再有請求頭。如果服務器沒有收到這個空行則會一直保持連接。

Slow Headers攻擊正是利用這一點,攻擊者使用GET或POST請求方法與目標服務器建立連接,然後持續發送不包含結束符的HTTP頭部報文,目標服務器會一直等待請求頭部中的結束符而導致連接始終被佔用。如果攻擊者控制大量的殭屍主機向目標服務器發起這種攻擊,將會導致服務器資源耗盡,無法正常提供服務。

「華安解密之DDoS攻防」07 HTTP原理篇 HTTP POST Flood&慢速攻擊

如下圖所示,正常的HTTP報文中請求頭部的後面會有結束符0x0d0a(\\r\\n的十六進制表示方式),而攻擊報文中不包含結束符,並且攻擊者會持續發送不包含結束符的HTTP頭部報文,維持連接狀態,消耗目標服務器的資源。

「華安解密之DDoS攻防」07 HTTP原理篇 HTTP POST Flood&慢速攻擊

Slow Headers攻擊行為的特徵比較明顯,華為Anti-DDoS解決方案防禦Slow Headers攻擊時,會對HTTP報文進行檢查。如果發現某個源發出的連續多個HTTP GET/POST請求報文的報文頭中都沒有結束符“\\r\\n”,則認為發生Slow Headers攻擊,將該源IP地址加入黑名單。

Slow POST

Slow POST攻擊利用的是POST請求方法,攻擊者向目標服務器發送POST請求報文提交數據,數據的長度設置為一個很大的數值,但是在隨後的數據發送中,每次只發送很小的報文,這樣就是導致目標服務器一直等待攻擊者發送數據。如果攻擊者控制大量的殭屍主機向目標服務器發起這種攻擊,將會導致服務器資源耗盡,無法正常提供服務。

「華安解密之DDoS攻防」07 HTTP原理篇 HTTP POST Flood&慢速攻擊

如下圖所示,Slow POST攻擊報文中,POST請求頭部的Content-Length關鍵字的值設置為8192,表示數據長度為8192字節,但是攻擊者後續每次只發送1個字節的報文,導致連接一直被佔用,消耗了服務器的資源。

「華安解密之DDoS攻防」07 HTTP原理篇 HTTP POST Flood&慢速攻擊

華為Anti-DDoS解決方案防禦Slow POST攻擊時,防禦方法也是對HTTP報文進行檢查。如果發現某個源發出的連續多個HTTP POST請求報文的長度設置的很大,但是實際報文的數據部分長度都很小,則認為發生Slow POST攻擊,將該源IP地址加入黑名單。

至此,我們講解了HTTP協議的基礎知識,並分析了針對HTTP協議的DDoS攻擊方式以及防禦原理,下一篇華安將給大家帶來NTP攻擊事件的解密,敬請關注。


上期鏈接:




分享到:


相關文章: