两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種動態(tài)檢測惡意網(wǎng)頁腳本的方法和裝置的制作方法

文檔序號:6364230閱讀:185來源:國知局
專利名稱:一種動態(tài)檢測惡意網(wǎng)頁腳本的方法和裝置的制作方法
一種動態(tài)檢測惡意網(wǎng)頁腳本的方法和裝置
技術(shù)領(lǐng)域
本發(fā)明涉及計算機安全技術(shù)領(lǐng)域,特別涉及一種動態(tài)檢測惡意網(wǎng)頁腳本的方法和 裝直。
背景技術(shù)
隨著計算機技術(shù)的不斷發(fā)展,計算機網(wǎng)絡(luò)已經(jīng)成為人們獲取信息的主要工具,隨之而來的是對計算機安全技術(shù)需求的不斷提高。計算機病毒、木馬、間諜軟件和惡意代碼是近幾年來計算機網(wǎng)絡(luò)面對的主要安全威脅,其中shellcode是利用特定漏洞的惡意代碼,一般作為數(shù)據(jù)發(fā)送給服務(wù)端造成溢出?,F(xiàn)有檢測網(wǎng)頁腳本中shellcode的方法主要包括以下兩種其一、采用靜態(tài)分析網(wǎng)頁特征的方式,預(yù)先維護(hù)一個惡意網(wǎng)頁特征表,將待檢測網(wǎng)頁腳本與該惡意網(wǎng)頁特征表進(jìn)行匹配,如果匹配到,則確認(rèn)該網(wǎng)頁腳本包含shellcode,但該方法對于采用變形手段的惡意腳本則容易失效,可靠性較低。其二、通過外圍監(jiān)控瀏覽器進(jìn)程的啟動進(jìn)程、加載模塊、內(nèi)存占用過大進(jìn)行識別,但這種方式在檢測到shellcode時通常已經(jīng)執(zhí)行了 shellcode,瀏覽器進(jìn)程可能已經(jīng)崩潰。

