當前位置:
首頁 > 最新 > Memcached DRDoS攻擊趨勢

Memcached DRDoS攻擊趨勢

基於Memcached服務的反射攻擊,由於其 5萬倍的反射比例,從一開始出現就成為DDoS攻擊界的「新寵」。 2018年2月28日 , GitHub遭受了1.35T的Memcached DRDoS攻擊。目前基於安全專家以及相關機構的努力,可利用的反射源已經逐步減少。攻擊者也逐步更新自己的攻擊手段躲避審查,本文主要介紹基於Memcached的DDoS攻擊趨勢以及一些新的Memcached DRDoS的攻擊手法。

攻擊趨勢

從2月25號開始,Memcached DRDoS攻擊數量逐漸增多,3月初,Memcached DRDoS攻擊只佔總體攻擊的5%,三月中旬以後,逐漸超過10%,現在穩定在10%-20%之間波動,最近一周增長到30%。

放大的魔力

5萬倍

CF在2月份發布文章稱,檢測到發送15位元組的包,收到750k位元組的包。從而計算出反射倍數是51200倍。

CF提出的5萬倍僅僅是按響應數據與請求數據的比例計算得到的,但DDoS攻擊消耗的是網路帶寬資源,所以真實的放大倍數必須考慮數據包的實際網路數據流長度。

在IEEE 802.3注1中,對乙太網數據包有明確的規定:

根據802.3規範,一個數據包在網路上傳播,佔用的長度範圍是84~1542。上述發送15位元組,實際網路上數據包佔有應為84位元組,接收1400位元組,實際網路上數據包佔有應為1466位元組。因為一個完整UDP的包,發送到網路中的報文實際長度會包含協議頭,包括14(以太頭) + 20(IP頭)+ 8(UDP頭)+ 4(FCS)+ 20(偵間隙) = 66位元組。

按照CF的檢測到的數據重新計算 :

750位元組產生的網路流量達到:750 * 1024 / 1400 * 1466 = 804205.7

實際反射倍數則是:804205 / 84 = 9573.9 倍。

可見計算方法不同,放大倍數差距如此之大,從原來的5萬倍變為不到1萬倍。但不管怎麼樣的差距,都不會影響Memcached反射攻擊成為DRDoS的TOP 1。

當然事實上,即使如何嚴謹的計算放大倍數,此類攻擊還是有進一步放大的案例。


Memcached 的value默認設置的最大長度是1Mbyte。單個get a請求後可實現的反射倍數達到: 1024 * 1024 / 1400 * 1466 / 84 = 13071.5倍。

雖然直接調大VALUE的值放大倍數還不足2萬倍,但通過一些攻擊技巧還是能實現反射倍數達到十幾萬倍。

我們最近捕獲到的攻擊,就使用了一種技巧實現了這樣的放大效果。

上圖所述的攻擊者在一個請求中,使用了多次查詢,通過在一個UDP包中執行多條get指令,Memcached伺服器返回大量的多條數據包,由於UDP包本身的長度要佔用66位元組,通過這樣的節省UDP包發送條數的手法,達到比之前單條發送要放大更多倍的效果。

上述攻擊實例中,攻擊者使用70個Memcached的GET指令拼裝到一個UDP包中,發送包總長度844位元組(Wireshark沒有計算偵間隙和FCS,所以是820 + 24 = 844)。

該指令獲取的VALUE值的長度達到304800:

實現反射倍數:304800 * 70 / 1400 * 1466 / 844 = 26471.4倍。

理論上這不是最高的放大倍數。

當GET指令的個數增加時,反射比例還會增大,加上優化payload,最終能實現十幾萬倍的反射效果:

1)將get VcoOw
替換為get a
,在一個UDP包中構造更多的請求指令,考慮MTU 1500,IP頭20,UDP頭8,Memcache協議頭8,則指令個數可達:(1500 - 20 - 8 - 8) / 7 = 209.14,安全計算取205個指令。

2)發送包長:66 + 8 + 7 * 205 = 1509位元組,

3)每個value值為1024 * 1024位元組,

