0
雷鋒網(wǎng)編者按:近日,國內(nèi)外多家安全公司和機(jī)構(gòu)接連發(fā)布了針對(duì) Memcached 超級(jí)DRDoS(Distributed Reflection Denial of Service)攻擊的預(yù)警,引發(fā)各方關(guān)注。雷鋒網(wǎng)此前也曾就其對(duì) GitHub 發(fā)起的攻擊進(jìn)行過報(bào)道,當(dāng)時(shí)攻擊的最大峰值流量達(dá)到了驚人的 1.35T。
要知道,在2月27號(hào)之前,Memcached的反射攻擊事件流量范圍不過幾百兆到500G。只有短短幾天,攻擊峰值的歷史紀(jì)錄就迅速被翻倍刷新,并且攻擊發(fā)生的頻率從一天十幾次到幾百次,呈現(xiàn)爆發(fā)式增長。
目前,Memcached分布情況如何?黑客是如何發(fā)起攻擊的?應(yīng)該如何檢查和預(yù)防?
以下為綠盟科技&電信云堤聯(lián)合投稿,雷鋒網(wǎng)編輯。
據(jù)監(jiān)控?cái)?shù)據(jù)顯示,從本周一至周五(2月26日至3月2日 06:00)短短5天內(nèi),全球就發(fā)生了 79 起利用 Memcached 協(xié)議的反射放大攻擊。日攻擊總流量最高達(dá)到 419TBytes。

▲Memcached反射放大攻擊日攻擊次數(shù)

▲Memcached反射放大攻擊日攻擊總流量
其中,針對(duì)我國境內(nèi)的 Memcached 反射放大攻擊就有68次,江蘇、浙江兩省被攻擊頻繁。針對(duì)我國境內(nèi)的攻擊,單次攻擊最高攻擊峰值達(dá) 505Gbps。攻擊持續(xù)時(shí)間最長的一次發(fā)生在3月1日,持續(xù)1.2小時(shí),總攻擊流量達(dá)103.8TBytes。

▲中國各省份地區(qū)Memcached反射放大攻擊次數(shù)
從影響范圍來看,所有互聯(lián)網(wǎng)的業(yè)務(wù)都可能成為Memcached DRDoS的攻擊對(duì)象。一方面帶寬或業(yè)務(wù)遭受超大流量的攻擊,導(dǎo)致出口帶寬完全被占滿,正常業(yè)務(wù)無法訪問;另一方面企業(yè)內(nèi)部的Memcached系統(tǒng)可能被不法分子利用成為攻擊幫兇。
2.1 什么是Memcached?
Memcached是一個(gè)高性能的開源分布式內(nèi)存對(duì)象緩存系統(tǒng),主要用于提高Web應(yīng)用的擴(kuò)展性,能夠有效解決大數(shù)據(jù)緩存的很多問題,在全球范圍內(nèi)都有廣泛使用。Memcached基于內(nèi)存的key-value存儲(chǔ)小塊數(shù)據(jù),并使用該數(shù)據(jù)完成數(shù)據(jù)庫調(diào)用、API調(diào)用或頁面渲染等。攻擊者正是利用 key-value 這項(xiàng)功能構(gòu)造了大流量的Memcached反射攻擊。
2.2 Memcached分布情況
最新統(tǒng)計(jì)顯示,全球總共有3790個(gè)Memcached服務(wù)器被利用參與到這些Memcached反射放大攻擊。這些被利用反射源遍布于全球96個(gè)國家或地區(qū)范圍內(nèi)。其中,美國就占了全球的1/4。

分布在中國地區(qū)的被利用的Memcached服務(wù)器位列第二位,占比12.7%。在中國各省份占比如下所示,廣東、北京、浙江為TOP3。
據(jù)綠盟科技威脅情報(bào)中心(NSFOCUS Network Threat Intelligence,簡(jiǎn)稱NTI)的統(tǒng)計(jì)結(jié)果顯示,全球范圍內(nèi)存在被利用風(fēng)險(xiǎn)的Memcached服務(wù)器為104,506臺(tái)。分布情況如下: 
從地理分布來看,美國可被利用的Memcached服務(wù)器最多,其次是中國。

