亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種網(wǎng)頁中惡意代碼的檢測方法及系統(tǒng)的制作方法

文檔序號(hào):6443312閱讀:201來源:國知局
專利名稱:一種網(wǎng)頁中惡意代碼的檢測方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本申請(qǐng)涉及計(jì)算機(jī)安全技術(shù),特別是涉及ー種網(wǎng)頁中惡意代碼的檢測方法及系統(tǒng)。
背景技術(shù)
黑客通常是在網(wǎng)頁中使用惡意的動(dòng)態(tài)腳本來構(gòu)造的惡意網(wǎng)頁代碼,如通過在 javascript腳本中書寫惡意代碼,腳本運(yùn)行時(shí)其中的惡意代碼會(huì)觸發(fā)漏洞,然后在操作系統(tǒng)中運(yùn)行下載病毒木馬的程序,進(jìn)而對(duì)操作系統(tǒng)造成危害。因此需要查找出惡意代碼并阻止其運(yùn)行,才能阻止惡意代碼后續(xù)對(duì)操作系統(tǒng)的危害。目前大部分殺毒軟件都是通過檢測特征碼,即ー個(gè)或多個(gè)特定的字符串特征,針對(duì)單個(gè)網(wǎng)頁源代碼的文本內(nèi)容進(jìn)行靜態(tài)檢測,所述靜態(tài)檢測是對(duì)惡意代碼的文本進(jìn)行靜態(tài)分析的方法。靜態(tài)檢測的具體做法是,首先打開ー個(gè)網(wǎng)頁時(shí)會(huì)先將網(wǎng)頁下載到本地緩存中,然后再讀取網(wǎng)頁的源代碼來顯示網(wǎng)頁,殺毒軟件在讀取源代碼的過程中就會(huì)進(jìn)行匹配檢測, 若匹配到上述的特征碼,就認(rèn)為該網(wǎng)頁中含有惡意代碼,會(huì)將該網(wǎng)頁攔截不予顯示。但是黑客可以將惡意代碼嵌入網(wǎng)頁中由第三方來支持運(yùn)行的腳本中,例如將惡意代碼嵌入Flash支持運(yùn)行的腳本中,F(xiàn)lash支持運(yùn)行的腳本是通過虛擬機(jī)進(jìn)行解析后,通過瀏覽器接ロ來動(dòng)態(tài)運(yùn)行的。Flash支持運(yùn)行的腳本本身并不存在于網(wǎng)頁的源代碼中,因此殺毒軟件沒有辦法檢測Flash支持運(yùn)行的腳本,也就不會(huì)執(zhí)行攔截操作,使得嵌入Flash支持運(yùn)行的腳本中的惡意代碼能夠觸發(fā)漏洞,下載木馬來危害操作系統(tǒng),因此殺毒軟件無法有效檢測出網(wǎng)頁中的惡意代碼。

