一種面向web木馬檢測(cè)的網(wǎng)頁(yè)特征提取方法
【專利摘要】本發(fā)明提供的是一種面向WEB木馬檢測(cè)的網(wǎng)頁(yè)特征提取方法。包含數(shù)據(jù)獲取、頁(yè)面解析、腳本解析和特征提取四個(gè)階段。數(shù)據(jù)獲取階段包括:數(shù)據(jù)包在網(wǎng)關(guān)處的獲取以及記錄存取該數(shù)據(jù)包方法。頁(yè)面解析階段:利用正則匹配方式獲取網(wǎng)頁(yè)標(biāo)簽以及鏈接。腳本解析階段:對(duì)網(wǎng)頁(yè)中的腳本利用腳本解析引擎以及對(duì)其的改進(jìn)獲取腳本中相應(yīng)的鏈接及函數(shù)關(guān)系。特征提取階段:統(tǒng)計(jì)頁(yè)面標(biāo)簽特征,并計(jì)算重定向鏈中存在的特征。本發(fā)明的方法提取有效的標(biāo)簽元素信息,獲取重定向鏈接特征以及相應(yīng)的頁(yè)面特征,省略不必要的元素審查。具有較高的建模效率。該模型在提取過程中采用正則匹配以及腳本引擎方式,具有較高的提取速度??梢栽跒g覽器以及網(wǎng)關(guān)處都能發(fā)揮其重要作用。
【專利說明】
一種面向WEB木馬檢測(cè)的網(wǎng)頁(yè)特征提取方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及的是一種木馬檢測(cè)特征提取方法,具體地說是一種面向WEB木馬檢測(cè)的網(wǎng)頁(yè)特征提取方法。
【背景技術(shù)】
[0002]近年來,互聯(lián)網(wǎng)發(fā)展飛速,給人們獲得有效實(shí)時(shí)信息和資源提供了極大的幫助,滿足了大眾足不出戶就可以縱觀世界的愿望,逐漸成為人們生活必備的部分。網(wǎng)絡(luò)技術(shù)的先進(jìn)性已經(jīng)成為我們生活的主導(dǎo)因素,我們?nèi)粘5母鞣N活動(dòng)都已經(jīng)依賴于互聯(lián)網(wǎng),例如個(gè)人娛樂活動(dòng),醫(yī)療活動(dòng),銀行金融活動(dòng),以及其他生活的方方面面。為保持這種先進(jìn)性,大量的功能性措施已經(jīng)加入到現(xiàn)代化瀏覽器中,然而這些先進(jìn)性也帶來了大量缺陷漏洞。這些漏洞缺陷會(huì)逐漸成為隱患,被更多圖謀不軌的人所利用。惡意程序主要包括計(jì)算機(jī)病毒、蠕蟲、木馬、僵尸程序等,近年來,不同類別的惡意程序之間的界限逐漸模糊,木馬和僵尸程序成為黑客最常利用的攻擊手段。WEB網(wǎng)頁(yè)木馬是惡意破壞更改網(wǎng)頁(yè)內(nèi)容或網(wǎng)頁(yè)中嵌入惡意代碼鏈接,使網(wǎng)站無(wú)法正常工作或者致使用戶計(jì)算機(jī)在訪問該頁(yè)面時(shí)被植入惡意代碼的非正常網(wǎng)頁(yè)內(nèi)容。WEB木馬攻擊發(fā)生在訪問網(wǎng)頁(yè)的時(shí)候,用戶可能被重定向到一個(gè)惡意網(wǎng)頁(yè),進(jìn)而導(dǎo)致下載惡意軟件到用戶計(jì)算機(jī)中且不被發(fā)現(xiàn)。
[0003]當(dāng)前的成型網(wǎng)頁(yè)木馬檢測(cè)技術(shù)大致分為兩類,第一類就是利用技術(shù)靜態(tài)分析網(wǎng)頁(yè)以及內(nèi)嵌代碼(例如JavaScript ,flash),它們的特征具有典型的惡意性。例如網(wǎng)頁(yè)的URLS特征,內(nèi)容特征以及其他特征,或者是開發(fā)能利用的惡意腳本片段。第二類是利用動(dòng)態(tài)技術(shù),這些方法大都依賴于感知化的瀏覽器,常提到的有客戶端蜜罐,監(jiān)控各種行為,其中監(jiān)控主機(jī)注冊(cè)行為特征是一種典型的方法。
[0004]WEB木馬的傳播主要依賴于網(wǎng)頁(yè)中的惡意代碼。WEB木馬為了達(dá)到其隱蔽的目的,利用各種偽裝技術(shù)逃避檢測(cè)。但是它在頁(yè)面代碼中表現(xiàn)的特征也是與正常的網(wǎng)頁(yè)是不同的,因此分析網(wǎng)頁(yè)結(jié)構(gòu)也是檢測(cè)木馬的一個(gè)重要的步驟。伴隨著網(wǎng)絡(luò)的發(fā)展,互聯(lián)網(wǎng)在軟件硬件方面的進(jìn)步,用戶獲取信息的速率不斷在提高,WEB木馬檢測(cè)關(guān)注的不僅僅是其準(zhǔn)確性,準(zhǔn)確無(wú)誤的發(fā)現(xiàn)木馬自然是首要的,但是檢測(cè)效率也逐漸成為用戶需求中的一部分,因此在進(jìn)行木馬檢測(cè)過程中,我們要把檢測(cè)速度作為考慮的重點(diǎn)。利用機(jī)器學(xué)習(xí)進(jìn)行WEB木馬檢測(cè),WEB木馬特征的提取方式,是決定檢測(cè)速度的一個(gè)關(guān)鍵點(diǎn)。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于提供一種建模效率高,提取速度快的面向WEB木馬檢測(cè)的網(wǎng)頁(yè)特征提取方法。
[0006]本發(fā)明的目的是這樣實(shí)現(xiàn)的:
[0007]步驟1:數(shù)據(jù)獲取;
[0008]步驟11:當(dāng)用一個(gè)客戶端用戶通過瀏覽器請(qǐng)求訪問網(wǎng)頁(yè),系統(tǒng)捕獲數(shù)據(jù)包后,首先判斷該請(qǐng)求的客戶端IP是否在請(qǐng)求鏈中;
[0009]步驟12:如果請(qǐng)求的客戶端IP沒有在請(qǐng)求鏈中,則將該請(qǐng)求的客戶端IP加入到客戶端請(qǐng)求鏈中;利用四元組hash記錄下用戶的該條訪問的URL;然后將數(shù)據(jù)包轉(zhuǎn)發(fā)給WEB月艮務(wù)器;
[0010]步驟13:如果該請(qǐng)求的客戶端IP已經(jīng)存在則提取數(shù)據(jù)包中的請(qǐng)求URL,判斷該URL是否是從網(wǎng)友中提取的URL;如果是的話則利用該請(qǐng)求的四元組hash計(jì)算保持其URL,然后再轉(zhuǎn)發(fā)數(shù)據(jù)包給WEB服務(wù)器;
[0011]步驟14:WEB服務(wù)器返回響應(yīng)時(shí)數(shù)據(jù)包處理;
[0012]步驟2:頁(yè)面解析;
[0013]步驟21:利用正則匹配的方式匹配網(wǎng)頁(yè)中的<meta>標(biāo)簽下的自動(dòng)跳轉(zhuǎn)的URL;
[OOM] 步驟22:利用正則表達(dá)式提取網(wǎng)頁(yè)中的script腳本,以及script腳本中src的URL鏈接;
[0015]步驟3:腳本解析;
[0016]步驟4:提取特征。
[0017]本發(fā)明還可以包括:
[00? 8] 1、所述腳本解析具體包括:
[0019]步驟31:將存在混淆的代碼利用腳本引擎解混淆,然后提取腳本中存在的重定向鏈接;
[0020]步驟32:同時(shí)統(tǒng)計(jì)腳本中存在的特征函數(shù)的數(shù)量。
[0021]2、所述提取特征具體包括:
[0022]步驟41:重定向鏈特征提取過程;
[0023]步驟42:頁(yè)面統(tǒng)計(jì)特征提取。
[0024]3、所述WEB服務(wù)器返回響應(yīng)時(shí)數(shù)據(jù)包處理具體包括:
[0025]步驟141:系統(tǒng)首先處理該數(shù)據(jù)包,讀取數(shù)據(jù)包中的響應(yīng)碼如果是301 302的情況,則繼續(xù)尋找響應(yīng)首部的locat1n部分,提取重定向URL,并根據(jù)響應(yīng)的四元組找到其上一層URL,鏈接到重定向鏈中;
[0026]步驟142:如果響應(yīng)碼是正常的200,則首先判斷是否是HTML頁(yè)面,或者.js頁(yè)面,然后分別利用頁(yè)面解析模塊和腳本解析模塊處理這兩種頁(yè)面,直到所有的重定向以及頁(yè)面統(tǒng)計(jì)提取完畢。
[0027]4、步驟31具體包括:
[0028]步驟311:利用SpiderMonkey提供的接口函數(shù)自定義DOM對(duì)象,定義JSProperty和JSFunc 1n的兩個(gè)數(shù)組;
[0029]步驟312:調(diào)用SpiderMonkey里面的接口函數(shù)JS_New0bject來創(chuàng)建object對(duì)象,并將整個(gè)創(chuàng)建的對(duì)象添加到SpiderMonkey的全局對(duì)象中;
[0030]步驟313:然后將方法和屬性添加到運(yùn)行過程中的上下文環(huán)境中,當(dāng)解析腳本的時(shí)候遇到DOM對(duì)象中某個(gè)對(duì)象時(shí),從全局對(duì)象中查找相應(yīng)的對(duì)象名,然后根據(jù)對(duì)象名在其相應(yīng)的上下文結(jié)構(gòu)體中查找對(duì)應(yīng)的屬性和方法。
[0031]5、所述步驟41具體包括:
[0032]步驟411:首先為用戶請(qǐng)求頁(yè)面建立url存儲(chǔ)結(jié)構(gòu),用戶首次請(qǐng)求的URL作為重定向鏈樹形結(jié)構(gòu)的根節(jié)點(diǎn);
[0033]步驟412:解析HTML頁(yè)面,提取頁(yè)面中<meta>〈script>標(biāo)簽下的url鏈接,加入樹形結(jié)構(gòu)中,并作為根節(jié)點(diǎn)的孩子節(jié)點(diǎn);
[0034]步驟413:監(jiān)控請(qǐng)求數(shù)據(jù)包如果請(qǐng)求URL是樹形結(jié)構(gòu)中的URL,則記錄該請(qǐng)求的四元組即 sip、sport、dip、dport ;
[0035]步驟414:監(jiān)控響應(yīng)數(shù)據(jù)包,根據(jù)四元組找到相應(yīng)的請(qǐng)求的URL,分析數(shù)據(jù)包是.JS頁(yè)面或者h(yuǎn)tml頁(yè)面中的重定向URL,將這些URL作為該頁(yè)面請(qǐng)求URL孩子節(jié)點(diǎn);
[0036]步驟415:判斷頁(yè)面加載是否結(jié)束,從重定向鏈樹形結(jié)構(gòu)中提取特征;
[O O3 7 ] 步驟416:改進(jìn)樹的深度優(yōu)先遍歷算法,遍歷重定向鏈樹形結(jié)構(gòu),記錄每一條分支鏈的長(zhǎng)度,找到最大長(zhǎng)度和最小長(zhǎng)度;
[0038]步驟417:遍歷時(shí)候,判斷每一條分支重定向鏈?zhǔn)欠翊嬖谧匝h(huán),用布爾值作為區(qū)分;
[0039]步驟418:計(jì)算每一條分支重定向鏈中URL的相似度;
[0040]步驟419:利用字符串匹配,判斷每一條鏈中的URL,是否包含相同的域名,如果有則標(biāo)示為I,沒有標(biāo)示為O ;
[0041 ]步驟4110:正則表達(dá)式判斷每一條分支鏈的URL是否直接包含IP。
[0042]本發(fā)明是針對(duì)WEB木馬檢測(cè)過程中網(wǎng)頁(yè)特征提取。WEB木馬檢測(cè)前期非常重要的一部分就是要對(duì)可能掩藏在網(wǎng)頁(yè)中的木馬特征進(jìn)行提取。本發(fā)明提出一種面向WEB木馬檢測(cè)網(wǎng)頁(yè)特征提取方法。其中包括木馬在傳播過程中存在的特征,包括重定向鏈接表現(xiàn)出來的特征,以及網(wǎng)頁(yè)本身所表現(xiàn)出的統(tǒng)計(jì)特征,標(biāo)簽個(gè)數(shù),以及頁(yè)面混淆程度特征。而這些特征提取,關(guān)注的重點(diǎn)是提取時(shí)間效率,即要盡可能快速定位需要的特征,并有效獲得。時(shí)間效率的提升對(duì)整個(gè)檢測(cè)系統(tǒng)時(shí)間性能具有重要影響。
[0043]本發(fā)明的方法提取有效的標(biāo)簽元素信息,獲取重定向鏈接特征以及相應(yīng)的頁(yè)面特征,省略不必要的元素審查。具有較高的建模效率。該模型在提取過程中采用正則匹配以及腳本引擎方式,具有較高的提取速度??梢浦残裕摲椒梢栽跒g覽器以及網(wǎng)關(guān)處都能發(fā)揮其重要作用。
【附圖說明】
[0044]圖1為面向WEB木馬檢測(cè)的網(wǎng)頁(yè)特征提取方法系統(tǒng)圖。
[0045]圖2數(shù)據(jù)獲取流程圖。
[0046]圖3重定向鏈特征提取算法流程圖。
[0047]圖4重定向鏈結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0048]本發(fā)明的面向WEB木馬檢測(cè)的網(wǎng)頁(yè)特征提取方法,由數(shù)據(jù)獲取模塊、頁(yè)面解析模塊、腳本解析模塊和提取特征模塊完成。
[0049]步驟I,數(shù)據(jù)獲取,是在獲取頁(yè)面解析的數(shù)據(jù)包,其獲取流程如圖1所示,步驟主要包括以下幾步:
[0050]步驟11:當(dāng)用一個(gè)客戶端用戶通過瀏覽器請(qǐng)求訪問網(wǎng)頁(yè),系統(tǒng)捕獲數(shù)據(jù)包后,首先判斷該請(qǐng)求的客戶端IP是否在請(qǐng)求鏈中,[0051 ] 步驟12:如果沒有的話,則將該請(qǐng)求IP加入到客戶端請(qǐng)求鏈中,
[0052 ] 步驟13:利用四元組hash記錄下用戶的該條訪問的URL,
[0053]步驟14:然后將數(shù)據(jù)包轉(zhuǎn)發(fā)給WEB服務(wù)器,
[0054]步驟15:如果該請(qǐng)求已經(jīng)存在則提取數(shù)據(jù)包中的請(qǐng)求URL,判斷該URL是否是從網(wǎng)友中提取的URL,
[0055]步驟16:如果是的話則利用該請(qǐng)求的四元組hash計(jì)算保持其URL,然后再轉(zhuǎn)發(fā)數(shù)據(jù)包給務(wù)器,
[0056]步驟17:WEB服務(wù)器返回響應(yīng)時(shí)數(shù)據(jù)包處理,該步驟又包含幾個(gè)子步驟。
[0057]步驟171:系統(tǒng)首先處理該數(shù)據(jù)包,讀取數(shù)據(jù)包中的響應(yīng)碼如果是301 302的情況,則繼續(xù)尋找響應(yīng)首部的locat1n部分,提取重定向URL,并根據(jù)響應(yīng)的四元組找到其上一層URL,鏈接到重定向鏈中。
[0058]步驟172:如果響應(yīng)碼是正常的200,則首先判斷是否是HTML頁(yè)面,或者.js頁(yè)面,然后分別利用頁(yè)面解析模塊和腳本解析模塊處理這兩種頁(yè)面,直到所有的重定向以及頁(yè)面統(tǒng)計(jì)提取完畢。
[0059]步驟173:最后由特征提取模塊完成后面的工作。
[0060]步驟2,頁(yè)面解析,包括以下步驟:
[0061]步驟21:利用正則匹配的方式匹配網(wǎng)頁(yè)中的<meta>標(biāo)簽下的自動(dòng)跳轉(zhuǎn)的URL。
[0062]步驟22:利用正則表達(dá)式提取網(wǎng)頁(yè)中的script腳本,以及script腳本中src的URL鏈接。
[0063]步驟3,腳本解析,包括但是不限于以下方法:
[0064]步驟31:將存在混淆的代碼利用腳本引擎解混淆,然后提取腳本中存在的重定向鏈接。該步驟包含但不限于以下方法:
[0065]步驟311:利用SpiderMonkey提供的接口函數(shù)自定義DOM對(duì)象。在自定義對(duì)象中,需要我們封裝解析過程中需要的方法和屬性,首先定義JSProperty和JSFunc1n的兩個(gè)數(shù)組。步驟312:然后調(diào)用SpiderMonkey里面的接口函數(shù)JS_NewObject來創(chuàng)建object對(duì)象,并將整個(gè)創(chuàng)建的對(duì)象添加到SpiderMonkey的全局對(duì)象中。
[0066]步驟313:然后將方法和屬性添加到運(yùn)行過程中的上下文環(huán)境中。當(dāng)解析腳本的時(shí)候遇到DOM對(duì)象中某個(gè)對(duì)象時(shí),可以從全局對(duì)象中查找相應(yīng)的對(duì)象名,然后根據(jù)對(duì)象名在其相應(yīng)的上下文結(jié)構(gòu)體中查找對(duì)應(yīng)的屬性和方法。
[0067]步驟32:同時(shí)統(tǒng)計(jì)腳本中存在某些特征函數(shù)的數(shù)量。
[0068]步驟4,特征提取,包括但是不限于以下方法:
[0069]步驟41:重定向鏈特征提取過程,其提取算法流程如附圖2所示,主要包含以下步驟
[0070]步驟411:首先算法為用戶請(qǐng)求頁(yè)面建立urI存儲(chǔ)結(jié)構(gòu)(hash鏈表+樹形結(jié)構(gòu))。用戶首次請(qǐng)求的URL作為重定向鏈樹形結(jié)構(gòu)的根節(jié)點(diǎn)。
[0071 ] 步驟412:解析HTML頁(yè)面,提取頁(yè)面中〈metaXscript〉標(biāo)簽下的url鏈接,加入樹形結(jié)構(gòu)中,并作為根節(jié)點(diǎn)的孩子節(jié)點(diǎn)。
[0072]步驟413:監(jiān)控請(qǐng)求數(shù)據(jù)包如果請(qǐng)求URL是樹形結(jié)構(gòu)中的URL,則記錄該請(qǐng)求的四元組(sip,sport,dip,dport)。
[0073]步驟414:監(jiān)控響應(yīng)數(shù)據(jù)包,根據(jù)四元組(sip,sport,dip,dport)找到相應(yīng)的請(qǐng)求的URL,分析數(shù)據(jù)包可能是.JS頁(yè)面或者h(yuǎn)tml頁(yè)面中的重定向URL,將這些URL作為該頁(yè)面請(qǐng)求URL孩子節(jié)點(diǎn)。
[0074]步驟415:判斷頁(yè)面加載是否結(jié)束,從重定向鏈樹形結(jié)構(gòu)中提取特征。
[0075]步驟416:改進(jìn)樹的深度優(yōu)先遍歷算法,遍歷重定向鏈樹形結(jié)構(gòu),記錄每一條分支鏈的長(zhǎng)度,找到最大長(zhǎng)度和最小長(zhǎng)度。
[0076]步驟417:遍歷時(shí)候,判斷每一條分支重定向鏈?zhǔn)欠翊嬖谧匝h(huán),用布爾值作為區(qū)分。
[0077]步驟418:計(jì)算每一條分支重定向鏈中URL的相似度。
[0078]步驟419:利用字符串匹配,判斷每一條鏈中的URL,是否包含相同的域名,如果有則標(biāo)示為I,沒有標(biāo)示為O。
[0079 ] 步驟4110:正則表達(dá)式判斷每一條分支鏈的URL是否直接包含IP。利用的正則表達(dá)式string =“http|https://(((25[0_5]|2[0_4]\d|[01]?\d\d?)($ (?!\.$)\.)){4}$/)/*'
[0080]步驟42:頁(yè)面統(tǒng)計(jì)特征提取。頁(yè)面特征包括HTML頁(yè)面中包含的標(biāo)簽特征,以及js頁(yè)面中包含的特征。對(duì)頁(yè)面特征的提取我們主要采用的是統(tǒng)計(jì)算法。在頁(yè)面解析以及腳本解析的過程中,我們除了會(huì)提取其中包含的重定向鏈接,同時(shí)會(huì)利用全局變量記錄一些相應(yīng)的特征。在HTML頁(yè)面中我們會(huì)統(tǒng)計(jì)產(chǎn)生重定向的標(biāo)簽個(gè)數(shù)即〈me taXscript〉這兩種標(biāo)簽分別的個(gè)數(shù)。在腳本解析處理中,由于頁(yè)面混淆程度決定了木馬存在的可能性,因此頁(yè)面特征其他部分也會(huì)提取與混淆相關(guān)的頁(yè)面特征,主要包含eval字符串的個(gè)數(shù),document.write字符串的個(gè)數(shù),escape字符串的個(gè)數(shù)以及與其對(duì)應(yīng)的unescope字符串的個(gè)數(shù)還有encode和decode的。
[0081]1、所述步驟I的構(gòu)建方法包括以下具體步驟:
[0082]當(dāng)用一個(gè)客戶端用戶通過瀏覽器請(qǐng)求訪問網(wǎng)頁(yè),系統(tǒng)捕獲數(shù)據(jù)包后,首先判斷該請(qǐng)求的客戶端IP是否在請(qǐng)求鏈中,如果沒有的話,則將該請(qǐng)求IP加入到客戶端請(qǐng)求鏈中,模塊首先利用四元組hash記錄下用戶的該條訪問的URL,然后將數(shù)據(jù)包轉(zhuǎn)發(fā)給WEB服務(wù)器,如果該請(qǐng)求已經(jīng)存在則提取數(shù)據(jù)包中的請(qǐng)求URL,判斷該URL是否是從網(wǎng)友中提取的URL,如果是的話則利用該請(qǐng)求的四元組hash計(jì)算保持其URL,然后再轉(zhuǎn)發(fā)數(shù)據(jù)包給WEB服務(wù)器;WEB月艮務(wù)器返回響應(yīng)時(shí),系統(tǒng)首先處理該數(shù)據(jù)包,讀取數(shù)據(jù)包中的響應(yīng)碼如果是301 302的情況,則繼續(xù)尋找響應(yīng)首部的locat1n部分,提取重定向URL,并根據(jù)響應(yīng)的四元組找到其上一層URL,鏈接到重定向鏈中。如果響應(yīng)碼是正常的200,則首先判斷是否是HTML頁(yè)面,或者.js頁(yè)面,然后分別利用頁(yè)面解析模塊和腳本解析模塊處理這兩種頁(yè)面,直到所有的重定向以及頁(yè)面統(tǒng)計(jì)提取完畢;最后由特征提取模塊完成后面的工作。
[0083]2、頁(yè)面解析,主要解析的是<meta>以及〈script〉兩種標(biāo)簽。首先當(dāng)系統(tǒng)得到一個(gè).HTML原始數(shù)據(jù)包后,先利用正則匹配的方式,提取頁(yè)面中的<meta>以及〈script〉標(biāo)簽,并獲取其中存在的URL,并將在一個(gè)HTML頁(yè)面獲得重定向URL存放在一個(gè)數(shù)據(jù)結(jié)構(gòu)中;該并同時(shí)記錄這兩個(gè)標(biāo)簽的個(gè)數(shù)。
[0084]3、該模塊主要解析JavaScript腳本,主要的工作是將存在混淆的代碼利用腳本引擎解混淆,然后提取腳本中存在的重定向鏈接,并統(tǒng)計(jì)腳本中存在某些特征函數(shù)的數(shù)量。
[0085]4、特征提取,包括頁(yè)面統(tǒng)計(jì)特征和重定向鏈特征。頁(yè)面特征包括HTML頁(yè)面中包含的標(biāo)簽特征,以及js頁(yè)面中包含的特征。對(duì)頁(yè)面特征的提取我們主要采用的是統(tǒng)計(jì)算法。在頁(yè)面解析以及腳本解析的過程中,我們除了會(huì)提取其中包含的重定向鏈接,同時(shí)會(huì)利用全局變量記錄一些相應(yīng)的特征。在HTML頁(yè)面中我們會(huì)統(tǒng)計(jì)產(chǎn)生重定向的標(biāo)簽個(gè)數(shù)即〈metaXscript〉這兩種標(biāo)簽分別的個(gè)數(shù)。在腳本解析處理中,由于頁(yè)面混淆程度決定了木馬存在的可能性,因此頁(yè)面特征其他部分也會(huì)提取與混淆相關(guān)的頁(yè)面特征,主要包含eval字符串的個(gè)數(shù),document.write字符串的個(gè)數(shù),escape字符串的個(gè)數(shù)以及與其對(duì)應(yīng)的unescope字符串的個(gè)數(shù)還有encode和decode的個(gè)數(shù)。
[0086]在重定向鏈特征提取算法,大致上可以分為兩步,第一步就是獲取重定向鏈并將其利用樹形數(shù)據(jù)結(jié)構(gòu)與hash相結(jié)合得方式存放重定向鏈結(jié)構(gòu)如圖4所示。上一節(jié)中頁(yè)面提取過程中當(dāng)檢測(cè)到一個(gè)HTML頁(yè)面時(shí),檢測(cè)HTML頁(yè)面中存在的重定向鏈接,然后對(duì)這些重定向鏈接進(jìn)一步分析,提取其中在js文件,對(duì)其進(jìn)行跟蹤分析,提取更多的可能存在惡意的重定向鏈接。當(dāng)所有的結(jié)點(diǎn)關(guān)系構(gòu)建完畢后,我們就得到一個(gè)樹形的重定向鏈。第二步,當(dāng)提取到樹形的重定向鏈后,需要利用改進(jìn)的樹形遍歷算法,計(jì)算出每一條鏈的長(zhǎng)度,給每一條鏈做標(biāo)記,提取最長(zhǎng)鏈以及最短鏈,并檢查樹形結(jié)構(gòu)中的每一條鏈?zhǔn)欠翊嬖谧匝h(huán);計(jì)算每條鏈中的URL與請(qǐng)求URL的相似度;判斷每一條重定向分支鏈中是否有內(nèi)部域名網(wǎng)址;訪問每個(gè)葉子節(jié)點(diǎn),利用正則匹配的方式檢測(cè)每一個(gè)葉子節(jié)點(diǎn)的URL是否是直接采用IP。
【主權(quán)項(xiàng)】
1.一種面向WEB木馬檢測(cè)的網(wǎng)頁(yè)特征提取方法,其特征是: 步驟1:數(shù)據(jù)獲取; 步驟11:當(dāng)用一個(gè)客戶端用戶通過瀏覽器請(qǐng)求訪問網(wǎng)頁(yè),系統(tǒng)捕獲數(shù)據(jù)包后,首先判斷該請(qǐng)求的客戶端IP是否在請(qǐng)求鏈中;步驟12:如果請(qǐng)求的客戶端IP沒有在請(qǐng)求鏈中,則將該請(qǐng)求的客戶端IP加入到客戶端請(qǐng)求鏈中;利用四元組hash記錄下用戶的該條訪問的URL;然后將數(shù)據(jù)包轉(zhuǎn)發(fā)給WEB服務(wù)器;步驟13:如果該請(qǐng)求的客戶端IP已經(jīng)存在則提取數(shù)據(jù)包中的請(qǐng)求URL,判斷該URL是否是從網(wǎng)友中提取的URL;如果是則利用該請(qǐng)求的四元組hash計(jì)算保持其URL,然后再轉(zhuǎn)發(fā)數(shù)據(jù)包給WEB服務(wù)器; 步驟14:WEB服務(wù)器返回響應(yīng)時(shí)數(shù)據(jù)包處理; 步驟2:頁(yè)面解析; 步驟21:利用正則匹配的方式匹配網(wǎng)頁(yè)中的<meta>標(biāo)簽下的自動(dòng)跳轉(zhuǎn)的URL; 步驟22:利用正則表達(dá)式提取網(wǎng)頁(yè)中的script腳本,以及script腳本中src的URL鏈接; 步驟3:腳本解析; 步驟4:提取特征。2.根據(jù)權(quán)利要求1所述的面向WEB木馬檢測(cè)的網(wǎng)頁(yè)特征提取方法,其特征是所述腳本解析具體包括: 步驟31:將存在混淆的代碼利用腳本引擎解混淆,然后提取腳本中存在的重定向鏈接; 步驟32:同時(shí)統(tǒng)計(jì)腳本中存在的特征函數(shù)的數(shù)量。3.根據(jù)權(quán)利要求2所述的面向WEB木馬檢測(cè)的網(wǎng)頁(yè)特征提取方法,其特征是所述提取特征具體包括: 步驟41:重定向鏈特征提取過程; 步驟42:頁(yè)面統(tǒng)計(jì)特征提取。4.根據(jù)權(quán)利要求3所述的面向WEB木馬檢測(cè)的網(wǎng)頁(yè)特征提取方法,其特征是所述WEB月艮務(wù)器返回響應(yīng)時(shí)數(shù)據(jù)包處理具體包括: 步驟141:系統(tǒng)首先處理該數(shù)據(jù)包,讀取數(shù)據(jù)包中的響應(yīng)碼如果是301 302的情況,則繼續(xù)尋找響應(yīng)首部的locat1n部分,提取重定向URL,并根據(jù)響應(yīng)的四元組找到其上一層URL,鏈接到重定向鏈中; 步驟142:如果響應(yīng)碼是正常的200,則首先判斷是否是HTML頁(yè)面,或者.js頁(yè)面,然后分別利用頁(yè)面解析模塊和腳本解析模塊處理這兩種頁(yè)面,直到所有的重定向以及頁(yè)面統(tǒng)計(jì)提取完畢。5.根據(jù)權(quán)利要求4所述的面向WEB木馬檢測(cè)的網(wǎng)頁(yè)特征提取方法,其特征是步驟31具體包括: 步驟311:利用SpiderMonkey提供的接口函數(shù)自定義DOM對(duì)象,定義JSProperty和JSFunc 1n的兩個(gè)數(shù)組; 步驟312:調(diào)用SpiderMonkey里面的接口函數(shù)JS_NewObject來創(chuàng)建object對(duì)象,并將整個(gè)創(chuàng)建的對(duì)象添加到SpiderMonkey的全局對(duì)象中; 步驟313:然后將方法和屬性添加到運(yùn)行過程中的上下文環(huán)境中,當(dāng)解析腳本的時(shí)候遇至IjDOM對(duì)象中某個(gè)對(duì)象時(shí),從全局對(duì)象中查找相應(yīng)的對(duì)象名,然后根據(jù)對(duì)象名在其相應(yīng)的上下文結(jié)構(gòu)體中查找對(duì)應(yīng)的屬性和方法。6.根據(jù)權(quán)利要求5所述的面向WEB木馬檢測(cè)的網(wǎng)頁(yè)特征提取方法,其特征是所述步驟41具體包括: 步驟411:首先為用戶請(qǐng)求頁(yè)面建立url存儲(chǔ)結(jié)構(gòu),用戶首次請(qǐng)求的URL作為重定向鏈樹形結(jié)構(gòu)的根節(jié)點(diǎn); 步驟412:解析HTML頁(yè)面,提取頁(yè)面中<meta>〈script>標(biāo)簽下的url鏈接,加入樹形結(jié)構(gòu)中,并作為根節(jié)點(diǎn)的孩子節(jié)點(diǎn); 步驟413:監(jiān)控請(qǐng)求數(shù)據(jù)包如果請(qǐng)求URL是樹形結(jié)構(gòu)中的URL,則記錄該請(qǐng)求的四元組即sip、sport、dip、dport; 步驟414:監(jiān)控響應(yīng)數(shù)據(jù)包,根據(jù)四元組找到相應(yīng)的請(qǐng)求的URL,分析數(shù)據(jù)包是.JS頁(yè)面或者h(yuǎn)tml頁(yè)面中的重定向URL,將這些URL作為該頁(yè)面請(qǐng)求URL孩子節(jié)點(diǎn); 步驟415:判斷頁(yè)面加載是否結(jié)束,從重定向鏈樹形結(jié)構(gòu)中提取特征; 步驟416:改進(jìn)樹的深度優(yōu)先遍歷算法,遍歷重定向鏈樹形結(jié)構(gòu),記錄每一條分支鏈的長(zhǎng)度,找到最大長(zhǎng)度和最小長(zhǎng)度; 步驟417:遍歷時(shí)候,判斷每一條分支重定向鏈?zhǔn)欠翊嬖谧匝h(huán),用布爾值作為區(qū)分; 步驟418:計(jì)算每一條分支重定向鏈中URL的相似度; 步驟419:利用字符串匹配,判斷每一條鏈中的URL,是否包含相同的域名,如果有則標(biāo)示為I,沒有標(biāo)示為O; 步驟4110:正則表達(dá)式判斷每一條分支鏈的URL是否直接包含IP。
【文檔編號(hào)】G06F17/30GK106022126SQ201610297843
【公開日】2016年10月12日
【申請(qǐng)日】2016年5月6日
【發(fā)明人】玄世昌, 楊武, 王巍, 苘大鵬, 位愛伶
【申請(qǐng)人】哈爾濱工程大學(xué)