欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種檢測惡意flash文件的方法和裝置的制作方法

文檔序號:6364358閱讀:233來源:國知局
專利名稱:一種檢測惡意flash文件的方法和裝置的制作方法
—種檢測惡意flash文件的方法和裝置
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)安全技術(shù)領(lǐng)域,特別涉及一種檢測惡意flash文件的方法和裝置。
背景技術(shù)
隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,計(jì)算機(jī)網(wǎng)絡(luò)已經(jīng)成為人們獲取信息的主要工具,隨之而來的是對計(jì)算機(jī)安全技術(shù)需求的不斷提高。計(jì)算機(jī)病毒、木馬、間諜軟件和惡意代碼是近幾年來計(jì)算機(jī)網(wǎng)絡(luò)面對的主要安全威脅,其中惡意flash文件中掛馬是近期流行的掛馬方式,即通過flash文件進(jìn)行木馬的傳播。現(xiàn)有檢測惡意flash文件的方式是采用基于靜態(tài)特征的靜態(tài)檢測技術(shù),殺毒軟件廠商預(yù)先通過客戶端監(jiān)控瀏覽器的異常代碼執(zhí)行,收集相關(guān)可疑flash文件,由病毒分析師分析確定其惡意性,如果為惡意flash則將該惡意flash的特征更新至病毒庫,殺毒軟件客戶端利用病毒庫實(shí)時監(jiān)控flash文件的加載,通過將加載flash文件的特征在病毒庫中進(jìn)行匹配來檢測惡意flash文件。然而上述檢測惡意flash文件的方式具備以下缺陷I)需要由病毒分析師分析確定其惡意性,即人工維護(hù)一個龐大的病毒庫,維護(hù)成本較高。2)惡意flash文件的檢出率取決于病毒分析師預(yù)先分析出的惡意flash文件的收
集覆蓋率,覆蓋率較低。3)惡意flash文件的檢出是依靠對瀏覽器的異常代碼執(zhí)行預(yù)先收集的,具有明顯的滯后性,對于新出現(xiàn)的惡意flash特征則無法實(shí)時檢測出。