發(fā)明內(nèi)容
本申請(qǐng)?zhí)峁┝拴`種網(wǎng)頁中惡意代碼的檢測方法及系統(tǒng),以解決殺毒軟件無法有效檢測出網(wǎng)頁中惡意代碼的問題。為了解決上述問題,本申請(qǐng)公開了ー種網(wǎng)頁中惡意代碼的檢測方法,包括捕獲瀏覽器接ロ的接ロ函數(shù);在瀏覽器接ロ調(diào)用所述接ロ函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前,攔截所述要運(yùn)行的腳本;對(duì)腳本中的內(nèi)容進(jìn)行分析并檢測惡意代碼。優(yōu)選的,所述對(duì)腳本中的內(nèi)容進(jìn)行分析并檢測惡意代碼,包括根據(jù)預(yù)置的詞組規(guī)則將腳本中的內(nèi)容進(jìn)行分解為特定的詞組;根據(jù)特征碼對(duì)所述特定的詞組進(jìn)行惡意代碼檢測。優(yōu)選的,所述根據(jù)預(yù)置的詞組規(guī)則將腳本中的內(nèi)容分解為特定的詞組,包括以預(yù)置的詞組規(guī)則中的詞法分割符為分割標(biāo)識(shí),將腳本中的內(nèi)容分割為多個(gè)代碼塊;
將每個(gè)代碼塊分別與所述詞組規(guī)則中的詞組定義進(jìn)行匹配,以查找特定的詞組, 所述特定的詞組包括函數(shù)名、關(guān)鍵字和變量內(nèi)容。優(yōu)選的,所述特征碼中包括惡意代碼慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合,所述根據(jù)特征碼對(duì)所述特定的詞組進(jìn)行惡意代碼檢測,包括將所述特征碼分別與所述特定的詞組進(jìn)行匹配,檢測所述特定的詞組是否存在惡意代碼慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合。優(yōu)選的,將檢測到的惡意代碼中慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合以預(yù)置的公式進(jìn)行計(jì)算;若計(jì)算結(jié)果超過惡意代碼閾值,則該腳本中含有惡意代碼。優(yōu)選的,若檢測到腳本中含有惡意代碼,則阻斷惡意代碼的執(zhí)行并報(bào)告檢測到的惡意代碼。優(yōu)選的,在IE內(nèi)核瀏覽器中,所述捕獲瀏覽器接ロ的接ロ函數(shù),包括使用鉤子函數(shù)捕獲IE內(nèi)核瀏覽器中IActiveScriptParse接ロ的 ParseScriptText 函數(shù)。優(yōu)選的,在IE內(nèi)核瀏覽器中,所述在瀏覽器接ロ調(diào)用所述接ロ函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前,攔截所述要運(yùn)行的腳本,包括在IActiveScriptParse接ロ調(diào)用ParseScriptText函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前,通過所述鉤子函數(shù)攔截要運(yùn)行的腳本。相應(yīng)的,本申請(qǐng)還公開了ー種網(wǎng)頁中惡意代碼的檢測系統(tǒng),包括捕獲模塊,用于捕獲瀏覽器接ロ的接ロ函數(shù);攔截模塊,用于在瀏覽器接ロ調(diào)用所述接ロ函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前,攔截所述要運(yùn)行的腳本;分析并檢測模塊,用于對(duì)腳本中的內(nèi)容進(jìn)行分析并檢測惡意代碼。優(yōu)選的,所述分析并檢測模塊,包括詞組分解子模塊,用于根據(jù)預(yù)置的詞組規(guī)則將腳本中的內(nèi)容分解為特定的詞組;惡意代碼檢測子模塊,用于根據(jù)特征碼對(duì)所述特定的詞組進(jìn)行惡意代碼檢測。優(yōu)選的,所述詞組分解子模塊,包括分割単元,用于以預(yù)置的詞組規(guī)則中的詞法分割符為分割標(biāo)識(shí),將腳本中的內(nèi)容分割為多個(gè)代碼塊;匹配并查找単元,用于將每個(gè)代碼塊分別與所述詞組規(guī)則中的詞組定義進(jìn)行匹配,以查找特定的詞組,所述特定的詞組包括函數(shù)名、關(guān)鍵字和變量內(nèi)容。優(yōu)選的,所述特征碼中包括惡意代碼慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合,所述惡意代碼檢測子模塊,包括匹配単元,用于將所述特征碼分別與所述特定的詞組進(jìn)行匹配,檢測所述特定的詞組中是否存在惡意代碼慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合。優(yōu)選的,所述惡意代碼檢測子模塊,還包括計(jì)算單元,用于將檢測到的惡意代碼中慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合以預(yù)置的公式進(jìn)行計(jì)算;比較單元,用于若計(jì)算結(jié)果超過惡意代碼閾值,則該腳本中含有惡意代碼。優(yōu)選的,阻斷并報(bào)告模塊,用于若檢測到腳本中含有惡意代碼,則阻斷惡意代碼的執(zhí)行并報(bào)告檢測到的惡意代碼特征。優(yōu)選的,在IE內(nèi)核瀏覽器中,所述捕獲模塊,用于使用鉤子函數(shù)捕獲IE內(nèi)核瀏覽 ^ΙΦ IActiveScriptParse ^ Π ^ ParseScriptText g|·。優(yōu)選的,在IE內(nèi)核瀏覽器中,所述攔截模塊,用于在IActiveScriptParse接ロ調(diào)用ParsekriptText函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前,通過所述鉤子函數(shù)攔截要運(yùn)行的腳本。與現(xiàn)有技術(shù)相比,本申請(qǐng)包括以下優(yōu)點(diǎn)首先,針對(duì)殺毒軟件無法有效檢測出網(wǎng)頁中惡意代碼的問題,本申請(qǐng)首先捕獲瀏覽器接ロ的接ロ函數(shù),在瀏覽器接ロ調(diào)用所述接ロ函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前,攔截所述要運(yùn)行的腳本,再對(duì)腳本中的內(nèi)容進(jìn)行分析并檢測惡意代碼。無論是通過網(wǎng)頁源代碼來運(yùn)行的腳本,還是由第三方來支持運(yùn)行的腳本,本申請(qǐng)都可以將其捕獲并對(duì)應(yīng)腳本中的檢測惡意代碼,進(jìn)而可以有效的阻斷惡意代碼在運(yùn)行的腳本中觸發(fā)漏洞,下載木馬來危害操作系統(tǒng)的情況,使得用戶可以正常的瀏覽和使用安全的網(wǎng)頁。其次,現(xiàn)有技術(shù)中只要檢測到網(wǎng)頁的源代碼中包含特征碼中的任意一種字符串, 就會(huì)認(rèn)為網(wǎng)頁中含有惡意代碼,然后執(zhí)行攔截操作。但是所檢測的字符串可能是編程人員配置的,而非惡意代碼的,因此也會(huì)產(chǎn)生誤報(bào)的情況。惡意代碼中不會(huì)只包含ー兩個(gè)字符串,還會(huì)有其他的特征,因此現(xiàn)有技術(shù)中僅檢測字符串還可能會(huì)產(chǎn)生漏報(bào)的情況,而本申請(qǐng)通過預(yù)置的詞組規(guī)則將腳本中的內(nèi)容分割為多個(gè)代碼塊,并對(duì)每個(gè)代碼塊進(jìn)行匹配以查找函數(shù)名、關(guān)鍵字和變量內(nèi)容。然后與特征碼檢測惡意代碼中慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合進(jìn)行匹配,若檢測到的惡意代碼中慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合,還需要計(jì)算其超過惡意代碼閾值,才會(huì)認(rèn)為腳本中含有惡意代碼。使得惡意代碼的檢測更智能化和合理化,大大的提升了惡意代碼檢測的粒度和準(zhǔn)確性,不會(huì)產(chǎn)生誤報(bào)和漏報(bào)的情況,使惡意代碼檢測技術(shù)上升了ー個(gè)臺(tái)階。


圖1是本申請(qǐng)實(shí)施例所述ー種網(wǎng)頁中惡意代碼的檢測方法流程圖;圖2是本申請(qǐng)優(yōu)選實(shí)施例所述ー種網(wǎng)頁中惡意代碼的檢測方法中分析并檢測惡意代碼流程;圖3是本申請(qǐng)優(yōu)選實(shí)施例所述IE內(nèi)核瀏覽器的網(wǎng)頁中惡意代碼的檢測方法流程圖;圖4是本申請(qǐng)實(shí)施例所述ー種網(wǎng)頁中惡意代碼的檢測系統(tǒng)結(jié)構(gòu)圖;圖5是本申請(qǐng)實(shí)施例所述ー種網(wǎng)頁中惡意代碼的檢測系統(tǒng)中分析并檢測模塊結(jié)構(gòu)圖。
具體實(shí)施例方式為使本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)的說明?,F(xiàn)有技術(shù)中,殺毒軟件僅可以檢測嵌入網(wǎng)頁的源代碼中的惡意代碼,而針對(duì)網(wǎng)頁中由第三方來支持運(yùn)行的腳本,殺毒軟件沒有辦法檢測其中嵌入的惡意代碼,也就不會(huì)執(zhí)行攔截操作,使得腳本運(yùn)行時(shí)嵌入其中的惡意代碼能夠觸發(fā)漏洞,下載木馬來危害操作系統(tǒng),因此殺毒軟件無法有效檢測出網(wǎng)頁中的惡意代碼。本申請(qǐng)?zhí)峁┅`種網(wǎng)頁中惡意代碼的檢測方法,無論是通過網(wǎng)頁源代碼來運(yùn)行的腳本,還是由第三方來支持運(yùn)行的腳本,本申請(qǐng)都可以將其捕獲并對(duì)應(yīng)腳本中的檢測惡意代碼,進(jìn)而可以有效的阻斷惡意代碼在運(yùn)行的腳本中觸發(fā)漏洞,下載木馬來危害操作系統(tǒng)的情況,使得用戶可以正常的瀏覽和使用安全的網(wǎng)頁。參照?qǐng)D1,給出了本申請(qǐng)實(shí)施例所述ー種網(wǎng)頁中惡意代碼的檢測方法流程圖。步驟101,捕獲瀏覽器接ロ的接ロ函數(shù);在瀏覽器中會(huì)通過瀏覽器接ロ的接ロ函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎,然后通過腳本解釋引擎來解析并運(yùn)行所述腳本,為了可以獲得要運(yùn)行的腳本,因此可以首先捕獲瀏覽器接ロ的接ロ函數(shù)。例如,通過鉤子函數(shù)對(duì)所述接ロ函數(shù)進(jìn)行HOOK處理,即通過鉤子函數(shù)捕獲所述接ロ函數(shù),在接ロ函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前,獲得要運(yùn)行的腳本的實(shí)時(shí)控制權(quán)。當(dāng)然還可以使用其他的方法捕獲所述接ロ函數(shù),本申請(qǐng)對(duì)此不做限定。步驟102,在瀏覽器接ロ調(diào)用所述接ロ函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前,攔截所述要運(yùn)行的腳本;捕獲所述接ロ函數(shù)后,可以在接ロ函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前, 獲得要運(yùn)行的腳本的實(shí)時(shí)控制權(quán),攔截到要運(yùn)行的腳本。步驟103,對(duì)腳本中的內(nèi)容進(jìn)行分析并檢測惡意代碼。攔截到要運(yùn)行的腳本后,可以對(duì)腳本中的內(nèi)容進(jìn)行分析,并且檢測其中的惡意代碼。步驟103中分析并檢測的步驟可以分為步驟1031,根據(jù)預(yù)置的詞組規(guī)則將腳本中的內(nèi)容進(jìn)行分解為特定的詞組;本申請(qǐng)中預(yù)置了詞組規(guī)則,例如通過所述詞組規(guī)則可以分析出腳本中的函數(shù)名、 變量內(nèi)容等,因此可以根據(jù)預(yù)置的詞組規(guī)則將腳本中的內(nèi)容分解為特定的詞組,如函數(shù)名、
變量內(nèi)容等。步驟1032,根據(jù)特征碼對(duì)所述特定的詞組進(jìn)行惡意代碼檢測。本申請(qǐng)中還設(shè)置了特征碼,所述特征碼中可以包括惡意代碼中常用的詞組習(xí)慣, 例如正常編程中會(huì)根據(jù)ー些約定對(duì)函數(shù)進(jìn)行命名,而惡意代碼中的函數(shù)名比較不常見,或有其特殊的命名習(xí)慣,還包括ー些惡意代碼中需要用到的變量內(nèi)容等。因此可以根據(jù)所述特征碼對(duì)所述特定的詞組進(jìn)行惡意代碼檢測,例如從腳本中分解出函數(shù)名和變量內(nèi)容后,與特征碼進(jìn)行匹配,檢測腳本中是否含有惡意代碼。一個(gè)網(wǎng)頁中往往包含各種資源文件,如CSS樣式表、HTML文件和多個(gè)javascript 文件,還包括第三方來支持運(yùn)行的腳本,如Flash運(yùn)行的腳本等。惡意代碼存在各種文本變形和文本分片情況,黑客可以將惡意代碼分散于網(wǎng)頁中的各個(gè)資源文件中。而現(xiàn)有的殺毒軟件通常只針對(duì)單個(gè)HTML文件或單個(gè)固定的javascript文件進(jìn)行靜態(tài)分析,因此若黑客將惡意代碼嵌入Flash運(yùn)行的腳本中,或CSS樣式表運(yùn)行的腳本中,此時(shí)現(xiàn)有的殺毒軟件不會(huì)對(duì)其進(jìn)行靜態(tài)分析,因此有可能會(huì)導(dǎo)致惡意代碼觸發(fā)漏洞,下載木馬危害操作系統(tǒng)。綜上所述,針對(duì)殺毒軟件無法有效檢測出網(wǎng)頁中惡意代碼的問題,本申請(qǐng)首先捕獲瀏覽器接口的接口函數(shù),在瀏覽器接口調(diào)用所述接口函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前,攔截所述要運(yùn)行的腳本,再對(duì)腳本中的內(nèi)容進(jìn)行分析并檢測惡意代碼。無論是通過網(wǎng)頁源代碼來運(yùn)行的腳本,還是由第三方來支持運(yùn)行的腳本,本申請(qǐng)都可以將其捕獲并對(duì)應(yīng)腳本中的檢測惡意代碼,進(jìn)而可以有效的阻斷惡意代碼在運(yùn)行的腳本中觸發(fā)漏洞,下載木馬來危害操作系統(tǒng)的情況,使得用戶可以正常的瀏覽和使用安全的網(wǎng)頁。參照?qǐng)D2,給出了本申請(qǐng)優(yōu)選實(shí)施例所述一種網(wǎng)頁中惡意代碼的檢測方法中分析并檢測惡意代碼流程圖。步驟201,以預(yù)置的詞組規(guī)則中詞法分割符為分割標(biāo)識(shí),將腳本中的內(nèi)容分割為多個(gè)代碼塊;預(yù)置的詞組規(guī)則中包含詞法分割符,所述詞法分割符是指換行、空格、分號(hào)(;)、 下劃線(_)和百分號(hào)(% )等腳本代碼語句的分割字符。通常在編程中,換行和分號(hào)用于表示語句的結(jié)束,空格用于區(qū)分每個(gè)詞,因此根據(jù)所述的詞法分割符可以將將腳本中的內(nèi)容分割為多個(gè)代碼塊。詞組規(guī)則中設(shè)置詞法分割符的語句如#define _ps_isspace(c) (c = = 〃 || c = = ‘ \t ‘ ||c = = ' \r ‘ Ilc = ='\n')#define _ps_iskwchar(c) ((c > = ‘ 0' &&c < = ‘ 9' ) Il (c > = ‘ a' &&c < ='ζ' ) Il (c > = ' A' &&C < = ‘ V ) Il C = = ' )#define_ps_isstrchar (c) (_ps_iskwchar (c) || c = = ‘ % ‘)......步驟202,將每個(gè)代碼塊分別與所述詞組規(guī)則中的詞組定義進(jìn)行匹配,以查找特定的詞組,所述特定的詞組包括函數(shù)名、關(guān)鍵字和變量內(nèi)容。將預(yù)置的詞組規(guī)則中的詞組定義分別與每個(gè)代碼塊進(jìn)行匹配,來查找特定的詞組,所述特定的詞組包括函數(shù)名、關(guān)鍵字和變量內(nèi)容。所述函數(shù)名是腳本代碼中具有特定功能代碼段的函數(shù)的名稱。如fuction abc () {···}中,所述abc就是函數(shù)名。所述關(guān)鍵字是指腳本代碼中內(nèi)置的關(guān)鍵語法詞。如function abc () {···}中,所述 function就是關(guān)鍵字。所述變量內(nèi)容是指腳本代碼中某個(gè)變量所被賦予的值。如a = 1,b = ’ abc’,其中1和abc就是變量內(nèi)容,所述變量內(nèi)容具體可以分為整型串和字符串等。因此具體實(shí)施中,根據(jù)程序編寫的規(guī)則,可以分析出腳本代碼中的函數(shù)名、關(guān)鍵字和變量內(nèi)容。例如,在代碼中關(guān)鍵字是確定的,因此可以在所述詞組定義中規(guī)定出這些關(guān)鍵字, 首先分別對(duì)每個(gè)代碼塊進(jìn)行匹配來查找關(guān)鍵字。所述關(guān)鍵字中的一個(gè)是function,則function后面以空格區(qū)分的代碼塊就是函數(shù)名,如上例中function abc() {…},function和abc以空格區(qū)分,則abc就是函數(shù)名。對(duì)于變量內(nèi)容的查找而言,在代碼的編寫中通常一個(gè)變量是通過等號(hào)(=)被賦予某個(gè)變量內(nèi)容的,因此首先會(huì)查找等號(hào)(=),而后查找后面的數(shù)字“0”到“9”這10個(gè)數(shù)字,或查找沈個(gè)英文字母即“a”到“z”,“A”到“Z”,此時(shí)由所述字母或數(shù)字組成的變量內(nèi)容可能會(huì)用單引號(hào)(’)或雙引號(hào)(”)和其他代碼區(qū)分開。步驟203,將所述特征碼分別與所述特定的詞組進(jìn)行匹配,檢測所述特定的詞組中是否存在惡意代碼慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合。所述特征碼可以包括1)黑客常用的函數(shù)名;2)惡意代碼中常見的變量內(nèi)容(如字符串和整型串等);幻惡意代碼中必須使用的關(guān)鍵字;4)函數(shù)名、變量內(nèi)容和關(guān)鍵字的特定組合等內(nèi)容。上述腳本代碼分解出了特定的詞組,包括函數(shù)名、關(guān)鍵字和變量內(nèi)容,因此可以將所述特征碼和所述特定的詞組進(jìn)行匹配,以檢測出分析后的內(nèi)容中是否存在惡意代碼慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合。其中,惡意代碼慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合代表惡意代碼中慣用的1)函數(shù)名、幻關(guān)鍵字、幻變量內(nèi)容和4)函數(shù)名、變量內(nèi)容和關(guān)鍵字的特定組合其中任意幾項(xiàng)的組合,既可以包括全部4項(xiàng),也可以包括其中的任意3項(xiàng)或2項(xiàng)或1項(xiàng)。步驟204,將檢測到的惡意代碼中慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合以預(yù)置的公式進(jìn)行計(jì)算;本申請(qǐng)預(yù)置了一個(gè)惡意代碼計(jì)算公式,用于將檢測到的惡意代碼中慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合進(jìn)行計(jì)算,對(duì)所述計(jì)算結(jié)果再進(jìn)行后續(xù)的處理。例如,預(yù)先設(shè)置在惡意代碼的計(jì)算中惡意代碼中慣用的函數(shù)名占20%,關(guān)鍵字占 30 %,變量內(nèi)容占20 %,函數(shù)名、變量內(nèi)容和關(guān)鍵字的特定組合占30 %。腳本1檢測中含有惡意代碼中慣用的函數(shù)名、變量內(nèi)容和函數(shù)名、變量內(nèi)容和關(guān)鍵字的特定組合,即計(jì)算結(jié)果為20% +20% +30%= 70%。腳本2檢測中含惡意代碼中慣用的有函數(shù)名和關(guān)鍵字,即計(jì)算結(jié)果為20% +30%= 50%。步驟205,若計(jì)算結(jié)果超過惡意代碼閾值,則該腳本中含有惡意代碼。本申請(qǐng)還會(huì)預(yù)先設(shè)置惡意代碼閾值,若上述的計(jì)算結(jié)果超過該惡意代碼閾值,則腳本中含有惡意代碼,否則不含有惡意代碼。例如,將惡意代碼閾值設(shè)置為60%,則上例中腳本1的計(jì)算結(jié)果為70% > 60%,則腳本1中含有惡意代碼,腳本2的計(jì)算結(jié)果為50%< 60%,則腳本2中不含有惡意代碼。優(yōu)選的,若檢測到腳本中含有惡意代碼,則阻斷惡意代碼的執(zhí)行并報(bào)告檢測到的惡意代碼。若經(jīng)過上述分析和檢測步驟后,檢測到腳本中含有惡意代碼,則會(huì)阻斷腳本的運(yùn)行以惡意代碼的執(zhí)行,并且報(bào)告檢測到的惡意代碼,具體實(shí)施中可以報(bào)告給用戶和殺毒軟件的服務(wù)器端。例如上例中檢測到腳本1中含有惡意代碼,則會(huì)阻斷腳本1的執(zhí)行,并且報(bào)告腳本 1中含有惡意代碼中慣用的函數(shù)名、變量內(nèi)容和某個(gè)函數(shù)名、變量內(nèi)容和關(guān)鍵字的特定組合。而腳本2中不含有惡意代碼,因此會(huì)正常運(yùn)行腳本2?,F(xiàn)有技術(shù)中只要檢測到網(wǎng)頁的源代碼中包含特征碼中的任意一種字符串,就會(huì)認(rèn)為網(wǎng)頁中含有惡意代碼,然后執(zhí)行攔截操作。但是所檢測的字符串可能是編程人員配置的, 而非惡意代碼的,因此也會(huì)產(chǎn)生誤報(bào)的情況。惡意代碼中不會(huì)只包含一兩個(gè)字符串,還會(huì)有其他的特征,因此現(xiàn)有技術(shù)中僅檢測字符串還可能會(huì)產(chǎn)生漏報(bào)的情況,而本申請(qǐng)通過預(yù)置的詞組規(guī)則將腳本中的內(nèi)容分割為多個(gè)代碼塊,并對(duì)每個(gè)代碼塊進(jìn)行比配以查找函數(shù)名、CN 102542201 A
關(guān)鍵字和變量內(nèi)容。然后與特征碼檢測惡意代碼中慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合進(jìn)行匹配,若檢測到的惡意代碼中慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合,還需要計(jì)算其超過惡意代碼閾值,才會(huì)認(rèn)為腳本中含有惡意代碼。使得惡意代碼的檢測更智能化和合理化,大大的提升了惡意代碼檢測的粒度和準(zhǔn)確性,不會(huì)產(chǎn)生誤報(bào)和漏報(bào)的情況,使惡意代碼檢測技術(shù)上升了一個(gè)臺(tái)階。本申請(qǐng)所述的方法適用于檢測各種瀏覽器的網(wǎng)頁中的惡意代碼,但是不同瀏覽器中瀏覽器接口的接口函數(shù)不同,因此在具體實(shí)施的處理中存在不同之處,下面以IE內(nèi)核瀏覽器為例具體論述。參照?qǐng)D3,給出了本申請(qǐng)優(yōu)選實(shí)施例所述IE內(nèi)核瀏覽器的網(wǎng)頁中惡意代碼的檢測方法流程圖。步驟301,使用鉤子函數(shù)捕獲IE內(nèi)核瀏覽器中IActiveScriptParse接口的 ParseScriptText 函數(shù);例如,具體實(shí)施中可以使用函數(shù)HooklDispatch,針對(duì)IDispatch接口的成員函數(shù) Invoke的調(diào)用進(jìn)行HOOK處理。然后使用函數(shù)Hooked_QueryInterface,針對(duì)IUnknown接口 (查詢接口)的成員函數(shù)QueryInterface進(jìn)行Η00Κ處理。經(jīng)過上述處理后,最終就可以通
COMInterface Hookvbscript. dll/jscript. dllIActiveScriptParse
接口的ParseScriptText函數(shù)進(jìn)行Η00Κ處理。步驟302,在 IActiveScriptParse 接口調(diào)用 ParseScriptText 函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前,通過所述鉤子函數(shù)攔截要運(yùn)行的腳本;步驟303,以預(yù)置的詞組規(guī)則中的詞法分割符為分割標(biāo)識(shí),將腳本中的內(nèi)容分割為多個(gè)代碼塊;步驟304,將每個(gè)代碼塊分別與所述詞組規(guī)則中的詞組定義進(jìn)行匹配,以查找特定的詞組,所述特定的詞組包括函數(shù)名、關(guān)鍵字和變量內(nèi)容;步驟305,將所述特征碼分別與所述特定的詞組進(jìn)行匹配,檢測所述特定的詞組中是否存在惡意代碼慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合;步驟306,將檢測到的惡意代碼中慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合以預(yù)置的公式進(jìn)行計(jì)算;步驟307,若計(jì)算結(jié)果超過惡意代碼閾值,則該腳本中含有惡意代碼;步驟308,若檢測到腳本中含有惡意代碼,則阻斷惡意代碼的執(zhí)行并報(bào)告檢測到的惡意代碼特征。參照?qǐng)D4,給出了本申請(qǐng)實(shí)施例所述一種網(wǎng)頁中惡意代碼的檢測系統(tǒng)結(jié)構(gòu)圖。相應(yīng)的,本申請(qǐng)還提供了一種網(wǎng)頁中惡意代碼的檢測系統(tǒng),包括捕獲模塊11、攔截模塊12和分析并檢測模塊13,其中,捕獲模塊11,用于捕獲瀏覽器接口的接口函數(shù);攔截模塊12,用于在瀏覽器接口調(diào)用所述接口函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前,攔截所述要運(yùn)行的腳本;分析并檢測模塊13,用于對(duì)腳本中的內(nèi)容進(jìn)行分析并檢測惡意代碼。優(yōu)選的,所述分析并檢測模塊13,包括詞組分解子模塊131,用于根據(jù)預(yù)置的詞組規(guī)則將腳本中的內(nèi)容分解為特定的詞組;惡意代碼檢測子模塊132,用于根據(jù)特征碼對(duì)所述特定的詞組進(jìn)行惡意代碼檢測。優(yōu)選的,所述的系統(tǒng)還包括阻斷并報(bào)告模塊14,用于若檢測到腳本中含有惡意代碼,則阻斷惡意代碼的執(zhí)行并報(bào)告檢測到的惡意代碼特征。參照?qǐng)D5,給出了本申請(qǐng)實(shí)施例所述一種網(wǎng)頁中惡意代碼的檢測系統(tǒng)中分析并檢測模塊結(jié)構(gòu)圖。優(yōu)選的,所述詞組分解子模塊131,包括分割單元1311,用于以預(yù)置的詞組規(guī)則中的詞法分割符為分割標(biāo)識(shí),將腳本中的內(nèi)容分割為多個(gè)代碼塊;匹配并查找單元1312,用于將每個(gè)代碼塊分別與所述詞組規(guī)則中的詞組定義進(jìn)行匹配,以查找特定的詞組,所述特定的詞組包括函數(shù)名、關(guān)鍵字和變量內(nèi)容。優(yōu)選的,所述特征碼中包括惡意代碼慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合,所述惡意代碼檢測子模塊132,包括匹配單元1321,用于將所述特征碼分別與所述特定的詞組進(jìn)行匹配,檢測所述特定的詞組中是否存在惡意代碼慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合。計(jì)算單元1322,用于將檢測到的惡意代碼中慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合以預(yù)置的公式進(jìn)行計(jì)算;比較單元1323,用于若計(jì)算結(jié)果超過惡意代碼閾值,則該腳本中含有惡意代碼。優(yōu)選的,在IE內(nèi)核瀏覽器中,所述捕獲模塊11,用于使用鉤子函數(shù)捕獲IE內(nèi)核瀏 Ii巾 IActiveScriptParse _ ΓΙ 白勺 ParseScriptText g|·。優(yōu)選的,在IE內(nèi)核瀏覽器中,所述攔截模塊12,用于在IActiveScriptParse接口調(diào)用ParsekriptText函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前,通過所述鉤子函數(shù)攔截要運(yùn)行的腳本。對(duì)于系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
以上對(duì)本申請(qǐng)所提供的一種網(wǎng)頁中惡意代碼的檢測方法及系統(tǒng),進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。
權(quán)利要求
1.ー種網(wǎng)頁中惡意代碼的檢測方法,其特征在干,包括 捕獲瀏覽器接ロ的接ロ函數(shù);在瀏覽器接ロ調(diào)用所述接ロ函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前,攔截所述要運(yùn)行的腳本;對(duì)腳本中的內(nèi)容進(jìn)行分析并檢測惡意代碼。
2.根據(jù)權(quán)利要求1所述的方法,其特征在干,所述對(duì)腳本中的內(nèi)容進(jìn)行分析并檢測惡意代碼,包括根據(jù)預(yù)置的詞組規(guī)則將腳本中的內(nèi)容分解為特定的詞組; 根據(jù)特征碼對(duì)所述特定的詞組進(jìn)行惡意代碼檢測。
3.根據(jù)權(quán)利要求2所述的方法,其特征在干,所述根據(jù)預(yù)置的詞組規(guī)則將腳本中的內(nèi)容分解為特定的詞組,包括以預(yù)置的詞組規(guī)則中的詞法分割符為分割標(biāo)識(shí),將腳本中的內(nèi)容分割為多個(gè)代碼塊; 將每個(gè)代碼塊分別與所述詞組規(guī)則中的詞組定義進(jìn)行匹配,以查找特定的詞組,所述特定的詞組包括函數(shù)名、關(guān)鍵字和變量內(nèi)容。
4.根據(jù)權(quán)利要求3所述的方法,其特征在干,所述特征碼中包括惡意代碼慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合,所述根據(jù)特征碼對(duì)所述特定的詞組進(jìn)行惡意代碼檢測,包括 將所述特征碼分別與所述特定的詞組進(jìn)行匹配,檢測所述特定的詞組中是否存在惡意代碼慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合。
5.根據(jù)權(quán)利要求4所述的方法,還包括將檢測到的惡意代碼中慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合以預(yù)置的公式進(jìn)行計(jì)算;若計(jì)算結(jié)果超過惡意代碼閾值,則該腳本中含有惡意代碼。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括若檢測到腳本中含有惡意代碼,則阻斷惡意代碼的執(zhí)行并報(bào)告檢測到的惡意代碼。
7.根據(jù)權(quán)利要求1所述的方法,其特征在干,在IE內(nèi)核瀏覽器中,所述捕獲瀏覽器接ロ 的接ロ函數(shù),包括使用鉤子函數(shù)捕獲IE內(nèi)核瀏覽器中IActiveScriptParse接ロ的Pars必CriptiText函數(shù)。
8.根據(jù)權(quán)利要求7所述的方法,其特征在干,在IE內(nèi)核瀏覽器中,所述在瀏覽器接ロ調(diào)用所述接ロ函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前,攔截所述要運(yùn)行的腳本,包括在IActiveScriptParse接ロ調(diào)用ParsekriptiText函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前,通過所述鉤子函數(shù)攔截要運(yùn)行的腳本。
9.一種網(wǎng)頁中惡意代碼的檢測系統(tǒng),其特征在干,包括 捕獲模塊,用于捕獲瀏覽器接ロ的接ロ函數(shù);攔截模塊,用于在瀏覽器接ロ調(diào)用所述接ロ函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前,攔截所述要運(yùn)行的腳本;分析并檢測模塊,用于對(duì)腳本中的內(nèi)容進(jìn)行分析并檢測惡意代碼。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在干,所述分析并檢測模塊,包括詞組分解子模塊,用于根據(jù)預(yù)置的詞組規(guī)則將腳本中的內(nèi)容分解為特定的詞組; 惡意代碼檢測子模塊,用于根據(jù)特征碼對(duì)所述特定的詞組進(jìn)行惡意代碼檢測。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在干,所述詞組分解子模塊,包括分割単元,用于以預(yù)置的詞組規(guī)則中的詞法分割符為分割標(biāo)識(shí),將腳本中的內(nèi)容分割為多個(gè)代碼塊;匹配并查找単元,用于將每個(gè)代碼塊分別與所述詞組規(guī)則中的詞組定義進(jìn)行匹配,以查找特定的詞組,所述特定的詞組包括函數(shù)名、關(guān)鍵字和變量內(nèi)容。
12.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在干,所述特征碼中包括惡意代碼慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合,所述惡意代碼檢測子模塊,包括匹配単元,用于將所述特征碼分別與所述特定的詞組進(jìn)行匹配,檢測所述特定的詞組中是否存在惡意代碼慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其特征在干,所述惡意代碼檢測子模塊,還包括 計(jì)算單元,用于將檢測到的惡意代碼中慣用的函數(shù)名、關(guān)鍵字、變量內(nèi)容或其中若干項(xiàng)的組合以預(yù)置的公式進(jìn)行計(jì)算;比較單元,用于若計(jì)算結(jié)果超過惡意代碼閾值,則該腳本中含有惡意代碼。
14.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,還包括阻斷并報(bào)告模塊,用于若檢測到腳本中含有惡意代碼,則阻斷惡意代碼的執(zhí)行并報(bào)告檢測到的惡意代碼特征。
15.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在干,在IE內(nèi)核瀏覽器中,所述捕獲模塊,用于使用鉤子函數(shù)捕獲IE內(nèi)核瀏覽器中IActiveScriptParse接ロ的ParsekriptiText函數(shù)。
16.根據(jù)權(quán)利要求15所述的系統(tǒng),其特征在干,在IE內(nèi)核瀏覽器中,所述攔截模塊,用于在IActiveScriptParse接ロ調(diào)用ParsekriptiText函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前,通過所述鉤子函數(shù)攔截要運(yùn)行的腳本。
全文摘要
本申請(qǐng)?zhí)峁┝艘环N網(wǎng)頁中惡意代碼的檢測方法及系統(tǒng),以解決殺毒軟件無法有效檢測出網(wǎng)頁中惡意代碼的問題。所述的方法包括捕獲瀏覽器接口的接口函數(shù);在瀏覽器接口調(diào)用所述接口函數(shù)傳遞要運(yùn)行的腳本給腳本解釋引擎之前,攔截所述要運(yùn)行的腳本;對(duì)腳本中的內(nèi)容進(jìn)行分析并檢測惡意代碼。無論是通過網(wǎng)頁源代碼來運(yùn)行的腳本,還是由第三方來支持運(yùn)行的腳本,本申請(qǐng)都可以將其捕獲并對(duì)應(yīng)腳本中的檢測惡意代碼,進(jìn)而可以有效的阻斷惡意代碼在運(yùn)行的腳本中觸發(fā)漏洞,下載木馬來危害操作系統(tǒng)的情況,使得用戶可以正常的瀏覽和使用安全的網(wǎng)頁。
文檔編號(hào)G06F17/30GK102542201SQ201110442308
公開日2012年7月4日 申請(qǐng)日期2011年12月26日 優(yōu)先權(quán)日2011年12月26日
發(fā)明者劉起, 宋申雷, 肖鵬 申請(qǐng)人:北京奇虎科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1