黃吉鯤 龔偉剛 游偉 秦波 石文昌 梁彬
摘要:目前,很多惡意網(wǎng)頁僅利用常規(guī)的Web編程技術(shù)使得瀏覽器自動(dòng)下載木馬等惡意軟件并誘騙用戶執(zhí)行。這種惡意行為被稱為自動(dòng)下載。瀏覽器中現(xiàn)有的防御機(jī)制并不能有效地識(shí)別這種攻擊。針對(duì)此類惡意行為,提出了一種防御方法。該方法通過監(jiān)控網(wǎng)頁中能導(dǎo)致自動(dòng)下載的操作,并在下載實(shí)際發(fā)生時(shí)判斷是否由用戶觸發(fā),來識(shí)別自動(dòng)下載行為并加以阻斷。此防御方法已經(jīng)在WebKitGtk+2.8.0和Chromium 38.0.2113.1兩個(gè)瀏覽器中實(shí)現(xiàn),并進(jìn)行了評(píng)估:兩個(gè)檢測(cè)防御系統(tǒng)針對(duì)現(xiàn)存的攻擊樣本均無誤報(bào)和漏報(bào),額外的性能開銷分別為1.26%和7.79%。實(shí)驗(yàn)結(jié)果表明,該方法能夠有效地監(jiān)測(cè)并阻斷自動(dòng)下載攻擊且性能開銷較小。
關(guān)鍵詞:
惡意網(wǎng)頁;惡意軟件;自動(dòng)下載檢測(cè);用戶交互
中圖分類號(hào): TP309.5 文獻(xiàn)標(biāo)志碼:A
0引言
目前,很多惡意網(wǎng)頁都存在將攻擊者的木馬自動(dòng)下載到用戶主機(jī)的行為,并在下載后誘騙用戶執(zhí)行攻擊者的木馬。本文將這種攻擊稱為自動(dòng)下載。在2014年12月至2015年3月收集到的68296條惡意網(wǎng)頁攻擊記錄中,有58425條攻擊記錄包含自動(dòng)下載行為,占所有攻擊記錄的85.55%。
與DrivebyDownload[1]攻擊相比,自動(dòng)下載型攻擊雖然不能在惡意軟件下載后自動(dòng)運(yùn)行,但是攻擊頁面通常會(huì)誘騙用戶,讓用戶相信下載下來的惡意軟件是用戶需要的、正常的軟件或插件,誘使用戶執(zhí)行。
例如,圖1是一個(gè)包含自動(dòng)下載行為的惡意網(wǎng)頁,在網(wǎng)頁打開后3s,會(huì)自動(dòng)下載一個(gè)名為“microsoft xps document writer__3039_i1755271595_il358621.exe”的文件。用戶根據(jù)如圖1網(wǎng)頁中所給的信息以為自己下載的是一個(gè)虛擬打印程序;但實(shí)際上,這是一個(gè)惡意應(yīng)用。用戶點(diǎn)擊運(yùn)行這個(gè)程序的時(shí)候,并不能像用戶期望的那樣安裝虛擬打印機(jī),而是在用戶的主機(jī)上運(yùn)行了一個(gè)木馬程序,讓用戶主機(jī)成為攻擊者僵尸網(wǎng)絡(luò)中的一臺(tái)“肉機(jī)”。
此類攻擊并沒有利用任何瀏覽器漏洞,僅利用瀏覽器的正常機(jī)制和現(xiàn)有的Web技術(shù)就能夠?qū)⒐粽叩哪抉R下載到用戶本地,并誘使用戶執(zhí)行。盡管并非所有的用戶都會(huì)運(yùn)行自動(dòng)下載的惡意應(yīng)用;但是其廣泛撒網(wǎng)的方式,仍然使攻擊者能夠獲得大量的“肉機(jī)”。
自動(dòng)下載為用戶的計(jì)算機(jī)安全帶來了很大的威脅;但是,瀏覽器現(xiàn)有的安全機(jī)制并不足以抵御自動(dòng)下載攻擊。
主流瀏覽器對(duì)惡意網(wǎng)頁的防御方法是黑名單機(jī)制。以Chrome瀏覽器為例,其在加載網(wǎng)頁前,先檢測(cè)此網(wǎng)址是否在預(yù)設(shè)的黑名單中。如果在,則認(rèn)為其是惡意網(wǎng)頁;否則認(rèn)為其是正常網(wǎng)頁。這種黑名單機(jī)制實(shí)現(xiàn)簡單、效率高,對(duì)用戶體驗(yàn)的影響非常低;但是,利用黑名單機(jī)制來檢測(cè)網(wǎng)頁自動(dòng)下載行為并不完全有效。黑名單列表需要及時(shí)更新來保證結(jié)果的準(zhǔn)確性。對(duì)于新出現(xiàn)的未知惡意網(wǎng)頁這種方法存在可被攻擊者利用的時(shí)延窗口。
瀏覽器的反彈窗機(jī)制也對(duì)自動(dòng)下載有一定的攔截效果;但遺憾的是,這種防御機(jī)制只能攔截利用自動(dòng)彈窗觸發(fā)的下載,并不能攔截所有的自動(dòng)下載方式。
當(dāng)前的安全工具對(duì)于此類攻擊的檢測(cè),通常是在下載完成后,通過掃描文件是否包含惡意程序的特征碼來判斷下載文件是否是惡意軟件,并不能在事前就阻止自動(dòng)下載的發(fā)生。而且,這種方法對(duì)于未知木馬的檢測(cè)往往無能為力。
在惡意網(wǎng)頁研究領(lǐng)域,目前也沒有研究者專門對(duì)此類利用瀏覽器正常機(jī)制和Web技術(shù)來將木馬在未經(jīng)用戶同意的情況下自動(dòng)下載到用戶主機(jī)上的行為進(jìn)行研究。
為此,本文提出了一種檢測(cè)方法,以應(yīng)對(duì)網(wǎng)頁中的自動(dòng)下載行為。
自動(dòng)下載的關(guān)鍵特征在于不經(jīng)用戶交互就觸發(fā)下載操作。通過在瀏覽器中加入相應(yīng)的檢測(cè)模塊,基于瀏覽器的用戶交互機(jī)制判斷下載操作或?qū)е孪螺d的方法是否由用戶觸發(fā),從而判斷該下載行為是否是自動(dòng)下載。本文在WebKitGtk+2.8.0和Chromium 38.0.2113.1中實(shí)現(xiàn)了相應(yīng)的原型系統(tǒng)。實(shí)驗(yàn)證明本文提出的方法可以有效識(shí)別出自動(dòng)下載,針對(duì)現(xiàn)存的攻擊樣本無誤報(bào)和漏報(bào),額外的性能開銷分別為1.26%和7.79%,完全在可接受范圍內(nèi)。
本文的主要工作如下:1)系統(tǒng)地界定了目前瀏覽器中可被利用的自動(dòng)下載方式;2)提出了一種針對(duì)性的基于用戶交互判斷的自動(dòng)下載檢測(cè)方法;3)在WebKitGtk+2.8.0和Chromium 38.0.2113.1瀏覽器中實(shí)現(xiàn)了對(duì)自動(dòng)下載行為的檢測(cè)與攔截,驗(yàn)證了此方法的有效性。
1相關(guān)工作
自動(dòng)下載行為是惡意網(wǎng)頁的攻擊方式之一。本章從基于行為、基于統(tǒng)計(jì)或機(jī)器學(xué)習(xí)以及其他三個(gè)方面介紹相關(guān)的惡意網(wǎng)頁檢測(cè)工作,并分別分析用這些方法檢測(cè)自動(dòng)下載行為的可行性。
1.1基于行為的檢測(cè)
基于行為的檢測(cè)方法主要是客戶端蜜罐:建立一個(gè)虛擬環(huán)境,通過檢測(cè)和監(jiān)聽異常行為、運(yùn)行時(shí)參數(shù)來檢測(cè)攻擊。例如:2006年,微軟研究院的HoneyMonkey項(xiàng)目[2]以及華盛頓大學(xué)Moshchuk等[3]的SpyCrawler采用該方法均發(fā)現(xiàn)了一定數(shù)量的惡意網(wǎng)頁。此外,還有一些開源的高交互式客戶端蜜罐,如HoneyClient[4]以及國際蜜網(wǎng)項(xiàng)目組新西蘭小組的CaptureHPC[5];但是,基于行為的檢測(cè)方法并未關(guān)注此類僅利用正常瀏覽器機(jī)制和Web編程技術(shù)的自動(dòng)下載行為。
1.2基于統(tǒng)計(jì)或機(jī)器學(xué)習(xí)的檢測(cè)
通過提取惡意網(wǎng)頁相對(duì)于正常網(wǎng)頁的特征,利用機(jī)器學(xué)習(xí)對(duì)網(wǎng)頁進(jìn)行分類。Seifert[6]、Canali[7]、Cova[8]、Heiderich等[9]提取頁面中的靜態(tài)或動(dòng)態(tài)特征進(jìn)行機(jī)器學(xué)習(xí)來對(duì)頁面進(jìn)行分類。例如Heidertich等[9]的IceShield通過動(dòng)態(tài)插樁的方式包裹document.write()等危險(xiǎn)方法,在網(wǎng)頁渲染時(shí)動(dòng)態(tài)提取危險(xiǎn)標(biāo)簽、可疑的Unicode字符等特征,為網(wǎng)頁評(píng)分。通過機(jī)器學(xué)習(xí)在大量的樣本中得到一個(gè)合適的閾值,利用此閾值對(duì)網(wǎng)頁進(jìn)行分類:網(wǎng)頁評(píng)分大于該閾值的,被分類為惡意網(wǎng)頁;小于等于的,被認(rèn)為是正常網(wǎng)頁。此類檢測(cè)方法同樣未關(guān)注自動(dòng)下載行為。
1.3其他防御機(jī)制
BLADE[10]對(duì)操作系統(tǒng)作一定的安全擴(kuò)展,阻斷所有不是通過瀏覽器的圖形用戶界面(Graphical User Interface, GUI)進(jìn)行的下載行為,將所有通過瀏覽器進(jìn)程下載的可執(zhí)行文件放入一個(gè)虛擬的、權(quán)限受限的隔離存儲(chǔ)空間,并在每一個(gè)文件被放到隔離空間中后向用戶發(fā)起確認(rèn),只有經(jīng)過用戶確認(rèn)的下載文件才會(huì)被轉(zhuǎn)移到真實(shí)的文件系統(tǒng)中。這種方式雖然阻止了下載文件到文件系統(tǒng)中;但是阻斷了那些不經(jīng)過瀏覽器進(jìn)程下載的任務(wù),為用戶帶來了很大的不便。
JShield[11]的團(tuán)隊(duì)收集了2007年至2014年所有關(guān)于瀏覽器JavaScript引擎以及PDF文件的相關(guān)漏洞,并提取了這些漏洞的操作碼特征,使用確定有限自動(dòng)機(jī)(Deterministic Finite Automaton, DFA)在操作碼級(jí)別匹配漏洞特征,從而檢測(cè)Drivebydownload,但是本文關(guān)注的自動(dòng)下載沒有利用任何漏洞。
總體而言,目前惡意網(wǎng)頁檢測(cè)研究領(lǐng)域的研究忽略了此類僅利用正常瀏覽器機(jī)制和Web技術(shù)的自動(dòng)下載行為,沒有對(duì)其進(jìn)行有效的檢測(cè)和防御。
2系統(tǒng)概述
本文提出的自動(dòng)下載行為檢測(cè)方法如圖2所示。首先,監(jiān)控所有可能導(dǎo)致自動(dòng)下載的觸發(fā)點(diǎn),并在其被觸發(fā)時(shí)進(jìn)行交互判斷。非用戶觸發(fā)的可疑下載的統(tǒng)一資源定位符(Uniform Resource Locator, URL)將被收集到一個(gè)可疑列表中。同時(shí),監(jiān)聽下載操作以在瀏覽器建立下載任務(wù)時(shí)進(jìn)行檢查,如果觸發(fā)下載任務(wù)沒有經(jīng)過用戶交互(下載操作的源地址在可疑列表中),則認(rèn)為這是一個(gè)自動(dòng)下載,并進(jìn)行阻斷;反之,認(rèn)為是由用戶觸發(fā)的,允許下載。
此方法的關(guān)鍵在于找出盡可能全面地自動(dòng)下載的觸發(fā)點(diǎn),插入檢測(cè)代碼,進(jìn)行用戶交互判斷,從而獲取可疑列表。
3自動(dòng)下載方式界定
為了選取合適的檢測(cè)點(diǎn)插入檢測(cè)代碼,需要了解當(dāng)前瀏覽器有哪些下載方式可以被利用來實(shí)現(xiàn)自動(dòng)下載。
本文通過分析瀏覽器內(nèi)核代碼、HTML協(xié)議以及JavaScript對(duì)象、方法來找出當(dāng)前瀏覽器中可以被攻擊者利用來實(shí)現(xiàn)自動(dòng)下載的方式。
首先,分析瀏覽器內(nèi)核源代碼(以Chromium為例)。在Chromium瀏覽器內(nèi)核源碼中找到了實(shí)現(xiàn)下載的方法DownloadItemView::OnDownloadUpdated(),并利用靜態(tài)代碼分析工具Understand[12]遍歷所有調(diào)用此方法的路徑。本文將下載分成兩大類:一類是頁面請(qǐng)求導(dǎo)致的下載。瀏覽器在向服務(wù)器發(fā)起頁面請(qǐng)求(打開新頁面或頁面重定向)后,發(fā)現(xiàn)返回資源的多用途互聯(lián)網(wǎng)郵件擴(kuò)展類型(Multipurpose Internet Mail Extensions, MIME)并不是其所支持的類型時(shí),瀏覽器會(huì)將返回資源下載到用戶本地。另一類是利用瀏覽器的資源保存機(jī)制下載文件。例如,利用FileSystem API(Application Programming Interface)可以將指定資源保存到用戶主機(jī)中。
任何頁面請(qǐng)求和資源保存的方式都有可能導(dǎo)致下載,但是攻擊者要在網(wǎng)頁中實(shí)現(xiàn)自動(dòng)下載,只能利用頁面中的超文本標(biāo)記語言(Hyper Text Markup Language, HTML)元素和JavaScript對(duì)象方法,因此,本文分析了HTML標(biāo)準(zhǔn)和JavaScript對(duì)象方法,通過查找頁面請(qǐng)求和保存資源的方法,找出了6種可繞開瀏覽器安全防御機(jī)制導(dǎo)致自動(dòng)下載的方法。window.locaion、HTML5的History API、標(biāo)簽、標(biāo)簽和超文本傳輸協(xié)議(HyperText Transfer Protocol, HTTP)的重定向返回碼等頁面請(qǐng)求方法都可以用來導(dǎo)致自動(dòng)下載,如表1所示。而利用資源保存來實(shí)現(xiàn)自動(dòng)下載的方式只有HTML5的FileSystem API一種。
3.1window.location
window.location對(duì)象[13]用于獲得當(dāng)前頁面的地址,或把瀏覽器重定向到新的頁面。
程序前
window.location="http://www.abc.com/malware.exe"
程序后
上面的JavaScript指令會(huì)發(fā)起一個(gè)頁面請(qǐng)求,但由于服務(wù)器返回的資源malware.exe不能被瀏覽器渲染,瀏覽器會(huì)將malware.exe保存到用戶本地文件系統(tǒng)中。
攻擊者可以利用window.location自動(dòng)下載惡意軟件,如代碼1。
代碼1利用window.location自動(dòng)下載。
程序前
function jump(){
window.location="http://www.evil.com/malware.exe";
}
程序后
3.2History API
window.history對(duì)象[14]用于回到瀏覽器歷史列表中的網(wǎng)頁。其中history.go()方法可以用來向服務(wù)器重新發(fā)起頁面請(qǐng)求,刷新頁面。
HTML5推出后,新增了History API[15],推出了兩個(gè)新的方法:history.pushState()和history.replaceState()。前者將給定的數(shù)據(jù)、給定的標(biāo)題和URL推送到歷史記錄中去。而后者用參數(shù)中給定的數(shù)據(jù)、標(biāo)題和URL更新當(dāng)前保存的那條歷史記錄。
利用History API的兩個(gè)新方法替換當(dāng)前歷史記錄,然后用history.go()刷新頁面,可實(shí)現(xiàn)當(dāng)前頁面向任意同源頁面的跳轉(zhuǎn)。當(dāng)服務(wù)器返回的頁面跳轉(zhuǎn)請(qǐng)求資源不能被瀏覽器渲染時(shí),瀏覽器會(huì)將資源下載到用戶的文件系統(tǒng)中。代碼2中的頁面利用History API實(shí)現(xiàn)了惡意軟件的自動(dòng)下載。
代碼2使用History API實(shí)現(xiàn)自動(dòng)下載。
程序前
history.pushState({},"","./malware.exe ");
history.go(0);
程序后
3.3標(biāo)簽
Anchor對(duì)象表示HTML超鏈接[16]。在HTML文檔中標(biāo)簽每出現(xiàn)一次,就會(huì)創(chuàng)建Anchor對(duì)象。Anchor可用于創(chuàng)建指向另一個(gè)頁面的鏈接(href屬性)。
程序前
程序后
攻擊者可以利用JavaScript指令模擬用戶點(diǎn)擊標(biāo)簽實(shí)現(xiàn)自動(dòng)下載。如代碼3。
代碼3腳本模擬點(diǎn)擊標(biāo)簽實(shí)現(xiàn)自動(dòng)下載。
程序前
程序后
3.4標(biāo)簽
元素[17]可提供有關(guān)頁面的元信息(metainformation)。標(biāo)簽的屬性定義了與文檔相關(guān)聯(lián)的名稱/值。如果標(biāo)簽的httpequiv屬性值為“refresh”,則可以使頁面自動(dòng)重定向到content屬性中的URL頁面中。
如果content中URL的值是一個(gè)不能被瀏覽器解析的文件的網(wǎng)絡(luò)地址,則瀏覽器會(huì)自動(dòng)將此文件下載到用戶本地文件系統(tǒng)中。
程序前
程序后
例如,頁面中如果包含以上代碼,會(huì)在用戶加載完頁面2s后,自動(dòng)下載malware.exe文件。
3.5HTTP重定向碼
在服務(wù)器返回的HTTP報(bào)文中,HTTP狀態(tài)碼為客戶端提供了一種理解事務(wù)處理的便捷方式。HTTP狀態(tài)碼被分成了五大類。其中300~399的重定向狀態(tài)碼[18]要么告知客戶端使用替代位置來訪問它們所感興趣的資源,要么就是提供一個(gè)可替代的響應(yīng)而不是資源的內(nèi)容。如果資源已經(jīng)被移動(dòng),可以發(fā)送一個(gè)重定向狀態(tài)碼和一個(gè)可選的Location首部來告知客戶端資源已被移走,以及現(xiàn)在可以在哪里找到它。這樣瀏覽器就可以在不打擾使用者的情況下,透明地轉(zhuǎn)入新的位置了。
和其他頁面請(qǐng)求操作一樣,如果服務(wù)器返回的資源不能被瀏覽器渲染,瀏覽器會(huì)將該資源保存到用戶的文件系統(tǒng)中。
3.6利用FileSystem API自動(dòng)下載
為了給Web應(yīng)用程序提供一個(gè)永久保存數(shù)據(jù)的空間,HTML5新增了FileSystem API,通過使用該API,用戶可以將數(shù)據(jù)保存在磁盤上的文件系統(tǒng)中,從而得到一個(gè)永久保存數(shù)據(jù)的空間。
HTML5的這個(gè)新特性導(dǎo)致了新的下載方式的產(chǎn)生——利用FileSystem實(shí)現(xiàn)下載[19]:首先,獲取要保存的文件內(nèi)容,將其轉(zhuǎn)換成blob對(duì)象;然后,利用FileSystem API將其寫入沙箱隔離環(huán)境文件中;最后,將下載到沙箱隔離環(huán)境中的文件看成下載源[20],利用腳本自動(dòng)觸發(fā)頁面請(qǐng)求,將文件從沙箱隔離環(huán)境中移入(下載)到用戶的本地文件系統(tǒng)中,如圖3所示。
同window.location、History API類似,F(xiàn)ileSystem API也可以在未經(jīng)用戶交互的情況下被調(diào)用來實(shí)現(xiàn)自動(dòng)下載。
攻擊者可以利用以上6種方式繞開瀏覽器現(xiàn)有的安全防御機(jī)制實(shí)現(xiàn)自動(dòng)下載。
4系統(tǒng)實(shí)現(xiàn)
本文分別在WebKitGtk+2.8.0和Chromium 38.0.2113.1瀏覽器中實(shí)現(xiàn)了對(duì)自動(dòng)下載行為的檢測(cè)與攔截。
4.1WebKitGtk+ 2.8.0
Webkit是一個(gè)開源的瀏覽器引擎,目前市面上很多瀏覽器都使用Webkit的內(nèi)核。Gnome領(lǐng)導(dǎo)的WebKitGtk+[21]是一個(gè)基于Gtk+的WebKit渲染引擎接口,也是目前Linux下最受矚目的WebKit開源項(xiàng)目之一。
4.1.1檢測(cè)點(diǎn)
在WebKitGtk+中,UserGestureIndicator對(duì)象負(fù)責(zé)記錄用戶操作,并提供了一個(gè)名為processingUserGesture()的方法判斷用戶交互。processingUserGesture()方法具有時(shí)效性,在下載時(shí)的返回值都是false(無用戶交互),因此,在自動(dòng)下載觸發(fā)方式的對(duì)應(yīng)內(nèi)核方法中進(jìn)行用戶交互判斷,而不是在下載發(fā)生時(shí)才進(jìn)行。
由于WebKitGtk+的FileSystem API功能實(shí)現(xiàn)不完全,F(xiàn)ileSystem API導(dǎo)致的自動(dòng)下載在WebKitGtk+中不能正常進(jìn)行,因此,在WebKitGtk中,只關(guān)注window.location、History API、、和HTTP重定向返回碼導(dǎo)致的自動(dòng)下載。
4.1.2檢測(cè)流程
WebKitGtk+支持的5種自動(dòng)下載方式都是頁面請(qǐng)求操作觸發(fā)的。可以通過判斷導(dǎo)致下載的頁面請(qǐng)求是否由用戶觸發(fā)來對(duì)這種類型的下載行為進(jìn)行分類:自動(dòng)下載或正常下載。
在WebKitGtk+2.8.0中對(duì)自動(dòng)下載行為的檢測(cè)流程如下。
1)獲取可疑URL列表。
首先,在window.location等5種自動(dòng)下載觸發(fā)方式對(duì)應(yīng)的瀏覽器源碼方法中插入用戶交互檢測(cè)代碼。監(jiān)聽網(wǎng)頁中的頁面請(qǐng)求操作,并利用processingUserGesture()方法對(duì)頁面請(qǐng)求操作進(jìn)行交互判斷。如果processingUserGesture()的返回值為false,則認(rèn)為此網(wǎng)頁的頁面請(qǐng)求操作不是用戶觸發(fā)的。包含非用戶觸發(fā)的頁面請(qǐng)求操作的網(wǎng)頁被認(rèn)為有潛在自動(dòng)下載意圖。獲取其頁面請(qǐng)求的目的URL,將此目的URL放入可疑跳轉(zhuǎn)URL列表specious_urls中。
2)監(jiān)聽下載識(shí)別自動(dòng)下載。
在內(nèi)核中實(shí)現(xiàn)下載的對(duì)應(yīng)方法中插入檢測(cè)代碼。監(jiān)聽頁面是否含有下載操作,并獲取下載源的URL地址download_url。如果下載源地址download_url包含在可疑跳轉(zhuǎn)URL列表specious_urls中,則認(rèn)為當(dāng)前的下載行為是由頁面請(qǐng)求觸發(fā)的自動(dòng)下載行為。
4.2Chromium 38.0.2113.1
Chrome瀏覽器是對(duì)HTML5和CSS3等推出的新特性支持得最為全面的瀏覽器。本文中界定的6種自動(dòng)下載方式都能正常攻擊。
其開發(fā)版Chromium和WebKitGtk+一樣,包含UserGestureIndicator對(duì)象,并提供判斷用戶交互的processingUserGesture()方法。除此之外,Chromium對(duì)每一個(gè)下載任務(wù)建立一個(gè)DownloadItem對(duì)象,并將processingUserGesture()的值傳遞給DownloadItem對(duì)象的方法——HasUserGesture(),標(biāo)識(shí)此下載任務(wù)是否是由用戶觸發(fā)。
雖然在下載時(shí)UserGestureIndicator記錄的用戶動(dòng)作已經(jīng)失效,processingUserGesture()方法不能區(qū)分正常下載和自動(dòng)下載;但Chromium中DownloadItem::HasUserGesture的存在使本文可以利用此方法直接判斷下載操作是否是自動(dòng)下載,而不需要像WebKitGtk+2.8.0中一樣,需要在所有可以導(dǎo)致自動(dòng)下載的觸發(fā)方法中插入檢測(cè)代碼。
但是利用FileSystem API進(jìn)行的下載使用了JavaScript自動(dòng)觸發(fā)頁面請(qǐng)求來將文件從沙箱隔離環(huán)境移到用戶本地文件系統(tǒng)中。這導(dǎo)致對(duì)于利用FileSystem API實(shí)現(xiàn)的正常下載,其DownloadItem對(duì)象HasUserGesture()返回的值也會(huì)是false——非用戶觸發(fā),因此,需要單獨(dú)對(duì)利用FileSystem API進(jìn)行的下載單獨(dú)進(jìn)行檢測(cè),并排除誤報(bào)。
4.2.1檢測(cè)頁面請(qǐng)求類型的自動(dòng)下載
Chromium中DownloadItem對(duì)象的HasUserGesture()可以直接在下載發(fā)生時(shí)對(duì)頁面請(qǐng)求觸發(fā)的下載進(jìn)行交互判斷,因此,在Chromium中檢測(cè)自動(dòng)下載行為比WebKitGtk+2.8.0更方便,只需要在瀏覽器為下載任務(wù)建立DownloadItem對(duì)象時(shí)判斷下載是否是由用戶觸發(fā),而不需要在所有觸發(fā)點(diǎn)插入檢測(cè)代碼。
但是,用戶觸發(fā)FileSystem API進(jìn)行下載的過程包括一個(gè)自動(dòng)頁面請(qǐng)求(將文件從沙箱隔離環(huán)境中移動(dòng)到本地文件系統(tǒng)中)。這會(huì)導(dǎo)致由用戶觸發(fā)的利用FileSystem API進(jìn)行的下載也被判斷成自動(dòng)下載,造成誤報(bào)。
實(shí)驗(yàn)發(fā)現(xiàn),向服務(wù)器提出頁面請(qǐng)求導(dǎo)致的下載,其下載地址是正常的網(wǎng)絡(luò)URL格式:“http(s)://www.website.com/malware.exe”,而FileSystem API觸發(fā)下載的下載地址是“filesystem:http(s)://www.website.com/temporary(或者persistent)/malware.exe”的格式。
為了區(qū)分利用FileSystem API進(jìn)行的正常下載和頁面請(qǐng)求導(dǎo)致的自動(dòng)下載,在確認(rèn)自動(dòng)觸發(fā)的頁面請(qǐng)求導(dǎo)致了下載操作后,還需要判斷download_url的格式,如果download_url不以“filesystem”開頭(不是filesystem API類型的下載),才認(rèn)為此次下載是自動(dòng)下載。檢測(cè)流程見圖4。
4.2.2檢測(cè)利用FileSystem API的自動(dòng)下載
如圖3中所示,利用FileSystem API下載的文件是保存在沙箱隔離環(huán)境中的,如果要將此文件放入用戶的文件系統(tǒng)中,還需要利用頁面請(qǐng)求類型的下載方法,以沙箱隔離環(huán)境中保存的路徑為跳轉(zhuǎn)目的地址,將其下載到本地目錄中。如果將檢測(cè)點(diǎn)放在文件從沙箱隔離環(huán)境中移入本地文件系統(tǒng)時(shí),會(huì)導(dǎo)致所有利用FileSystem API進(jìn)行的下載都會(huì)被認(rèn)為是自動(dòng)下載,因此,只能在利用FileSystem API寫入沙箱隔離環(huán)境的過程中利用processingUserGesture()方法檢查用戶交互,以檢測(cè)由FileSystem API觸發(fā)的下載是否是自動(dòng)下載。
在網(wǎng)頁獲取FileSystem權(quán)限以后,所有的FileSystem API相關(guān)操作都會(huì)進(jìn)入瀏覽器子線程中進(jìn)行操作。所有非主線程中的行為都被processingUserGesture()認(rèn)為是非用戶操作。如果將檢測(cè)點(diǎn)放在獲取權(quán)限之后,會(huì)導(dǎo)致所有由FileSystem API觸發(fā)的下載行為都被判定成非用戶操作。所以,本文在瀏覽器獲取FileSystem API權(quán)限時(shí)進(jìn)行檢測(cè),所有自動(dòng)獲取FileSystem API權(quán)限的操作都被判定為危險(xiǎn)操作,并進(jìn)行阻斷和攔截,這樣就可以阻止FileSystem API類型的自動(dòng)下載。
WebKitGtk+2.8.0和Chromium 38.0.2113.1都是基于WebKit內(nèi)核的,在這兩個(gè)瀏覽器基礎(chǔ)上的原型系統(tǒng)實(shí)現(xiàn)是基本一致的。其不同點(diǎn)在于,Chromium對(duì)每一個(gè)下載任務(wù)建立一個(gè)DownloadItem對(duì)象,并判斷其是否由用戶觸發(fā)。這一特性使該檢測(cè)方法在Chromium系列的瀏覽器中實(shí)現(xiàn)時(shí)可以統(tǒng)一在建立下載任務(wù)時(shí)進(jìn)行檢測(cè)、攔截,而不是像WebKitGtk+2.8.0一樣,需要在每一個(gè)下載觸發(fā)點(diǎn)插入用戶交互檢測(cè)代碼。
5實(shí)驗(yàn)
本文在插入檢測(cè)代碼后的WebKitGtk+2.8.0和Chromium 38.0.2113.1瀏覽器中進(jìn)行了功能和性能測(cè)試。
5.1功能測(cè)試
將Alexa網(wǎng)站公布的前500個(gè)網(wǎng)站主頁認(rèn)為是正常網(wǎng)頁,從惡意樣本中選取3052個(gè)網(wǎng)頁。然后,使用加入了自動(dòng)下載檢測(cè)功能的Chromium 38.0.2113.1及WebKitGtk+2.8.0瀏覽器去訪問Alexa網(wǎng)站公布的前500個(gè)網(wǎng)頁以及52個(gè)自動(dòng)下載類型的惡意網(wǎng)頁,以檢測(cè)準(zhǔn)確率。
如表2所示,無論是在Chromium 38.0.2113.1還是WebKitGtk+2.8.0中,500個(gè)正常網(wǎng)頁都沒有被誤報(bào),誤報(bào)率為0。在Chromium 38.0.2113.1中,52個(gè)網(wǎng)頁的自動(dòng)下載行為都被檢測(cè)并攔截了,漏報(bào)率為0。在WebKitGtk+2.8.0中,由于WebKitGtk+不支持由FileSystem API導(dǎo)致的自動(dòng)下載,有2個(gè)網(wǎng)頁在WebKitGtk+2.8.0上不能自動(dòng)下載,但剩下的50個(gè)惡意網(wǎng)頁的自動(dòng)下載行為也都能被成功檢測(cè),漏報(bào)率為0。
通過測(cè)試說明:本文提出的檢測(cè)方法能夠有效地檢測(cè)并攔截自動(dòng)下載行為。
5.2性能測(cè)試
谷歌的OctaneBenchmark[22]是網(wǎng)頁渲染速度測(cè)試通常使用的測(cè)試方法。通過Google官方的JavaScript腳本測(cè)試集,全面檢測(cè)瀏覽器的JavaScript性能。此測(cè)試分?jǐn)?shù)越高代表瀏覽器性能越好。通過OctaneBenchmark分別對(duì)插入檢測(cè)代碼前后的WebKitGtk+2.8.0和Chromium 38.0.2113.1進(jìn)行了測(cè)試,以評(píng)估插入代碼對(duì)瀏覽器性能影響。
測(cè)試結(jié)果如表3所示,在WebKitGtk+2.8.0和Chromium 38.0.2113.1瀏覽器中插入了檢測(cè)代碼后,其性能開銷分別增加了1.26%和7.79%,對(duì)用戶體驗(yàn)幾乎沒有影響。
通過實(shí)驗(yàn)證明:本文提出的自動(dòng)下載檢測(cè)方法可以非常準(zhǔn)確地檢測(cè)網(wǎng)頁的自動(dòng)下載行為;同時(shí),其造成的額外開銷非常小,不影響用戶瀏覽正常網(wǎng)頁時(shí)的體驗(yàn)。
6結(jié)語
本文總結(jié)了目前攻擊者可以利用的所有自動(dòng)下載方式,并提出了一種新的針對(duì)于惡意網(wǎng)頁自動(dòng)下載行為的檢測(cè)方法,利用現(xiàn)有瀏覽器中已存在的用戶交互判別機(jī)制來檢測(cè)惡意網(wǎng)頁的自動(dòng)下載行為,能夠有效阻止惡意程序的自動(dòng)下載。實(shí)驗(yàn)證明,這種檢測(cè)方法準(zhǔn)確度高,對(duì)瀏覽器性能幾乎沒有影響,可以對(duì)惡意網(wǎng)頁進(jìn)行實(shí)時(shí)檢測(cè),具有很強(qiáng)的應(yīng)用性;但是,隨著Web技術(shù)的發(fā)展,觸發(fā)自動(dòng)下載的方式也會(huì)增加。以后將繼續(xù)關(guān)注HTML5及CSS3等新的Web技術(shù),跟蹤新的自動(dòng)下載方式,進(jìn)行檢測(cè)、攔截。
參考文獻(xiàn):
[1]
PROVOS N, MCNAMEE D, MAVROMMATIS P, et al. The ghost in the browser analysis of Webbased malware [C]// HotBots07: Proceedings of the First Conference on First Workshop on Hot Topics in Understanding Botnets. Berkeley, CA: USENIX Association, 2007: 4-4.
[2]
WANG Y, BECK D, JIANG X, et al. Automated Web patrol with strider honey monkeys: finding Web sites that exploit browser vulnerabilities [C]// NDSS 2006: Proceedings of the 2006 Network and Distributed System Security Symposium. Reston: The Internet Society, 2006: 35-49.
[3]
MOSHCHUK A, BRAGIN T, GRIBBLE SD, et al. A crawlerbased study of spyware on the Web [EB/OL]. [20151112]. http://homes.cs.washington.edu/~gribble/papers/spycrawler.pdf.
[4]
CPAN. Mitre honeyclient project [EB/OL]. [20151120]. http://search.cpan.org/~mitrehc/.
[5]
The Honeynet Project. CaptureHPC [EB/OL]. [20151120]. http://projects.honeynet.org/capturehpc.
[6]
SEIFERT C, WELCH I, KOMISARCZUK P, et al. Identification of malicious Web pages with static heuristics [C]// Proceedings of the 2008 Australasian Telecommunication Networks and Applications Conference. Piscataway, NJ: IEEE, 2008: 91-96.
[7]
CANALI D, COVA M, VIGNA G, et al. Prophiler: a fast filter for the largescale detection of malicious Web pages [C]// WWW11: Proceedings of the 20th International Conference on World Wide Web. New York: ACM, 2011: 197-206.
[8]
COVA M, KRUEGEL C, VIGNA G. Detection and analysis of drivebydownload attacks and malicious JavaScript code [C]// Proceedings of the 19th International Conference on World Wide Web. New York: ACM, 2010: 281-290.
[9]
HEIDERICH M, FROSCH T, HOLZ T. IceShield: detection and mitigation of malicious websites with a frozen DOM [C]// RAID11: Proceedings of the 14th International Conference on Recent Advances in Intrusion Detection. Berlin: Springer, 2011: 281-300.
[10]
LU L, YEGNESWARAN V, PORRAS P, et al. BLADE: an attackagnostic approach for preventing driveby malware infections [C]// Proceedings of the 17th ACM Conference on Computer and Communications Security. New York: ACM, 2010: 440-450.
[11]
CAO Y, PAN X, CHEN Y, et al. JShield: towards complete deobfuscation and realtime detection of complex driveby download attacks [C]// Proceedings of the 30th Annual Computer Security Applications Conference. New York: ACM, 2014: 466-475.
[12]
SCITOOLS TEAM. Understand? static code analysis tool [EB/OL]. [20151120]. https://scitools.com/.
[13]
W3CSCHOOL. JavaScript window location [EB/OL]. [20151120]. http://www.w3school.com.cn/js/js_window_location.asp.
[14]
W3CSCHOOL. JavaScript window history [EB/OL]. [20151120]. http://www.w3school.com.cn/js/js_window_history.asp.
[15]
陸凌牛.HTML5和CSS3權(quán)威指南[M].2版.北京:機(jī)械工業(yè)出版社,2013:177-192.(LU L N. HTML5 and CSS3: the Definitive Guide [M]. 2nd ed. Beijing: China Machine Press, 2013: 177-192.)
[16]
W3CSCHOOL. HTML DOM anchor object [EB/OL]. [20151120]. http://www.w3school.com.cn/jsref/dom_obj_anchor.asp.
[17]
W3CSCHOOL. HTML[EB/OL]. [20151120]. http://www.w3school.com.cn/tags/tag_meta.asp.
[18]
GOURLEY D, TOTTY B, SAYER M,等.HTTP權(quán)威指南[M].陳娟,趙振平,譯.北京:人民郵電出版社,2012:64-68.(GOURLEY D, TOTTY B, SAYER M, et al. HTTP: The Definitive Guide [M]. CHEN J, ZHAO Z P, translated. Beijing: Posts and Telecom Press, 2012: 64-68.)
[19]
QU J.用FileSystem API實(shí)現(xiàn)文件下載器[EB/OL]. [20151120]. http://imququ.com/post/adownloaderwithfilesystemapi.html.(QU J. Use FileSystem API to implement a document download machine [EB/OL]. [20151120]. http://imququ.com/post/adownloaderwithfilesystemapi.html.)
[20]
如何利用HTML5的filesystem技術(shù)下載沙盒里的文件[EB/OL]. [20151120]. http://www.zhihu.com/question/21462396.(How to download file in the sand box by using filesystem API of HTML5 [EB/OL]. [20151120]. http://www.zhihu.com/question/21462396.)
[21]
Gnome. the WebKitGtk+ project [EB/OL]. [20151120]. http://webkitgtk.org/.
[22]
Google. OctaneBenchmark [EB/OL]. [20151120]. http://octanebenchmark.googlecode.com/svn/latest/index.html.