這些活躍的Memcached反射器為構(gòu)造超級(jí)DRDoS攻擊提供了有力的先決條件。如果不及時(shí)修復(fù)治理,預(yù)計(jì)基于Memcached反射攻擊的攻擊事件會(huì)繼續(xù)增加,后果不敢想象。
2.3 Memcached如何形成DRDoS攻擊?
Memcached反射攻擊的構(gòu)造過程分為如下3步;
1. 收集反射器IP
通過NTI/Shodan等情報(bào)引擎找到開放的Memcached系統(tǒng),獲取系統(tǒng)IP;
2. 配置反射器
利用開放的Memcached系統(tǒng)作為反射器,并修改key-value配置實(shí)現(xiàn)較大的存儲(chǔ)容量,為構(gòu)造反射放大攻擊進(jìn)行準(zhǔn)備;
3. 發(fā)起反射攻擊
攻擊者將自身IP偽造成攻擊的目標(biāo)地址,并向Memcached反射器發(fā)送請(qǐng)求讀取Memcached在key-value中存儲(chǔ)的信息。Memcached在收到請(qǐng)求后向偽造的虛假源IP進(jìn)行回復(fù),從而形成反射。

▲Memcached反射攻擊示意圖
當(dāng)大量Memcached被同時(shí)利用,并用同一個(gè)偽造源IP進(jìn)行回復(fù),就輕而易舉地形成了針對(duì)這個(gè)偽造源(受害者)的大流量DRDoS攻擊。
2.4 Memcached的攻擊特征
DRDoS(Distributed Reflective Denial-of-Service)是DDoS攻擊分類中的一種。
此前各類安全廠商監(jiān)測(cè)到的DRDoS攻擊主要是SSDP反射、DNS反射、NTP反射等。下表(引自US-Cert)詳細(xì)列舉了各類反射攻擊的放大倍數(shù)。

僅從放大倍數(shù)來看,Memcached反射攻擊的危害程度遠(yuǎn)遠(yuǎn)高于其他反射攻擊類型,US-Cert提供的數(shù)據(jù)顯示它能夠?qū)崿F(xiàn)51,000倍的放大效果。
與其他反射攻擊相比,Memcached如何實(shí)現(xiàn)這么多倍的放大效果呢?其中的重要原因就是Memcached的key-value功能。前文提到key-value的作用是決定存儲(chǔ)容量的大小,正常情況下key-value的值通常不超過幾千字節(jié)。當(dāng)Memcached被攻擊者利用作為反射器時(shí),key-value的值經(jīng)過修改可以達(dá)到100萬字節(jié)以上。
攻擊過程:
第一步,通過命令修改Memcached上的key-value參數(shù),以提升放大倍數(shù)。
send = "set t 0 900 1048501" + "\r\n" + ‘a(chǎn)’ * 1048501 + "\r\n"
socket.sendall(send)
經(jīng)驗(yàn)證,key-value的最大值為1048501。
第二步通過get命令讀取Memcached的存儲(chǔ)信息,并反射到目標(biāo)IP。
get="\x00\x00\x00\x00\x00\x01\x00\x00get t\r\n"
socket.sendto(get, (host, 11211))
形成的攻擊報(bào)文如下: 
觸發(fā)Memcached反射攻擊的請(qǐng)求報(bào)文最小為15字節(jié),包含為8字節(jié)(RFC規(guī)定字段)+3字節(jié) (get)+1(空格)+最小為1字節(jié)(鍵的名稱 )+2字節(jié) (\r\n),而返回的請(qǐng)求數(shù)據(jù)達(dá)到105萬字節(jié),理論上可放大到接近7萬倍。如此強(qiáng)悍的放大攻擊,與其他各類DRDoS攻擊形成斷崖式的差距對(duì)比。
3.1 Memcached系統(tǒng)自查建議
攻擊的形成過程為我們提供了一個(gè)很好的預(yù)警思路,安全產(chǎn)品可針對(duì)Memcached的key-value配置進(jìn)行檢測(cè),在Memcached系統(tǒng)被利用成為攻擊源之前就進(jìn)行攔截。檢測(cè)流程如下:

(1)檢測(cè)目的端口為11211的TCP或UDP報(bào)文(確保是Memcached服務(wù)器);
(2)檢測(cè)報(bào)文是否為set命令(set命令格式參見附錄),如果是則執(zhí)行(3),否則結(jié)束檢測(cè);
(3)檢測(cè)set命令后面的bytes字段值(如下圖中標(biāo)注的1048501),是否超過設(shè)定的閾值,如果是,則可以懷疑該報(bào)文存在異常;

(4)檢測(cè)到該類異??刂茍?bào)文后,可有如下兩種處理方式:
a.告警并監(jiān)控。為了防止被誤殺,建議同時(shí)監(jiān)控該Memcached服務(wù)器后面的流量變化來進(jìn)一步判斷該服務(wù)器是否被用做了反射器。
b. 直接丟棄。如果有足夠的證據(jù)表明該記錄是惡意添加的,直接丟棄可以保證服務(wù)器不被當(dāng)做反射器。
自查舉例:假設(shè)下圖是公網(wǎng)的一臺(tái)Memcached服務(wù)器上獲取的數(shù)據(jù)。