發(fā)明內(nèi)容本發(fā)明提供了一種檢測惡意flash文件的方法和裝置,以便于降低人工維護(hù)成本,解決檢測惡意flash文件的滯后性問題。具體技術(shù)方案如下一種檢測惡意flash文件的方法,該方法包括由以下步驟構(gòu)成的動態(tài)檢測流程Al、通過掛函數(shù)鉤子針對待檢測flash文件收集產(chǎn)生shellcode的操作信息,其中 shellcode為利用特定漏洞的代碼或填充數(shù)據(jù);A2、判斷收集到的產(chǎn)生shellcode的操作信息,如果是產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息,則執(zhí)行步驟A3 ;如果是產(chǎn)生寫內(nèi)存操作的函數(shù)操作信息,則執(zhí)行步驟A4 ;A3、對產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息進(jìn)行參數(shù)調(diào)用的合法性檢測,如果不合法, 則確定所述待檢測flash文件為惡意flash文件,結(jié)束對所述待檢測flash文件的檢測流程;A4、對產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間進(jìn)行噴射攻擊檢測,如果檢測到的噴射攻擊特性滿足預(yù)設(shè)的噴射攻擊特性要求,則確定所述待檢測flash文件為惡意flash文件。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,在所述步驟Al之前還包括A0 :新建瀏覽器IE控件進(jìn)程,對可能產(chǎn)生shellcode的操作的函數(shù)掛函數(shù)鉤子,并獲取對待檢測flash文件進(jìn)行反編譯后得到的源碼;所述步驟Al包括讀取所述源碼,通過已掛的函數(shù)鉤子收集產(chǎn)生shellcode的操
作信息。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息包括Date對象創(chuàng)建信息或者Number對象創(chuàng)建信息;所述產(chǎn)生寫內(nèi)存操作的函數(shù)操作信息包括ByteArray對象操作信息或者String 對象操作信息。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,在步驟A3中所述對產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息進(jìn)行參數(shù)調(diào)用的合法性檢測包括判斷產(chǎn)生讀內(nèi)存操作的參數(shù)和返回值是否存在內(nèi)存地址與內(nèi)存地址所存儲值的關(guān)系,如果是,則確定參數(shù)調(diào)用不合法。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,在所述步驟A3中如果所述合法性檢測的結(jié)果為合法, 則轉(zhuǎn)至所述步驟Al針對待檢測flash文件繼續(xù)收集產(chǎn)生shellcode的操作信息。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,在步驟A4中所述對產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間進(jìn)行噴射攻擊檢測具體包括判斷所述產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間長度是否超過預(yù)設(shè)的閾值,如果是,對所述產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間進(jìn)行噴射攻擊檢測;否則,轉(zhuǎn)至所述步驟 Al針對待檢測flash文件繼續(xù)收集產(chǎn)生shellcode的操作信息。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述噴射攻擊檢測具體包括反編譯所述產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間并模擬執(zhí)行,如果順利執(zhí)行, 或者執(zhí)行過程中不操作高地址內(nèi)存,或者所述有效存儲空間內(nèi)容的重復(fù)性滿足預(yù)設(shè)重復(fù)性要求,則確定檢測到噴射攻擊特性。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,步驟A4中所述如果檢測到的噴射攻擊特性滿足預(yù)設(shè)的噴射攻擊特性要求,則確定所述待檢測flash文件為惡意flash文件為一旦檢測到噴射攻擊特性,則確定所述待檢測flash文件為惡意flash文件。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,在所述步驟Al之前還包括初始化噴射計(jì)數(shù)值;步驟A4中所述如果檢測到的噴射攻擊特性滿足預(yù)設(shè)的噴射攻擊特性要求,則確定所述待檢測flash文件為惡意flash文件為如果檢測到噴射攻擊特性則將所述噴射計(jì)數(shù)值自加,如果噴射計(jì)數(shù)值達(dá)到預(yù)設(shè)的計(jì)數(shù)值閾值,則確定所述待檢測flash文件為惡意flash文件,否則轉(zhuǎn)至所述步驟Al針對待檢測flash文件繼續(xù)收集產(chǎn)生shellcode的操作信息。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,在所述步驟Al之前還包括靜態(tài)檢測流程BI、將所述待檢測flash文件與病毒庫進(jìn)行匹配,如果匹配上,則直接確定所述待檢測flash文件為惡意flash文件,結(jié)束對所述待檢測flash文件的檢測流程;否則,繼續(xù)執(zhí)行所述動態(tài)檢測流程。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,在所述靜態(tài)檢測流程和動態(tài)檢測流程之間還包括
B2、將所述待檢測flash文件進(jìn)行反編譯,如果反編譯成功得到源碼,則執(zhí)行步驟 B3 ;否則對所述待檢測flash文件繼續(xù)執(zhí)行所述動態(tài)檢測流程;B3、判斷源碼中是否存在產(chǎn)生shellcode的操作,如果是,對所述待檢測flash文件繼續(xù)執(zhí)行所述動態(tài)檢測流程;否則將所述待檢測flash文件確定為安全flash文件,結(jié)束對所述待檢測flash文件的檢測流程。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,如果在所述動態(tài)檢測流程之后未檢測出所述待檢測 flash為惡意flash,則繼續(xù)執(zhí)行以下監(jiān)控流程監(jiān)控IE控件進(jìn)程執(zhí)行所述待檢測flash文件,如果出現(xiàn)異常,則確定所述待檢測 flash文件為惡意flash文件。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,在確定所述待檢測flash文件為惡意flash文件后,利用所述待檢測flash文件更新病毒庫。一種檢測惡意flash文件的裝置,該裝置包括動態(tài)檢測模塊,該動態(tài)檢測模塊具體包括操作信息收集單元,用于通過掛函數(shù)鉤子針對待檢測flash文件收集產(chǎn)生 shellcode的操作信息,其中shellcode為利用特定漏洞的代碼或填充數(shù)據(jù);信息判斷單元,用于判斷收集到的產(chǎn)生shellcode的操作信息,如果是產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息,則觸發(fā)合法性檢測單元;如果是產(chǎn)生寫內(nèi)存操作的函數(shù)操作信息, 則觸發(fā)噴射特性檢測單元;合法性檢測單元,用于受到觸發(fā)時,對所述產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息進(jìn)行參數(shù)調(diào)用的合法性檢測,如果不合法,則確定所述待檢測flash文件為惡意flash文件;噴射特性檢測單元,用于受到觸發(fā)時,對所述產(chǎn)生讀內(nèi)存操作的函數(shù)的有效存儲空間進(jìn)行噴射攻擊檢測,如果檢測到的噴射攻擊特性滿足預(yù)設(shè)的噴射攻擊特性要求,則確定所述待檢測flash文件為惡意flash文件。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述動態(tài)檢測模塊還包括預(yù)處理單元,用于新建瀏覽器IE控件進(jìn)程,對可能產(chǎn)生shellcode的操作的函數(shù)掛函數(shù)鉤子,并獲取對待檢測flash 文件進(jìn)行反編譯后得到的源碼;所述操作信息收集單元讀取所述源碼,通過已掛的函數(shù)鉤子收集產(chǎn)生shellcode 的操作信息。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息包括Date對象創(chuàng)建信息或者Number對象創(chuàng)建信息;所述產(chǎn)生寫內(nèi)存操作的函數(shù)操作信息包括ByteArray對象操作信息或者String 對象操作信息。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述合法性檢測單元在對產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息進(jìn)行參數(shù)調(diào)用的合法性檢測時,判斷產(chǎn)生讀內(nèi)存操作的參數(shù)和返回值是否存在內(nèi)存地址與內(nèi)存地址所存儲值的關(guān)系,如果是,則確定參數(shù)調(diào)用不合法。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,如果所述合法性檢測單元進(jìn)行合法性檢測的結(jié)果為合法,則觸發(fā)所述操作信息收集單元針對待檢測flash文件繼續(xù)收集產(chǎn)生shellcode的操作信息。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述噴射特性檢測單元對產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間進(jìn)行噴射攻擊檢測時,首先判斷所述產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間長度是否超過預(yù)設(shè)的閾值,如果是,對所述產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間進(jìn)行噴射攻擊檢測;否則,觸發(fā)所述操作信息收集單元針對待檢測flash文件繼續(xù)收集產(chǎn)生 shellcode的操作信息。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述噴射攻擊檢測具體包括反編譯所述產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間并模擬執(zhí)行,如果順利執(zhí)行,或者執(zhí)行過程中不操作高地址內(nèi)存,或者所述有效存儲空間內(nèi)容的重復(fù)性滿足預(yù)設(shè)重復(fù)性要求,則確定檢測到噴射攻擊特性。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述噴射特性檢測單元一旦檢測到噴射攻擊特性,則確定所述待檢測flash文件為惡意flash文件。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述動態(tài)檢測模塊還包括噴射計(jì)數(shù)單元,用于在該動態(tài)檢測模塊啟動對所述待檢測flash文件的處理時,初始化噴射計(jì)數(shù)值;如果所述噴射特性檢測單元檢測到噴射攻擊特性,則將所述噴射計(jì)數(shù)值自加,如果噴射計(jì)數(shù)值達(dá)到預(yù)設(shè)的計(jì)數(shù)值閾值,則確定所述待檢測flash文件為惡意flash文件,如果噴射計(jì)數(shù)值未達(dá)到預(yù)設(shè)的計(jì)數(shù)值閾值,則觸發(fā)所述操作信息收集單元針對待檢測flash文件繼續(xù)收集產(chǎn)生 shellcode的操作信息。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,該裝置還包括靜態(tài)檢測模塊,用于將所述待檢測 flash文件與病毒庫進(jìn)行匹配,如果匹配上,則直接確定所述待檢測flash文件為惡意 flash文件;否則,將所述待檢測flash文件提供給所述動態(tài)檢測模塊。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,在所述靜態(tài)檢測模塊和動態(tài)檢測模塊之間還包括中間處理模塊,用于將所述待檢測flash文件進(jìn)行反編譯,如果反編譯失敗,則將所述待檢測flash文件提供給所述動態(tài)檢測模塊;如果反編譯成功得到源碼,則判斷源碼中是否存在產(chǎn)生shellcode的操作,如果是,將所述待檢測flash文件提供給所述動態(tài)檢測模塊,否則將所述待檢測flash文件確定為安全flash文件。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,該裝置還包括執(zhí)行監(jiān)控模塊;所述動態(tài)檢測模塊如果未檢測出所述待檢測flash為惡意flash,則將所述待檢測flash提供給所述執(zhí)行監(jiān)控模塊;所述執(zhí)行監(jiān)控模塊,用于監(jiān)控IE控件進(jìn)程執(zhí)行所述待檢測flash文件,如果出現(xiàn)異常,則確定所述待檢測flash文件為惡意flash文件。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,該裝置還包括病毒庫更新模塊,用于如果所述待檢測 flash文件被確定為惡意flash文件,則利用所述待檢測flash文件更新病毒庫。由以上技術(shù)方案可以看出,本發(fā)明通過掛函數(shù)鉤子針對待檢測flash文件收集產(chǎn)生shelIcode的操作信息,分別針對產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息和產(chǎn)生寫內(nèi)存操作的函數(shù)操作信息執(zhí)行不同的檢測操作對產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息進(jìn)行參數(shù)調(diào)用的合法性檢測,對產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間進(jìn)行噴射攻擊檢測,從而確定待檢測flash文件是否為惡意flash文件。這種動態(tài)檢測的方式自動實(shí)現(xiàn)惡意flash的檢測, 無需人工參與和維護(hù)病毒庫,大大降低了維護(hù)成本,且檢出率也不依賴于病毒分析師,而是由flash文件所產(chǎn)生的操作特性進(jìn)行識別,提高了覆蓋率;另外,本發(fā)明中對任意的待檢測 flash均能夠?qū)崟r檢測出是否惡意,不依賴于預(yù)先收集的病毒庫,因此解決了滯后性的問題。

