專(zhuān)利名稱(chēng):一種檢測(cè)堆噴射型網(wǎng)頁(yè)木馬的方法和裝置的制作方法
一種檢測(cè)堆噴射型網(wǎng)頁(yè)木馬的方法和裝置
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)安全技術(shù)領(lǐng)域,特別涉及一種檢測(cè)堆噴射型網(wǎng)頁(yè)木馬的方法和
>J-U ρ α裝直。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,計(jì)算機(jī)網(wǎng)絡(luò)已經(jīng)成為人們獲取信息的主要工具,隨之而來(lái)的是對(duì)計(jì)算機(jī)安全技術(shù)需求的不斷提高。計(jì)算機(jī)病毒、木馬、間諜軟件和惡意代碼是近幾年來(lái)計(jì)算機(jī)網(wǎng)絡(luò)面對(duì)的主要安全威脅,其中堆噴射(Heap Spraying)型網(wǎng)頁(yè)木馬是近期出現(xiàn)的一種新型木馬,堆噴射型網(wǎng)頁(yè)木馬因其通用性強(qiáng)、生成惡意網(wǎng)頁(yè)簡(jiǎn)單而被廣泛的采用,目前已占網(wǎng)頁(yè)木馬的90%左右,因此堆噴射型網(wǎng)頁(yè)木馬的檢測(cè)已是迫在眉睫的任務(wù)?,F(xiàn)有檢測(cè)堆噴射型網(wǎng)頁(yè)木馬的方式為監(jiān)控javascript腳本引擎的內(nèi)存分配函數(shù),如果檢測(cè)到內(nèi)存分配函數(shù)為某個(gè)寫(xiě)操作分配了一塊過(guò)大的內(nèi)存,則判定為堆噴射網(wǎng)頁(yè)木馬,然而現(xiàn)有技術(shù)的該方式監(jiān)控內(nèi)存分配函數(shù)容易導(dǎo)致誤報(bào),將正常的寫(xiě)內(nèi)存誤報(bào)為木馬,且僅針對(duì)javascprit腳本,適用范圍較窄。
發(fā)明內(nèi)容本發(fā)明提供了一種檢測(cè)堆噴射型網(wǎng)頁(yè)木馬的方法和裝置,用以提高檢測(cè)準(zhǔn)確率, 擴(kuò)大適用范圍。具體技術(shù)方案如下一種檢測(cè)堆噴射型網(wǎng)頁(yè)木馬的方法,該方法包括SI、解析待檢測(cè)網(wǎng)頁(yè)的腳本,在解析過(guò)程中通過(guò)掛函數(shù)鉤子監(jiān)測(cè)所述待檢測(cè)網(wǎng)頁(yè)的腳本變量,如果監(jiān)測(cè)到所述待檢測(cè)網(wǎng)頁(yè)的腳本變量的長(zhǎng)度超過(guò)預(yù)設(shè)的長(zhǎng)度閾值,則執(zhí)行步驟S3 ;S3、對(duì)所述長(zhǎng)度超過(guò)預(yù)設(shè)長(zhǎng)度閾值的腳本變量的內(nèi)容進(jìn)行反匯編檢測(cè),如果不能順利反匯編,則轉(zhuǎn)至所述步驟Si繼續(xù)解析所述待檢測(cè)網(wǎng)頁(yè)的腳本,如果能夠順利反匯編, 則認(rèn)為檢測(cè)到噴射特性,執(zhí)行步驟S4 ;S4、確定檢測(cè)到堆噴射型網(wǎng)頁(yè)木馬。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,在所述步驟SI之前還包括SO :新建一個(gè)瀏覽器IE控件進(jìn)程,針對(duì)預(yù)設(shè)類(lèi)型腳本中導(dǎo)致腳本變量變化的操作掛上函數(shù)鉤子。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,在所述步驟SI和所述步驟S3之間還包括S2、對(duì)所述長(zhǎng)度超過(guò)長(zhǎng)度閾值的腳本變量?jī)?nèi)容進(jìn)行重復(fù)性檢測(cè),如果檢測(cè)到重復(fù)性達(dá)到預(yù)設(shè)重復(fù)性要求,則執(zhí)行所述步驟S3 ;否則,轉(zhuǎn)至所述步驟SI繼續(xù)解析所述待檢測(cè)網(wǎng)頁(yè)的腳本。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述重復(fù)性檢測(cè)為對(duì)所述長(zhǎng)度超過(guò)長(zhǎng)度閾值的腳本變量的有效存儲(chǔ)空間內(nèi)容進(jìn)行檢測(cè),如果所述有效存儲(chǔ)空間內(nèi)容中存在數(shù)據(jù)連續(xù)重復(fù)出現(xiàn),且連續(xù)重復(fù)出現(xiàn)的次數(shù)超過(guò)預(yù)設(shè)的次數(shù)閾值, 則認(rèn)為重復(fù)性達(dá)到預(yù)設(shè)重復(fù)性要求。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,在所述步驟S3中如果能夠順利反匯編,則對(duì)所述長(zhǎng)度超過(guò)預(yù)設(shè)長(zhǎng)度閾值的腳本變量的內(nèi)容重新進(jìn)行一次反匯編檢測(cè),如果不能順利反匯編,則轉(zhuǎn)至所述步驟Si繼續(xù)解析所述待檢測(cè)網(wǎng)頁(yè)的腳本,如果仍能夠順利反匯編,則認(rèn)為檢測(cè)到噴射特性。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述步驟S3中在反匯編過(guò)程中如果發(fā)生了指令解析錯(cuò)誤、反匯編代碼中存在分支跳轉(zhuǎn)指令或反匯編代碼操作了不可預(yù)知的高地址內(nèi)存中的至少一種,則確定不能順利反匯編;否則確定能夠順利反匯編。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,在反匯編檢測(cè)時(shí),從所述長(zhǎng)度超過(guò)預(yù)設(shè)長(zhǎng)度閾值的腳本變量的有效存儲(chǔ)空間中隨機(jī)選擇一個(gè)地址開(kāi)始進(jìn)行反匯編。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,在所述步驟SI之前還包括初始化噴射計(jì)數(shù)值;在所述步驟S3中認(rèn)為檢測(cè)到堆噴射特性時(shí),將所述噴射計(jì)數(shù)值進(jìn)行自加;在執(zhí)行所述步驟S4之前還包括判斷當(dāng)前的噴射計(jì)數(shù)值是否達(dá)到預(yù)設(shè)的計(jì)數(shù)閾值,如果是,繼續(xù)執(zhí)行所述步驟S4 ;否則,轉(zhuǎn)至所述步驟SI繼續(xù)解析所述待檢測(cè)網(wǎng)頁(yè)的腳本。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,在所述步驟S4中采用發(fā)出警報(bào)、上報(bào)檢測(cè)信息或者將所述待檢測(cè)網(wǎng)頁(yè)加入惡意網(wǎng)頁(yè)庫(kù)中的至少一種處理方式。一種檢測(cè)堆噴射型網(wǎng)頁(yè)木馬的裝置,該裝置包括腳本解析單元,用于解析待檢測(cè)網(wǎng)頁(yè)的腳本,在解析過(guò)程中通過(guò)掛函數(shù)鉤子監(jiān)測(cè)所述待檢測(cè)網(wǎng)頁(yè)的腳本變量,如果檢測(cè)到所述待檢測(cè)網(wǎng)頁(yè)的腳本變量的長(zhǎng)度超過(guò)預(yù)設(shè)的長(zhǎng)度閾值,則觸發(fā)反匯編檢測(cè)單元;反匯編檢測(cè)單元,用于受到觸發(fā)后,對(duì)所述長(zhǎng)度超過(guò)預(yù)設(shè)長(zhǎng)度閾值的腳本變量的內(nèi)容進(jìn)行反匯編檢測(cè),如果不能順利反匯編,則觸發(fā)所述腳本解析單元繼續(xù)解析所述待檢測(cè)網(wǎng)頁(yè)的腳本,如果能夠順利反匯編,則認(rèn)為檢測(cè)到噴射特性,觸發(fā)結(jié)果確輸出單元;結(jié)果輸出單元,用于受到觸發(fā)后,確定檢測(cè)到堆噴射型網(wǎng)頁(yè)木馬。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,該裝置還包括預(yù)處理單元,用于新建一個(gè)瀏覽器IE 控件進(jìn)程,針對(duì)預(yù)設(shè)類(lèi)型腳本中導(dǎo)致腳本變量變化的操作掛上函數(shù)鉤子;所述腳本解析單元通過(guò)已掛的所述函數(shù)鉤子監(jiān)測(cè)所述待檢測(cè)網(wǎng)頁(yè)的腳本變量。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,該裝置還包括重復(fù)性檢測(cè)單元;所述腳本解析單元在檢測(cè)到所述待檢測(cè)網(wǎng)頁(yè)的腳本變量的長(zhǎng)度超過(guò)預(yù)設(shè)的長(zhǎng)度閾值時(shí),通過(guò)觸發(fā)所述重復(fù)性檢測(cè)單元來(lái)觸發(fā)所述反匯編檢測(cè)單元;所述重復(fù)性檢測(cè)單元,用于受到觸發(fā)后,對(duì)所述長(zhǎng)度超過(guò)長(zhǎng)度閾值的腳本變量?jī)?nèi)容進(jìn)行重復(fù)性檢測(cè),如果檢測(cè)到重復(fù)性達(dá)到預(yù)設(shè)重復(fù)性要求,則觸發(fā)所述反匯編檢測(cè)單元, 否則,觸發(fā)所述腳本解析單元繼續(xù)解析所述待檢測(cè)網(wǎng)頁(yè)的腳本。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述重復(fù)性檢測(cè)單元在進(jìn)行重復(fù)性檢測(cè)時(shí),具體對(duì)所述長(zhǎng)度超過(guò)長(zhǎng)度閾值的腳本變量的有效存儲(chǔ)空間內(nèi)容進(jìn)行檢測(cè),如果所述有效存儲(chǔ)空間內(nèi)容中存在數(shù)據(jù)連續(xù)重復(fù)出現(xiàn),且連續(xù)重復(fù)出現(xiàn)的次數(shù)超過(guò)預(yù)設(shè)的次數(shù)閾值,則認(rèn)為重復(fù)性達(dá)到預(yù)設(shè)重復(fù)性要求。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述反匯編檢測(cè)單元如果能夠順利反匯編,則對(duì)所述長(zhǎng)度超過(guò)預(yù)設(shè)長(zhǎng)度閾值的腳本變量的內(nèi)容重新進(jìn)行一次反匯編檢測(cè),如果不能順利反匯編,則觸發(fā)所述腳本解析單元繼續(xù)解析所述待檢測(cè)網(wǎng)頁(yè)的腳本,如果仍能夠順利反匯編,則認(rèn)為檢測(cè)到噴射特性。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述反匯編檢測(cè)單元在反匯編過(guò)程中如果發(fā)生了指令解析錯(cuò)誤、反匯編代碼中存在分支跳轉(zhuǎn)指令或反匯編代碼操作了不可預(yù)知的高地址內(nèi)存中的至少一種,則確定不能順利反匯編;否則確定能夠順利反匯編。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述反匯編檢測(cè)單元在反匯編檢測(cè)時(shí),從所述長(zhǎng)度超過(guò)預(yù)設(shè)長(zhǎng)度閾值的腳本變量的有效存儲(chǔ)空間中隨機(jī)選擇一個(gè)地址開(kāi)始進(jìn)行反匯編。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,該裝置還包括噴射計(jì)數(shù)單元,用于在所述腳本解析單元解析待檢測(cè)網(wǎng)頁(yè)的腳本之前,初始化噴射計(jì)數(shù)值;所述反匯編檢測(cè)單元在認(rèn)為檢測(cè)到堆噴射特性時(shí),觸發(fā)所述噴射技術(shù)單元將噴射計(jì)數(shù)值進(jìn)行自加,然后判斷當(dāng)前的噴射計(jì)數(shù)值是否達(dá)到預(yù)設(shè)的計(jì)數(shù)閾值,如果是,觸發(fā)結(jié)果確輸出單元,否則,觸發(fā)所述腳本解析單元繼續(xù)解析所述待檢測(cè)網(wǎng)頁(yè)的腳本。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述結(jié)果輸出單元采用發(fā)出警報(bào)、上報(bào)檢測(cè)信息或者將所述待檢測(cè)網(wǎng)頁(yè)加入惡意網(wǎng)頁(yè)庫(kù)中的至少一種處理方式,確定檢測(cè)到堆噴射型網(wǎng)頁(yè)木馬。由以上技術(shù)方案可以看出,本發(fā)明在解析待檢測(cè)網(wǎng)頁(yè)的腳本過(guò)程中,通過(guò)掛函數(shù)鉤子對(duì)檢測(cè)網(wǎng)頁(yè)的腳本變量進(jìn)行監(jiān)測(cè),在檢測(cè)到腳本變量的長(zhǎng)度超過(guò)預(yù)設(shè)的長(zhǎng)度閾值時(shí),通過(guò)反匯編檢測(cè)的方式確定是否具有堆噴射特性,這種方式基于堆噴射特性,相比較現(xiàn)有對(duì)內(nèi)存分配進(jìn)行監(jiān)控的方式提高了檢測(cè)準(zhǔn)確性,大大降低了誤報(bào)率,并且并不限于 javascript類(lèi)型的腳本,適用范圍更廣。
圖I為本發(fā)明實(shí)施例一提供的動(dòng)態(tài)檢測(cè)堆噴射型網(wǎng)頁(yè)木馬的方法流程圖;圖2為本發(fā)明實(shí)施例二提供的動(dòng)態(tài)檢測(cè)堆噴射型網(wǎng)頁(yè)木馬的方法流程圖;圖3為本發(fā)明實(shí)施例三提供的檢測(cè)堆噴射型網(wǎng)頁(yè)木馬的裝置結(jié)構(gòu)圖;圖4為本發(fā)明實(shí)施例三提供的另一種檢測(cè)堆噴射型網(wǎng)頁(yè)木馬的裝置結(jié)構(gòu)圖。
具體實(shí)施方式為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述。本發(fā)明實(shí)施例提供的檢測(cè)方式針對(duì)堆噴射型網(wǎng)頁(yè)木馬,經(jīng)總結(jié)發(fā)現(xiàn)堆噴射型網(wǎng)頁(yè)木馬具有如下特性通過(guò)向內(nèi)存中噴射大量包含shellcode的填充數(shù)據(jù),該填充數(shù)據(jù)稱(chēng)為nopslide,使得在加載導(dǎo)致瀏覽器崩潰的漏洞代碼時(shí),控制指令寄存器(EIP)指向 nopslide,最終導(dǎo)致shellcode執(zhí)行。其中shellcode是利用特定漏洞的代碼,一般作為數(shù)據(jù)發(fā)送給服務(wù)端造成溢出。針對(duì)該特性,本發(fā)明提供了一種動(dòng)態(tài)檢測(cè)堆噴射型網(wǎng)頁(yè)木馬的方法,下面通過(guò)實(shí)施例一對(duì)該方法進(jìn)行詳細(xì)描述。實(shí)施例一、
圖I為本發(fā)明實(shí)施例一提供的動(dòng)態(tài)檢測(cè)堆噴射型網(wǎng)頁(yè)木馬的方法流程圖,如圖I 所示,該方法包括以下步驟步驟101 :解析待檢測(cè)網(wǎng)頁(yè)的腳本,在解析過(guò)程中通過(guò)掛函數(shù)鉤子監(jiān)測(cè)待檢測(cè)網(wǎng)頁(yè)的腳本變量,如果監(jiān)測(cè)到待檢測(cè)網(wǎng)頁(yè)的腳本變量的長(zhǎng)度超過(guò)預(yù)設(shè)的長(zhǎng)度閾值,則執(zhí)行步驟 102。在本步驟之前,首先執(zhí)行準(zhǔn)備步驟新建一個(gè)瀏覽器(IE)控件進(jìn)程,針對(duì) javascript、vbscript、action script等類(lèi)型腳本中導(dǎo)致腳本變量變化的操作掛上函數(shù)鉤子,其中導(dǎo)致腳本變量變化的操作包括但不限于對(duì)加(“ + ”)操作、array的push操作、賦值類(lèi)操作等,該函數(shù)鉤子能夠?qū)崟r(shí)監(jiān)測(cè)腳本變量的變化。本步驟在解析待檢測(cè)網(wǎng)頁(yè)腳本的過(guò)程中,所掛的函數(shù)鉤子在某個(gè)腳本變量執(zhí)行加操作或push操作等時(shí),能夠獲取到該腳本變量的原始變量的長(zhǎng)度和被加變量的長(zhǎng)度,由原始變量的長(zhǎng)度和被加變量的長(zhǎng)度之和可以得到該腳本變量的長(zhǎng)度,如果該腳本變量的長(zhǎng)度超過(guò)預(yù)設(shè)的長(zhǎng)度閾值,例如超過(guò)0x1000,則會(huì)觸發(fā)后續(xù)的重復(fù)性檢測(cè)和反匯編檢測(cè)。如果該腳本變量的長(zhǎng)度未超過(guò)預(yù)設(shè)的長(zhǎng)度閾值,則認(rèn)為該腳本變量安全,繼續(xù)解析待檢測(cè)網(wǎng)頁(yè)的腳本。其中原始變量的長(zhǎng)度和被加變量的長(zhǎng)度也可以分別由原始變量的地址和被加變量的地址獲得。如果當(dāng)前監(jiān)測(cè)到的腳本變量的長(zhǎng)度未超過(guò)預(yù)設(shè)的長(zhǎng)度閾值,則認(rèn)為該腳本變量正常,繼續(xù)對(duì)待檢測(cè)網(wǎng)頁(yè)的腳本進(jìn)行解析。本發(fā)明實(shí)施例提供的檢測(cè)方式可以通過(guò)單進(jìn)程的方式實(shí)現(xiàn),也可以通過(guò)多線程的方式實(shí)現(xiàn),例如新建20個(gè)進(jìn)程等待輸入待檢測(cè)網(wǎng)頁(yè),并分別對(duì)不同的待檢測(cè)網(wǎng)頁(yè)進(jìn)行解析和檢測(cè)。步驟102 :對(duì)長(zhǎng)度超過(guò)長(zhǎng)度閾值的腳本變量?jī)?nèi)容進(jìn)行重復(fù)性檢測(cè),如果檢測(cè)到重復(fù)性達(dá)到預(yù)設(shè)重復(fù)性要求,則執(zhí)行步驟103 ;否則,轉(zhuǎn)至步驟101繼續(xù)解析待檢測(cè)網(wǎng)頁(yè)的腳本。此處的重復(fù)性檢測(cè)可以對(duì)該腳本變量的有效存儲(chǔ)空間存儲(chǔ)內(nèi)容進(jìn)行檢測(cè),如果有效存儲(chǔ)空間存儲(chǔ)內(nèi)容中存在數(shù)據(jù)連續(xù)重復(fù)出現(xiàn),且連續(xù)重復(fù)出現(xiàn)的次數(shù)超過(guò)預(yù)設(shè)的次數(shù)閾值,則認(rèn)為重復(fù)性達(dá)到預(yù)設(shè)重復(fù)性要求。舉個(gè)例子,假設(shè)在該腳本變量的有效存儲(chǔ)空間存儲(chǔ)的內(nèi)容為0x141414141414,由于14連續(xù)重復(fù)出現(xiàn),且連續(xù)重復(fù)出現(xiàn)的次數(shù)超過(guò)了預(yù)設(shè)的次數(shù)閾值,例如閾值為5,則就認(rèn)為該腳本變量的內(nèi)容的重復(fù)性達(dá)到預(yù)設(shè)重復(fù)性要求,有可能是堆噴射代碼,繼續(xù)執(zhí)行步驟103。本發(fā)明可以采用任意的重復(fù)性檢測(cè)方式,在此僅舉一個(gè)實(shí)現(xiàn)重復(fù)性檢測(cè)的例子從上述有效存儲(chǔ)區(qū)間的地址A開(kāi)始,從地址A+B開(kāi)始逐字節(jié)搜索,并與地址A中的數(shù)據(jù)進(jìn)行比對(duì),如果沒(méi)有搜索到相等的數(shù)據(jù),則確定該有效存儲(chǔ)區(qū)間不具備重復(fù)性;如果搜索到,則標(biāo)識(shí)搜索到的地址為K,取K與A的差值得到M。從地址A+M開(kāi)始以長(zhǎng)度M為地址間隔搜索與地址A中數(shù)據(jù)相同的數(shù)據(jù),例如,搜索地址A+2M中的數(shù)據(jù)與地址A的數(shù)據(jù)是否相同,搜索地址A+3M中的數(shù)據(jù)與地址A的數(shù)據(jù)是否相同……,如果連續(xù)N次搜索到相同的數(shù)據(jù),則確定該有效存儲(chǔ)區(qū)間具有重復(fù)性。上述A、B、M通常為二進(jìn)制數(shù)據(jù),N為預(yù)設(shè)的正整數(shù)。
如果腳本變量?jī)?nèi)容的重復(fù)性不符合預(yù)設(shè)重復(fù)性要求,則認(rèn)為不符合堆噴射的特性,轉(zhuǎn)至步驟101繼續(xù)解析待檢測(cè)網(wǎng)頁(yè)的腳本。本步驟102進(jìn)行的重復(fù)性檢測(cè)并不是本發(fā)明所必須執(zhí)行的步驟,目的是為了提高檢測(cè)效率,也可以不執(zhí)行步驟102直接由步驟101觸發(fā)執(zhí)行步驟103。步驟103 :對(duì)該腳本變量的內(nèi)容進(jìn)行反匯編檢測(cè),如果不能順利反匯編,則轉(zhuǎn)至步驟101繼續(xù)解析待檢測(cè)網(wǎng)頁(yè)的腳本,如果能夠順利反匯編,則認(rèn)為檢測(cè)到噴射特性,確定檢測(cè)到堆噴射型網(wǎng)頁(yè)木馬,結(jié)束流程。在該腳本變量的有效存儲(chǔ)空間內(nèi)的二進(jìn)制數(shù)據(jù)進(jìn)行反匯編,如果反匯編過(guò)程中發(fā)生了指令解析錯(cuò)誤、反匯編代碼中存在分支跳轉(zhuǎn)指令或反匯編代碼操作了不可預(yù)知的高地址內(nèi)存中的至少一種,則認(rèn)為不能順利反匯編,說(shuō)明將該段二進(jìn)制數(shù)據(jù)用作代碼執(zhí)行時(shí)會(huì)發(fā)生錯(cuò)誤,不符合堆噴射特性,認(rèn)為這段二進(jìn)制數(shù)據(jù)不是堆噴射代碼,轉(zhuǎn)至步驟101繼續(xù)解析待檢測(cè)網(wǎng)頁(yè)的腳本。如果能夠順利反匯編,則符合堆噴射特性。另外,為了提高堆噴射特性的檢測(cè)準(zhǔn)確性,可以在順利反匯編后,重新進(jìn)行一次反匯編檢測(cè),兩次反匯編檢測(cè)均可以是從該腳本變量的有效存儲(chǔ)空間中隨機(jī)選擇一個(gè)地址開(kāi)始進(jìn)行反匯編。如果重新進(jìn)行一次反匯編檢測(cè)時(shí),檢測(cè)到反匯編過(guò)程中發(fā)生了指令解析錯(cuò)誤、反匯編代碼中存在分值跳轉(zhuǎn)指令或反匯編代碼中操作了不可預(yù)知的高地址內(nèi)存中的至少一種,則認(rèn)為該腳本變量的內(nèi)容安全,轉(zhuǎn)至步驟101繼續(xù)解析待檢測(cè)網(wǎng)頁(yè)的腳本,否則才認(rèn)為檢測(cè)到噴射特性,確定檢測(cè)到堆噴射型網(wǎng)頁(yè)木馬,結(jié)束流程。在上述實(shí)施例一的流程中,如果未檢測(cè)到堆噴射型網(wǎng)頁(yè)木馬則繼續(xù)轉(zhuǎn)至步驟101 進(jìn)行待檢測(cè)網(wǎng)頁(yè)的腳本解析,直至解析結(jié)束或者檢測(cè)到退噴射型網(wǎng)頁(yè)木馬。為了更進(jìn)一步提高檢測(cè)精度,可以在多次檢測(cè)到噴射特性時(shí)才認(rèn)為檢測(cè)到堆噴射型網(wǎng)頁(yè)木馬,這種情況通過(guò)實(shí)施例二進(jìn)行描述。實(shí)施例二、圖2為本發(fā)明實(shí)施例二提供的動(dòng)態(tài)檢測(cè)堆噴射型網(wǎng)頁(yè)木馬的方法流程圖,如圖2 所示,該方法包括以下步驟步驟201同步驟101,但需要在準(zhǔn)備步驟中初始化噴射計(jì)數(shù)值,該噴射計(jì)數(shù)值用于對(duì)檢測(cè)到堆噴射特性的次數(shù)進(jìn)行計(jì)數(shù),后續(xù)將會(huì)描述。步驟202 :對(duì)長(zhǎng)度超過(guò)長(zhǎng)度閾值的腳本變量?jī)?nèi)容進(jìn)行重復(fù)性檢測(cè),如果檢測(cè)到重復(fù)性達(dá)到預(yù)設(shè)重復(fù)性要求,則執(zhí)行步驟203 ;否則,轉(zhuǎn)至步驟201繼續(xù)解析待檢測(cè)網(wǎng)頁(yè)的腳本。本步驟具體參見(jiàn)實(shí)施例一中步驟102的描述,不再贅述。步驟203 :對(duì)該腳本變量的內(nèi)容進(jìn)行反匯編檢測(cè),如果不能順利反匯編,則轉(zhuǎn)至步驟201繼續(xù)解析待檢測(cè)網(wǎng)頁(yè)的腳本;否則,認(rèn)為檢測(cè)到堆噴射特性,將噴射計(jì)數(shù)值進(jìn)行自加。如果在反匯編過(guò)程中發(fā)生了指令解析錯(cuò)誤、反匯編代碼中存在分支跳轉(zhuǎn)指令或反匯編代碼中操作了不可預(yù)知的高地址內(nèi)存中的至少一種,均是不能順利反匯編。同樣,在本步驟中,如果能夠順利反匯編,即未檢測(cè)到反匯編過(guò)程中發(fā)生了指令解析錯(cuò)誤、反匯編代碼中存在分支跳轉(zhuǎn)指令以及反匯編代碼操作了不可預(yù)知的高地址內(nèi)存, 則對(duì)該腳本變量的有效存儲(chǔ)空間的內(nèi)容重新進(jìn)行一次反匯編檢測(cè),如果仍能順利反匯編,則認(rèn)為檢測(cè)到堆噴射特性,將噴射計(jì)數(shù)值進(jìn)行自加。步驟204 :判斷當(dāng)前噴射計(jì)數(shù)值是否達(dá)到預(yù)設(shè)的計(jì)數(shù)閾值,如果是,確定檢測(cè)到堆噴射型網(wǎng)頁(yè)木馬,結(jié)束流程;否則,轉(zhuǎn)至步驟101繼續(xù)解析待檢測(cè)網(wǎng)頁(yè)的腳本。本步驟中涉及的計(jì)數(shù)閾值可以選取一個(gè)經(jīng)驗(yàn)值,該經(jīng)驗(yàn)值可以通過(guò)實(shí)驗(yàn)的方式獲得檢出率較高、誤報(bào)率較低的數(shù)值,例如可以取5。在確定檢測(cè)到堆噴射型網(wǎng)頁(yè)木馬時(shí),可以采用發(fā)出警報(bào)、上報(bào)檢測(cè)信息或者將待檢測(cè)網(wǎng)頁(yè)加入惡意網(wǎng)頁(yè)庫(kù)等中的至少一種處理方式。以上是本發(fā)明所提供方法進(jìn)行的詳細(xì)描述,下面結(jié)合實(shí)施例三對(duì)本發(fā)明所提供的裝置進(jìn)行詳細(xì)描述。實(shí)施例三、圖3為本發(fā)明實(shí)施例三提供的檢測(cè)堆噴射型網(wǎng)頁(yè)木馬的裝置結(jié)構(gòu)圖,如圖3所示, 該裝置可以具體包括腳本解析單元301、反匯編檢測(cè)單元302和結(jié)果輸出單元303。腳本解析單元301解析待檢測(cè)網(wǎng)頁(yè)的腳本,在解析過(guò)程中通過(guò)掛函數(shù)鉤子監(jiān)測(cè)待檢測(cè)網(wǎng)頁(yè)的腳本變量,如果檢測(cè)到待檢測(cè)網(wǎng)頁(yè)的腳本變量的長(zhǎng)度超過(guò)預(yù)設(shè)的長(zhǎng)度閾值,則觸發(fā)反匯編檢測(cè)單元302。反匯編檢測(cè)單元302受到觸發(fā)后,對(duì)長(zhǎng)度超過(guò)預(yù)設(shè)長(zhǎng)度閾值的腳本變量的內(nèi)容進(jìn)行反匯編檢測(cè),如果不能順利反匯編,則觸發(fā)腳本解析單元301繼續(xù)解析待檢測(cè)網(wǎng)頁(yè)的腳本,如果能夠順利反匯編,則認(rèn)為檢測(cè)到噴射特性,觸發(fā)結(jié)果確輸出單元303。結(jié)果輸出單元303受到觸發(fā)后,確定檢測(cè)到堆噴射型網(wǎng)頁(yè)木馬。為了方便腳本解析單元301監(jiān)測(cè)腳本變量,該裝置還可以包括預(yù)處理單元300, 用于新建IE控件進(jìn)程,針對(duì)預(yù)設(shè)類(lèi)型腳本中導(dǎo)致腳本變量變化的操作掛上函數(shù)鉤子。這樣,腳本解析單元301就能夠通過(guò)已掛的函數(shù)鉤子監(jiān)測(cè)待檢測(cè)網(wǎng)頁(yè)的腳本變量。具體地,預(yù)處理單兀300針對(duì)javascript、vbscript、action script等類(lèi)型腳本中導(dǎo)致腳本變量變化的操作掛上函數(shù)鉤子,其中導(dǎo)致腳本變量變化的操作包括但不限于對(duì)加操作、array的push操作、賦值類(lèi)操作等。腳本解析單元301在解析待檢測(cè)網(wǎng)頁(yè)腳本的過(guò)程中,所掛的函數(shù)鉤子在某個(gè)腳本變量執(zhí)行諸如加操作或push操作等時(shí),能夠獲取到該腳本變量的原始變量的長(zhǎng)度和被加變量的長(zhǎng)度,由原始變量的長(zhǎng)度和被加變量的長(zhǎng)度之和可以得到該腳本變量的長(zhǎng)度,如果該腳本變量的長(zhǎng)度超過(guò)預(yù)設(shè)的長(zhǎng)度閾值,則會(huì)觸發(fā)后續(xù)的反匯編檢測(cè)。如果該腳本變量的長(zhǎng)度未超過(guò)預(yù)設(shè)的長(zhǎng)度閾值,則認(rèn)為該腳本變量安全,繼續(xù)解析待檢測(cè)網(wǎng)頁(yè)的腳本。作為一種優(yōu)選的實(shí)施方式,在反匯編檢測(cè)之前可以首先對(duì)長(zhǎng)度超過(guò)預(yù)設(shè)長(zhǎng)度閾值的腳本變量?jī)?nèi)容進(jìn)行重復(fù)性檢測(cè),從而提高檢測(cè)效率,此時(shí)該裝置還可以包括重復(fù)性檢測(cè)單元304。腳本解析單元301在監(jiān)測(cè)到待檢測(cè)網(wǎng)頁(yè)的腳本變量的長(zhǎng)度超過(guò)預(yù)設(shè)的長(zhǎng)度閾值時(shí),通過(guò)觸發(fā)重復(fù)性檢測(cè)單元304來(lái)觸發(fā)反匯編檢測(cè)單元302。重復(fù)性檢測(cè)單元304受到觸發(fā)后,對(duì)長(zhǎng)度超過(guò)長(zhǎng)度閾值的腳本變量?jī)?nèi)容進(jìn)行重復(fù)性檢測(cè),如果檢測(cè)到重復(fù)性達(dá)到預(yù)設(shè)重復(fù)性要求,則觸發(fā)反匯編檢測(cè)單元302,否則,觸發(fā)腳本解析單元301繼續(xù)解析待檢測(cè)網(wǎng)頁(yè)的腳本。即在腳本解析單元和反匯編檢測(cè)單元302之間包括一個(gè)重復(fù)性檢測(cè)單元304,腳本解析單元301檢測(cè)到待檢測(cè)網(wǎng)頁(yè)的腳本變量的長(zhǎng)度超過(guò)預(yù)設(shè)的長(zhǎng)度閾值時(shí),先觸發(fā)重復(fù)性檢測(cè)單元304,重復(fù)性檢測(cè)單元304在檢測(cè)到重復(fù)性達(dá)到預(yù)設(shè)重復(fù)性要求后,觸發(fā)反匯編檢測(cè)單元302進(jìn)行反匯編檢測(cè)。在進(jìn)行重復(fù)性檢測(cè)時(shí),重復(fù)性檢測(cè)單元304對(duì)長(zhǎng)度超過(guò)長(zhǎng)度閾值的腳本變量的有效存儲(chǔ)空間內(nèi)容進(jìn)行檢測(cè),如果有效存儲(chǔ)空間內(nèi)容中存在數(shù)據(jù)連續(xù)重復(fù)出現(xiàn),且連續(xù)重復(fù)出現(xiàn)的次數(shù)超過(guò)預(yù)設(shè)的次數(shù)閾值,則認(rèn)為重復(fù)性達(dá)到預(yù)設(shè)重復(fù)性要求。另外,為了提高堆噴射特性的檢測(cè)準(zhǔn)確性,反匯編檢測(cè)單元304在進(jìn)行反匯編檢測(cè)時(shí),如果能夠?qū)δ_本變量的內(nèi)容順利反匯編,則可以進(jìn)一步對(duì)長(zhǎng)度超過(guò)預(yù)設(shè)長(zhǎng)度閾值的腳本變量的內(nèi)容重新進(jìn)行一次反匯編檢測(cè),如果不能順利反匯編,則觸發(fā)腳本解析單元301 繼續(xù)解析待檢測(cè)網(wǎng)頁(yè)的腳本,如果仍能夠順利反匯編,則認(rèn)為檢測(cè)到噴射特性。其中,如果在反匯編過(guò)程中發(fā)生了指令解析錯(cuò)誤、反匯編代碼中存在分支跳轉(zhuǎn)指令或反匯編代碼操作了不可預(yù)知的高地址內(nèi)存中的至少一種,則確定不能順利反匯編;否則確定能夠順利反匯編。另外,反匯編檢測(cè)單元304在反匯編檢測(cè)時(shí),從長(zhǎng)度超過(guò)預(yù)設(shè)長(zhǎng)度閾值的腳本變量的有效存儲(chǔ)空間中隨機(jī)選擇一個(gè)地址開(kāi)始進(jìn)行反匯編。為了更進(jìn)一步提高檢測(cè)精度,可以在多次檢測(cè)到噴射特性時(shí)才認(rèn)為檢測(cè)到堆噴射型網(wǎng)頁(yè)木馬,這種情況的裝置結(jié)構(gòu)可以如圖4所示,與圖3所示結(jié)構(gòu)不同的是,這種情況下的裝置還可以進(jìn)一步包括噴射計(jì)數(shù)單元401。該噴射計(jì)數(shù)單元401在腳本解析單元301解析待檢測(cè)網(wǎng)頁(yè)的腳本之前,初始化噴射計(jì)數(shù)值。反匯編檢測(cè)單元302在認(rèn)為檢測(cè)到堆噴射特性時(shí),觸發(fā)噴射技術(shù)單元401將噴射計(jì)數(shù)值進(jìn)行自加,然后判斷當(dāng)前的噴射計(jì)數(shù)值是否達(dá)到預(yù)設(shè)的計(jì)數(shù)閾值,如果是,觸發(fā)結(jié)果確輸出單元303,否則,觸發(fā)腳本解析單元301繼續(xù)解析待檢測(cè)網(wǎng)頁(yè)的腳本。其中上述計(jì)數(shù)閾值可以選取一個(gè)經(jīng)驗(yàn)值,該經(jīng)驗(yàn)值可以通過(guò)實(shí)驗(yàn)的方式獲得檢出率較高、誤報(bào)率較低的數(shù)值,例如可以取5。另外,在圖3和圖4中的結(jié)果輸出單元303可以采用發(fā)出警報(bào)、上報(bào)檢測(cè)信息或者將待檢測(cè)網(wǎng)頁(yè)加入惡意網(wǎng)頁(yè)庫(kù)中的至少一種處理方式,確定檢測(cè)到堆噴射型網(wǎng)頁(yè)木馬。為了方便理解,下面舉一個(gè)具體的實(shí)例,假設(shè)其中一個(gè)待檢測(cè)的網(wǎng)頁(yè)腳本如下
〈script language='vbscript'>
dim sc(lOOO)
dim shellcode
dim nop
dimi
dimj
10shellcode=unescape(M%u5858%uE8FC%u0044%u0000%u458B%u8B3C%u057C%u017
8%u8BEF%ul84F%u5F8B%u0120%
u49EB%u348B%u018B%u31EE%u99C0%u84AC%u74C0%uC107%u0DCA%uC201%u
F4EB%u543B%u0424%uE575%u5F8B%
u0124%u66EB%u0C8B%u8B4B%ulC5F%uEB01%ulC8B%u018B%u89EB%u245C%u
C304%uC031%u8B64%u3040%uC085%
u0C78%u408B%u8B0C%ulC70M)
nop=unescape("%u9091%u9190%u9091%u9190%u9091") for i=l to 2000 for j=0 to 5000
sc(i) = sc(i)+nop
next
sc(i)=sc(i)+shellcode
next
</script>由于預(yù)先已經(jīng)對(duì)vbscript類(lèi)型腳本中加操作、array的push操作、賦值類(lèi)操作等掛上函數(shù)鉤子,因此在進(jìn)行解析過(guò)程中解析到sc(i) = sc⑴+nop、sc (i)= sc (i)+shellcode時(shí)均會(huì)監(jiān)測(cè)到腳本變量sc (i)長(zhǎng)度發(fā)生變化,當(dāng)sc (i)長(zhǎng)度超過(guò)預(yù)設(shè)的長(zhǎng)度閾值0x1000時(shí),對(duì)sc⑴的有效存儲(chǔ)空間進(jìn)行重復(fù)性檢測(cè)。假設(shè)sc⑴的有效存儲(chǔ)空間內(nèi)存儲(chǔ)的數(shù)據(jù)如表I所示。表I
權(quán)利要求
1.一種檢測(cè)堆噴射型網(wǎng)頁(yè)木馬的方法,其特征在于,該方法包括51、解析待檢測(cè)網(wǎng)頁(yè)的腳本,在解析過(guò)程中通過(guò)掛函數(shù)鉤子監(jiān)測(cè)所述待檢測(cè)網(wǎng)頁(yè)的腳本變量,如果監(jiān)測(cè)到所述待檢測(cè)網(wǎng)頁(yè)的腳本變量的長(zhǎng)度超過(guò)預(yù)設(shè)的長(zhǎng)度閾值,則執(zhí)行步驟 S3 ;53、對(duì)所述長(zhǎng)度超過(guò)預(yù)設(shè)長(zhǎng)度閾值的腳本變量的內(nèi)容進(jìn)行反匯編檢測(cè),如果不能順利反匯編,則轉(zhuǎn)至所述步驟SI繼續(xù)解析所述待檢測(cè)網(wǎng)頁(yè)的腳本,如果能夠順利反匯編,則認(rèn)為檢測(cè)到噴射特性,執(zhí)行步驟S4 ;54、確定檢測(cè)到堆噴射型網(wǎng)頁(yè)木馬。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,在所述步驟SI之前還包括SO :新建一個(gè)瀏覽器IE控件進(jìn)程,針對(duì)預(yù)設(shè)類(lèi)型腳本中導(dǎo)致腳本變量變化的操作掛上函數(shù)鉤子。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,在所述步驟SI和所述步驟S3之間還包括52、對(duì)所述長(zhǎng)度超過(guò)長(zhǎng)度閾值的腳本變量?jī)?nèi)容進(jìn)行重復(fù)性檢測(cè),如果檢測(cè)到重復(fù)性達(dá)到預(yù)設(shè)重復(fù)性要求,則執(zhí)行所述步驟S3 ;否則,轉(zhuǎn)至所述步驟SI繼續(xù)解析所述待檢測(cè)網(wǎng)頁(yè)的腳本。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述重復(fù)性檢測(cè)為對(duì)所述長(zhǎng)度超過(guò)長(zhǎng)度閾值的腳本變量的有效存儲(chǔ)空間內(nèi)容進(jìn)行檢測(cè),如果所述有效存儲(chǔ)空間內(nèi)容中存在數(shù)據(jù)連續(xù)重復(fù)出現(xiàn),且連續(xù)重復(fù)出現(xiàn)的次數(shù)超過(guò)預(yù)設(shè)的次數(shù)閾值,則認(rèn)為重復(fù)性達(dá)到預(yù)設(shè)重復(fù)性要求。
5.根據(jù)權(quán)利要求I所述的方法,其特征在于,在所述步驟S3中如果能夠順利反匯編,則對(duì)所述長(zhǎng)度超過(guò)預(yù)設(shè)長(zhǎng)度閾值的腳本變量的內(nèi)容重新進(jìn)行一次反匯編檢測(cè),如果不能順利反匯編,則轉(zhuǎn)至所述步驟Si繼續(xù)解析所述待檢測(cè)網(wǎng)頁(yè)的腳本,如果仍能夠順利反匯編,則認(rèn)為檢測(cè)到噴射特性。
6.根據(jù)權(quán)利要求I或5所述的方法,其特征在于,所述步驟S3中在反匯編過(guò)程中如果發(fā)生了指令解析錯(cuò)誤、反匯編代碼中存在分支跳轉(zhuǎn)指令或反匯編代碼操作了不可預(yù)知的高地址內(nèi)存中的至少一種,則確定不能順利反匯編;否則確定能夠順利反匯編。
7.根據(jù)權(quán)利要求I或5所述的方法,其特征在于,在反匯編檢測(cè)時(shí),從所述長(zhǎng)度超過(guò)預(yù)設(shè)長(zhǎng)度閾值的腳本變量的有效存儲(chǔ)空間中隨機(jī)選擇一個(gè)地址開(kāi)始進(jìn)行反匯編。
8.根據(jù)權(quán)利要求I至5任一權(quán)項(xiàng)所述的方法,其特征在于,在所述步驟SI之前還包括 初始化噴射計(jì)數(shù)值;在所述步驟S3中認(rèn)為檢測(cè)到堆噴射特性時(shí),將所述噴射計(jì)數(shù)值進(jìn)行自加;在執(zhí)行所述步驟S4之前還包括判斷當(dāng)前的噴射計(jì)數(shù)值是否達(dá)到預(yù)設(shè)的計(jì)數(shù)閾值,如果是,繼續(xù)執(zhí)行所述步驟S4 ;否則,轉(zhuǎn)至所述步驟SI繼續(xù)解析所述待檢測(cè)網(wǎng)頁(yè)的腳本。
9.根據(jù)權(quán)利要求I所述的方法,其特征在于,在所述步驟S4中采用發(fā)出警報(bào)、上報(bào)檢測(cè)信息或者將所述待檢測(cè)網(wǎng)頁(yè)加入惡意網(wǎng)頁(yè)庫(kù)中的至少一種處理方式。
10.一種檢測(cè)堆噴射型網(wǎng)頁(yè)木馬的裝置,其特征在于,該裝置包括腳本解析單元,用于解析待檢測(cè)網(wǎng)頁(yè)的腳本,在解析過(guò)程中通過(guò)掛函數(shù)鉤子監(jiān)測(cè)所述待檢測(cè)網(wǎng)頁(yè)的腳本變量,如果檢測(cè)到所述待檢測(cè)網(wǎng)頁(yè)的腳本變量的長(zhǎng)度超過(guò)預(yù)設(shè)的長(zhǎng)度閾值,則觸發(fā)反匯編檢測(cè)單元;反匯編檢測(cè)單元,用于受到觸發(fā)后,對(duì)所述長(zhǎng)度超過(guò)預(yù)設(shè)長(zhǎng)度閾值的腳本變量的內(nèi)容進(jìn)行反匯編檢測(cè),如果不能順利反匯編,則觸發(fā)所述腳本解析單元繼續(xù)解析所述待檢測(cè)網(wǎng)頁(yè)的腳本,如果能夠順利反匯編,則認(rèn)為檢測(cè)到噴射特性,觸發(fā)結(jié)果確輸出單元;結(jié)果輸出單元,用于受到觸發(fā)后,確定檢測(cè)到堆噴射型網(wǎng)頁(yè)木馬。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,該裝置還包括預(yù)處理單元,用于新建一個(gè)瀏覽器IE控件進(jìn)程,針對(duì)預(yù)設(shè)類(lèi)型腳本中導(dǎo)致腳本變量變化的操作掛上函數(shù)鉤子;所述腳本解析單元通過(guò)已掛的所述函數(shù)鉤子監(jiān)測(cè)所述待檢測(cè)網(wǎng)頁(yè)的腳本變量。
12.根據(jù)權(quán)利要求10所述的裝置,其特征在于,該裝置還包括重復(fù)性檢測(cè)單元;所述腳本解析單元在檢測(cè)到所述待檢測(cè)網(wǎng)頁(yè)的腳本變量的長(zhǎng)度超過(guò)預(yù)設(shè)的長(zhǎng)度閾值時(shí),通過(guò)觸發(fā)所述重復(fù)性檢測(cè)單元來(lái)觸發(fā)所述反匯編檢測(cè)單元;所述重復(fù)性檢測(cè)單元,用于受到觸發(fā)后,對(duì)所述長(zhǎng)度超過(guò)長(zhǎng)度閾值的腳本變量?jī)?nèi)容進(jìn)行重復(fù)性檢測(cè),如果檢測(cè)到重復(fù)性達(dá)到預(yù)設(shè)重復(fù)性要求,則觸發(fā)所述反匯編檢測(cè)單元,否則,觸發(fā)所述腳本解析單元繼續(xù)解析所述待檢測(cè)網(wǎng)頁(yè)的腳本。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述重復(fù)性檢測(cè)單元在進(jìn)行重復(fù)性檢測(cè)時(shí),具體對(duì)所述長(zhǎng)度超過(guò)長(zhǎng)度閾值的腳本變量的有效存儲(chǔ)空間內(nèi)容進(jìn)行檢測(cè),如果所述有效存儲(chǔ)空間內(nèi)容中存在數(shù)據(jù)連續(xù)重復(fù)出現(xiàn),且連續(xù)重復(fù)出現(xiàn)的次數(shù)超過(guò)預(yù)設(shè)的次數(shù)閾值,則認(rèn)為重復(fù)性達(dá)到預(yù)設(shè)重復(fù)性要求。
14.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述反匯編檢測(cè)單元如果能夠順利反匯編,則對(duì)所述長(zhǎng)度超過(guò)預(yù)設(shè)長(zhǎng)度閾值的腳本變量的內(nèi)容重新進(jìn)行一次反匯編檢測(cè),如果不能順利反匯編,則觸發(fā)所述腳本解析單元繼續(xù)解析所述待檢測(cè)網(wǎng)頁(yè)的腳本,如果仍能夠順利反匯編,則認(rèn)為檢測(cè)到噴射特性。
15.根據(jù)權(quán)利要求10或14所述的裝置,其特征在于,所述反匯編檢測(cè)單元在反匯編過(guò)程中如果發(fā)生了指令解析錯(cuò)誤、反匯編代碼中存在分支跳轉(zhuǎn)指令或反匯編代碼操作了不可預(yù)知的高地址內(nèi)存中的至少一種,則確定不能順利反匯編;否則確定能夠順利反匯編。
16.根據(jù)權(quán)利要求10或14所述的裝置,其特征在于,所述反匯編檢測(cè)單元在反匯編檢測(cè)時(shí),從所述長(zhǎng)度超過(guò)預(yù)設(shè)長(zhǎng)度閾值的腳本變量的有效存儲(chǔ)空間中隨機(jī)選擇一個(gè)地址開(kāi)始進(jìn)行反匯編。
17.根據(jù)權(quán)利要求10至14任一權(quán)項(xiàng)所述的裝置,其特征在于,該裝置還包括噴射計(jì)數(shù)單元,用于在所述腳本解析單元解析待檢測(cè)網(wǎng)頁(yè)的腳本之前,初始化噴射計(jì)數(shù)值;所述反匯編檢測(cè)單元在認(rèn)為檢測(cè)到堆噴射特性時(shí),觸發(fā)所述噴射技術(shù)單元將噴射計(jì)數(shù)值進(jìn)行自加,然后判斷當(dāng)前的噴射計(jì)數(shù)值是否達(dá)到預(yù)設(shè)的計(jì)數(shù)閾值,如果是,觸發(fā)結(jié)果確輸出單元,否則,觸發(fā)所述腳本解析單元繼續(xù)解析所述待檢測(cè)網(wǎng)頁(yè)的腳本。
18.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述結(jié)果輸出單元采用發(fā)出警報(bào)、上報(bào)檢測(cè)信息或者將所述待檢測(cè)網(wǎng)頁(yè)加入惡意網(wǎng)頁(yè)庫(kù)中的至少一種處理方式,確定檢測(cè)到堆噴射型網(wǎng)頁(yè)木馬。
全文摘要
本發(fā)明提供了一種檢測(cè)堆噴射型網(wǎng)頁(yè)木馬的方法和裝置,其中方法包括S1、解析待檢測(cè)網(wǎng)頁(yè)的腳本,在解析過(guò)程中通過(guò)掛函數(shù)鉤子監(jiān)測(cè)所述待檢測(cè)網(wǎng)頁(yè)的腳本變量,如果監(jiān)測(cè)到所述待檢測(cè)網(wǎng)頁(yè)的腳本變量的長(zhǎng)度超過(guò)預(yù)設(shè)的長(zhǎng)度閾值,則執(zhí)行步驟S3;S3、對(duì)所述長(zhǎng)度超過(guò)預(yù)設(shè)長(zhǎng)度閾值的腳本變量的內(nèi)容進(jìn)行反匯編檢測(cè),如果不能順利反匯編,則轉(zhuǎn)至所述步驟S1繼續(xù)解析所述待檢測(cè)網(wǎng)頁(yè)的腳本,如果能夠順利反匯編,則認(rèn)為檢測(cè)到噴射特性,確定檢測(cè)到堆噴射型網(wǎng)頁(yè)木馬。通過(guò)本發(fā)明能夠提高檢測(cè)準(zhǔn)確率,具有廣泛的適用范圍。
文檔編號(hào)G06F21/00GK102609655SQ20121002736
公開(kāi)日2012年7月25日 申請(qǐng)日期2012年2月8日 優(yōu)先權(quán)日2012年2月8日
發(fā)明者黃正 申請(qǐng)人:北京百度網(wǎng)訊科技有限公司