一種基于動(dòng)態(tài)內(nèi)容分析的網(wǎng)頁(yè)木馬實(shí)時(shí)檢測(cè)方法
【專利摘要】本發(fā)明公開了一種基于動(dòng)態(tài)內(nèi)容分析的網(wǎng)頁(yè)木馬實(shí)時(shí)檢測(cè)方法,首先組成樣本庫(kù),并將樣本庫(kù)分成訓(xùn)練集和測(cè)試集;然后用JavaScript動(dòng)態(tài)分析軟件對(duì)樣本庫(kù)的網(wǎng)頁(yè)中的JavaScript代碼進(jìn)行插樁,運(yùn)行插樁后網(wǎng)頁(yè),動(dòng)態(tài)追蹤字符串處理提取一系列行為特征,與此同時(shí),記錄“堆操作危險(xiǎn)指數(shù)”,以上特征組成特征向量,將所有特征向量生成樣本庫(kù)的特征集;選擇不同的分類算法,進(jìn)行分類模型訓(xùn)練,選擇分類結(jié)果最優(yōu)的模型作為檢測(cè)模型;最后運(yùn)行動(dòng)態(tài)分析軟件,對(duì)經(jīng)過(guò)代理服務(wù)器的網(wǎng)頁(yè)進(jìn)行插樁,訪問(wèn)已插樁的待測(cè)網(wǎng)頁(yè),動(dòng)態(tài)提取相關(guān)特征,使用檢測(cè)模型判斷是良性網(wǎng)頁(yè)還是包含網(wǎng)頁(yè)木馬的惡意網(wǎng)頁(yè)。相比靜態(tài)分析方式,本發(fā)明具有更高的檢測(cè)精準(zhǔn)率,可以有效對(duì)抗代碼混淆技術(shù)。
【專利說(shuō)明】
一種基于動(dòng)態(tài)內(nèi)容分析的網(wǎng)頁(yè)木馬實(shí)時(shí)檢測(cè)方法
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于計(jì)算機(jī)惡意軟件檢測(cè)或處理領(lǐng)域,具體涉及一種基于動(dòng)態(tài)內(nèi)容分析的網(wǎng)頁(yè)木馬檢測(cè)方法。
【背景技術(shù)】
[0002]Web應(yīng)用和服務(wù)已成為現(xiàn)代人日常生活中不可或缺的一部分。JavaScript是一門常被用于Web應(yīng)用開發(fā)的客戶端腳本編程語(yǔ)言,因?yàn)樗峁┑膭?dòng)態(tài)特性而在互聯(lián)網(wǎng)上被廣泛使用。與此同時(shí),JavaScript也為傳播惡意軟件提供了巨大的方便。惡意行為的實(shí)施者常常利用惡意JavaScript腳本對(duì)受害者進(jìn)行Drive-by Download攻擊,即網(wǎng)頁(yè)木馬(直譯為路過(guò)式下載)。這種攻擊方式使用戶在瀏覽特定網(wǎng)頁(yè)時(shí),系統(tǒng)會(huì)在用戶不知情的情況下下載和執(zhí)行惡意代碼,最終被盜取有價(jià)值的敏感信息,甚至成為僵尸網(wǎng)絡(luò)(Botnet)的一部分。
[0003]近年來(lái),對(duì)網(wǎng)頁(yè)木馬的檢測(cè)和防御已經(jīng)成為信息安全領(lǐng)域研究的主要課題之一?,F(xiàn)有的代表性方案有兩種,一種選擇在服務(wù)端進(jìn)行保護(hù)和在網(wǎng)站開發(fā)過(guò)程中進(jìn)行漏洞檢測(cè)與修補(bǔ),避免網(wǎng)站遭受惡意修改或被第三方廣告和插件嵌入惡意代碼;另一種是對(duì)惡意代碼的檢測(cè)方案。在檢測(cè)技術(shù)上主要分為三類:一是基于網(wǎng)站URL的分析;二是檢測(cè)網(wǎng)頁(yè)內(nèi)容;三是分析瀏覽器在瀏覽頁(yè)面時(shí)的運(yùn)行狀態(tài)。針對(duì)URL的檢測(cè)技術(shù)基于對(duì)網(wǎng)站域名、鏈接結(jié)構(gòu)、DNS信息等URL相關(guān)的信息的分析。與此相對(duì)的,網(wǎng)頁(yè)內(nèi)容分析和瀏覽器運(yùn)行狀態(tài)分析試圖檢測(cè)目標(biāo)網(wǎng)頁(yè)是否執(zhí)行Drive-by Download攻擊。網(wǎng)頁(yè)內(nèi)容分析被分類為靜態(tài)分析、動(dòng)態(tài)分析和混合分析。
[0004]由于JavaScript語(yǔ)言的一些高危行為(如執(zhí)行本地文件)被瀏覽器和操作系統(tǒng)的安全性機(jī)制限制,惡意網(wǎng)頁(yè)制作者會(huì)選擇利用針對(duì)瀏覽器及其插件的漏洞來(lái)繞過(guò)這一機(jī)制。靜態(tài)分析方法具有速度快,資源占用低的特點(diǎn)。但混淆技術(shù)常常被用于隱藏惡意代碼的真實(shí)意圖,使靜態(tài)分析容易產(chǎn)生漏報(bào)。與此同時(shí),混淆技術(shù)并不僅僅被用于惡意代碼,也被用于良性代碼以達(dá)到保護(hù)知識(shí)產(chǎn)權(quán)的目的。檢測(cè)代碼是否被混淆并不能決定該代碼是否有惡意意圖。動(dòng)態(tài)分析可以收集代碼運(yùn)行時(shí)信息有效的對(duì)抗混淆技術(shù),檢測(cè)代碼潛在的惡意行為。動(dòng)靜態(tài)混合分析的方法試圖對(duì)前兩者進(jìn)行權(quán)衡。
【發(fā)明內(nèi)容】
[0005]本發(fā)明要解決的技術(shù)問(wèn)題是提供一種能有效克服代碼混淆技術(shù)影響的網(wǎng)頁(yè)木馬檢測(cè)技術(shù)。
[0006]為解決上述問(wèn)題,本發(fā)明提出一種基于動(dòng)態(tài)內(nèi)容分析的網(wǎng)頁(yè)木馬實(shí)時(shí)檢測(cè)方法,包含以下步驟:
[0007]步驟I)收集一定量的惡意網(wǎng)頁(yè)集M和和良性網(wǎng)頁(yè)集B,分別組成樣本庫(kù),并將樣本庫(kù)分成訓(xùn)練集和測(cè)試集;
[0008]步驟2)用JavaScript動(dòng)態(tài)分析軟件對(duì)樣本庫(kù)的網(wǎng)頁(yè)中的JavaScript代碼進(jìn)行插粧,運(yùn)行插粧后網(wǎng)頁(yè),利用動(dòng)態(tài)分析軟件的回調(diào)分析函數(shù),給所有創(chuàng)建的字符串加上污點(diǎn)記錄,并記錄JavaScript代碼中對(duì)字符串的操作,以及每次操作的字符串的源類型,當(dāng)一個(gè)字符串流向指定的終點(diǎn)時(shí),將該字符串經(jīng)歷過(guò)的每次字符串操作記錄和對(duì)應(yīng)的源類型作為一個(gè)特征,與此同時(shí),記錄“堆操作危險(xiǎn)指數(shù)”,以上特征組成特征向量,將從樣本庫(kù)中網(wǎng)頁(yè)提取的所有特征向量生成樣本庫(kù)的特征集;
[0009]步驟3)選擇不同的分類算法,使用步驟2生成的特征集進(jìn)行分類模型訓(xùn)練,選擇分類結(jié)果最優(yōu)的模型作為檢測(cè)模型;
[0010]步驟4)建立代理服務(wù)器,運(yùn)行動(dòng)態(tài)分析軟件,對(duì)經(jīng)過(guò)代理服務(wù)器的網(wǎng)頁(yè)進(jìn)行插粧,訪問(wèn)已插粧的待測(cè)網(wǎng)頁(yè),動(dòng)態(tài)提取步驟2所述的相關(guān)特征,使用步驟3獲得的檢測(cè)模型判斷是良性網(wǎng)頁(yè)還是包含網(wǎng)頁(yè)木馬的惡意網(wǎng)頁(yè)。
[0011 ]進(jìn)一步,步驟2中的所述相關(guān)特征包括:
[0012]A,是否發(fā)生iframe元素動(dòng)態(tài)插入或src屬性修改;
[0013]B,是否動(dòng)態(tài)插入Script標(biāo)簽;
[0014]C,是否有動(dòng)態(tài)生成類函數(shù)執(zhí)行;
[0015]D,是否有實(shí)時(shí)執(zhí)行類函數(shù)執(zhí)行;
[0016]E,是否有方括號(hào)形式對(duì)象成員引用;
[0017]F,堆操作危險(xiǎn)指數(shù)。
[0018]又進(jìn)一步,上述堆操作危險(xiǎn)指數(shù)的計(jì)算方法為:動(dòng)態(tài)檢測(cè)長(zhǎng)度超過(guò)1024的字符串,一旦它或由拼接、截取或修改它而得到的字符串被寫入某一個(gè)對(duì)象的屬性中,則計(jì)算N/1024并累加到堆操作危險(xiǎn)指數(shù),N為寫入的字符串長(zhǎng)度。
[0019]進(jìn)一步,步驟I中的所述良性網(wǎng)頁(yè)集B是從專門發(fā)布網(wǎng)站世界排名的網(wǎng)站中選取排名靠前的一定數(shù)量的網(wǎng)站首頁(yè)取得。
[°02°]進(jìn)一步,步驟2中的所述動(dòng)態(tài)分析軟件為Jalangi2。
[0021]相比現(xiàn)有技術(shù),本發(fā)明的有益效果在于:
[0022](I)將JavaScript字符串操作記錄作為特征,有效抵抗混淆技術(shù)。
[0023](2)使用Jalangi2插粧工具,動(dòng)態(tài)分析的實(shí)現(xiàn)不依賴于瀏覽器與操作系統(tǒng)。
[0024]本發(fā)明對(duì)通過(guò)基于動(dòng)態(tài)的網(wǎng)頁(yè)內(nèi)容分析的方法檢測(cè)網(wǎng)頁(yè)木馬,能夠有效克服JavaScript代碼混淆技術(shù)對(duì)靜態(tài)分析類方法檢測(cè)率的負(fù)面影響。
【附圖說(shuō)明】
[0025]圖1為利用JaI ang i 2進(jìn)行插粧的流程圖。
[0026]圖2是分類模型訓(xùn)練流程圖。
[0027]圖3為本發(fā)明網(wǎng)頁(yè)木馬檢測(cè)的流程圖。
【具體實(shí)施方式】
[0028]現(xiàn)結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施作進(jìn)一步詳細(xì)的說(shuō)明。
[0029]本發(fā)明提供一種基于動(dòng)態(tài)內(nèi)容分析的進(jìn)行網(wǎng)頁(yè)木馬實(shí)時(shí)檢測(cè)的實(shí)施例。本實(shí)施例是針對(duì)使用JavaScript腳本實(shí)施的Drive-by Download攻擊,即網(wǎng)頁(yè)木馬攻擊,進(jìn)行檢測(cè)的方法。使用JavaScript動(dòng)態(tài)分析軟件,優(yōu)選為Jalangi2,對(duì)網(wǎng)頁(yè)中的JavaScript代碼插粧,在代碼運(yùn)行過(guò)程中追蹤字符串操作并提取一系列相關(guān)行為特征,利用預(yù)先訓(xùn)練好的分類模型進(jìn)行分類,判斷該網(wǎng)頁(yè)是否執(zhí)行網(wǎng)頁(yè)木馬攻擊。
[0030]步驟I)收集一定量的惡意網(wǎng)頁(yè)集M和和良性網(wǎng)頁(yè)集B,分別組成樣本庫(kù)。
[0031]步驟1.1)從Alexa上獲取排名靠前的一定數(shù)量的網(wǎng)站首頁(yè),組成良性網(wǎng)頁(yè)集B。
[0032]步驟1.2)從VirusTotal上獲取一定數(shù)量的網(wǎng)頁(yè)木馬樣本。
[0033]步驟1.3)將樣本庫(kù)分成訓(xùn)練集和測(cè)試集。
[0034]步驟2)對(duì)樣本庫(kù)中的網(wǎng)頁(yè)包含的JavaScript代碼進(jìn)行特征提取。
[0035]步驟2.1)Jalangi2是一個(gè)JavaScript分析框架,通過(guò)編寫分析腳本并插粧被分析代碼實(shí)現(xiàn)動(dòng)態(tài)分析。如圖1所示,用Jalangi2對(duì)樣本庫(kù)的網(wǎng)頁(yè)中的JavaScript代碼進(jìn)行插粧,包括訓(xùn)練樣本集和測(cè)試樣本集的網(wǎng)頁(yè)。
[0036]步驟2.2)運(yùn)行插粧后網(wǎng)頁(yè),利用Jalangi2的回調(diào)分析函數(shù),給所有字符串加上污點(diǎn)記錄,并記錄JavaScript代碼中對(duì)字符串的操作,以及每次操作的字符串的源(Source)類型。當(dāng)一個(gè)字符串流向指定的終點(diǎn)(Sink)時(shí),將該字符串經(jīng)歷過(guò)的每次字符串操作記錄和對(duì)應(yīng)的源類型作為一個(gè)特征。
[0037]本方法將源分為四類:
[0038]1.JavaScript字符串字面量,即直接寫入JavaScript源代碼的字符串固定值;
[0039]2.DOM對(duì)象的內(nèi)容和屬性;
[0040]3.從其它類型轉(zhuǎn)換得到的字符串;
[0041]4.來(lái)自于網(wǎng)頁(yè)代碼之外的字符串,包括AJAX請(qǐng)求返回的數(shù)據(jù)和URL獲取得到的字符串。
[0042]列出指定的終點(diǎn):
[0043]I ?實(shí)時(shí)執(zhí)行類函數(shù),包括eval(),setTimeout(),setlnterval();
[0044]2.動(dòng)態(tài)生成類函數(shù),包括 document.write(), document, write In O ;
[0045]3.Script元素和Iframe元素對(duì)象;
[0046]4.方括號(hào)形式對(duì)象成員引用,形如a[b];
[0047]5.JavaScript 頁(yè)面跳轉(zhuǎn)途徑,包括 window.locat1n.href ,window.navigate,window.1oct1n.replace,self.locat1n,top.locat1n。
[0048]記錄的字符串操作包含原生字符串操作函數(shù)以及+運(yùn)算符,字符串操作函數(shù)的定義:傳入?yún)?shù)為字符串類型,返回也為字符串類型的函數(shù)或字符串所有的返回字符串類型的方法。一個(gè)字符串操作特征的形式為[字符串操作sources字符串源類型]。由于一個(gè)被操作的字符串可能由多個(gè)源的字符串拼接而成,所以字符串源類型可能多于一種。上述特征的值為該類字符串操作的次數(shù)。
[0049]同時(shí)記錄以下幾個(gè)特征:
[°°50] 1.是否發(fā)生iframe元素動(dòng)態(tài)插入或src屬性修改;
[0051 ] 2.是否動(dòng)態(tài)插入Script標(biāo)簽;
[0052]3.是否有動(dòng)態(tài)生成類函數(shù)執(zhí)行;
[0053]4.是否有實(shí)時(shí)執(zhí)行類函數(shù)執(zhí)行;
[0054]5.是否有方括號(hào)形式對(duì)象成員引用。
[0055]除此之外,網(wǎng)頁(yè)木馬攻擊為了提高漏洞利用成功后Shellcode的命中率,會(huì)與大量滑板指令(Sled)序列拼接后寫入堆空間。滑板指令是某種機(jī)器指令,以幫助轉(zhuǎn)移控制流最終到Shellcode本身上。本方法提出一個(gè)特征,稱為“堆操作危險(xiǎn)指數(shù)”,該指數(shù)計(jì)算方法為:動(dòng)態(tài)檢測(cè)長(zhǎng)度超過(guò)1024的字符串,一旦它或由拼接、截取或修改它而得到的字符串被寫入某一個(gè)對(duì)象的屬性中,我們計(jì)算N/1024并累加到堆操作危險(xiǎn)指數(shù),N為寫入的字符串長(zhǎng)度。
[0056]以上特征組成特征向量。
[0057]步驟2.3)將從樣本庫(kù)中網(wǎng)頁(yè)提取的所有特征向量組成樣本庫(kù)的特征集。
[0058]步驟3)使用上述獲得的樣本特征集訓(xùn)練并選擇分類模型。
[0059]步驟3.1)根據(jù)步驟1.3將樣本庫(kù)的特征集分為訓(xùn)練用途和測(cè)試用途。
[0060]步驟3.2)如圖2所示,利用Weka3工具,選擇不同的分類算法,使用訓(xùn)練樣本特征集進(jìn)行分類模型訓(xùn)練。
[0061]步驟3.3)用上述分類模型逐一對(duì)測(cè)試樣本特征集進(jìn)行分類,選擇分類結(jié)果最優(yōu)的模型作為檢測(cè)模型。
[0062]步驟4)檢測(cè)待測(cè)網(wǎng)頁(yè)是否執(zhí)行網(wǎng)頁(yè)木馬攻擊。
[0063]步驟4.1)如圖3所示,建立代理服務(wù)器,以在線實(shí)時(shí)插粧模式運(yùn)行Jalangi2,對(duì)經(jīng)過(guò)代理服務(wù)器的所有網(wǎng)頁(yè)進(jìn)行插粧。
[0064]步驟4.2)訪問(wèn)已插粧的待測(cè)網(wǎng)頁(yè),動(dòng)態(tài)提取特征,使用步驟3獲得的檢測(cè)模型判斷是良性網(wǎng)頁(yè)還是包含網(wǎng)頁(yè)木馬的惡意網(wǎng)頁(yè)。
[0065]以上所述僅為本發(fā)明的一個(gè)具體實(shí)施例,并不用以限制本發(fā)明,本實(shí)施例中所用數(shù)據(jù)集和攻擊模式僅限于本實(shí)施例,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種基于動(dòng)態(tài)內(nèi)容分析的網(wǎng)頁(yè)木馬實(shí)時(shí)檢測(cè)方法,其特征在于包含以下步驟: 步驟I)收集一定量的惡意網(wǎng)頁(yè)集M和和良性網(wǎng)頁(yè)集B,分別組成樣本庫(kù),并將樣本庫(kù)分成訓(xùn)練集和測(cè)試集; 步驟2)用JavaScript動(dòng)態(tài)分析軟件對(duì)樣本庫(kù)的網(wǎng)頁(yè)中的JavaScript代碼進(jìn)行插粧,運(yùn)行插粧后網(wǎng)頁(yè),利用動(dòng)態(tài)分析軟件的回調(diào)分析函數(shù),給所有創(chuàng)建的字符串加上污點(diǎn)記錄,并記錄JavaScript代碼中對(duì)字符串的操作,以及每次操作的字符串的源類型,當(dāng)一個(gè)字符串流向指定的終點(diǎn)時(shí),將該字符串經(jīng)歷過(guò)的每次字符串操作記錄和對(duì)應(yīng)的源類型作為一個(gè)特征,與此同時(shí),記錄“堆操作危險(xiǎn)指數(shù)”,以上特征組成特征向量,將從樣本庫(kù)中網(wǎng)頁(yè)提取的所有特征向量生成樣本庫(kù)的特征集; 步驟3)選擇不同的分類算法,使用步驟2生成的特征集進(jìn)行分類模型訓(xùn)練,選擇分類結(jié)果最優(yōu)的模型作為檢測(cè)模型; 步驟4)建立代理服務(wù)器,運(yùn)行動(dòng)態(tài)分析軟件,對(duì)經(jīng)過(guò)代理服務(wù)器的網(wǎng)頁(yè)進(jìn)行插粧,訪問(wèn)已插粧的待測(cè)網(wǎng)頁(yè),動(dòng)態(tài)提取步驟2所述的相關(guān)特征,使用步驟3獲得的檢測(cè)模型判斷是良性網(wǎng)頁(yè)還是包含網(wǎng)頁(yè)木馬的惡意網(wǎng)頁(yè)。2.根據(jù)權(quán)利要求1所述的一種基于動(dòng)態(tài)內(nèi)容分析的網(wǎng)頁(yè)木馬實(shí)時(shí)檢測(cè)方法,其特征在于步驟2中的所述相關(guān)特征包括: A,是否發(fā)生iframe元素動(dòng)態(tài)插入或src屬性修改; B,是否動(dòng)態(tài)插入Script標(biāo)簽; C,是否有動(dòng)態(tài)生成類函數(shù)執(zhí)行; D,是否有實(shí)時(shí)執(zhí)行類函數(shù)執(zhí)行; E,是否有方括號(hào)形式對(duì)象成員引用; F,堆操作危險(xiǎn)指數(shù)。3.根據(jù)權(quán)利要求2所述的一種基于動(dòng)態(tài)內(nèi)容分析的網(wǎng)頁(yè)木馬實(shí)時(shí)檢測(cè)方法,其特征在于所述堆操作危險(xiǎn)指數(shù)的計(jì)算方法為:動(dòng)態(tài)檢測(cè)長(zhǎng)度超過(guò)1024的字符串,一旦它或由拼接、截取或修改它而得到的字符串被寫入某一個(gè)對(duì)象的屬性中,則計(jì)算N/1024并累加到堆操作危險(xiǎn)指數(shù),N為寫入的字符串長(zhǎng)度。4.根據(jù)權(quán)利要求1所述的一種基于動(dòng)態(tài)內(nèi)容分析的網(wǎng)頁(yè)木馬實(shí)時(shí)檢測(cè)方法,其特征在于步驟I中的所述良性網(wǎng)頁(yè)集B是從專門發(fā)布網(wǎng)站世界排名的網(wǎng)站中選取排名靠前的一定數(shù)量的網(wǎng)站首頁(yè)取得。5.根據(jù)權(quán)利要求1所述的一種基于動(dòng)態(tài)內(nèi)容分析的網(wǎng)頁(yè)木馬實(shí)時(shí)檢測(cè)方法,其特征在于步驟2中的所述動(dòng)態(tài)分析軟件為Jalangi2。
【文檔編號(hào)】G06F21/56GK106022132SQ201610372777
【公開日】2016年10月12日
【申請(qǐng)日】2016年5月30日
【發(fā)明人】張衛(wèi)豐, 劉蕊成, 張迎周, 周國(guó)強(qiáng), 王子元
【申請(qǐng)人】南京郵電大學(xué)