收躲該文基于瀏覽器的僵尸收集就是DDoS世界里的T-1000s。他們之所以如斯危險(xiǎn)是因?yàn)樗麄兙透K結(jié)者里的反派一樣,被設(shè)計(jì)的可以適應(yīng)各類(lèi)環(huán)境的報(bào)復(fù)打擊。當(dāng)其他原始的收集僵尸還在暴力破解你的防御的時(shí)辰,基于瀏覽器的僵尸就已摹擬真實(shí)的人類(lèi)疇前門(mén)進(jìn)進(jìn)了。
當(dāng)你意想到環(huán)境不合弊端時(shí),他們已沖破鴻溝,弄宕辦事器,已無(wú)力回天了。
那么應(yīng)當(dāng)如何防御T-1000呢,如何辯白一次拜候是來(lái)自與真實(shí)的瀏覽器仍是一個(gè)基于瀏覽器的僵尸?傳統(tǒng)的過(guò)濾僵尸的策略在面對(duì)可以或許保留cookie和履行javascript的僵尸時(shí)都掉效了。而不分青紅皂白地讓所有效戶都填寫(xiě)驗(yàn)證碼無(wú)異于自我毀滅,特別是當(dāng)這類(lèi)報(bào)復(fù)打擊可能延續(xù)數(shù)個(gè)禮拜的時(shí)辰。
為了研究防御編制,我們來(lái)看一個(gè)真實(shí)的案例:
此次報(bào)復(fù)打擊是一個(gè)未知的僵尸收集倡議的。這些基于瀏覽器的僵尸可以保留cookie,履行javascript。報(bào)復(fù)打擊的初期我們辨認(rèn)出是PhantomJS無(wú)界面瀏覽器。
PhanomJS是一套開(kāi)辟無(wú)界面瀏覽器的東西。它供給所有瀏覽器的功能可是沒(méi)有界面,沒(méi)有按鈕,沒(méi)有地址欄。一般被用在主動(dòng)化測(cè)試和收集監(jiān)控上。
此次報(bào)復(fù)打擊延續(xù)了150個(gè)小時(shí)以上。這個(gè)過(guò)程中,我們記實(shí)了全球超越180000個(gè)歹意IP。岑嶺期每秒6000次報(bào)復(fù)打擊,平均一天有690000000次以上。報(bào)復(fù)打擊IP的數(shù)量和漫衍范圍讓我們感覺(jué)這應(yīng)當(dāng)不但僅是一個(gè)僵尸收集,而是可能整合了多個(gè)。下圖是報(bào)復(fù)打擊ip的地輿漫衍。

報(bào)復(fù)打擊過(guò)程中我們截獲了861個(gè)不合的user-agent。報(bào)復(fù)打擊者點(diǎn)竄了頭部的布局試圖繞過(guò)我們的防御。
下圖是報(bào)復(fù)打擊最多的ip:

有趣的是報(bào)復(fù)打擊者除利用摹擬瀏覽器的僵尸,還試圖摹擬人類(lèi)的行動(dòng)來(lái)遁藏基于行動(dòng)檢測(cè)的安然法則。這些僵尸會(huì)先拜候不合的頁(yè)面,然后像人類(lèi)那樣拜候一些隨機(jī)的頁(yè)面,最后才會(huì)堆積在一路耗損資本。
雖然基于瀏覽器的僵尸可以或許沖破傳統(tǒng)的過(guò)濾??墒且?yàn)樗昧艘粋€(gè)已知的無(wú)界面瀏覽器,這模樣便可以經(jīng)由過(guò)程我們的客戶端分類(lèi)機(jī)制檢測(cè)到。
我們的客戶端分類(lèi)機(jī)制基于我們已匯集的大年夜量信息總結(jié)出來(lái)的簽名。產(chǎn)生此次報(bào)復(fù)打擊的時(shí)辰,我們的信息庫(kù)已有超越10000000個(gè)簽名。每個(gè)簽名都包含:
User-agent
IPs and ASN info
HTTP Headers
JavaScript footprint
Cookie/Protocol support variations
我們不但僅匯集一些較著的信息,好比user-agent,還匯集一些瀏覽器之間復(fù)雜的細(xì)微不同。安然的匹敵是封鎖的,所以不說(shuō)一些手藝細(xì)節(jié)的話很難把這個(gè)機(jī)制詮釋清晰。略微說(shuō)一點(diǎn),我們會(huì)尋覓瀏覽器措置編碼方面細(xì)微的不同,好比,我們經(jīng)由過(guò)程瀏覽器措置HTTP頭里兩次空格和特別字符來(lái)辨別不合的瀏覽器。
所以我們的數(shù)據(jù)庫(kù)里有不計(jì)其數(shù)個(gè)已知的瀏覽器和僵尸簽名,籠蓋各類(lèi)場(chǎng)景。在這個(gè)案例中,報(bào)復(fù)打擊者的兵器PhantomJS webkit當(dāng)然也是我們簽名庫(kù)中的一個(gè)。

當(dāng)報(bào)復(fù)打擊者在打算若何讓他的僵尸看起來(lái)更像人類(lèi)的時(shí)辰,我們的團(tuán)隊(duì)必需做的就是讓我們的系統(tǒng)發(fā)現(xiàn)報(bào)復(fù)打擊者用的無(wú)界面瀏覽器是哪一種。以后我們做的就是簡(jiǎn)單的樊籬了所有的PhantomJS的實(shí)例。我們乃至留了一個(gè)備選,讓用戶填一個(gè)驗(yàn)證碼,以避免樊籬掉落了真實(shí)的人類(lèi)拜候。
不出料想的,沒(méi)有驗(yàn)證碼被填寫(xiě)。
幾天以后,當(dāng)我們已完全依托機(jī)械辨認(rèn),不需要人工干涉干與了。報(bào)復(fù)打擊者仍然在利用新的user-agent和新的ip試圖繞過(guò)防御??墒撬袣埍┑腡-1000s都已被我們冰凍起來(lái)了。他們利用的編制,簽名,模式都已被記實(shí)下來(lái)作為將來(lái)的參考。
原文地址:http://thehackernews.com/2013/11/ddos-attack-from-browser-based-botnets.html