發(fā)明內(nèi)容本發(fā)明提供了一種動態(tài)檢測惡意網(wǎng)頁腳本的方法和裝置,以便于提高識別shellcode的可靠性,且解決現(xiàn)有識別過程中造成瀏覽器進(jìn)程崩潰的缺陷。具體技術(shù)方案如下一種動態(tài)檢測惡意網(wǎng)頁腳本的方法,所述方法包括SI、對待檢測網(wǎng)頁腳本進(jìn)行解析,在解析過程中如果通過預(yù)先對預(yù)設(shè)的用于編寫shellcode的函數(shù)所掛的函數(shù)鉤子獲取到對應(yīng)函數(shù)在內(nèi)存中產(chǎn)生的二進(jìn)制數(shù)據(jù),則執(zhí)行步驟S2 ;S2、對所述二進(jìn)制數(shù)據(jù)進(jìn)行反匯編檢測,如果在反匯編過程中檢測到自定位代碼,則確定檢測到shellcode。根據(jù)本發(fā)明一優(yōu)選實施例,在所述步驟SI之前還包括S0、新建一個瀏覽器IE控件進(jìn)程,并對預(yù)設(shè)的用于編寫shellcode的函數(shù)掛函數(shù)鉤子。根據(jù)本發(fā)明一優(yōu)選實施例,所述用于編寫shellcode的函數(shù)包括javascript類型腳本的\u函數(shù)、unescape函數(shù)或者string, fromcharcode函數(shù),vbscript類型腳本的unescape函數(shù)、string, fromcharcode函數(shù)或者chrw函數(shù)中的至少一種。根據(jù)本發(fā)明一優(yōu)選實施例,在所述步驟SI之后且執(zhí)行所述步驟S2之前,還包括S3、將獲取到的二進(jìn)制數(shù)據(jù)的開頭與預(yù)先設(shè)置的黑名單進(jìn)行匹配,如果匹配上,則確定檢測到shellcode,結(jié)束對所述待檢測網(wǎng)頁腳本的解析;否則,執(zhí)行所述步驟S2 ;其中所述黑名單包括nop指令頭。
根據(jù)本發(fā)明一優(yōu)選實施例,所述自定位代碼包括call指令代碼、pop指令代碼、FSTENV指令代碼以及SEH指令代碼中的至少一種。 根據(jù)本發(fā)明一優(yōu)選實施例,在所述步驟S2中如果確定檢測到shellcode,則結(jié)束對所述待檢測網(wǎng)頁腳本的解析,否則轉(zhuǎn)至所述步驟SI對所述待檢測網(wǎng)頁腳本繼續(xù)進(jìn)行解析。根據(jù)本發(fā)明一優(yōu)選實施例,在所述步驟S2中如果在反匯編過程中沒有檢測到自定位代碼,則繼續(xù)執(zhí)行步驟S3 S3、對所述獲取到的二進(jìn)制數(shù)據(jù)進(jìn)行高危字節(jié)碼的統(tǒng)計,如果統(tǒng)計到的高危字節(jié)碼的數(shù)量超過預(yù)設(shè)的高危字節(jié)碼數(shù)量閾值,則確定檢測到shellcode,結(jié)束對所述待檢測網(wǎng)頁腳本的解析;否則,轉(zhuǎn)至所述步驟SI對所述待檢測網(wǎng)頁腳本繼續(xù)進(jìn)行解析。根據(jù)本發(fā)明一優(yōu)選實施例,所述高危字節(jié)碼包括不可見字符和堆噴射常用地址中的至少一種。一種動態(tài)檢測惡意網(wǎng)頁腳本的方法,所述方法包括Al、對待檢測網(wǎng)頁腳本進(jìn)行解析,在解析過程中如果通過預(yù)先對預(yù)設(shè)的用于編寫shellcode的函數(shù)所掛的函數(shù)鉤子獲取到對應(yīng)函數(shù)在內(nèi)存中產(chǎn)生的二進(jìn)制數(shù)據(jù),則執(zhí)行步驟A2 ;A2、對所述二進(jìn)制數(shù)據(jù)進(jìn)行高危字節(jié)碼的統(tǒng)計,如果統(tǒng)計到的高危字節(jié)碼的數(shù)量超過預(yù)設(shè)的高危字節(jié)碼數(shù)量閾值,則確定檢測到shellcode。根據(jù)本發(fā)明一優(yōu)選實施例,在所述步驟Al之前還包括A0、新建一個瀏覽器IE控件進(jìn)程,并對預(yù)設(shè)的用于編寫shellcode的函數(shù)掛函數(shù)鉤子。根據(jù)本發(fā)明一優(yōu)選實施例,所述用于編寫shellcode的函數(shù)包括javascript類型腳本的轉(zhuǎn)義\u函數(shù)、字符串解碼unescape函數(shù)或者返回ASCII值表示的字符串string,fromcharcode 函數(shù),vbscript 類型腳本的 unescape 函數(shù)、string, fromcharcode 函數(shù)或者chrw函數(shù)中的至少一種。根據(jù)本發(fā)明一優(yōu)選實施例,在所述步驟Al之后且執(zhí)行所述步驟A2之前,還包括A3、將獲取到的二進(jìn)制數(shù)據(jù)的開頭與預(yù)先設(shè)置的黑名單進(jìn)行匹配,如果匹配上,則確定檢測到shellcode,結(jié)束對所述待檢測網(wǎng)頁腳本的解析;否則,執(zhí)行所述步驟A2 ;其中所述黑名單包括nop指令頭。根據(jù)本發(fā)明一優(yōu)選實施例,在所述步驟A2中,如果確定檢測到shellcode,結(jié)束對所述待檢測網(wǎng)頁腳本的解析;否則,轉(zhuǎn)至所述步驟Al對所述待檢測網(wǎng)頁腳本繼續(xù)進(jìn)行解析。根據(jù)本發(fā)明一優(yōu)選實施例,所述高危字節(jié)碼包括不可見字符和堆噴射常用地址中的至少一種。一種動態(tài)檢測惡意網(wǎng)頁腳本的裝置,該裝置包括腳本解析單元,用于對待檢測網(wǎng)頁腳本進(jìn)行解析,在解析過程中如果通過預(yù)先對預(yù)設(shè)的用于編寫shellcode的函數(shù)所掛的函數(shù)鉤子獲取到對應(yīng)函數(shù)在內(nèi)存中產(chǎn)生的二進(jìn)制數(shù)據(jù),則觸發(fā)反匯編檢測單元;反匯編檢測單元,用于受到觸發(fā)后,對所述二進(jìn)制數(shù)據(jù)進(jìn)行反匯編檢測,如果在反匯編過程中檢測到自定位代碼,則確定檢測到shellcode。根據(jù)本發(fā)明一優(yōu)選實施例,該裝置還包括準(zhǔn)備操作單元,用于新建一個瀏覽器IE控件進(jìn)程,并對預(yù)設(shè)的用于編寫shellcode的函數(shù)掛函數(shù)鉤子。根據(jù)本發(fā)明一優(yōu)選實施例,所述用于編寫shellcode的函數(shù)包括javascript類型腳本的\u函數(shù)、unescape函數(shù)或者string, fromcharcode函數(shù),vbscript類型腳本的unescape函數(shù)、string, fromcharcode函數(shù)或者chrw函數(shù)中 的至少一種。根據(jù)本發(fā)明一優(yōu)選實施例,該裝置還包括黑名單匹配單元;所述腳本解析單元通過觸發(fā)所述黑名單匹配單元來觸發(fā)反匯編檢測單元;所述黑名單匹配單元,用于受到觸發(fā)后,將所述二進(jìn)制數(shù)據(jù)的開頭與預(yù)先設(shè)置的黑名單進(jìn)行匹配,如果匹配上,則確定檢測到shellcode,觸發(fā)所述腳本解析單元結(jié)束對所述待檢測網(wǎng)頁腳本的解析;否則,觸發(fā)所述反匯編檢測單元;其中所述黑名單包括nop指令頭。根據(jù)本發(fā)明一優(yōu)選實施例,所述自定位代碼包括call指令代碼、pop指令代碼、FSTENV指令代碼以及SEH指令代碼中的至少一種。根據(jù)本發(fā)明一優(yōu)選實施例,所述反匯編檢測單元如果確定檢測到shellcode,則觸發(fā)所述腳本解析單元結(jié)束對所述待檢測網(wǎng)頁腳本的解析;否則,觸發(fā)所述腳本解析單元對所述待檢測網(wǎng)頁腳本繼續(xù)進(jìn)行解析。根據(jù)本發(fā)明一優(yōu)選實施例,該裝置還包括高危碼統(tǒng)計單元;所述反匯編檢測單元如果在反匯編過程中沒有檢測到自定位代碼,則觸發(fā)所述高危碼統(tǒng)計單元;所述高危碼統(tǒng)計單元,用于受到觸發(fā)后,對所述二進(jìn)制數(shù)據(jù)進(jìn)行高危字節(jié)碼的統(tǒng)計,如果統(tǒng)計到的高危字節(jié)碼的數(shù)量超過預(yù)設(shè)的高危字節(jié)碼數(shù)量閾值,則確定檢測到shellcode,觸發(fā)所述腳本解析單元結(jié)束對所述待檢測網(wǎng)頁腳本的解析;否則,觸發(fā)所述腳本解析單元對所述待檢測網(wǎng)頁腳本繼續(xù)進(jìn)行解析。根據(jù)本發(fā)明一優(yōu)選實施例,所述高危字節(jié)碼包括不可見字符和堆噴射常用地址中的至少一種。一種動態(tài)檢測惡意網(wǎng)頁腳本的裝置,該裝置包括腳本解析單元,用于對待檢測網(wǎng)頁腳本進(jìn)行解析,在解析過程中如果通過預(yù)先對預(yù)設(shè)的用于編寫shellcode的函數(shù)所掛的函數(shù)鉤子獲取到對應(yīng)函數(shù)在內(nèi)存中產(chǎn)生的二進(jìn)制數(shù)據(jù),則觸發(fā)高危碼統(tǒng)計單元;高危碼統(tǒng)計單元,用于受到觸發(fā)后,對所述二進(jìn)制數(shù)據(jù)進(jìn)行高危字節(jié)碼的統(tǒng)計,如果統(tǒng)計到的高危字節(jié)碼的數(shù)量超過預(yù)設(shè)的高危字節(jié)碼數(shù)量閾值,則確定檢測到shellcode。根據(jù)本發(fā)明一優(yōu)選實施例,該裝置還包括準(zhǔn)備操作單元,用于新建一個瀏覽器IE控件進(jìn)程,并對預(yù)設(shè)的用于編寫shellcode的函數(shù)掛函數(shù)鉤子。根據(jù)本發(fā)明一優(yōu)選實施例,所述用于編寫shellcode的函數(shù)包括javascript類型腳本的轉(zhuǎn)義\u函數(shù)、字符串解碼unescape函數(shù)或者返回ASCII值表示的字符串string,fromcharcode 函數(shù),vbscript 類型腳本的 unescape 函數(shù)、string, fromcharcode 函數(shù)或者chrw函數(shù)中的至少一種。根據(jù)本發(fā)明一優(yōu)選實施例,該裝置還包括黑名單匹配單元;所述腳本解析單元通過觸發(fā)所述黑名單匹配單元來觸發(fā)高危碼統(tǒng)計單元;所述黑名單匹配單元,用于受到觸發(fā)后,將所述二進(jìn)制數(shù)據(jù)的開頭與預(yù)先設(shè)置的黑名單進(jìn)行匹配,如果匹配上,則確定檢測到shellcode,觸發(fā)所述腳本解析單元結(jié)束對所述待檢測網(wǎng)頁腳本的解析;否則,觸發(fā)所述高危碼統(tǒng)計單元;其中所述黑名單包括nop指令頭。根據(jù)本發(fā)明一優(yōu)選實施例,所述高危碼統(tǒng)計單元如果確定 檢測到shellcode,則觸發(fā)所述腳本解析單元結(jié)束對所述待檢測網(wǎng)頁腳本的解析;否則,觸發(fā)所述腳本解析單元對所述待檢測網(wǎng)頁腳本繼續(xù)進(jìn)行解析。根據(jù)本發(fā)明一優(yōu)選實施例,所述高危字節(jié)碼包括不可見字符和堆噴射常用地址中的至少一種。由以上技術(shù)方案可以看出,本發(fā)明采用動態(tài)解析的方式,通過加載網(wǎng)頁腳本進(jìn)行動態(tài)解析,并在動態(tài)解析過程實現(xiàn)檢測,相比較靜態(tài)分析的方式即便采用變形手段的惡意腳本也能夠檢測出shellcode,提高了可靠性和檢出率。另外,在腳本漏洞觸發(fā)前就能夠檢測出shellcode,相比較通過外圍監(jiān)控瀏覽器進(jìn)程的方式,避免了瀏覽器進(jìn)程的崩潰。

