楊 明,王軼駿,薛 質(zhì)
(上海交通大學(xué) 信息安全工程學(xué)院,上海200240)
根據(jù)Sophos公司2013年的安全報(bào)告所稱,網(wǎng)頁(yè)木馬仍然是現(xiàn)今惡意軟件的主要擴(kuò)散來(lái)源[1]。而Web全自動(dòng)攻擊工具 (Web exploit kit)[2]又是最近發(fā)展迅速的網(wǎng)絡(luò)自動(dòng)化攻擊手段,是高混淆網(wǎng)頁(yè)木馬的主要存在形式。這些工具往往提供多個(gè)漏洞甚至是0-day漏洞的利用支持,主要通過(guò)網(wǎng)頁(yè)掛馬來(lái)感染目標(biāo)主機(jī)。它們所采用的高級(jí)別代碼混淆算法定期變化并且能夠逃避當(dāng)前任何的網(wǎng)絡(luò)層檢測(cè)技術(shù)。因此對(duì)于高混淆網(wǎng)頁(yè),傳統(tǒng)的反病毒引擎和特征碼的檢測(cè)方式已經(jīng)不能滿足需求。
目前國(guó)內(nèi)外的網(wǎng)頁(yè)木馬檢測(cè)方法主要可分為 “動(dòng)態(tài)檢測(cè)”和 “靜態(tài)檢測(cè)”這2種。“動(dòng)態(tài)檢測(cè)”主要依賴客戶端蜜罐技術(shù),在虛擬環(huán)境中模擬通信,通過(guò)對(duì)系統(tǒng)行為 (文件、進(jìn)程和注冊(cè)表等)的監(jiān)控來(lái)鑒別惡意網(wǎng)頁(yè)。目前動(dòng)態(tài)檢測(cè)的主要有Jose Nazario的PhoneyC[3]、Honeynet項(xiàng)目組 的 Capture-HPC[4], 以 及 University of Mannheim 的Monkey-Spider[5]等?!办o態(tài)檢測(cè)”技術(shù)則通過(guò)分析網(wǎng)頁(yè)源代碼來(lái)檢測(cè)是否有掛馬特征或者異常情況,目前主要有2種常用的技術(shù)手段:基于靜態(tài)解密的檢測(cè)分析與基于概率統(tǒng)計(jì)的異常分析。這方面具有代表性的是加州大學(xué)圣塔芭芭拉分校的 Wepawet[6]項(xiàng)目和 Prophiler[7]項(xiàng)目。
“動(dòng)態(tài)檢測(cè)”和 “靜態(tài)檢測(cè)”技術(shù)各有自己的優(yōu)勢(shì)和劣勢(shì),采用任何一種單一技術(shù)都無(wú)法滿足現(xiàn)今高混淆網(wǎng)頁(yè)掛馬的檢測(cè)分析需求。因此,針對(duì)高混淆掛馬網(wǎng)頁(yè),本文設(shè)計(jì)了一種動(dòng)態(tài)和靜態(tài)相結(jié)合的網(wǎng)頁(yè)木馬檢測(cè)模型,并在此基礎(chǔ)上開(kāi)發(fā)了一套檢測(cè)系統(tǒng),最后通過(guò)實(shí)驗(yàn)驗(yàn)證了該檢測(cè)系統(tǒng)相對(duì)其它系統(tǒng)能夠更準(zhǔn)確地識(shí)別高混淆掛馬網(wǎng)頁(yè),具有檢測(cè)率高、誤報(bào)率低、速度快等優(yōu)勢(shì)。此外,該系統(tǒng)部署方便,開(kāi)銷較少,具有很好的實(shí)際應(yīng)用價(jià)值。
目前主流的高混淆掛馬網(wǎng)頁(yè)使用的工具被稱為Exploit Kit。它是一個(gè)預(yù)打包的軟件的合集,包括安裝程序,控制面板和一定數(shù)量的漏洞利用 (甚至包含0Day漏洞)。Exploit Kit采用主機(jī)托管來(lái)躲避網(wǎng)頁(yè)審查,采用動(dòng)態(tài)域名生成來(lái)對(duì)抗安全廠商的黑名單技術(shù)。活躍的Exploit Kit有Black Hole Exploit Kit,RedKit Exploit Kit,Cool exploit kits,Sweet Orange Exploit Kit,Sakura exploit kit,Nuclear Pack等。
近來(lái)Exploit Kits還有一個(gè)明顯的特征就是大量Java漏洞的利用。根據(jù)Sophos公司的調(diào)查報(bào)告[8]統(tǒng)計(jì),包含Java漏洞利用的網(wǎng)頁(yè)木馬比例達(dá)到了76.76%,包括JVM溢出漏洞 (CVE-2013-0422,CVE-2010-3552等),Java沙箱繞過(guò)漏洞 (CVE-2012-4681,CVE-2011-3554等)。這些的漏洞的觸發(fā)較為容易、影響范圍廣,因此成為Java漏洞被網(wǎng)頁(yè)木馬利用較多的主要原因。
在網(wǎng)馬攻擊過(guò)程中,攻擊者首先利用漏洞入侵合法網(wǎng)站,然后在合法網(wǎng)站中嵌入惡意腳本代碼,使得用戶訪問(wèn)后被重定向到掛馬站點(diǎn)后下載惡意程序運(yùn)行 (drive-by download[9])。而這些掛馬頁(yè)面往往都經(jīng)過(guò)了高度混淆,代碼混淆的特征在很多文獻(xiàn)中被提及。文獻(xiàn) [10]詳細(xì)介紹了JavaScript的各種混淆方式,主要有字符串混淆、escape加密、eval執(zhí)行加密等等。文獻(xiàn) [11]通過(guò)JavaScript特征、HTML特征、以及URL特征等方面來(lái)對(duì)頁(yè)面代碼進(jìn)行檢測(cè),并利用機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘技術(shù)來(lái)分析數(shù)據(jù)。這種方法已經(jīng)被廣泛利用在掛馬網(wǎng)頁(yè)的靜態(tài)檢測(cè)上。文獻(xiàn)[12,13]所設(shè)計(jì)的掛馬檢測(cè)系統(tǒng)也采用了這種思路。
隨著靜態(tài)檢測(cè)的應(yīng)用逐漸廣泛,高混淆木馬也出現(xiàn)了新的變化。比如JavaScript匿名函數(shù)和閉包的應(yīng)用、專業(yè)的JavaScript加密工具和操作系統(tǒng)指紋識(shí)別等。
匿名函數(shù)指的是沒(méi)有定義函數(shù)名的函數(shù),而閉包則是用匿名函數(shù)來(lái)實(shí)現(xiàn)的一個(gè)受到保護(hù)的變量空間,其由內(nèi)嵌函數(shù)所生成。圖1就是一個(gè)利用匿名函數(shù)和閉包形式編寫的掛馬網(wǎng)頁(yè)代碼片段,在這個(gè)片段中沒(méi)有 “eval”、“document”、 “escape”等JavaScript特征,也沒(méi)有 “iframe”等HTML特征,而動(dòng)態(tài)檢測(cè)卻可以得到較好的結(jié)果。
高混淆掛馬網(wǎng)頁(yè)也經(jīng)常通過(guò)專業(yè)的JavaScript加密工具來(lái)完成,如Dean Edwards Packer,YUI Compressor等。如圖2中的例子所示,經(jīng)過(guò)這些工具混淆后的代碼不僅進(jìn)行了多層次的混淆,且代碼中每一段都使用了不同的加密方式,因此異常統(tǒng)計(jì)所依賴的特征已經(jīng)非常不明顯。文獻(xiàn)[14]也指出了靜態(tài)特征正逐漸在減少這一現(xiàn)象。此外這些加密方式往往是自定義的多層循環(huán)排序,而不是傳統(tǒng)的單一base64或進(jìn)制編碼類加密方式,加上函數(shù)入口點(diǎn)隱蔽,使用靜態(tài)解密技術(shù)解密的難度也很大。
操作系統(tǒng)指紋/瀏覽器指紋識(shí)別是高混淆網(wǎng)馬的另一主要特征之一。PluginDetect是一個(gè)開(kāi)源的JavaScript庫(kù),用來(lái)檢測(cè)系統(tǒng)信息,包括操作系統(tǒng),瀏覽器的名稱、版本號(hào),Adobe Flash版本號(hào),Adobe Reader版本號(hào),Java版本號(hào),以及支持各類播放器等ActiveX插件的版本。PluginDetect主要被Black Hole Exploit Kit、Cool exploit kits和Sakura exploit kit等所使用。Exploit Kit通過(guò)判斷相應(yīng)的信息選擇相應(yīng)的漏洞進(jìn)行攻擊或者忽略以避免不必要的網(wǎng)馬行為泄露。這無(wú)疑加重了傳統(tǒng)動(dòng)態(tài)檢測(cè)的難度,因?yàn)橹挥性诖罱朔嫌|發(fā)條件的操作系統(tǒng)和存在相應(yīng)漏洞的ActiveX插件的環(huán)境后才能觸發(fā)惡意代碼下載,從而需要配置多臺(tái)虛擬機(jī)來(lái)對(duì)可疑網(wǎng)頁(yè)依次進(jìn)行檢測(cè),這帶來(lái)了很大的檢測(cè)時(shí)間和空間開(kāi)銷。
如引言所述,傳統(tǒng)的檢測(cè)技術(shù)包括 “動(dòng)態(tài)檢測(cè)”和“靜態(tài)檢測(cè)”兩大類。其中,動(dòng)態(tài)檢測(cè)雖然對(duì)于含有加密、混淆的惡意代碼檢測(cè)存在優(yōu)勢(shì),但是其缺陷也是明顯的:動(dòng)態(tài)檢測(cè)需要花費(fèi)大量時(shí)間,效率較低;很多惡意代碼漏洞觸發(fā)條件苛刻,存在漏報(bào)率較高等問(wèn)題;帶漏洞的虛擬環(huán)境還可能存在一些安全隱患。而靜態(tài)檢測(cè)雖然系統(tǒng)開(kāi)銷較低,但靜態(tài)解密技術(shù)存在解密難度大、容易被欺騙、誤報(bào)率高、檢測(cè)特征庫(kù)龐大等問(wèn)題;異常統(tǒng)計(jì)技術(shù)則存在閥值設(shè)定難、誤報(bào)率高等問(wèn)題。
通過(guò)大量的研究和實(shí)驗(yàn),本文所設(shè)計(jì)實(shí)現(xiàn)的系統(tǒng)通過(guò)動(dòng)靜結(jié)合的方式來(lái)檢測(cè)高混淆網(wǎng)馬,檢測(cè)模型結(jié)構(gòu)如圖3所示。動(dòng)態(tài)檢測(cè)部分使用真實(shí)的全補(bǔ)丁的Internet Explorer瀏覽器作為腳本引擎,以掛鉤瀏覽器內(nèi)部關(guān)鍵函數(shù)的方式來(lái)獲取惡意代碼反混淆后的結(jié)果。這種方式的最大優(yōu)勢(shì)在于檢測(cè)過(guò)程不依賴于漏洞的觸發(fā),也不會(huì)對(duì)檢測(cè)環(huán)境造成污染和破壞,也不需要反復(fù)還原檢測(cè)環(huán)境。隨后我們使用動(dòng)態(tài)仿真的方式檢測(cè)Shellcode,同時(shí)使用基于特征碼的靜態(tài)檢測(cè)方式作為輔助檢測(cè)手段,最后綜合得到網(wǎng)馬檢測(cè)的結(jié)果。
基于上述檢測(cè)模型,本文設(shè)計(jì)和實(shí)現(xiàn)了一套檢測(cè)系統(tǒng),該系統(tǒng)搭建運(yùn)行在Linux平臺(tái)之上,整體架構(gòu)如圖4所示,主要分為用戶Web交互前段、URL檢測(cè)引擎、檢測(cè)結(jié)果分析和后臺(tái)數(shù)據(jù)存儲(chǔ)等模塊。
(1)用戶Web交互前端模塊提供用戶輸入檢測(cè)地址和查看檢測(cè)結(jié)果的可視化界面。
(2)URL檢測(cè)引擎模塊由掛鉤了核心函數(shù)的IE瀏覽器引擎,Sandboxie沙箱和Vbox虛擬機(jī)所組成。修改過(guò)的IE瀏覽器引擎運(yùn)行在Vbox虛擬機(jī)的Windows Sandboxie沙箱內(nèi),Vbox虛擬機(jī)內(nèi)相應(yīng)的控制以及數(shù)據(jù)傳輸通過(guò)Vbox API完成。檢測(cè)系統(tǒng)中的Vbox虛擬機(jī)保證了訪問(wèn)模塊和外部其它模塊的隔離,而Sandboxie沙箱所占的系統(tǒng)開(kāi)銷很小、恢復(fù) (即倒沙)快,相比于其它文獻(xiàn)中直接對(duì)虛擬機(jī)鏡像進(jìn)行恢復(fù)的優(yōu)勢(shì)較為明顯。
(3)檢測(cè)結(jié)果分析模塊用于對(duì)URL檢測(cè)引擎返回的格式化數(shù)據(jù)進(jìn)行分析,判斷是否為惡意網(wǎng)頁(yè)。
(4)后臺(tái)數(shù)據(jù)存儲(chǔ)模塊存儲(chǔ)網(wǎng)頁(yè)木馬檢測(cè)的靜態(tài)特征以及檢測(cè)的詳細(xì)結(jié)果。
從上面可以看出,本系統(tǒng)核心的URL檢測(cè)引擎模塊,采用了Vbox虛擬機(jī)結(jié)合Sandboxie沙箱的基礎(chǔ)架構(gòu),在提供了高效運(yùn)行環(huán)境的同時(shí)還提供了雙重的系統(tǒng)安全性保證。
2.2.1 瀏覽器掛鉤
現(xiàn)今,大部分網(wǎng)頁(yè)木馬在用戶訪問(wèn)開(kāi)始都會(huì)進(jìn)行瀏覽器類型和真實(shí)度的識(shí)別,所以傳統(tǒng)動(dòng)態(tài)檢測(cè)中的模擬引擎可能不會(huì)觸發(fā)惡意代碼的跳轉(zhuǎn)或執(zhí)行。因此,本文擬使用真實(shí)的全補(bǔ)丁的IE瀏覽器來(lái)訪問(wèn)待檢測(cè)網(wǎng)頁(yè),從而避免被網(wǎng)頁(yè)惡意代碼繞過(guò)的風(fēng)險(xiǎn),然后我們通過(guò)掛鉤IE關(guān)鍵解碼函數(shù)來(lái)獲取反混淆后的原始代碼。
我們使用Microsoft Detours[15]庫(kù)對(duì)IE瀏覽器進(jìn)行關(guān)鍵API函數(shù)的掛鉤來(lái)構(gòu)建我們的檢測(cè)分析引擎。其中,Detours的實(shí)現(xiàn)原理是修改目標(biāo)函數(shù)的前幾個(gè)字節(jié)指令來(lái)跳轉(zhuǎn)到我們自己的函數(shù)地址,以此接管對(duì)目標(biāo)函數(shù)的調(diào)用,并插入自己的處理代碼。采用這種掛鉤方式的好處在于,我們可以獲取網(wǎng)頁(yè)惡意代碼的反混淆結(jié)果,但不會(huì)使其在系統(tǒng)中真正執(zhí)行和感染系統(tǒng)。
我們構(gòu)建了一個(gè)基于Detours的DLL注入程序來(lái)攔截IE瀏覽器中的所有和網(wǎng)頁(yè)代碼執(zhí)行以及反混淆相關(guān)的關(guān)鍵函數(shù),包括 CWindow_execScript,CDocument_write,JsEval,JsUnescape,VbsEval,VbsExecute,VbsUnescape等,此外我們還掛鉤了重定向函數(shù),各類ActiveX插件。
以JsEval函數(shù)為例,掛鉤后的函數(shù)調(diào)用如圖5所示。
這樣,當(dāng)瀏覽器解析網(wǎng)頁(yè)代碼執(zhí)行到需要調(diào)用JsEval這個(gè)目標(biāo)函數(shù) (即True_JsEval)時(shí),將直接跳轉(zhuǎn)到我們的攔截函數(shù)中去執(zhí)行我們自己的My_JsEval攔截函數(shù) (步驟1)。攔截函數(shù)接著調(diào)用trampoline函數(shù) (步驟2),trampoline函數(shù)保存了JsEval目標(biāo)函數(shù)前幾個(gè)指令以及一個(gè)無(wú)條件轉(zhuǎn)移。trampoline函數(shù)隨后調(diào)用JsEval目標(biāo)函數(shù) (步驟3),而JsEval目標(biāo)函數(shù)調(diào)用結(jié)束后會(huì)返回到我們的攔截函數(shù) (步驟4)。攔截函數(shù)最后向最初的調(diào)用函數(shù)返回執(zhí)行結(jié)果 (步驟5)。
在具體的實(shí)現(xiàn)過(guò)程當(dāng)中,關(guān)鍵在于攔截函數(shù)的函數(shù)聲明和變量格式必須要同目標(biāo)函數(shù)保持一致。而我們對(duì)于Internet Explorer 9瀏覽器的關(guān)鍵組件進(jìn)行了大量的逆向分析工作,掌握了其中解碼和反混淆相關(guān)函數(shù)的參數(shù)格式及變量類型。My_JsEval攔截函數(shù)的代碼如圖6所示。
因此當(dāng)觸發(fā)鉤子時(shí),DLL將被掛鉤的函數(shù)的運(yùn)行內(nèi)容轉(zhuǎn)入我們重寫的detour攔截函數(shù)中執(zhí)行并得到反混淆結(jié)果,同時(shí)以JSON格式保存以用于下一步分析。掛鉤執(zhí)行后的反混淆結(jié)果包括腳本源代碼,完整的腳本解析操作,DOM樹(shù)操作,加載的插件和有效載荷 (payload)等內(nèi)容,具體格式如下:
CONTENT:= {“Hook”:HOOK,“Tree”:TREE} //文件的內(nèi)容
HOOK:= {HCONTENT}| {}
HCONTENT:= HVT|HVT,HCONTENT
HVT:= “HOOKNAME”:VTPAIR
HOOKNAME:=ExecScript|JsEval|JsUnescape|Redirect|VbsEval|
VbsExecute|VbsExecuteGlobal| VbsUnescape| Write //掛鉤類型
VTPAIR:= {VTCONTENT}| {}
VTCONTENT:=VT|VT,VTCONTENT
VT:= “VALUE”:TIMES //表示網(wǎng)頁(yè)腳本執(zhí)行的源碼和相應(yīng)腳本執(zhí)行的次數(shù)
TREE:= {NODE}
NODE:= “URL”:[SOURCE,SUBTREES]//DOM Tree的節(jié)點(diǎn)URL和源碼
SUBTREES:= {NODES}| {}
NODES:=NODE|NODE,NODES
圖6 My_JsEval攔截函數(shù)的代碼
2.2.2 Shellcode檢測(cè)
在網(wǎng)馬執(zhí)行環(huán)節(jié)中,攻擊者往往通過(guò)在內(nèi)存中注入Shellcode來(lái)達(dá)到下載惡意程序的目的。Shellcode是網(wǎng)馬利用漏洞進(jìn)行攻擊的關(guān)鍵部分,因此Shellcode的檢測(cè)也尤為重要。
我們采用了Pylibemu[16]對(duì)反混淆后類似Shellcode的代碼部分進(jìn)行動(dòng)態(tài)仿真。Pylibemu在封裝了Libemu的基礎(chǔ)上提供了更多的檢測(cè)功能。它基于對(duì)x86匯編語(yǔ)言的解析和模擬執(zhí)行,通過(guò)對(duì)內(nèi)存和CPU的模擬來(lái)測(cè)試字符串能否作為一段匯編語(yǔ)言動(dòng)態(tài)執(zhí)行,以此來(lái)檢測(cè)源碼中是否含有Shellcode。
另一方面我們?cè)赑ylibemu原有基礎(chǔ)上進(jìn)行了改進(jìn)。在動(dòng)態(tài)仿真同時(shí)會(huì)監(jiān)測(cè)內(nèi)存分配的大小,若內(nèi)存分配空間巨大,如幾百 MB,則很有可能是Shellcode堆噴射 (heap spray)的結(jié)果。堆噴射技術(shù)通過(guò)在堆中連續(xù)分配由NOP指令和Shellcode組成的代碼來(lái)繞過(guò)內(nèi)存地址分布隨機(jī)化機(jī)制 (ASLR),以此來(lái)達(dá)到執(zhí)行Shellcode的目的。
有些網(wǎng)頁(yè)木馬 (比如現(xiàn)今流行的Java網(wǎng)頁(yè)木馬)所利用的漏洞屬于邏輯型漏洞,觸發(fā)時(shí)不需要在內(nèi)存中動(dòng)態(tài)執(zhí)行Shellcode,因此本文采用了靜態(tài)特征碼匹配作為輔助檢測(cè)手段,彌補(bǔ)了動(dòng)態(tài)檢測(cè)的不足。
我們根據(jù)大量樣本與典型特征創(chuàng)建自定義的邏輯特征碼數(shù)據(jù)庫(kù)。除了一些常見(jiàn)的加密解密、讀寫操作之外,高混淆木馬還存在一些特有的特征碼,包括特定的源碼字符,函數(shù)調(diào)用,特殊判斷語(yǔ)句等,部分特征碼示例見(jiàn)表1。這些特征碼需要聯(lián)合判斷,當(dāng)滿足其中多個(gè)特征條件時(shí)可以斷定為惡意代碼。如對(duì)于Sakura exploit kit 1.1,當(dāng)解析后的代碼中出 現(xiàn) “PluginDetect”或 “Java”且 “<applet”、“document.write”、“param”和 “Main.class”等關(guān)鍵字出現(xiàn)次數(shù)滿足一定條件時(shí),就可以認(rèn)為是惡意代碼。
表1 高混淆木馬特征碼示例
本系統(tǒng)的靜態(tài)檢測(cè)使用基于ClamAV[17]的開(kāi)源殺毒引擎,特征碼格式如下所示:
“SignatureName;TargetDescriptionBlock;LogicalExpression;Subsig0;Subsig1;Subsig2...”
其中SignatureName為特征碼的唯一名稱,Target DescriptionBlock為目標(biāo)類型參數(shù),LogicalExpression字段包含了邏輯表達(dá)式,Subsig是特征碼,以十六進(jìn)制表述。如對(duì)于只含有邏輯漏洞利用的Sakura exploit kit,它的特征碼匹配字符串可以為:
(PluginDetect"|"Java") & (((" <applet" =2) & ("document.write" =2) & ("param">4)) |"Main.class")
使用邏輯特征碼語(yǔ)法,上述特征碼表述為下列匹配規(guī)則:
Sakura exploit kit;Target:0;(0 & 1) & (((2=2) & (3=2) & (4>4))|5);
506C7567696E446574656374 ;4A617661;3C6170706C 6574;646F63756D656E742E7772697465;706172616D;4D 61696E2E636C617373
最后我們將上述規(guī)則加入特征碼數(shù)據(jù)庫(kù)中即可應(yīng)用到靜態(tài)檢測(cè)引擎。由于這里是對(duì)反混淆后的代碼進(jìn)行特征碼匹配,因此不存在特征碼被加殼或者混淆的問(wèn)題。
為了驗(yàn)證本文所設(shè)計(jì)實(shí)現(xiàn)的系統(tǒng)對(duì)高混淆網(wǎng)頁(yè)木馬的檢測(cè)效果,我們進(jìn)行了實(shí)驗(yàn)測(cè)試并和Wepawet項(xiàng)目,Virus Total[18]等檢測(cè)網(wǎng)站進(jìn)行了對(duì)比驗(yàn)證。我們使用的惡意樣本庫(kù)來(lái)源于上海交通大學(xué)網(wǎng)絡(luò)中心,urlQuery.net、Malware-DomainList、MalwareBlacklist.com.等著名網(wǎng)馬發(fā)布站點(diǎn),共有500多條,涵蓋了目前流行的絕大多數(shù)網(wǎng)頁(yè)木馬,主要是高混淆惡意代碼。此外,我們還通過(guò)正常網(wǎng)頁(yè)的測(cè)試來(lái)驗(yàn)證系統(tǒng)的誤報(bào)率。實(shí)驗(yàn)測(cè)試的結(jié)果見(jiàn)表2和表3。
圖7 是本系統(tǒng)和 Wepawet、VirusTotal系統(tǒng)檢測(cè)率的對(duì)比結(jié)果。
從圖7中可以看出,本文所設(shè)計(jì)實(shí)現(xiàn)的系統(tǒng)對(duì)各類網(wǎng)馬樣本的識(shí)別達(dá)到了接近90%的檢測(cè)率,比Wepawet和VirusTotal取得了更理想的網(wǎng)馬檢測(cè)效果。在誤報(bào)率方面,本系統(tǒng)的誤報(bào)率較低,Wepawet的誤報(bào)數(shù)也較低,而VirusTotal由于使用了黑名單機(jī)制,對(duì)于曾經(jīng)掛馬現(xiàn)在已經(jīng)恢復(fù)或失效的網(wǎng)站會(huì)存在誤報(bào),因此誤報(bào)率較高。
表2 針對(duì)流行高混淆網(wǎng)馬樣本庫(kù)的檢測(cè)結(jié)果
表3 針對(duì)正常網(wǎng)頁(yè)樣本庫(kù)的檢測(cè)結(jié)果
在我們檢測(cè)的樣本中,大部分為Blackhole Exploit kit和Redkit Exploit kit,這也是符合目前高混淆網(wǎng)頁(yè)木馬的流行趨勢(shì)。從檢測(cè)結(jié)果來(lái)看,針對(duì)這些類型的網(wǎng)頁(yè)木馬,本系統(tǒng)能夠達(dá)到很好的檢測(cè)效果。而某些類別的網(wǎng)頁(yè)木馬及其載體Exploit Kit,由于樣本數(shù)較少 (比如最新的G01pack exploit kit,樣本數(shù)目小于5個(gè)),或者頁(yè)面存活期短,對(duì)訪問(wèn)要求限制較高等原因,本系統(tǒng)對(duì)它們的檢測(cè)還存在不足,這也是本系統(tǒng)今后改進(jìn)的方向。
面對(duì)日益更新的網(wǎng)頁(yè)木馬混淆和躲避手段,本文提出了一種新穎的檢測(cè)方法:通過(guò)對(duì)受保護(hù)環(huán)境中IE瀏覽器的關(guān)鍵函數(shù)進(jìn)行掛鉤,讓其訪問(wèn)待檢測(cè)的網(wǎng)頁(yè)URL地址,從而獲取反混淆后的原始代碼,且不會(huì)真正觸發(fā)漏洞,無(wú)需頻繁恢復(fù)檢測(cè)環(huán)境;隨后在上述動(dòng)態(tài)檢測(cè)基礎(chǔ)上添加了靜態(tài)特征碼檢測(cè)方式,以此實(shí)現(xiàn)了一套動(dòng)靜結(jié)合的網(wǎng)頁(yè)木馬檢測(cè)系統(tǒng)。本系統(tǒng)具有檢測(cè)率高,誤報(bào)率低和資源開(kāi)銷小等優(yōu)點(diǎn)。因此,本系統(tǒng)稍加改進(jìn)完善之后,可用來(lái)定期性主動(dòng)檢測(cè)掛馬網(wǎng)站,尤其是利用Exploit Kit生成的高混淆掛馬頁(yè)面;也可用來(lái)部署在企業(yè)網(wǎng)關(guān)處,檢測(cè)現(xiàn)今流行企業(yè)APT攻擊中的隱蔽網(wǎng)頁(yè)掛馬攻擊。
[1]Sophos.Security threat report 2013 [R/OL].[2013-01-13].http://www.sophos.com.
[2]Kotov V,Massacci F.Anatomy of exploit kits [M].Engineering Secure Software and Systems.Springer Berlin Heidelberg,2013:181-196.
[3]Nazario J.PhoneyC:A virtual client honeypot [C]//Proceedings of the 2nd USENIX Conference on Large-Scale Exploits and Emergent Threats:Botnets, Spyware, Worms,and More.USENIX Association,2009.
[4]Seifert C,Steenson R.Capture-h(huán)oneypot client(capture-h(huán)pc)[R/OL].[2008-8-14].https://projects.honeynet.org/capture-h(huán)pc.
[5]Ikinci A,Holz T,F(xiàn)reiling F C.Monkey-spider:Detecting malicious websites with low-interaction honeyclients [C]//Sicherheit,2008:407-421.
[6]Cova M,Kruegel C,Vigna G.Detection and analysis of driveby-download attacks and malicious JavaScript code [C]//Proceedings of the 19th International Conference on World Wide Web.ACM,2010:281-290.
[7]Canali D,Cova M,Vigna G,et al.Prophiler:A fast filter for the large-scale detection of malicious Web pages [C]//Proceedings of the 20th International Conference on World Wide Web.ACM,2011:197-206.
[8]Sophos.Inside a black hole:Part 2 [R/OL].[2012-12-12].http://www.sophos.com/en-us/why-sophos/our-people/technical-papers/inside-a-black-h(huán)ole-part-2.aspx.
[9]Provos N,Mavrommatis P,Rajab MA,et al.All your iframes point to us [C]//17th USENIX Security Symposium,2008:1-16.
[10]Curtsinger C,Livshits B,Zorn B G,et al.ZOZZLE:Fast and precise in-browser JavaScript malware detection [C]//USENIX Security Symposium,2011:33-48.
[11]Canali D,Cova M,Vigna G,et al.Prophiler:A fast filter for the large-scale detection of malicious Web pages [C]//Proceedings of the 20th International Conference on World Wide Web.ACM,2011:197-206.
[12]Invernizzi L,Comparetti P M,Benvenuti S,et al.EVILSEED:A guided approach to finding malicious Web pages[C]//IEEE Symposium on Security and Privacy.IEEE,2012:428-442.
[13]Choi J,Kim G,Kim T G,et al.An efficient filtering method for detecting malicous Web pages[M]//Information Security Applications.Springer Berlin Heidelberg,2012:241-253.
[14]Kapravelos A,Shoshitaishvili Y,Cova M,et al.Revolver:An automated approach to the detection of evasive Web-based malware [C]//USENIX Security Symposium, 2013:637-653.
[15]Qu B,Shu J,Huang Y,et al.Memory leak dynamic monitor based on hook technique [C]//International Conference on Computational Intelligence and Software Engineering.IEEE,2009:1-4.
[16]Jason Jones.Shellcode detection using python [R/OL].[2011-12-05].https://github.com/buffer/pylibemu.
[17]Kojm T,Cathey M,Cordes C.Clamav anti-virus [R/OL].[2008-04-14].http://www.clamav,net.
[18]Hispasec Sistemas S L.Virustotal malware intelligence service[R/OL].https://www.virustotal.com/,2013.