圖I為本發(fā)明實(shí)施例一提供的采用動態(tài)檢測技術(shù)檢測惡意flash文件的方法流程圖;圖2為本發(fā)明實(shí)施例二提供的靜態(tài)檢測技術(shù)與動態(tài)檢測技術(shù)相結(jié)合的方法流程圖;圖3為本發(fā)明實(shí)施例三提供的動態(tài)檢測模塊的結(jié)構(gòu)示意圖;圖4為本發(fā)明實(shí)施例四提供的靜態(tài)檢測的動態(tài)檢測相結(jié)合的裝置結(jié)構(gòu)圖。
具體實(shí)施方式為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)描述。在本發(fā)明實(shí)施例中主要通過動態(tài)檢測技術(shù)來實(shí)現(xiàn)惡意flash文件的檢測,下面通過實(shí)施例一對該過程進(jìn)行詳細(xì)描述。實(shí)施例一、圖I為本發(fā)明實(shí)施例一提供的采用動態(tài)檢測技術(shù)檢測惡意flash文件的方法流程圖,如圖I所示,該方法具體包括以下步驟步驟101 :通過掛函數(shù)鉤子針對待檢測flash文件收集產(chǎn)生shellcode的操作信
肩、O在本步驟之前會包含準(zhǔn)備階段新建瀏覽器(IE)控件進(jìn)程,在flash解析引擎內(nèi)部掛函數(shù)鉤子,用于接管flash解析引擎的一些函數(shù)的處理過程。shellcode是利用特定漏洞的代碼或填充數(shù)據(jù),一般作為數(shù)據(jù)發(fā)送給服務(wù)端造成溢出,此處將一些可能產(chǎn)生 shellcode的操作的函數(shù)進(jìn)行掛鉤,可以包括以下函數(shù)中的至少一個產(chǎn)生讀內(nèi)存操作的函數(shù),諸如日期(Date)函數(shù)和數(shù)字(Number)函數(shù)等,以及產(chǎn)生寫內(nèi)存操作的函數(shù),諸如字節(jié)陣列(ByteArray)函數(shù)和字符串(string)函數(shù)等。在該準(zhǔn)備階段中掛鉤完畢后,可以開啟一個以上的進(jìn)程等待待檢測flash文件的輸入。標(biāo)識階段接收到待檢測flash文件后,初始化該待檢測flash文件的噴射計(jì)數(shù)值。并且flash解析引擎獲取待檢測flash文件的路徑,標(biāo)識該待檢測flash文件的路徑與flash URL的對應(yīng)關(guān)系,該對應(yīng)關(guān)系的標(biāo)識是為了方便后續(xù)獲取惡意引用鏈,是可選操作。在執(zhí)行上述準(zhǔn)備階段和標(biāo)識階段之后,還包括一個反編譯步驟對待檢測flash 文件進(jìn)行反編譯后得到源碼。然后執(zhí)行步驟101,即解析階段flash解析引擎讀取待檢測 flash文件進(jìn)行反編譯后的源碼,通過已掛的函數(shù)鉤子收集產(chǎn)生shellcode的操作信息。該產(chǎn)生shellcode的操作信息包括但不限于Date對象創(chuàng)建信息、Number對象創(chuàng)建信息、ByteArray對象操作信息、String對象操作信息等。步驟102 :判斷收集到的產(chǎn)生shellcode的操作信息類型,如果是產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息,則執(zhí)行步驟103 ;如果是產(chǎn)生寫內(nèi)存操作的函數(shù)操作信息,則執(zhí)行步驟 104。在步驟101中一旦收集到產(chǎn)生shellcode的操作信息,觸發(fā)執(zhí)行步驟102對收集到的操作信息進(jìn)行判斷。其中,產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息包括但不限于Date或Number對象創(chuàng)建信息。產(chǎn)生寫內(nèi)存操作的函數(shù)操作信息包括但不限于ByteArray或String對象操作信息。步驟103 :對產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息進(jìn)行參數(shù)調(diào)用的合法性檢測,如果不合法,則檢測出該待檢測flash文件為惡意flash文件。否則轉(zhuǎn)至步驟101繼續(xù)對待檢測flash文件的源碼繼續(xù)收集產(chǎn)生shellcode的操作信息進(jìn)行動態(tài)檢測,直至檢測結(jié)束。本步驟中涉及的合法性檢測可以為判斷諸如Date或Number對象等產(chǎn)生讀內(nèi)存操作的參數(shù)和返回值是否存在內(nèi)存地址與內(nèi)存地址存儲的值的關(guān)系,如果是,則確定參數(shù)調(diào)用不合法。步驟104:判斷產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲區(qū)間長度是否超過預(yù)設(shè)的閾值,如果是,執(zhí)行步驟105 ;否則轉(zhuǎn)至步驟101針對待檢測flash文件繼續(xù)收集產(chǎn)生 shellcode的操作信息。該預(yù)設(shè)的閾值可以根據(jù)經(jīng)驗(yàn)值或?qū)嶒?yàn)值進(jìn)行設(shè)置,例如可以設(shè)置為4096bit。步驟105 :對長度超過預(yù)設(shè)閾值的產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲區(qū)間進(jìn)行噴射攻擊檢測,如果檢測到的噴射攻擊特性滿足預(yù)設(shè)的噴射攻擊特性要求,則檢測出該待檢測flash文件為惡意flash文件。在本步驟中進(jìn)行的噴射攻擊檢測可以具體包括反編譯長度超過預(yù)設(shè)閾值的 ByteArray或String對象的有效存儲區(qū)間并模擬執(zhí)行,如果順利執(zhí)行,或者執(zhí)行過程中不操作高地址內(nèi)存,或者有效存儲空間存儲內(nèi)容的重復(fù)性滿足預(yù)設(shè)重復(fù)性要求,則認(rèn)為檢測到噴射攻擊特性。所謂預(yù)設(shè)重復(fù)性要求有效存儲空間存儲內(nèi)容中存在數(shù)據(jù)連續(xù)重復(fù)出現(xiàn),且連續(xù)重復(fù)出現(xiàn)的次數(shù)超過預(yù)設(shè)的次數(shù)閾值。本發(fā)明可以采用任意的重復(fù)性檢測方式,在此僅舉一個實(shí)現(xiàn)重復(fù)性檢測的例子從上述有效存儲區(qū)間的地址A開始,從地址A+B開始逐字節(jié)搜索,并與地址A中的數(shù)據(jù)進(jìn)行比對,如果沒有搜索到相等的數(shù)據(jù),則確定該有效存儲區(qū)間不具備重復(fù)性;如果搜索到,則標(biāo)識搜索到的地址為K,取K與A的差值得到M。從地址A+M開始以長度M為地址間隔搜索與地址A中數(shù)據(jù)相同的數(shù)據(jù),例如,搜索地址A+2M中的數(shù)據(jù)與地址A的數(shù)據(jù)是否相同,搜索地址A+3M中的數(shù)據(jù)與地址A的數(shù)據(jù)是否相同……,如果連續(xù)N次搜索到相同的數(shù)據(jù),則確定該有效存儲區(qū)間具有重復(fù)性。上述A、B、M通常為二進(jìn)制數(shù)據(jù),N為預(yù)設(shè)的正整數(shù)。需要說明的是步驟104并不是本發(fā)明實(shí)施例所必須的步驟,步驟104的執(zhí)行是為了提高檢測效率,也可以不執(zhí)行本步驟,對產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲區(qū)間都執(zhí)行步驟105中的噴射攻擊檢測。作為一種優(yōu)選的實(shí)施方式,在步驟105中檢測到噴射攻擊特性后,將噴射計(jì)數(shù)值進(jìn)行自加,例如將噴射計(jì)數(shù)值加1,如果噴射計(jì)數(shù)值未達(dá)到預(yù)設(shè)的計(jì)數(shù)值閾值,則轉(zhuǎn)至步驟101對待檢測flash文件的源碼繼續(xù)收集產(chǎn)生shellcode的操作信息進(jìn)行動態(tài)檢測。如果噴射計(jì)數(shù)值達(dá)到預(yù)設(shè)的計(jì)數(shù)值閾值,則確定檢測到的噴射攻擊特性滿足預(yù)設(shè)的噴射攻擊特性要求,即檢測出該檢測flash文件為惡意flash文件。以上是對動態(tài)檢測過程的具體描述,上述動態(tài)檢測過程可以與靜態(tài)檢測技術(shù)相結(jié)合,其中結(jié)合的靜態(tài)檢測技術(shù)用于進(jìn)行預(yù)處理,加快惡意flash文件檢測的速度以及降低性能損耗,下面通過實(shí)施例二對該過程進(jìn)行詳細(xì)描述。實(shí)施例二、圖2為本發(fā)明實(shí)施例二提供的靜態(tài)檢測技術(shù)與動態(tài)檢測技術(shù)相結(jié)合的方法流程圖,如圖2所示,該方法可以包括以下步驟步驟201 :獲取待檢測flash文件,將待檢測flash文件與已有病毒庫進(jìn)行匹配, 如果匹配上,則直接確定待檢測flash文件為惡意flash文件,否則繼續(xù)執(zhí)行步驟202。本發(fā)明中的已有病毒庫可以是采用現(xiàn)有方式建立的病毒庫,也可以是采用本發(fā)明實(shí)施例一或者該實(shí)施例二檢測出的惡意flash文件更新得到的病毒庫。在將待檢測flash文件與已有病毒庫進(jìn)行匹配時,可以采用哈希計(jì)算的方式,例如計(jì)算待檢測flash文件的MD5HASH值,然后利用計(jì)算得到的MD5HASH值與病毒庫進(jìn)行匹配,如果病毒庫中存在匹配項(xiàng),則直接確定該待檢測flash文件為惡意flash文件。步驟202 :將待檢測flash文件進(jìn)行反編譯,如果反編譯成功得到源碼,則繼續(xù)執(zhí)行步驟203 ;否則將該待檢測flash文件確定為可疑flash文件,繼續(xù)執(zhí)行步驟204。步驟203 :判斷源碼中是否存在產(chǎn)生shellcode的操作,如果是,將該待檢測flash 文件確定為可疑flash文件,執(zhí)行步驟204 ;否則將該待檢測flash文件確定為安全flash 文件,結(jié)束流程。本步驟中預(yù)先創(chuàng)建一些可能產(chǎn)生shellcode的操作的關(guān)鍵字,將源碼與這些關(guān)鍵字進(jìn)行匹配從而判斷源碼中是否存在產(chǎn)生shellcode的操作,這些關(guān)鍵字可以包括但不限于ByteArray> Date、Number、Loader、fromcharcode 等。如果確定待檢測flash文件為安全flash文件可以將該檢測flash文件替換成一空白flash文件,以便降低后續(xù)解析的CPU和內(nèi)存的損耗。步驟204 :按照實(shí)施例一所述的方法對待檢測flash文件進(jìn)行檢測,如果確定出待檢測flash文件為惡意flash文件,則利用該惡意flash文件更新病毒庫,結(jié)束流程;否則繼續(xù)執(zhí)行步驟205。步驟205 :監(jiān)控IE控件進(jìn)程執(zhí)行該待檢測flash文件,如果出現(xiàn)異常,則確定該待檢測flash文件為惡意flash文件,利用該惡意flash文件更新病毒庫。本步驟是為了防止靜態(tài)檢測和動態(tài)檢測都沒有檢出而漏報某些惡意flash文件, 如果靜態(tài)檢測和動態(tài)檢測都未能檢出惡意flash文件,則惡意flash文件的漏洞將被利用, 導(dǎo)致IE控件進(jìn)程執(zhí)行惡意代碼。因此,通過監(jiān)控IE控件進(jìn)程的文件下載、進(jìn)程創(chuàng)建、注冊表創(chuàng)建等相關(guān)動作,一旦發(fā)現(xiàn)異常就確定為惡意flash文件。其中所述異常包括但不限于IE控件進(jìn)程崩潰、IE控件啟動未知進(jìn)程、IE控件加載未知1 塊等。上述步驟204和步驟205中利用惡意flash文件更新病毒庫就是計(jì)算惡意flash 文件的MD5HASH值,將該MD5HASH值加入病毒庫,以供靜態(tài)檢測過程中進(jìn)行匹配使用。
下面針對實(shí)施例二舉一個實(shí)例,假設(shè)待檢測flash文件為nb. swf,首先將其計(jì)算 MD5HASH后與已有病毒庫進(jìn)行匹配,假設(shè)已有病毒庫中不存在該flash文件的MD5HASH,則匹配不上。對該nb. swf進(jìn)行反編譯得到的源碼如下
package [Global]
{
public class YuanSwf extends flash.display: :MovieClip
{
//========================= Variables
internal static var allocs : Array; internal static var pool : ByteArray; internal static var allocCount : int; internal var jit_egg : ByteArray; internal var childRef : DisplayObject = Null;
//========================= Methods
public static function YuanSwfQ {
return;
public function YuanSwfQ {
superQ;
var IocO:* = new ByteArrayQ; var loci:* = 0; loci = 0; if(locl < 5140)
{
loc0.writelnt(68424724); loci = loci + 4;
}
loc0.writelnt(68424724);由于上述源碼中出現(xiàn)了產(chǎn)生shellcode的操作ByteArray,因此確定該nb. swf文件為可疑flash文件,開始進(jìn)行動態(tài)檢測。通過掛函數(shù)鉤子的方式收集到ByteArray對象的操作信息首先新建了一個 ByteArray對象locO,接著開始往IocO這個對象中寫入整型數(shù)據(jù)68424724(轉(zhuǎn)換為16進(jìn)制為0x41414141),按照寫入編碼方式,將使IocO的有效存儲空間增加一個字節(jié)長度,值為 0x41414141。每次IocO的寫入動作都能夠檢測到,當(dāng)IocO對象的有效存儲空間超過預(yù)設(shè)的閾值0x1000時,會引發(fā)一次堆噴射攻擊檢測。經(jīng)過檢測IocO內(nèi)存儲的數(shù)據(jù)滿足預(yù)設(shè)重復(fù)性要求,認(rèn)為檢測到噴射攻擊特性,將噴射計(jì)數(shù)值加1,返回源碼接續(xù)進(jìn)行產(chǎn)生shellcode
13的操作信息的收集。假設(shè)多次寫入IocO的數(shù)據(jù)的狀況如表I所示,則多次執(zhí)行動態(tài)過程后,噴射計(jì)數(shù)值達(dá)到預(yù)設(shè)的計(jì)數(shù)值閾值,例如5,則確定該nb. swf為惡意flash文件。計(jì)算該nb. swf的 MD5HASH值并存入病毒庫。表I
權(quán)利要求
1.一種檢測惡意flash文件的方法,其特征在于,該方法包括由以下步驟構(gòu)成的動態(tài)檢測流程Al、通過掛函數(shù)鉤子針對待檢測flash文件收集產(chǎn)生shellcode的操作信息,其中 Shellcode為利用特定漏洞的代碼或填充數(shù)據(jù);A2、判斷收集到的產(chǎn)生shellcode的操作信息,如果是產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息,則執(zhí)行步驟A3 ;如果是產(chǎn)生寫內(nèi)存操作的函數(shù)操作信息,則執(zhí)行步驟A4 ;A3、對產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息進(jìn)行參數(shù)調(diào)用的合法性檢測,如果不合法,則確定所述待檢測flash文件為惡意flash文件,結(jié)束對所述待檢測flash文件的檢測流程; A4、對產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間進(jìn)行噴射攻擊檢測,如果檢測到的噴射攻擊特性滿足預(yù)設(shè)的噴射攻擊特性要求,則確定所述待檢測flash文件為惡意flash文件。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,在所述步驟Al之前還包括:A0:新建瀏覽器IE控件進(jìn)程,對可能產(chǎn)生shellcode的操作的函數(shù)掛函數(shù)鉤子,并獲取對待檢測flash 文件進(jìn)行反編譯后得到的源碼;所述步驟Al包括讀取所述源碼,通過已掛的函數(shù)鉤子收集產(chǎn)生shellcode的操作信肩、O
3.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息包括Date對象創(chuàng)建信息或者Number對象創(chuàng)建信息;所述產(chǎn)生寫內(nèi)存操作的函數(shù)操作信息包括ByteArray對象操作信息或者String對象操作信息。
4.根據(jù)權(quán)利要求I所述的方法,其特征在于,在步驟A3中所述對產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息進(jìn)行參數(shù)調(diào)用的合法性檢測包括判斷產(chǎn)生讀內(nèi)存操作的參數(shù)和返回值是否存在內(nèi)存地址與內(nèi)存地址所存儲值的關(guān)系, 如果是,則確定參數(shù)調(diào)用不合法。
5.根據(jù)權(quán)利要求I或4所述的方法,其特征在于,在所述步驟A3中如果所述合法性檢測的結(jié)果為合法,則轉(zhuǎn)至所述步驟Al針對待檢測flash文件繼續(xù)收集產(chǎn)生shellcode的操作信息。
6.根據(jù)權(quán)利要求I所述的方法,其特征在于,在步驟A4中所述對產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間進(jìn)行噴射攻擊檢測具體包括判斷所述產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間長度是否超過預(yù)設(shè)的閾值,如果是, 對所述產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間進(jìn)行噴射攻擊檢測;否則,轉(zhuǎn)至所述步驟Al 針對待檢測flash文件繼續(xù)收集產(chǎn)生shellcode的操作信息。
7.根據(jù)權(quán)利要求I或6所述的方法,其特征在于,所述噴射攻擊檢測具體包括反編譯所述產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間并模擬執(zhí)行,如果順利執(zhí)行,或者執(zhí)行過程中不操作高地址內(nèi)存,或者所述有效存儲空間內(nèi)容的重復(fù)性滿足預(yù)設(shè)重復(fù)性要求,則確定檢測到噴射攻擊特性。
8.根據(jù)權(quán)利要求I或6所述的方法,其特征在于,步驟A4中所述如果檢測到的噴射攻擊特性滿足預(yù)設(shè)的噴射攻擊特性要求,則確定所述待檢測flash文件為惡意flash文件為一旦檢測到噴射攻擊特性,則確定所述待檢測flash文件為惡意flash文件。
9.根據(jù)權(quán)利要求I或6所述的方法,其特征在于,在所述步驟Al之前還包括初始化噴射計(jì)數(shù)值;步驟A4中所述如果檢測到的噴射攻擊特性滿足預(yù)設(shè)的噴射攻擊特性要求,則確定所述待檢測flash文件為惡意flash文件為如果檢測到噴射攻擊特性則將所述噴射計(jì)數(shù)值自加,如果噴射計(jì)數(shù)值達(dá)到預(yù)設(shè)的計(jì)數(shù)值閾值,則確定所述待檢測flash文件為惡意flash文件,否則轉(zhuǎn)至所述步驟Al針對待檢測flash文件繼續(xù)收集產(chǎn)生shelIcode的操作信息。
10.根據(jù)權(quán)利要求I所述的方法,其特征在于,在所述步驟Al之前還包括靜態(tài)檢測流BI、將所述待檢測flash文件與病毒庫進(jìn)行匹配,如果匹配上,則直接確定所述待檢測 flash文件為惡意flash文件,結(jié)束對所述待檢測flash文件的檢測流程;否則,繼續(xù)執(zhí)行所述動態(tài)檢測流程。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,在所述靜態(tài)檢測流程和動態(tài)檢測流程之間還包括B2、將所述待檢測flash文件進(jìn)行反編譯,如果反編譯成功得到源碼,則執(zhí)行步驟B3 ; 否則對所述待檢測flash文件繼續(xù)執(zhí)行所述動態(tài)檢測流程;B3、判斷源碼中是否存在產(chǎn)生shellcode的操作,如果是,對所述待檢測flash文件繼續(xù)執(zhí)行所述動態(tài)檢測流程;否則將所述待檢測flash文件確定為安全flash文件,結(jié)束對所述待檢測flash文件的檢測流程。
12.根據(jù)權(quán)利要求I所述的方法,其特征在于,如果在所述動態(tài)檢測流程之后未檢測出所述待檢測flash為惡意flash,則繼續(xù)執(zhí)行以下監(jiān)控流程監(jiān)控IE控件進(jìn)程執(zhí)行所述待檢測flash文件,如果出現(xiàn)異常,則確定所述待檢測flash 文件為惡意flash文件。
13.根據(jù)權(quán)利要求1、10或12所述的方法,其特征在于,在確定所述待檢測flash文件為惡意flash文件后,利用所述待檢測flash文件更新病毒庫。
14.一種檢測惡意flash文件的裝置,其特征在于,該裝置包括動態(tài)檢測模塊,該動態(tài)檢測模塊具體包括操作信息收集單元,用于通過掛函數(shù)鉤子針對待檢測flash文件收集產(chǎn)生shellcode 的操作信息,其中shellcode為利用特定漏洞的代碼或填充數(shù)據(jù);信息判斷單元,用于判斷收集到的產(chǎn)生shellcode的操作信息,如果是產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息,則觸發(fā)合法性檢測單元;如果是產(chǎn)生寫內(nèi)存操作的函數(shù)操作信息,則觸發(fā)噴射特性檢測單元;合法性檢測單元,用于受到觸發(fā)時,對所述產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息進(jìn)行參數(shù)調(diào)用的合法性檢測,如果不合法,則確定所述待檢測flash文件為惡意flash文件;噴射特性檢測單元,用于受到觸發(fā)時,對所述產(chǎn)生讀內(nèi)存操作的函數(shù)的有效存儲空間進(jìn)行噴射攻擊檢測,如果檢測到的噴射攻擊特性滿足預(yù)設(shè)的噴射攻擊特性要求,則確定所述待檢測flash文件為惡意flash文件。
15.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述動態(tài)檢測模塊還包括預(yù)處理單元,用于新建瀏覽器IE控件進(jìn)程,對可能產(chǎn)生shellcode的操作的函數(shù)掛函數(shù)鉤子,并獲取對待檢測flash文件進(jìn)行反編譯后得到的源碼;所述操作信息收集單元讀取所述源碼,通過已掛的函數(shù)鉤子收集產(chǎn)生shellcode的操作信息。
16.根據(jù)權(quán)利要求14或15所述的裝置,其特征在于,所述產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息包括=Date對象創(chuàng)建信息或者Number對象創(chuàng)建信息;所述產(chǎn)生寫內(nèi)存操作的函數(shù)操作信息包括ByteArray對象操作信息或者String對象操作信息。
17.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述合法性檢測單元在對產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息進(jìn)行參數(shù)調(diào)用的合法性檢測時,判斷產(chǎn)生讀內(nèi)存操作的參數(shù)和返回值是否存在內(nèi)存地址與內(nèi)存地址所存儲值的關(guān)系,如果是,則確定參數(shù)調(diào)用不合法。
18.根據(jù)權(quán)利要求14或17所述的裝置,其特征在于,如果所述合法性檢測單元進(jìn)行合法性檢測的結(jié)果為合法,則觸發(fā)所述操作信息收集單元針對待檢測flash文件繼續(xù)收集產(chǎn)生shellcode的操作信息。
19.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述噴射特性檢測單元對產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間進(jìn)行噴射攻擊檢測時,首先判斷所述產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間長度是否超過預(yù)設(shè)的閾值,如果是,對所述產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間進(jìn)行噴射攻擊檢測;否則,觸發(fā)所述操作信息收集單元針對待檢測flash文件繼續(xù)收集產(chǎn)生shellcode的操作信息。
20.根據(jù)權(quán)利要求14或19所述的裝置,其特征在于,所述噴射攻擊檢測具體包括反編譯所述產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間并模擬執(zhí)行,如果順利執(zhí)行,或者執(zhí)行過程中不操作高地址內(nèi)存,或者所述有效存儲空間內(nèi)容的重復(fù)性滿足預(yù)設(shè)重復(fù)性要求,則確定檢測到噴射攻擊特性。
21.根據(jù)權(quán)利要求14或19所述的裝置,其特征在于,所述噴射特性檢測單元一旦檢測到噴射攻擊特性,則確定所述待檢測flash文件為惡意flash文件。
22.根據(jù)權(quán)利要求14或19所述的裝置,其特征在于,所述動態(tài)檢測模塊還包括噴射計(jì)數(shù)單元,用于在該動態(tài)檢測模塊啟動對所述待檢測flash文件的處理時,初始化噴射計(jì)數(shù)值;如果所述噴射特性檢測單元檢測到噴射攻擊特性,則將所述噴射計(jì)數(shù)值自加,如果噴射計(jì)數(shù)值達(dá)到預(yù)設(shè)的計(jì)數(shù)值閾值,則確定所述待檢測flash文件為惡意flash文件,如果噴射計(jì)數(shù)值未達(dá)到預(yù)設(shè)的計(jì)數(shù)值閾值,則觸發(fā)所述操作信息收集單元針對待檢測flash文件繼續(xù)收集產(chǎn)生shellcode的操作信息。
23.根據(jù)權(quán)利要求14所述的裝置,其特征在于,該裝置還包括靜態(tài)檢測模塊,用于將所述待檢測flash文件與病毒庫進(jìn)行匹配,如果匹配上,則直接確定所述待檢測flash文件為惡意flash文件;否則,將所述待檢測flash文件提供給所述動態(tài)檢測模塊。
24.根據(jù)權(quán)利要求23所述的裝置,其特征在于,在所述靜態(tài)檢測模塊和動態(tài)檢測模塊之間還包括中間處理模塊,用于將所述待檢測flash文件進(jìn)行反編譯,如果反編譯失敗,則將所述待檢測flash文件提供給所述動態(tài)檢測模塊;如果反編譯成功得到源碼,則判斷源碼中是否存在產(chǎn)生shellcode的操作,如果是,將所述待檢測flash文件提供給所述動態(tài)檢測模塊,否則將所述待檢測flash文件確定為安全flash文件。
25.根據(jù)權(quán)利要求14所述的裝置,其特征在于,該裝置還包括執(zhí)行監(jiān)控模塊;所述動態(tài)檢測模塊如果未檢測出所述待檢測flash為惡意flash,則將所述待檢測 flash提供給所述執(zhí)行監(jiān)控模塊;所述執(zhí)行監(jiān)控模塊,用于監(jiān)控IE控件進(jìn)程執(zhí)行所述待檢測flash文件,如果出現(xiàn)異常, 則確定所述待檢測flash文件為惡意flash文件。
26.根據(jù)權(quán)利要求14、23或25所述的裝置,其特征在于,該裝置還包括病毒庫更新模塊,用于如果所述待檢測flash文件被確定為惡意flash文件,則利用所述待檢測flash文件更新病毒庫。
全文摘要
本發(fā)明提供了一種檢測惡意flash文件的方法和裝置,通過掛函數(shù)鉤子針對待檢測flash文件收集產(chǎn)生shellcode的操作信息,分別針對產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息和產(chǎn)生寫內(nèi)存操作的函數(shù)操作信息執(zhí)行不同的檢測操作對產(chǎn)生讀內(nèi)存操作的函數(shù)操作信息進(jìn)行參數(shù)調(diào)用的合法性檢測,對產(chǎn)生寫內(nèi)存操作的函數(shù)的有效存儲空間進(jìn)行噴射攻擊檢測,從而確定待檢測flash文件是否為惡意flash文件。這種動態(tài)檢測的方式自動實(shí)現(xiàn)惡意flash的檢測,無需人工參與和維護(hù)病毒庫,大大降低了維護(hù)成本,提高了覆蓋率;另外,本發(fā)明中對任意的待檢測flash均能夠?qū)崟r檢測出是否惡意,不依賴于預(yù)先收集的病毒庫,解決了滯后性的問題。
文檔編號G06F21/00GK102609654SQ201210027110
公開日2012年7月25日 申請日期2012年2月8日 優(yōu)先權(quán)日2012年2月8日
發(fā)明者黃正 申請人:北京百度網(wǎng)訊科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
安仁县| 陵水| 乾安县| 禄劝| 琼中| 庆云县| 无锡市| 南江县| 临桂县| 监利县| 大荔县| 赣榆县| 英德市| 深泽县| 三河市| 河津市| 吴忠市| 乐安县| 上林县| 林周县| 崇义县| 平罗县| 木兰县| 顺平县| 梅州市| 夏邑县| 西昌市| 于田县| 宣威市| 岳普湖县| 承德县| 三原县| 大渡口区| 饶平县| 门源| 抚顺市| 登封市| 青阳县| 原平市| 芦山县| 阳信县|