就在2016年底,也就是七天之前,我們的網(wǎng)絡(luò)系統(tǒng)記錄下了一次650Gbps的DDoS分布式拒絕服務(wù)攻擊,這也是我們首次遇到流量如此之大的DDoS攻擊。我們通過(guò)研究發(fā)現(xiàn),此次大流量的DDoS攻擊依舊是由物聯(lián)網(wǎng)僵尸網(wǎng)絡(luò)發(fā)動(dòng)的,其中還涉及到某種新型的惡意軟件。不過(guò)請(qǐng)不用擔(dān)心,此次攻擊已經(jīng)被我們的網(wǎng)絡(luò)防御系統(tǒng)輕松地“解決”掉了。
攻擊描述
此次DDoS攻擊大概開(kāi)始于12月21日上午10點(diǎn)55分,針對(duì)的是Imperva Incapsula網(wǎng)絡(luò)中的多個(gè)IP地址。目前我們?nèi)匀徊磺宄舜喂魹槭裁瘁槍?duì)的不是特定的用戶,但是根據(jù)我們的推測(cè),這很有可能是由于攻擊者無(wú)法解析真正目標(biāo)的IP地址所造成的,因?yàn)榭蛻粽嬲腎P地址已經(jīng)由Incapsula的代理服務(wù)器進(jìn)行了隱藏處理。因此,攻擊者便失去了最佳的攻擊目標(biāo),所以他們只能將注意力轉(zhuǎn)移到Imperva Incapsula上。
下圖顯示的是攻擊流量的相關(guān)數(shù)據(jù):
我們可以從上圖中看到,第一波DDoS攻擊流量持續(xù)了將近20分鐘,流量峰值在400Gbps左右。然后流量迅速減少,產(chǎn)生了一個(gè)凹槽,接下來(lái)攻擊者便發(fā)動(dòng)了第二波攻擊。這一次,攻擊者所控制的僵尸網(wǎng)絡(luò)生成了一波650Gbps的DDoS攻擊流量,這波攻擊每秒鐘的數(shù)據(jù)包數(shù)量(Mpps)已經(jīng)超過(guò)了1億5000萬(wàn)個(gè)。
下圖顯示的是每秒鐘的數(shù)據(jù)包數(shù)量(150+Mpps):
第二波攻擊持續(xù)了大約17分鐘,但是我們的網(wǎng)絡(luò)防御系統(tǒng)仍然可以輕松應(yīng)對(duì)這些惡意流量。當(dāng)然了,攻擊者也十分聰明,當(dāng)他發(fā)現(xiàn)攻擊效果不明顯之后,他也打消了繼續(xù)攻擊的念頭。
我們的安全技術(shù)人員通過(guò)分析發(fā)現(xiàn),這兩波DDoS攻擊流量來(lái)源于偽造的IP地址,所以我們幾乎無(wú)法定位到這個(gè)僵尸網(wǎng)絡(luò)的真實(shí)地理位置,而且也很難去確定發(fā)動(dòng)攻擊的設(shè)備是什么。
下圖顯示的是此次攻擊中僵尸網(wǎng)絡(luò)的部分IP地址:
雖然無(wú)法通過(guò)IP地址來(lái)定位僵尸網(wǎng)絡(luò),但是我們可以對(duì)攻擊payload來(lái)進(jìn)行分析,然后從中發(fā)現(xiàn)一些蛛絲馬跡,最后成功識(shí)別此次攻擊背后的僵尸網(wǎng)絡(luò)。
Payload分析
通過(guò)研究發(fā)現(xiàn),此次攻擊中的惡意流量由兩種不同的SYN payload生成:
1. 常規(guī)大小的SYN數(shù)據(jù)包,大小從44字節(jié)到60字節(jié)不等;
2. 不正常的大型SYN數(shù)據(jù)包,大小從799字節(jié)到936字節(jié)不等;
第一種數(shù)據(jù)包是為了達(dá)到一個(gè)較高的Mpps,而第二種數(shù)據(jù)包是為了將攻擊能力放大到650Gbps。
實(shí)際上,這種將小型和大型payload結(jié)合起來(lái)發(fā)動(dòng)網(wǎng)絡(luò)攻擊的情況越來(lái)越常見(jiàn)了。在此之前,我們還發(fā)現(xiàn)有攻擊者曾嘗試?yán)眠@種手段來(lái)堵塞目標(biāo)的網(wǎng)絡(luò)通信線路,并意圖拖垮網(wǎng)絡(luò)交換機(jī)和路由器等設(shè)備。
在對(duì)這兩種payload進(jìn)行了深入分析之后,我們發(fā)現(xiàn)了一些非常有意思的東西。
我們所發(fā)現(xiàn)的第一樣?xùn)|西,就是攻擊者在常規(guī)大小的SYN數(shù)據(jù)包中所留下的“簽名”。在這些惡意數(shù)據(jù)包中,其header中TCP選項(xiàng)的值(“1337″)是專門修改過(guò)的,這個(gè)值代表的是“leet”或“elite”。
具體如下圖所示:
第二個(gè)吸引我們眼球的東西就是大型SYN payload中的內(nèi)容。某些payload中的內(nèi)容似乎是一些隨機(jī)字符串,而另一些payload中似乎零零散散地夾雜著一些IP地址,具體如下圖所示:
我們可以從這些零散的IP地址中找出這些惡意payload內(nèi)容的生成方式。經(jīng)過(guò)分析之后我們發(fā)現(xiàn),我們所面對(duì)的這個(gè)惡意軟件可以訪問(wèn)目標(biāo)設(shè)備的本地文件(日志文件和iptable列表等等),并利用這些文件中的數(shù)據(jù)來(lái)生成惡意payload。
基本上我們可以這樣認(rèn)為,攻擊者從成千上萬(wàn)臺(tái)被入侵的設(shè)備系統(tǒng)中提取出了大量文件數(shù)據(jù),并利用這些數(shù)據(jù)生成了攻擊所用的payload。
但是,使用這種攻擊方法的人一般都有準(zhǔn)確的目的。具體來(lái)說(shuō),這種方法可以算得上是一種十分有效的混淆技術(shù),攻擊者可以通過(guò)這項(xiàng)技術(shù)來(lái)生成無(wú)限數(shù)量的隨機(jī)payload。接下來(lái),攻擊者就可以利用這些隨機(jī)程度非常高的惡意payload來(lái)繞過(guò)基于簽名的安全防護(hù)系統(tǒng),并實(shí)施進(jìn)一步的攻擊活動(dòng)。
Mirai的對(duì)手,Leet僵尸網(wǎng)絡(luò)
就此看來(lái),此次攻擊似乎為我們的2016年畫上了一個(gè)“圓滿”的句號(hào)。成功地緩解此次攻擊也是網(wǎng)絡(luò)安全防御領(lǐng)域的一個(gè)里程碑,因?yàn)檫@不僅標(biāo)志著我們的網(wǎng)絡(luò)防御技術(shù)踏上了一個(gè)新的臺(tái)階,而且也顯示出了我們的網(wǎng)絡(luò)系統(tǒng)足夠強(qiáng)大的應(yīng)變能力。但是,我們?nèi)砸獜闹形〗?jīng)驗(yàn)和教訓(xùn),并為迎接2017年更多未知的安全風(fēng)險(xiǎn)做好準(zhǔn)備。
直到目前為止,2016年所有的大規(guī)模DDoS攻擊事件都與Mirai惡意軟件有關(guān)。但是,這些payload的特性足以表明,此次攻擊與Mirai僵尸網(wǎng)絡(luò)及其變種沒(méi)有任何的關(guān)系。
證據(jù)如下:
1. 安全專家在對(duì)Mirai的代碼進(jìn)行了分析之后發(fā)現(xiàn),Mirai對(duì)SYN payload數(shù)據(jù)包的大小進(jìn)行了硬編碼,這也就意味著Mirai惡意軟件無(wú)法使用大型SYN數(shù)據(jù)包來(lái)發(fā)動(dòng)攻擊。相關(guān)代碼如下所示:
1
|
iph->tot_len?=?htons(sizeof?(struct?iphdr)?+?sizeof?(struct?tcphdr)?+?20); |
2. Mirai對(duì)TCP選項(xiàng)(MSS、SACK、TSVAL、WSS)同樣進(jìn)行了硬編碼,而在此次攻擊中,99.99%的payload中都沒(méi)有出現(xiàn)這些數(shù)據(jù),只有0.01%屬于特例(純屬巧合)。相關(guān)代碼如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
//?TCP?MSS ??????? *opts++?=?PROTO_TCP_OPT_MSS;?? ???????? *opts++?=?4;?????????????????? ???????? *((uint16_t?*)opts)?=?htons(1400?+?(rand_next()?&?0x0f)); ???????? opts?+=?sizeof?(uint16_t); ???????? //?TCP?SACK?permitted ???????? *opts++?=?PROTO_TCP_OPT_SACK; ???????? *opts++?=?2; ???????? //?TCP?timestamps ???????? *opts++?=?PROTO_TCP_OPT_TSVAL; ???????? *opts++?=?10; ???????? *((uint32_t?*)opts)?=?rand_next(); ???????? opts?+=?sizeof?(uint32_t); ???????? *((uint32_t?*)opts)?=?0; ???????? opts?+=?sizeof?(uint32_t); ???????? //?TCP?nop ???????? *opts++?=?1; ???????? //?TCP?window?scale ???????? *opts++?=?PROTO_TCP_OPT_WSS; ???????? *opts++?=?3; ???????? *opts++?=?6; |
3. Mirai payload是由隨機(jī)字符串生成的,但是此次攻擊中的payload其內(nèi)容是由目標(biāo)系統(tǒng)的文件內(nèi)容所構(gòu)成的。
綜上所示,這肯定是一個(gè)新型的僵尸網(wǎng)絡(luò),但是我們目前只能通過(guò)攻擊者在TCP header中留下的簽名(“1337″)來(lái)識(shí)別惡意軟件作者的身份。
惡意流量達(dá)到了650Gbps,Leet僵尸網(wǎng)絡(luò)可以稱得上算是Mirai僵尸網(wǎng)絡(luò)的第一個(gè)對(duì)手了。但是,它顯然不是最后一個(gè)。2016年,DDoS攻擊的規(guī)模和殺傷力已經(jīng)上升了好幾個(gè)臺(tái)階,而殺傷力更強(qiáng)的僵尸網(wǎng)絡(luò)撲向我們也只是時(shí)間問(wèn)題,2017年肯定還會(huì)出現(xiàn)各種各樣更加可怕的僵尸網(wǎng)絡(luò)。