通常情況下,多數(shù)value的大小都在64K以內(nèi),而最后一條的達(dá)到了將近1M,與其他記錄有很明顯的差別,基本上可以判斷該記錄存在問題,該服務(wù)器可能已經(jīng)被利用。
3.2 Memcached攻擊流量清洗
面對(duì)如此大規(guī)模、大范圍的DDoS攻擊威脅,所有網(wǎng)絡(luò)安全節(jié)點(diǎn)都應(yīng)該加強(qiáng)防范,從攻擊防護(hù)和外發(fā)清洗兩方面入手,充分保障基礎(chǔ)設(shè)施和業(yè)務(wù)流量的安全。針對(duì)此攻擊,我們提供如下防護(hù)建議:
·運(yùn)營商。
運(yùn)營商及IDC處于網(wǎng)絡(luò)上游,擁有強(qiáng)大的帶寬資源,是攻擊最直接的受害者,也是防護(hù)的第一道屏障。運(yùn)營商能夠靈活控制路由策略和防護(hù)策略進(jìn)行快速過濾。
1)在邊界配置UDP訪問控制規(guī)則,將源端口為11211的報(bào)文進(jìn)行阻斷或限速;
2)在邊界配置BGP FlowSpec策略,對(duì)源端口為11211的UDP流量進(jìn)行阻斷或限速;
3)利用DDoS防護(hù)設(shè)備將源端口為11211的UDP流量進(jìn)行阻斷或限速。
·企業(yè)用戶
企業(yè)用戶通常貼近服務(wù)終端,熟悉掌握自身業(yè)務(wù)流量特點(diǎn),策略配置更加明確,靈活性強(qiáng)。
1)大型企業(yè)客戶可以采用和運(yùn)營商相同的策略,在出口邊界設(shè)備配置UDP訪問控制規(guī)則或BGP FlowSpec策略對(duì)源端口為11211的UDP流量進(jìn)行阻斷或限速;
2)不具備出口路由配置權(quán)限的企業(yè)客戶,可以在抗DDoS等設(shè)備上配置防護(hù)策略,對(duì)源端口為11211的UDP流量進(jìn)行阻斷或限速;
3)考慮企業(yè)出口帶寬可能被打滿的情況,企業(yè)客戶可通過運(yùn)營商或云清洗服務(wù)在上游執(zhí)行清洗策略,策略內(nèi)容同樣是對(duì)源端口為11211的UDP流量進(jìn)行阻斷或限速。
3.3 Memcached系統(tǒng)防護(hù)加固
對(duì)于正在使用Memcached系統(tǒng)的用戶,為了避免被攻擊者利用,使Memcached成為攻擊源,對(duì)外發(fā)起攻擊流量,影響自身系統(tǒng)性能,我們提供如下幾點(diǎn)建議。
1)在邊界網(wǎng)絡(luò)設(shè)備上配置URPF策略,過濾外發(fā)的虛假源IP報(bào)文;
2)在Memcached系統(tǒng)前進(jìn)行深度檢測(cè),直接過濾報(bào)文特征中set key 0 900 64000的第三個(gè)字段過大的數(shù)據(jù)包,這樣做可以在Memcached系統(tǒng)被修改利用成為攻擊源前進(jìn)行攔截;
3)對(duì)Memcached服務(wù)進(jìn)行安全檢查,查看Memcached服務(wù)是否監(jiān)聽UDP端口。查找Memcached進(jìn)程,查看是否有-l參數(shù),如果沒有則默認(rèn)為0.0.0.0。若Memcached服務(wù)不需要監(jiān)聽UDP,禁用UDP。詳情參考Memcached官方文檔:
https://github.com/memcached/memcached/wiki/ConfiguringServer#udp
set 命令的基本語法格式如下:
set key flags exptime bytes [noreply]
value
參數(shù)說明如下:
key:鍵值 key-value 結(jié)構(gòu)中的 key,用于查找緩存值。
flags:包括鍵值對(duì)的整型參數(shù),客戶機(jī)使用它存儲(chǔ)關(guān)于鍵值對(duì)的額外信息 。
exptime:在緩存中保存鍵值對(duì)的時(shí)間長度(以秒為單位,0 表示永遠(yuǎn))
bytes:在緩存中存儲(chǔ)的字節(jié)數(shù)
noreply(可選): 該參數(shù)告知服務(wù)器不需要返回?cái)?shù)據(jù)
value:存儲(chǔ)的值(始終位于第二行)(可直接理解為key-value結(jié)構(gòu)中的value)
相關(guān)文章:GitHub 遭遇有史以來最嚴(yán)重DDoS攻擊,黑客想玩票大的?
此文為綠盟科技&電信云堤聯(lián)合投稿,雷鋒網(wǎng)編輯。
雷峰網(wǎng)特約稿件,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。