圖I為本發(fā)明實施例一提供的方法流程圖;圖2為本發(fā)明實施例二提供的另一種方法流程圖;圖3為本發(fā)明實施例三提供的裝置結(jié)構(gòu)圖;圖4為本發(fā)明實施例四提供的另一種裝置結(jié)構(gòu)圖;圖5為本發(fā)明實施例五提供的再一種裝置結(jié)構(gòu)示意圖。
具體實施方式為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖和具體實施例對本發(fā)明進(jìn)行詳細(xì)描述。實施例一、圖I為本發(fā)明實施例一提供的方法流程圖,如圖I所示,該方法可以包括以下步驟步驟101 :預(yù)先對預(yù)設(shè)的用于編寫shellcode的函數(shù)掛函數(shù)鉤子。通常網(wǎng)頁腳本中是通過一系列的腳本函數(shù)編寫shellcode,從而可以在內(nèi)存中生成可控的惡意數(shù)據(jù)進(jìn)行攻擊的,即這些用于編寫shellcode的函數(shù)能夠在內(nèi)存中生成指定格式的二進(jìn)制數(shù)據(jù)。這些預(yù)設(shè)的用于編寫shellcode的函數(shù)可以包括但不限于javascript類型腳本的用于轉(zhuǎn)義的\u函數(shù)、用于字符串解碼的unescape函數(shù)或者用于返回ASCII值表不的字符串的string, fromcharcode函數(shù),vbscript類型腳本的unescape函數(shù)、string, fromcharcode函數(shù)或者用于返回與指定字符代碼相關(guān)聯(lián)的字符的chrw函數(shù)中的至少一種。本步驟是一個準(zhǔn)備步驟,通過新建一個瀏覽器(IE)控件進(jìn)程,并在上述函數(shù)上掛函數(shù)鉤子,可以在待檢測網(wǎng)頁腳本的過程中獲取到這些函數(shù)在內(nèi)存中生成的二進(jìn)制數(shù)據(jù)。步驟102 :對待檢測網(wǎng)頁腳本進(jìn)行解析,在解析過程中如果通過已掛的函數(shù)鉤子獲取到對應(yīng)函數(shù)在內(nèi)存中產(chǎn)生的二進(jìn)制數(shù)據(jù),則執(zhí)行步驟IO 3。 一旦解析到用于編寫shellcode的函數(shù),則通過已掛的函數(shù)鉤子就能夠獲取到解析到的函數(shù)在內(nèi)存中產(chǎn)生的二進(jìn)制數(shù)據(jù),并對該二進(jìn)制數(shù)據(jù)進(jìn)行以下步驟的處理,否則繼續(xù)進(jìn)行解析。步驟103 :將獲取到的二進(jìn)制數(shù)據(jù)與預(yù)先設(shè)置的黑名單進(jìn)行匹配,如果匹配上,則檢測到shellcode,否則執(zhí)行步驟104。為了保護(hù)shellcode的完整性,通常在shellcode的頭部會加上一小段空(nop)指令頭,因此可以預(yù)先將nop指令頭設(shè)置為黑名單,在本步驟中將獲取到的二進(jìn)制數(shù)據(jù)的開頭與預(yù)先設(shè)置的黑名單進(jìn)行匹配,如果匹配上則說明該二進(jìn)制數(shù)據(jù)的開頭為nop指令頭,認(rèn)為該網(wǎng)頁腳本為惡意,識別出shellcode。其中nop指令頭包括但不限于9090、5858、0c0c、0d0d等。如果在本步驟中沒有匹配上黑名單,則需要進(jìn)一步通過以下步驟識別shellcode,需要說明的是,本步驟并不是本發(fā)明的必要步驟,通過本步驟能夠快速地檢測出shellcode,提高檢測效率,也可以在步驟102之后直接執(zhí)行步驟104。步驟104 :對二進(jìn)制數(shù)據(jù)進(jìn)行反匯編檢測,如果在反匯編過程中檢測到自定位代碼,則檢測到shellcode ;否則轉(zhuǎn)至步驟102對待檢測腳本繼續(xù)進(jìn)行解析。在本步驟中逐字節(jié)對二進(jìn)制數(shù)據(jù)進(jìn)行反匯編,并檢測是否存在自定位代碼。一般來說惡意網(wǎng)頁腳本中的shellcode都是加密的,要進(jìn)行動態(tài)解密必須要經(jīng)過一個自定位過程,所謂自定位代碼就是shellcode獲取自己在內(nèi)存中位置的代碼,包括但不限于過程調(diào)用(call)指令代碼、出棧(pop)指令代碼、浮點檢查保護(hù)環(huán)境(FSTENV)指令代碼、高強度加花(SEH)指令代碼等。如果將內(nèi)存中的二進(jìn)制數(shù)據(jù)進(jìn)行反匯編后能夠檢測出自定位代碼,則說明網(wǎng)頁腳本中存在shellcode,本步驟的檢測方式具有極高的檢測準(zhǔn)確率。另外,在步驟104中如果在反匯編過程中沒有檢測到自定位代碼,還可以進(jìn)一步執(zhí)行高危字節(jié)碼的統(tǒng)計步驟,這種情況通過實施例二進(jìn)行描述。實施例二、圖2為本發(fā)明實施例二提供的另一種方法流程圖,如圖2所示,該方法可以包括以下步驟步驟201同實施例一中的步驟101。步驟202同實施例一中的步驟102。步驟203同實施例一中的步驟103。同樣步驟203也是本實施例的可選步驟。步驟204同實施例一中的步驟104,但如果在反匯編過程中沒有檢測到自定位代碼,則執(zhí)行步驟205。步驟205 :對步驟202獲取到的二進(jìn)制數(shù)據(jù)進(jìn)行高危字節(jié)碼的統(tǒng)計,如果高危字節(jié)碼的數(shù)量超過預(yù)設(shè)的高危字節(jié)碼數(shù)量閾值,則檢測到shellcode,否則轉(zhuǎn)至步驟202對待檢測網(wǎng)頁腳本繼續(xù)進(jìn)行解析,直至解析結(jié)束。
高危字節(jié)碼是從大量shellcode樣本中提取出的特征,經(jīng)過對大量shellcode樣本的分析,確定了一系列只有shellcode會使用的字符區(qū)間,這些區(qū)間一部分是不可見字符區(qū)間,所謂不可見字符是指Unicode字符表中所有不屬于鍵盤上可見的字符且不屬于漢字的字符。另一部分是通過經(jīng)驗總結(jié)出的堆噴射常用地址,包括但不限于AcOcOcOc、OdOdOdOdOd,90909090,14141414 等。預(yù)設(shè)的高危字節(jié)碼數(shù)量閾值可以經(jīng)驗值進(jìn)行設(shè)置,例如如果高危字節(jié)碼采用不可見字符,則可以設(shè)置高危字節(jié)碼數(shù)量閾值為5 ;如果高危字節(jié)碼采用堆噴射常用地址,則可以設(shè)置高危字節(jié)碼數(shù)量閾值為I。本步驟可以看做是對反匯編檢測的進(jìn)一步補充,從而進(jìn)一步提高shellcode的檢出率。另外,除了上述方式之外,也可以主要通過統(tǒng)計高危字節(jié)碼的方式來檢測shellcode,黑名單匹配和/或反匯編檢測作為進(jìn)一步的處理,黑名單匹配和反匯編檢測同時作為統(tǒng)計高危字節(jié)碼的進(jìn)一步處理的流程可以參見圖2,如果只有黑名單匹配作為統(tǒng)計高危字節(jié)碼的進(jìn)一步處理流程,則在圖2所示的流程中,執(zhí)行步驟203未匹配上黑名單時,直接執(zhí)行步驟205,而不再執(zhí)行步驟204。如果只有反匯編檢測作為統(tǒng)計高危字節(jié)碼的進(jìn)一步處理流程,則在圖2所示的流程中,執(zhí)行完步驟202直接執(zhí)行步驟204,而不執(zhí)行步驟203。在實施例一和實施例二所示的流程中,一旦檢測到shellcode,則停止對網(wǎng)頁腳本的解析,并可以進(jìn)一步將檢測結(jié)果進(jìn)行上報。下面舉一個具體的實例,首先對javascript類型腳本的\u函數(shù)、unescape函數(shù)以及string, fromcharcode函數(shù)掛上函數(shù)鉤子,假設(shè)待檢測的網(wǎng)頁腳本如下<htmlXbodyXscript language = " javascript" >varnbcode=' % u7468% u7074% u2f3a% u772f% u782e% u7274% u6263%u632e% u6d6f% u393a% u6d2f% u2f6d% u787a% u2e32% u7865% u0065/ ;var J = function(n){return String. fromCharCode(n'8)} ;eval (J (110)+J(I25) +J (102) +J (107) +J (124) +J (97) +J (103) +J (102) +J (40) +J (102) +J (106) +J (32) +J (33) +J (115) +J (126) +J (105) +J (122) +J (40) +J (102) +J (109) +J (124) +J (106) +J (103) +J (103) +J
(101)+J (40) +J (53) +J (40) +J (125) +J (102) +J (109) +J (123) +J (107) +J (105) +J (120) +J (109) +J (32) +J (47) +J (45) +J (125) +J (49) +J (56) +J (49) +J (56) +J (45) +J (125) +J (49) +J (56) +J (49) +J (56) +J (45) +J (125) +J (61) +J (60) +J (109) +J (106) +J (45) +J (125) +J (63) +J (61) +J(48) +J (106) +J (45) +J (125) +J (48) +J (106) +J (59) +J (107) +J (45) +J (125) +J (59) +J (61) +J(63) +J (60) +J (45) +J (125) +J (56) +J (59) +J (63) +J (48) +J (45) +J (125) +J (61) +J (62) +J (I I
0)+J (61) +J (45) +J (125) +J (63) +J (62) +J (48) +J (106) +J (45) +J (125) +J (56) +J (59) +J (58)+J (56) +J (45) +J (125) +J (59) +J (59) +J(IlO) +J (61) +J (45) +J (125) +J (60) +J (49) +J (107) +J (49) +J (45) +J (125) +J (105) +J (108) +J (60) +J (57) +J (45) +J (125) +J (108) +J (106) +J (59)+J (59) +J (45) +J (125) +J (56) +J (110) +J (59) +J (62) +J (45) +J (125) +J (57) +J (60) +J (106) +J (109) +J (45) +J (125) +J (59) +J (48) +J (58) +J (48) +J (45) +J (125) +J (63) +J (60) +J(IlO) +J
(58)+J (45) +J (125) +J (107) +J (57) +J (56) +J (48) +J (45) +J (125) +J (56) +J (108) +J (107) +J
(106)+J (45) +J (125) +J (108) +J (105) +J (56) +J (59) +J (45) +J (125) +J (109) +J (106) +J (60)
權(quán)利要求
1.一種動態(tài)檢測惡意網(wǎng)頁腳本的方法,其特征在于,所述方法包括 51、對待檢測網(wǎng)頁腳本進(jìn)行解析,在解析過程中如果通過預(yù)先對預(yù)設(shè)的用于編寫shellcode的函數(shù)所掛的函數(shù)鉤子獲取到對應(yīng)函數(shù)在內(nèi)存中產(chǎn)生的二進(jìn)制數(shù)據(jù),則執(zhí)行步驟S2 ; 52、對所述二進(jìn)制數(shù)據(jù)進(jìn)行反匯編檢測,如果在反匯編過程中檢測到自定位代碼,則確定檢測到shellcode。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,在所述步驟SI之前還包括 SO、新建一個瀏覽器IE控件進(jìn)程,并對預(yù)設(shè)的用于編寫shellcode的函數(shù)掛函數(shù)鉤子。
3.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述用于編寫shellcode的函數(shù)包括javascript類型腳本的用于轉(zhuǎn)義的\u函數(shù)、用于字符串解碼的unescape函數(shù)或者用于返回ASCII值表示的字符串的string, fromcharcode函數(shù),vbscript類型腳本的 unescape函數(shù)、string, fromcharcode函數(shù)或者用于返回與指定字符代碼相關(guān)聯(lián)的字符的chrw函數(shù)中的至少一種。
4.根據(jù)權(quán)利要求I所述的方法,其特征在于,在所述步驟SI之后且執(zhí)行所述步驟S2之前,還包括 53、將獲取到的二進(jìn)制數(shù)據(jù)的開頭與預(yù)先設(shè)置的黑名單進(jìn)行匹配,如果匹配上,則確定檢測到shellcode,結(jié)束對所述待檢測網(wǎng)頁腳本的解析;否則,執(zhí)行所述步驟S2 ; 其中所述黑名單包括nop指令頭。
5.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述自定位代碼包括過程調(diào)用call指令代碼、出棧pop指令代碼、浮點檢查保護(hù)環(huán)境FSTENV指令代碼以及高強度加花SHl指令代碼中的至少一種。
6.根據(jù)權(quán)利要求I所述的方法,其特征在于,在所述步驟S2中如果確定檢測到shellcode,則結(jié)束對所述待檢測網(wǎng)頁腳本的解析,否則轉(zhuǎn)至所述步驟SI對所述待檢測網(wǎng)頁腳本繼續(xù)進(jìn)行解析。
7.根據(jù)權(quán)利要求I所述的方法,其特征在于,在所述步驟S2中如果在反匯編過程中沒有檢測到自定位代碼,則繼續(xù)執(zhí)行步驟S3 S3、對所述獲取到的二進(jìn)制數(shù)據(jù)進(jìn)行高危字節(jié)碼的統(tǒng)計,如果統(tǒng)計到的高危字節(jié)碼的數(shù)量超過預(yù)設(shè)的高危字節(jié)碼數(shù)量閾值,則確定檢測到shellcode,結(jié)束對所述待檢測網(wǎng)頁腳本的解析;否則,轉(zhuǎn)至所述步驟SI對所述待檢測網(wǎng)頁腳本繼續(xù)進(jìn)行解析。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述高危字節(jié)碼包括不可見字符和堆噴射常用地址中的至少一種。
9.一種動態(tài)檢測惡意網(wǎng)頁腳本的方法,其特征在于,所述方法包括 Al、對待檢測網(wǎng)頁腳本進(jìn)行解析,在解析過程中如果通過預(yù)先對預(yù)設(shè)的用于編寫shellcode的函數(shù)所掛的函數(shù)鉤子獲取到對應(yīng)函數(shù)在內(nèi)存中產(chǎn)生的二進(jìn)制數(shù)據(jù),則執(zhí)行步驟A2 ; A2、對所述二進(jìn)制數(shù)據(jù)進(jìn)行高危字節(jié)碼的統(tǒng)計,如果統(tǒng)計到的高危字節(jié)碼的數(shù)量超過預(yù)設(shè)的高危字節(jié)碼數(shù)量閾值,則確定檢測到shellcode。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,在所述步驟Al之前還包括 A0、新建一個瀏覽器IE控件進(jìn)程,并對預(yù)設(shè)的用于編寫shellcode的函數(shù)掛函數(shù)鉤子。
11.根據(jù)權(quán)利要求9或10所述的方法,其特征在于,所述用于編寫shellcode的函數(shù)包括javascript類型腳本的用于轉(zhuǎn)義的\u函數(shù)、用于字符串解碼的unescape函數(shù)或者用于返回ASCII值表示的字符串的string, fromcharcode函數(shù),vbscript類型腳本的unescape函數(shù)、string, fromcharcode函數(shù)或者用于返回與指定字符代碼相關(guān)聯(lián)的字符的chrw函數(shù)中的至少一種。
12.根據(jù)權(quán)利要求9所述的方法,其特征在于,在所述步驟Al之后且執(zhí)行所述步驟A2之前,還包括 A3、將獲取到的二進(jìn)制數(shù)據(jù)的開頭與預(yù)先設(shè)置的黑名單進(jìn)行匹配,如果匹配上,則確定檢測到shellcode,結(jié)束對所述待檢測網(wǎng)頁腳本的解析;否則,執(zhí)行所述步驟A2 ; 其中所述黑名單包括nop指令頭。
13.根據(jù)權(quán)利要求9所述的方法,其特征在于,在所述步驟A2中,如果確定檢測到shellcode,結(jié)束對所述待檢測網(wǎng)頁腳本的解析;否則,轉(zhuǎn)至所述步驟Al對所述待檢測網(wǎng)頁腳本繼續(xù)進(jìn)行解析。
14.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述高危字節(jié)碼包括不可見字符和堆噴射常用地址中的至少一種。
15.一種動態(tài)檢測惡意網(wǎng)頁腳本的裝置,其特征在于,該裝置包括 腳本解析單元,用于對待檢測網(wǎng)頁腳本進(jìn)行解析,在解析過程中如果通過預(yù)先對預(yù)設(shè)的用于編寫shellcode的函數(shù)所掛的函數(shù)鉤子獲取到對應(yīng)函數(shù)在內(nèi)存中產(chǎn)生的二進(jìn)制數(shù)據(jù),則觸發(fā)反匯編檢測單元; 反匯編檢測單元,用于受到觸發(fā)后,對所述二進(jìn)制數(shù)據(jù)進(jìn)行反匯編檢測,如果在反匯編過程中檢測到自定位代碼,則確定檢測到shellcode。
16.根據(jù)權(quán)利要求15所述的裝置,其特征在于,該裝置還包括 準(zhǔn)備操作單元,用于新建一個瀏覽器IE控件進(jìn)程,并對預(yù)設(shè)的用于編寫shellcode的函數(shù)掛函數(shù)鉤子。
17.根據(jù)權(quán)利要求15或16所述的裝置,其特征在于,所述用于編寫shellcode的函數(shù)包括javascript類型腳本的用于轉(zhuǎn)義的\u函數(shù)、用于字符串解碼的unescape函數(shù)或者用于返回ASCII值表示的字符串的string, fromcharcode函數(shù),vbscript類型腳本的unescape函數(shù)、string, fromcharcode函數(shù)或者用于返回與指定字符串代碼相關(guān)聯(lián)的字符的chrw函數(shù)中的至少一種。
18.根據(jù)權(quán)利要求15所述的裝置,其特征在于,該裝置還包括黑名單匹配單元; 所述腳本解析單元通過觸發(fā)所述黑名單匹配單元來觸發(fā)反匯編檢測單元; 所述黑名單匹配單元,用于受到觸發(fā)后,將所述二進(jìn)制數(shù)據(jù)的開頭與預(yù)先設(shè)置的黑名單進(jìn)行匹配,如果匹配上,則確定檢測到shellcode,觸發(fā)所述腳本解析單元結(jié)束對所述待檢測網(wǎng)頁腳本的解析;否則,觸發(fā)所述反匯編檢測單元;其中所述黑名單包括nop指令頭。
19.根據(jù)權(quán)利要求15所述的裝置,其特征在于,所述自定位代碼包括過程調(diào)用call指令代碼、出棧pop指令代碼、浮點檢查保護(hù)環(huán)境FSTENV指令代碼以及高強度加花SHl指令代碼中的至少一種。
20.根據(jù)權(quán)利要求15所述的裝置,其特征在于,所述反匯編檢測單元如果確定檢測到shellcode,則觸發(fā)所述腳本解析單元結(jié)束對所述待檢測網(wǎng)頁腳本的解析;否則,觸發(fā)所述腳本解析單元對所述待檢測網(wǎng)頁腳本繼續(xù)進(jìn)行解析。
21.根據(jù)權(quán)利要求15所述的裝置,其特征在于,該裝置還包括高危碼統(tǒng)計單元; 所述反匯編檢測單元如果在反匯編過程中沒有檢測到自定位代碼,則觸發(fā)所述高危碼統(tǒng)計單元; 所述高危碼統(tǒng)計單元,用于受到觸發(fā)后,對所述二進(jìn)制數(shù)據(jù)進(jìn)行高危字節(jié)碼的統(tǒng)計,如果統(tǒng)計到的高危字節(jié)碼的數(shù)量超過預(yù)設(shè)的高危字節(jié)碼數(shù)量閾值,則確定檢測到shellcode,觸發(fā)所述腳本解析單元結(jié)束對所述待檢測網(wǎng)頁腳本的解析;否則,觸發(fā)所述腳本解析單元對所述待檢測網(wǎng)頁腳本繼續(xù)進(jìn)行解析。
22.根據(jù)權(quán)利要求21所述的裝置,其特征在于,所述高危字節(jié)碼包括不可見字符和堆噴射常用地址中的至少一種。
23.一種動態(tài)檢測惡意網(wǎng)頁腳本的裝置,其特征在于,該裝置包括 腳本解析單元,用于對待檢測網(wǎng)頁腳本進(jìn)行解析,在解析過程中如果通過預(yù)先對預(yù)設(shè)的用于編寫shellcode的函數(shù)所掛的函數(shù)鉤子獲取到對應(yīng)函數(shù)在內(nèi)存中產(chǎn)生的二進(jìn)制數(shù)據(jù),則觸發(fā)高危碼統(tǒng)計單元; 高危碼統(tǒng)計單元,用于受到觸發(fā)后,對所述二進(jìn)制數(shù)據(jù)進(jìn)行高危字節(jié)碼的統(tǒng)計,如果統(tǒng)計到的高危字節(jié)碼的數(shù)量超過預(yù)設(shè)的高危字節(jié)碼數(shù)量閾值,則確定檢測到shellcode。
24.根據(jù)權(quán)利要求23所述的裝置,其特征在于,該裝置還包括 準(zhǔn)備操作單元,用于新建一個瀏覽器IE控件進(jìn)程,并對預(yù)設(shè)的用于編寫shellcode的函數(shù)掛函數(shù)鉤子。
25.根據(jù)權(quán)利要求23或24所述的裝置,其特征在于,所述用于編寫shellcode的函數(shù)包括javascript類型腳本的用于轉(zhuǎn)義的\u函數(shù)、用于字符串解碼的unescape函數(shù)或者用于返回ASCII值表示的字符串的string, fromcharcode函數(shù),vbscript類型腳本的unescape函數(shù)、string, fromcharcode函數(shù)或者用于返回與指定字符串代碼相關(guān)聯(lián)的字符的chrw函數(shù)中的至少一種。
26.根據(jù)權(quán)利要求23所述的裝置,其特征在于,該裝置還包括黑名單匹配單元; 所述腳本解析單元通過觸發(fā)所述黑名單匹配單元來觸發(fā)高危碼統(tǒng)計單元; 所述黑名單匹配單元,用于受到觸發(fā)后,將所述二進(jìn)制數(shù)據(jù)的開頭與預(yù)先設(shè)置的黑名單進(jìn)行匹配,如果匹配上,則確定檢測到shellcode,觸發(fā)所述腳本解析單元結(jié)束對所述待檢測網(wǎng)頁腳本的解析;否則,觸發(fā)所述高危碼統(tǒng)計單元;其中所述黑名單包括nop指令頭。
27.根據(jù)權(quán)利要求23所述的裝置,其特征在于,所述高危碼統(tǒng)計單元如果確定檢測到shellcode,則觸發(fā)所述腳本解析單元結(jié)束對所述待檢測網(wǎng)頁腳本的解析;否則,觸發(fā)所述腳本解析單元對所述待檢測網(wǎng)頁腳本繼續(xù)進(jìn)行解析。
28.根據(jù)權(quán)利要求23所述的裝置,其特征在于,所述高危字節(jié)碼包括不可見字符和堆噴射常用地址中的至少一種。
全文摘要
本發(fā)明提供了一種動態(tài)檢測惡意網(wǎng)頁腳本的方法和裝置,其中方法包括S1、對待檢測網(wǎng)頁腳本進(jìn)行解析,在解析過程中如果通過預(yù)先對預(yù)設(shè)的用于編寫shellcode的函數(shù)所掛的函數(shù)鉤子獲取到對應(yīng)函數(shù)在內(nèi)存中產(chǎn)生的二進(jìn)制數(shù)據(jù),則執(zhí)行步驟S2;S2、對所述二進(jìn)制數(shù)據(jù)進(jìn)行反匯編檢測,如果在反匯編過程中檢測到自定位代碼,則確定檢測到shellcode。本發(fā)明通過加載網(wǎng)頁腳本進(jìn)行動態(tài)解析,并在動態(tài)解析過程中實現(xiàn)檢測,相比較靜態(tài)分析的方式提高了可靠性和檢出率,在腳本漏洞觸發(fā)前就能夠檢測出shellcode,相比較通過外圍監(jiān)控瀏覽器進(jìn)程的方式,避免了瀏覽器進(jìn)程的崩潰。
文檔編號G06F21/00GK102622543SQ20121002478
公開日2012年8月1日 申請日期2012年2月6日 優(yōu)先權(quán)日2012年2月6日
發(fā)明者黃正 申請人:北京百度網(wǎng)訊科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
修文县| 页游| 哈尔滨市| 辉县市| 岚皋县| 邳州市| 平南县| 龙陵县| 云林县| 鹤庆县| 新竹市| 扎鲁特旗| 北票市| 辉南县| 大洼县| 昔阳县| 互助| 文昌市| 安阳市| 濉溪县| 浦江县| 朝阳县| 唐海县| 山阳县| 子长县| 崇州市| 永丰县| 安泽县| 曲麻莱县| 潞西市| 全南县| 舟曲县| 年辖:市辖区| 五台县| 鲁甸县| 凤城市| 青川县| 定襄县| 梨树县| 昌乐县| 达拉特旗|