則總體反射倍數:1024 * 1024 * 205 / 1400 * 1466 / 1509 = 149166.2倍 !

實際的環境中,反射比例要小的多。一方面,是由於Memcached伺服器的性能決定,另一方面UDP存在一定比例的丟包,甚至還有空響應的。

放大的意外

在對捕獲的攻擊數據分析中,有一定比例的返回包只有一個END數據

這是由於GET 指令的KEY不存在。一個820位元組的發送包能產生70個60位元組UDP小包。

反射倍數:(84 * 70) / 844 = 6.97倍。

雖然按帶寬計算的反射比例較低,但由於路由設備以及伺服器對小包處理性能較弱,因而大量的小包也會對網路也會產生較大的影響。

針對部分採樣數據的統計,END小包與大包比例如下:

反射源分析

對採樣的反射源產生的攻擊包進行聚類匯總。中國佔比最高,美國,俄羅斯緊隨其後。

國內分布的狀況,杭州的反射源產生的攻擊包最多。抑制反射源濫用網路,需要IDC、雲平台等積極處理。

抽樣分析反射源使用的Memcache 版本,1.4.15使用佔比最多:

對攻擊者使用Memcached DRDoS的攻擊目標進行分析,宿遷地區遭受的攻擊最多:


攻擊手法對比

之前曝出的攻擊POC C 版本注2和Python版本注3,其中C版本主要使用了Memcached服務的stats命令(10-20倍)。Python版本使用了Memcached服務的set和get命令:

memcpy((void*)udph+sizeof(struct udphdr), "x00x01x00x00x00x01x00x00stats
", 15);

dataset="set injected 0 3600",len(data)+1,"
",data,"
get injected
"

而我們這次捕獲到的變種使用了多次指令組合到一個UDP包中發送。

Payload如下:

Data1="x00x00x00x00x00x01x00x00stats
stats
stats
stats
stats
stats
stats
stats
stats
stats
stats
stats
stats
stats
stats
stats
…"

Data2 = "x00x00x00x00x00x01x00x00get Vco0W
get Vco0W
get Vco0W
get Vco0W
get Vco0W
get Vco0W
get Vco0W
get Vco0W
get Vco0W
get Vco0W
get Vco0W
…"

根據攻擊者使用的反射資源,SET設置的key和value參數的相似性進行分類。攻擊者更多採用get XXX 相關的指令實現更大的反射倍數。

防範

1)在Memcached伺服器或者其上聯的網路設備上配置防火牆策略,僅允許授權的業務IP地址訪問Memcached伺服器,攔截非法的訪問。

2)更改Memcached服務的監聽埠為11211之外的其他大埠,避免針對默認埠的惡意利用。

3)除非特殊必要,不開啟Memcached UDP服務,最新版本的Memcached已經默認不開啟UDP服務。

4)升級到最新的Memcached軟體版本,配置啟用SASL認證等許可權控制策略(在編譯安裝Memcached程序時添加-enable-sasl選項,並且在啟動Memcached服務程序時添加-S參數,啟用SASL認證機制以提升Memcached的安全性)。

結語

UDP協議以其無阻塞、收發快為開發者所喜歡,較TCP更靈活,對一些實時交互的場景更具有優勢,相信越來越多的服務會選擇UDP協議。而DRDoS攻擊正是利用UDP協議這一鬆散快速響應的特性,一次次的瞄準更大範圍的開放服務來實施攻擊,讓目標防不勝防。

Memcached反射攻擊可高達十幾萬倍的反射能力,不僅對攻擊目標造成極大的損害,也會大大增加反射源的負載而影響自有業務運行。黑客無處不在,防禦仍需專業,預防則更依賴服務提供者、IDC和雲平台等多方面加強安全意識。

注釋:

注1:網路偵間隙

https://en.wikipedia.org/wiki/Ethernet_frame

注2: POC C 版本

https://pastebin.com/ziueinae

注3:POC Python版本

https://github.com/649/Memcrashed-DDoS-Exploit

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 百度安全實驗室 的精彩文章:

基於IPMI協議的DDoS反射攻擊分析

TAG:百度安全實驗室 |