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

一種檢測(cè)惡意程序的方法、裝置及虛擬的制造方法

文檔序號(hào):6520178閱讀:272來(lái)源:國(guó)知局
一種檢測(cè)惡意程序的方法、裝置及虛擬的制造方法
【專利摘要】本申請(qǐng)?zhí)峁┝艘环N檢測(cè)惡意程序的方法、裝置及虛擬機(jī),以解決現(xiàn)有技術(shù)無(wú)法檢測(cè)出變形的惡意程序的問(wèn)題。所述方法包括:設(shè)置虛擬內(nèi)存;讀取主引導(dǎo)記錄MBR并保存到所述虛擬內(nèi)存;模擬執(zhí)行虛擬內(nèi)存中主引導(dǎo)記錄MBR中的每一條指令,并在執(zhí)行完每一條指令后檢測(cè)所述虛擬內(nèi)存是否被修改,如果被修改,則發(fā)現(xiàn)惡意程序;否則,繼續(xù)模擬執(zhí)行下一條指令,直到主引導(dǎo)記錄MBR的所有指令模擬執(zhí)行完畢。本申請(qǐng)可以無(wú)視任何特征碼變換技術(shù),只要實(shí)際運(yùn)行中發(fā)生了這個(gè)行為即可被檢測(cè)出來(lái)。
【專利說(shuō)明】一種檢測(cè)惡意程序的方法、裝置及虛擬機(jī)
[0001]本發(fā)明專利申請(qǐng)是申請(qǐng)日為2011年9月14日、申請(qǐng)?zhí)枮?01110272443.2、名稱為“一種檢測(cè)惡意程序的方法、裝置及虛擬機(jī)”的中國(guó)發(fā)明專利申請(qǐng)的分案申請(qǐng)。
【技術(shù)領(lǐng)域】
[0002]本申請(qǐng)涉及信息安全【技術(shù)領(lǐng)域】,特別是涉及一種檢測(cè)惡意程序的方法、裝置及虛擬機(jī)。
【背景技術(shù)】
[0003]惡意程序通常是指未獲得授權(quán)而非法在計(jì)算機(jī)系統(tǒng)中運(yùn)行的程序。例如,計(jì)算機(jī)病毒就是一種運(yùn)行在計(jì)算機(jī)系統(tǒng)中的惡意程序,可對(duì)計(jì)算機(jī)系統(tǒng)的安全性造成威脅。
[0004]隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展,出現(xiàn)了形式多樣的計(jì)算機(jī)病毒。其中,Rootkit是一種內(nèi)核級(jí)的木馬病毒,它是一種隱藏其他程序或進(jìn)程的軟件,可能是一個(gè)或一個(gè)以上的軟件組合,廣義而言,Rootkit也可視為一項(xiàng)技術(shù)。
[0005]在現(xiàn)代操作系統(tǒng)中,應(yīng)用程序不能直接訪問(wèn)硬件,而是通過(guò)調(diào)用操作系統(tǒng)提供的接口來(lái)使用硬件,而操作系統(tǒng)依賴內(nèi)核空間來(lái)管理和調(diào)度這些應(yīng)用。內(nèi)核空間由四大部分組成,分別是:進(jìn)程管理(負(fù)責(zé)分配CPU時(shí)間)、文件訪問(wèn)(把設(shè)備調(diào)配成文件系統(tǒng),并提供一個(gè)一致的接口供上層程序調(diào)用)、安全控制(負(fù)責(zé)強(qiáng)制規(guī)定各個(gè)進(jìn)程的具體的權(quán)限和單獨(dú)的內(nèi)存范圍,避免各進(jìn)程之間發(fā)生沖突)和內(nèi)存管理(負(fù)責(zé)進(jìn)程運(yùn)行時(shí)對(duì)內(nèi)存資源的分配、使用、釋放和回收)。內(nèi)核是一種數(shù)據(jù)結(jié)構(gòu),Rootkit技術(shù)通過(guò)修改內(nèi)核的數(shù)據(jù)結(jié)構(gòu)來(lái)隱藏其他程序的進(jìn)程、文件、網(wǎng)絡(luò)通訊和其它相關(guān)信息(比如注冊(cè)表和可能因修改而產(chǎn)生的系統(tǒng)日
士坐、
;ll> Tj- J O
[0006]Bootkit 是更高級(jí)的 Rootkit, Bootkit 通過(guò)感染 MBR(Master Boot Record,磁盤主引導(dǎo)記錄)的方式,實(shí)現(xiàn)繞過(guò)內(nèi)核檢查和啟動(dòng)隱身,即Bootkit是一種基于MBR的Rootkit。可以認(rèn)為,所有在開(kāi)機(jī)時(shí)比Windows內(nèi)核更早加載、實(shí)現(xiàn)內(nèi)核劫持的技術(shù),都可以稱之為 Bootkit,例如后來(lái)的 BIOS Rootkit、VBootkit、SMM Rootkit 等。
[0007]目前常規(guī)安全軟件對(duì)于各種惡意程序(如病毒)的查殺,主要基于傳統(tǒng)特征碼的檢測(cè)技術(shù)。這是因?yàn)橥ǔG闆r下各種惡意程序在運(yùn)行過(guò)程中都會(huì)運(yùn)行一些特有的指令代碼(即特征碼),通過(guò)查找到這些的特征碼,就可以檢測(cè)出惡意程序。例如對(duì)于Bootkit的檢測(cè),由于這種MBR病毒的特殊性,其一般會(huì)駐留在高端內(nèi)存(即內(nèi)存中的高地址位),因此通過(guò)搜索高端內(nèi)存中是否有特征碼,就可以檢測(cè)出Bootkit。
[0008]但是,越來(lái)越多的病毒出現(xiàn)了變形,有些通過(guò)花指令,有些通過(guò)變形代碼,甚至現(xiàn)在大多病毒都是事先加密,運(yùn)行時(shí)動(dòng)態(tài)解密后再運(yùn)行。所以,對(duì)于這些變形的病毒而言,在達(dá)到同樣效果的情況下,指令是隨機(jī)變化的,按照上述方法檢測(cè)時(shí)找不到特征碼,因此可繞過(guò)常規(guī)安全軟件的查殺。
[0009]綜上所述,目前需要解決的問(wèn)題是:如何檢測(cè)出變形的惡意程序,尤其是基于MBR的Bootkit或類似于Bootkit的病毒。
【發(fā)明內(nèi)容】

[0010]本申請(qǐng)?zhí)峁┝艘环N檢測(cè)惡意程序的方法、裝置及虛擬機(jī),以解決現(xiàn)有技術(shù)無(wú)法檢測(cè)出變形的惡意程序的問(wèn)題。
[0011]為了解決上述問(wèn)題,本申請(qǐng)公開(kāi)了一種檢測(cè)惡意程序的方法,包括:
[0012]設(shè)置虛擬內(nèi)存;
[0013]讀取主引導(dǎo)記錄MBR并保存到所述虛擬內(nèi)存;
[0014]模擬執(zhí)行虛擬內(nèi)存中主引導(dǎo)記錄MBR中的每一條指令,并在執(zhí)行完每一條指令后檢測(cè)所述虛擬內(nèi)存是否被修改,如果被修改,則發(fā)現(xiàn)惡意程序;否則,繼續(xù)模擬執(zhí)行下一條指令,直到主引導(dǎo)記錄MBR的所有指令模擬執(zhí)行完畢。
[0015]優(yōu)選的,所述檢測(cè)所述虛擬內(nèi)存是否被修改,包括:檢測(cè)所述虛擬內(nèi)存的大小是否改變,如果改變,則所述虛擬內(nèi)存被修改;否則,未被修改。
[0016]優(yōu)選的,所述設(shè)置虛擬內(nèi)存之前,還包括:設(shè)置虛擬CPU ;則所述模擬執(zhí)行虛擬內(nèi)存中主引導(dǎo)記錄MBR中的每一條指令,包括:由所述虛擬CPU模擬執(zhí)行虛擬內(nèi)存中主引導(dǎo)記錄MBR中的每一條指令。
[0017]其中,所述設(shè)直虛擬CPU包括:初始化虛擬CPU ;所述設(shè)直虛擬內(nèi)存包括:初始化BIOS數(shù)據(jù)區(qū),所述BIOS數(shù)據(jù)區(qū)保存虛擬內(nèi)存的大小。
[0018]優(yōu)選的,所述模擬執(zhí)行虛擬內(nèi)存中主引導(dǎo)記錄MBR中的每一條指令之前,還包括:設(shè)置虛擬硬盤;則所述模擬執(zhí)行虛擬內(nèi)存中主引導(dǎo)記錄MBR中的每一條指令包括:將虛擬內(nèi)存中的主引導(dǎo)記錄MBR拷貝到所述虛擬硬盤;從所述虛擬硬盤讀取主引導(dǎo)記錄MBR,并模擬執(zhí)行主引導(dǎo)記錄MBR中的每一條指令。
[0019]優(yōu)選的,所述方法還包括:對(duì)主引導(dǎo)記錄MBR中的每一條指令進(jìn)行反匯編,并輸出顯不。
[0020]本申請(qǐng)還提供了一種檢測(cè)惡意程序的裝置,包括:
[0021]第一設(shè)置模塊,用于設(shè)置虛擬內(nèi)存;
[0022]讀取及保存模塊,用于讀取主引導(dǎo)記錄MBR并保存到所述虛擬內(nèi)存;
[0023]模擬執(zhí)行模塊,用于模擬執(zhí)行虛擬內(nèi)存中主引導(dǎo)記錄MBR中的每一條指令;
[0024]檢測(cè)模塊,用于在所述模擬執(zhí)行模塊執(zhí)行完每一條指令后檢測(cè)所述虛擬內(nèi)存是否被修改,如果被修改,則發(fā)現(xiàn)惡意程序;否則,觸發(fā)所述模擬執(zhí)行模塊繼續(xù)模擬執(zhí)行下一條指令,直到主引導(dǎo)記錄MBR的所有指令模擬執(zhí)行完畢。
[0025]優(yōu)選的,所述檢測(cè)模塊通過(guò)檢測(cè)所述虛擬內(nèi)存的大小是否改變來(lái)判斷是否被修改,如果改變,則所述虛擬內(nèi)存被修改;否則,未被修改。
[0026]優(yōu)選的,所述裝置還包括:第二設(shè)置模塊,用于設(shè)置虛擬CPU,所述虛擬CPU觸發(fā)所述模擬執(zhí)行模塊和檢測(cè)模塊的執(zhí)行。
[0027]優(yōu)選的,所述裝置還包括:第三設(shè)置模塊,用于設(shè)置虛擬硬盤,并將虛擬內(nèi)存中的主引導(dǎo)記錄MBR拷貝到所述虛擬硬盤;則所述模擬執(zhí)行模塊從所述虛擬硬盤讀取主引導(dǎo)記錄MBR,并模擬執(zhí)行主引導(dǎo)記錄MBR中的每一條指令。
[0028]優(yōu)選的,所述裝置還包括:反匯編引擎,用于對(duì)主引導(dǎo)記錄MBR中的每一條指令進(jìn)行反匯編,并輸出顯示。[0029]本申請(qǐng)還提供了一種檢測(cè)惡意程序的虛擬機(jī),包括:
[0030]虛擬CPU初始化模塊,用于初始化虛擬CPU ;
[0031]虛擬內(nèi)存初始化模塊,用于初始化虛擬內(nèi)存,并在初始化的過(guò)程中讀取主引導(dǎo)記錄MBR然后保存到所述虛擬內(nèi)存;
[0032]虛擬內(nèi)存,用于存儲(chǔ)主引導(dǎo)記錄MBR ;
[0033]虛擬CPU,用于模擬執(zhí)行虛擬內(nèi)存中主引導(dǎo)記錄MBR中的每一條指令,并在執(zhí)行完每一條指令后檢測(cè)所述虛擬內(nèi)存是否被修改,如果被修改,則發(fā)現(xiàn)惡意程序;否則,繼續(xù)模擬執(zhí)行下一條指令,直到主引導(dǎo)記錄MBR的所有指令模擬執(zhí)行完畢。
[0034]優(yōu)選的,所述虛擬機(jī)還包括:
[0035]虛擬硬盤初始化模塊,用于初始化虛擬硬盤,并在初始化的過(guò)程中將虛擬內(nèi)存中的主引導(dǎo)記錄MBR拷貝到所述虛擬硬盤,所述虛擬CPU從虛擬硬盤讀取主引導(dǎo)記錄MBR并模擬執(zhí)行;
[0036]虛擬硬盤,用于存儲(chǔ)拷貝的主引導(dǎo)記錄MBR。
[0037]優(yōu)選的,所述虛擬機(jī)還包括:
[0038]反匯編引擎,用于對(duì)主引導(dǎo)記錄MBR中的每一條指令進(jìn)行反匯編,并輸出顯示。
[0039]與現(xiàn)有技術(shù)相比,本申請(qǐng)包括以下優(yōu)點(diǎn):
[0040]首先,本申請(qǐng)?jiān)陂_(kāi)機(jī)后并在加載操作系統(tǒng)文件之前,通過(guò)模擬的方式先將讀取的主引導(dǎo)記錄MBR存到所設(shè)置的虛擬內(nèi)存中,然后模擬實(shí)現(xiàn)主引導(dǎo)記錄MBR的加載執(zhí)行過(guò)程,并且每當(dāng)模擬執(zhí)行完MBR中的一條指令后,檢測(cè)所述虛擬內(nèi)存是否被修改,如果被修改,則發(fā)現(xiàn)惡意程序;否則,繼續(xù)模擬執(zhí)行下一條指令,直到主引導(dǎo)記錄MBR的所有指令模擬執(zhí)行完畢。
[0041]由于實(shí)際情況中,基于MBR的Bootkit或類似于Bootkit的病毒等惡意程序,即使進(jìn)行了變形,也必須要駐留系統(tǒng)的高端內(nèi)存,所以必然會(huì)修改高端內(nèi)存,因此上述的檢測(cè)方法通過(guò)設(shè)置虛擬內(nèi)存來(lái)模擬高端內(nèi)存,并通過(guò)檢測(cè)虛擬內(nèi)存是否被修改,就可以發(fā)現(xiàn)可疑的惡意程序,從而無(wú)視任何特征碼變換技術(shù),只要實(shí)際運(yùn)行中發(fā)生了這個(gè)行為即可被檢測(cè)出來(lái)。所述的檢測(cè)方法在很大程度上可以檢測(cè)出過(guò)去、現(xiàn)在和未來(lái)的基于MBR的Bootkit。
[0042]其次,本申請(qǐng)還實(shí)現(xiàn)了一種虛擬機(jī),所述虛擬機(jī)通過(guò)實(shí)現(xiàn)虛擬CPU、虛擬內(nèi)存、反匯編引擎、虛擬硬盤以及其他相關(guān)部分,如虛擬B10S(Basic Input Output System,基本輸入輸出系統(tǒng))、虛擬I/O設(shè)備等,可以模擬實(shí)現(xiàn)主引導(dǎo)記錄MBR的加載執(zhí)行過(guò)程,并檢測(cè)出是否存在Bootkit等惡意程序。而且,所述虛擬機(jī)既可以作為單獨(dú)的工具,也可以作為動(dòng)態(tài)庫(kù)被其他程序調(diào)用,使用靈活。同時(shí),考慮到性能和效率等實(shí)用性方面,整個(gè)虛擬機(jī)的實(shí)現(xiàn)控制在幾百K字節(jié)內(nèi),是一種輕量級(jí)的虛擬機(jī)。
[0043]當(dāng)然,實(shí)施本申請(qǐng)的任一產(chǎn)品不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。
【專利附圖】

【附圖說(shuō)明】
[0044]圖1是現(xiàn)有技術(shù)中鬼影3中的代碼不意圖;
[0045]圖2是現(xiàn)有技術(shù)中鬼影的一個(gè)變種代碼的示意圖;
[0046]圖3是本申請(qǐng)實(shí)施例所述一種檢測(cè)惡意程序的方法流程圖;
[0047]圖4是本申請(qǐng)實(shí)施例所述一種檢測(cè)惡意程序的裝置結(jié)構(gòu)圖;[0048]圖5是本申請(qǐng)另一實(shí)施例所述虛擬機(jī)的結(jié)構(gòu)圖;
[0049]圖6是本申請(qǐng)實(shí)施例中正常的MBR運(yùn)行后的顯示結(jié)果示意圖;
[0050]圖7是本申請(qǐng)實(shí)施例中中了鬼影I后的MBR運(yùn)行結(jié)果示意圖;
[0051]圖8是本申請(qǐng)實(shí)施例中中了鬼影3后的MBR運(yùn)行結(jié)果示意圖;
[0052]圖9是本申請(qǐng)實(shí)施例中中了頂級(jí)Bootkit后的MBR運(yùn)行結(jié)果示意圖。
【具體實(shí)施方式】
[0053]為使本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)的說(shuō)明。
[0054]對(duì)于惡意程序的檢測(cè),尤其是對(duì)基于MBR的Bootkit或類似于Bootkit的病毒等惡意程序的檢測(cè),本申請(qǐng)?zhí)岢鲆环N檢測(cè)方法,無(wú)論這些惡意程序有何種變形,都可以被檢測(cè)出來(lái)。
[0055]下面首先介紹本申請(qǐng)?zhí)岢龅乃悸?,如?
[0056]正常情況下,計(jì)算機(jī)系統(tǒng)的開(kāi)機(jī)過(guò)程是:
[0057]開(kāi)機(jī)通電自檢一> 主板BIOS根據(jù)用戶指定的啟動(dòng)順序從軟盤、硬盤或光驅(qū)進(jìn)行啟動(dòng)一> 系統(tǒng)BIOS將主引導(dǎo)記錄MBR讀入內(nèi)存一> 控制權(quán)交給主引導(dǎo)程序一> 主引導(dǎo)程序檢查分區(qū)表狀態(tài),尋找活動(dòng)的分區(qū)一> 主引導(dǎo)程序?qū)⒖刂茩?quán)交給活動(dòng)分區(qū)的引導(dǎo)記錄,由引導(dǎo)記錄加載操作系統(tǒng)啟動(dòng)文件。
[0058]由上可知,MBR是電腦通電開(kāi)機(jī),主板自檢完成后,被第一個(gè)讀取到的位置,位于硬盤的0磁頭0磁道I扇區(qū),它的大小是512字節(jié),不屬于任何一個(gè)操作系統(tǒng),也不能用操作系統(tǒng)提供的磁盤操作命令來(lái)讀取。
[0059]DOS時(shí)代泛濫成災(zāi)的引導(dǎo)區(qū)病毒多寄生于MBR中。以鬼影病毒為例,該病毒寄生在MBR中,病毒釋放的驅(qū)動(dòng)程序,能夠破壞大多數(shù)安全工具和系統(tǒng)輔助工具。當(dāng)系統(tǒng)再次重啟時(shí),該病毒會(huì)早于操作系統(tǒng)內(nèi)核先行加載。而當(dāng)病毒成功運(yùn)行后,在進(jìn)程中、系統(tǒng)啟動(dòng)加載項(xiàng)里找不到任何異常。即使格式化重裝系統(tǒng),也無(wú)法將該病毒清除。
[0060]鬼影病毒駐留在系統(tǒng)的高端內(nèi)存中,因此現(xiàn)有技術(shù)通過(guò)搜索高端內(nèi)存的特征碼來(lái)定位其是否是病毒。例如,鬼影3中的代碼如圖1所示,通過(guò)搜索特征碼0X0413來(lái)檢測(cè)是否修改了高端內(nèi)存來(lái)駐留內(nèi)存。而對(duì)于變形的鬼影代碼,參照?qǐng)D2所示的一個(gè)鬼影變種代碼,這段代碼可以達(dá)到和圖1 一樣的修改高端內(nèi)存的效果,但卻通過(guò)指令的變形,找不到特征的代碼,從而饒過(guò)常規(guī)安全軟件的查殺。
[0061]仔細(xì)分析圖1和圖2所示的鬼影病毒,可以發(fā)現(xiàn),無(wú)論其是否變形,只要運(yùn)行就能夠達(dá)到修改高端內(nèi)存的效果。因此,通過(guò)檢測(cè)高端內(nèi)存就可以檢測(cè)出各種形式的鬼影病毒。本申請(qǐng)正是利用這一點(diǎn),通過(guò)設(shè)置虛擬內(nèi)存來(lái)模擬高端內(nèi)存,并通過(guò)模擬MBR的加載執(zhí)行過(guò)程來(lái)檢測(cè)所述虛擬內(nèi)存,從而在惡意程序真正運(yùn)行之前就查找出各種基于MBR的Bootkit (如鬼影病毒)或類似于Bootkit的病毒等惡意程序。
[0062]下面通過(guò)實(shí)施例對(duì)本申請(qǐng)所述方法的實(shí)現(xiàn)流程進(jìn)行詳細(xì)說(shuō)明。
[0063]參照?qǐng)D3,是本申請(qǐng)實(shí)施例所述一種檢測(cè)惡意程序的方法流程圖。
[0064]參照上面的計(jì)算機(jī)系統(tǒng)開(kāi)機(jī)過(guò)程,在系統(tǒng)開(kāi)機(jī)后并且在加載操作系統(tǒng)文件之前,執(zhí)行以下步驟:[0065]步驟301,設(shè)置虛擬內(nèi)存;
[0066]即分配一塊內(nèi)存區(qū)域作為虛擬內(nèi)存使用,所述虛擬內(nèi)存是對(duì)實(shí)際的系統(tǒng)高端內(nèi)存的模擬。
[0067]步驟302,讀取主引導(dǎo)記錄MBR并保存到所述虛擬內(nèi)存;
[0068]真實(shí)的開(kāi)機(jī)過(guò)程中,開(kāi)機(jī)通電自檢后,系統(tǒng)BIOS將主引導(dǎo)記錄MBR讀入真實(shí)的高端內(nèi)存;而本實(shí)施例中,是將MBR讀入所述虛擬內(nèi)存中。
[0069]步驟303,模擬執(zhí)行虛擬內(nèi)存中主引導(dǎo)記錄MBR中的每一條指令,并在執(zhí)行完每一條指令后檢測(cè)所述虛擬內(nèi)存是否被修改;
[0070]如果被修改,則發(fā)現(xiàn)惡意程序,退出檢測(cè)過(guò)程,并可以進(jìn)行提示;否則,如果未被修改,則繼續(xù)模擬執(zhí)行下一條指令,直到主引導(dǎo)記錄MBR的所有指令模擬執(zhí)行完畢,退出檢測(cè)過(guò)程。若MBR的所有指令都模擬執(zhí)行完畢也沒(méi)有發(fā)現(xiàn)惡意程序,則將控制權(quán)交給系統(tǒng)中真實(shí)的活動(dòng)分區(qū)的引導(dǎo)記錄,由引導(dǎo)記錄加載操作系統(tǒng)啟動(dòng)文件。
[0071]具體的,可以通過(guò)檢測(cè)所述虛擬內(nèi)存的大小是否改變來(lái)判斷是否被修改,如果改變,則所述虛擬內(nèi)存被修改;否則,未被修改。目前的實(shí)際應(yīng)用中,由于Bootkit可修改內(nèi)存使內(nèi)存的大小變小,因此在模擬執(zhí)行每一條指令之后,可通過(guò)判斷虛擬內(nèi)存的大小是否變小來(lái)進(jìn)行檢測(cè)。當(dāng)然,本實(shí)施例也不排除其他判斷內(nèi)存是否被修改的方法。
[0072]此外,本實(shí)施例進(jìn)一步可以通過(guò)虛擬CPU來(lái)完成上述步驟303,。具體的,在步驟301設(shè)置虛擬內(nèi)存之前,先設(shè)置虛擬CPU,然后在步驟303由所述虛擬CPU模擬指令的執(zhí)行,并對(duì)虛擬內(nèi)存進(jìn)行檢測(cè)。
[0073]基于上述圖3所示實(shí)施例的內(nèi)容:
[0074]進(jìn)一步可選的,設(shè)置完虛擬內(nèi)存后,還可設(shè)置虛擬硬盤,并將虛擬內(nèi)存中的MBR拷貝到所述虛擬硬盤中,當(dāng)模擬執(zhí)行MBR中的指令時(shí),直接從所述虛擬硬盤中進(jìn)行讀取。
[0075]進(jìn)一步可選的,為了整個(gè)模擬過(guò)程的完整性,還可以設(shè)置出虛擬BIOS、虛擬I/O設(shè)備等其他相關(guān)部分,用于所述檢測(cè)過(guò)程。
[0076]進(jìn)一步可選的,為了便于相關(guān)人員查看整個(gè)模擬過(guò)程的執(zhí)行,還可以對(duì)主引導(dǎo)記錄MBR中的每一條指令進(jìn)行反匯編,并輸出顯示。
[0077]綜上所述,由于實(shí)際情況中,基于MBR的Bootkit或類似于Bootkit的病毒等惡意程序,即使進(jìn)行了變形,也必須要駐留系統(tǒng)的高端內(nèi)存,所以必然會(huì)修改高端內(nèi)存,因此上述的檢測(cè)方法通過(guò)設(shè)置虛擬內(nèi)存來(lái)模擬高端內(nèi)存,并通過(guò)檢測(cè)虛擬內(nèi)存是否被修改,就可以發(fā)現(xiàn)可疑的惡意程序,從而無(wú)視任何特征碼變換技術(shù),只要實(shí)際運(yùn)行中發(fā)生了這個(gè)行為即可被檢測(cè)出來(lái)。所述的檢測(cè)方法在很大程度上可以檢測(cè)出過(guò)去、現(xiàn)在和未來(lái)的基于MBR的 Bootkit。
[0078]需要說(shuō)明的是,對(duì)于前述的方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請(qǐng)并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本申請(qǐng),某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書(shū)中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作并不一定是本申請(qǐng)所必須的。
[0079]基于上述檢測(cè)方法的實(shí)施例,本申請(qǐng)還提供了相應(yīng)的裝置實(shí)施例。
[0080]參照?qǐng)D4,是本申請(qǐng)實(shí)施例所述一種檢測(cè)惡意程序的裝置結(jié)構(gòu)圖。
[0081 ] 所述檢測(cè)裝置可以包括:[0082]第一設(shè)置模塊41,用于設(shè)置虛擬內(nèi)存;
[0083]讀取及保存模塊42,用于讀取主引導(dǎo)記錄MBR并保存到所述虛擬內(nèi)存;
[0084]模擬執(zhí)行模塊43,用于模擬執(zhí)行虛擬內(nèi)存中主引導(dǎo)記錄MBR中的每一條指令;
[0085]檢測(cè)模塊44,用于在所述模擬執(zhí)行模塊43執(zhí)行完每一條指令后檢測(cè)所述虛擬內(nèi)存是否被修改,如果被修改,則發(fā)現(xiàn)惡意程序;否則,觸發(fā)所述模擬執(zhí)行模塊43繼續(xù)模擬執(zhí)行下一條指令,直到主引導(dǎo)記錄MBR的所有指令模擬執(zhí)行完畢。
[0086]優(yōu)選的,所述檢測(cè)模塊44可通過(guò)檢測(cè)所述虛擬內(nèi)存的大小是否改變來(lái)判斷是否被修改,如果改變,則所述虛擬內(nèi)存被修改;否則,未被修改。
[0087]進(jìn)一步可選的,所述檢測(cè)裝置還可以包括:
[0088]第二設(shè)置模塊45,用于設(shè)置虛擬CPU,所述虛擬CPU可觸發(fā)所述模擬執(zhí)行模塊43和檢測(cè)模塊44的執(zhí)行。
[0089]進(jìn)一步可選的,所述檢測(cè)裝置還可以包括:
[0090]第三設(shè)置模塊46,用于設(shè)置虛擬硬盤,并將虛擬內(nèi)存中的主引導(dǎo)記錄MBR拷貝到所述虛擬硬盤;
[0091]此時(shí),所述模擬執(zhí)行模塊43從所述虛擬硬盤讀取主引導(dǎo)記錄MBR,并模擬執(zhí)行主引導(dǎo)記錄MBR中的每一條指令。
[0092]進(jìn)一步可選的,所述檢測(cè)裝置還可以包括:
[0093]反匯編引擎47,用于對(duì)主引導(dǎo)記錄MBR中的每一條指令進(jìn)行反匯編,并輸出顯示。
[0094]所述檢測(cè)裝置既可以作為單獨(dú)的工具,也可以作為動(dòng)態(tài)庫(kù)被其他程序調(diào)用,使用靈活。
[0095]對(duì)于上述檢測(cè)裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)上述方法實(shí)施例的部分說(shuō)明即可。
[0096]基于上述內(nèi)容,為了使本領(lǐng)域技術(shù)人員更加了解本申請(qǐng)的實(shí)現(xiàn),本申請(qǐng)還提供了另一更具體的實(shí)施例,內(nèi)容如下。
[0097]實(shí)現(xiàn)一種虛擬機(jī),所述虛擬機(jī)通過(guò)實(shí)現(xiàn)虛擬CPU、虛擬內(nèi)存、反匯編引擎、虛擬硬盤以及其他相關(guān)部分,如虛擬BIOS、虛擬I/O設(shè)備等,可以模擬實(shí)現(xiàn)主引導(dǎo)記錄MBR的加載執(zhí)行過(guò)程,并檢測(cè)出是否存在Bootkit等惡意程序。
[0098]參照?qǐng)D5,是本申請(qǐng)另一實(shí)施例所述虛擬機(jī)的結(jié)構(gòu)圖。
[0099]具體的,所述虛擬機(jī)可以包括:
[0100]虛擬CPU初始化模塊51,用于初始化虛擬CPU54 ;
[0101]虛擬內(nèi)存初始化模塊52,用于初始化虛擬內(nèi)存53,并在初始化的過(guò)程中讀取主引導(dǎo)記錄MBR然后保存到所述虛擬內(nèi)存53 ;
[0102]虛擬內(nèi)存53,用于存儲(chǔ)主引導(dǎo)記錄MBR;
[0103]虛擬CPU54,用于模擬執(zhí)行虛擬內(nèi)存53中主引導(dǎo)記錄MBR中的每一條指令,并在執(zhí)行完每一條指令后檢測(cè)所述虛擬內(nèi)存是否被修改,如果被修改,則發(fā)現(xiàn)惡意程序;否則,繼續(xù)模擬執(zhí)行下一條指令,直到主引導(dǎo)記錄MBR的所有指令模擬執(zhí)行完畢。
[0104]進(jìn)一步可選的,所述虛擬機(jī)還可以包括:
[0105]虛擬硬盤初始化模塊55,用于初始化虛擬硬盤56,并在初始化的過(guò)程中將虛擬內(nèi)存53中的主引導(dǎo)記錄MBR拷貝到所述虛擬硬盤56,所述虛擬CPU54從虛擬硬盤56讀取主引導(dǎo)記錄MBR并模擬執(zhí)行;
[0106]虛擬硬盤56,用于存儲(chǔ)拷貝的主引導(dǎo)記錄MBR。
[0107]進(jìn)一步可選的,所述虛擬機(jī)還可以包括:
[0108]反匯編引擎57,用于對(duì)主引導(dǎo)記錄MBR中的每一條指令進(jìn)行反匯編,并輸出顯示。
[0109]由于實(shí)際應(yīng)用中Bootkit病毒多運(yùn)行于計(jì)算機(jī)系統(tǒng)的實(shí)模式下,因此下面將以實(shí)模式下的虛擬機(jī)為例進(jìn)行詳細(xì)說(shuō)明。當(dāng)然,所述虛擬機(jī)可應(yīng)用于保護(hù)模式或其他計(jì)算機(jī)模式下,本實(shí)施例不受此限定。
[0110]在實(shí)模式下,上述虛擬CPU可模擬實(shí)現(xiàn)所有實(shí)模式下的指令,主要為8086指令,還可以包括386以后的指令。此外,隨著木馬等Bootkit技術(shù)的發(fā)展,如果木馬調(diào)用了特殊的指令,所述虛擬CPU還可以進(jìn)行相應(yīng)特殊指令的模擬。例如,魅影病毒為了防止被調(diào)試采用了 586以后才支持的指令RDTSC,則虛擬CPU還會(huì)模擬所述RDTSC指令。
[0111]在開(kāi)機(jī)通電自檢后,系統(tǒng)BIOS讀取系統(tǒng)內(nèi)置的MBR,然后傳給所述虛擬機(jī),同時(shí)虛擬機(jī)進(jìn)行初始化。虛擬機(jī)的執(zhí)行步驟如下:
[0112]步驟I,初始化虛擬CPU ;
[0113]首先進(jìn)行虛擬CPU初始化,虛擬CPU為單核的80x86,支持的寄存器同真實(shí)的機(jī)器。
[0114]此外,支持指令的初始化,虛擬機(jī)內(nèi)部有個(gè)指令支持列表,該列表可根據(jù)實(shí)際需要,不斷增加需要支持的指令,初始化的時(shí)候會(huì)填充已經(jīng)支持的指令列表。然后,將虛擬機(jī)中的CPU的指令指針指向虛擬內(nèi)存中的BIOS指令開(kāi)始執(zhí)行處(即MBR指令)0xf000: OxfffO。
[0115]步驟2,初始化虛擬內(nèi)存;
[0116]可通過(guò)初始化BIOS數(shù)據(jù)區(qū),所述BIOS數(shù)據(jù)區(qū)保存常規(guī)的虛擬內(nèi)存的大小,在實(shí)模式下可分配640KB左右的內(nèi)存空間作為虛擬內(nèi)存使用。然后,將系統(tǒng)BIOS讀取的MBR存入所述虛擬內(nèi)存中。
[0117]步驟3,初始化虛擬硬盤以及虛擬機(jī)的其他相關(guān)部分;
[0118]一般在DOS下只使用IMB的磁盤,所以通過(guò)分配IMB左右的內(nèi)存空間作為虛擬硬盤來(lái)模擬實(shí)際的硬盤。相應(yīng)的,還可通過(guò)訪問(wèn)所述虛擬硬盤來(lái)模擬訪問(wèn)實(shí)際的硬盤。然后,將虛擬內(nèi)存中的MBR拷貝到所述虛擬磁盤的開(kāi)始處。
[0119]此外,還會(huì)初始化虛擬機(jī)的其他相關(guān)部分,如虛擬BIOS、虛擬1/0設(shè)備等。
[0120]步驟4,運(yùn)行虛擬CPU;
[0121]與實(shí)際的執(zhí)行過(guò)程類似,開(kāi)始執(zhí)行虛擬CPU后,從BIOS指令開(kāi)始執(zhí)行處(即MBR指令)開(kāi)始執(zhí)行。每執(zhí)行MBR的一條指令,虛擬CPU會(huì)進(jìn)行指令譯碼,根據(jù)指令譯碼結(jié)果修改內(nèi)部的寄存器和相關(guān)內(nèi)存,并執(zhí)行相應(yīng)的流程。如果指令中包含病毒,則虛擬CPU不僅會(huì)修改內(nèi)部的寄存器,還會(huì)修改相關(guān)的虛擬內(nèi)存;如果不包含,則不會(huì)修改相關(guān)的虛擬內(nèi)存。
[0122]步驟5,虛擬CPU檢測(cè)虛擬內(nèi)存。
[0123]每執(zhí)行一條指令后,虛擬CPU會(huì)檢測(cè)前面設(shè)置的BIOS數(shù)據(jù)區(qū)保存的虛擬內(nèi)存大小,如果發(fā)現(xiàn)被改變了,就認(rèn)為發(fā)現(xiàn)了可疑MBR病毒,然后退出虛擬機(jī),并進(jìn)行提示。如果沒(méi)有發(fā)現(xiàn)則繼續(xù)執(zhí)行,如果發(fā)現(xiàn)執(zhí)行到CS=0,IP=0X7C00的時(shí)候就檢測(cè)是否執(zhí)行到了操作系統(tǒng)引導(dǎo)區(qū),比如是否是NTFS或FAT的文件系統(tǒng)的引導(dǎo)區(qū),如是的,則認(rèn)為執(zhí)行MBR結(jié)束,沒(méi)有發(fā)現(xiàn)可疑的MBR,然后退出。
[0124]需要說(shuō)明的是,上述步驟的先后順序可根據(jù)實(shí)際需要進(jìn)行調(diào)整,本申請(qǐng)并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本申請(qǐng),某些步驟可以采用其他順序或者同時(shí)進(jìn)行。
[0125]上述虛擬機(jī)既可以作為單獨(dú)的工具,也可以作為動(dòng)態(tài)庫(kù)被其他程序調(diào)用,使用靈活。同時(shí),考慮到性能和效率等實(shí)用性方面,整個(gè)虛擬機(jī)的實(shí)現(xiàn)控制在幾百K字節(jié)內(nèi),是一種輕量級(jí)的虛擬機(jī)。
[0126]下面以鬼影病毒為例說(shuō)明本申請(qǐng)的上述內(nèi)容。
[0127]參照?qǐng)D6,是本申請(qǐng)實(shí)施例中正常的MBR運(yùn)行后的顯示結(jié)果示意圖;
[0128]參照?qǐng)D7,是本申請(qǐng)實(shí)施例中中了鬼影I后的MBR運(yùn)行結(jié)果示意圖;
[0129]參照?qǐng)D8,是本申請(qǐng)實(shí)施例中中了鬼影3后的MBR運(yùn)行結(jié)果示意圖;
[0130]參照?qǐng)D9,是本申請(qǐng)實(shí)施例中中了頂級(jí)Bootkit后的MBR運(yùn)行結(jié)果示意圖。
[0131]其中,
[0132]MbrVmConsole 為主程序;
[0133]MbrVM.1ni為配置文件,用來(lái)指定VM內(nèi)存大小和指定虛擬硬盤的文件;
[0134]Mbr.1mg為指定的虛擬硬盤文件;
[0135]BIOS下為虛擬機(jī)用到的虛擬BIOS文件;
[0136]使用時(shí)候,將指定的MBR DUMP文件mbr.bin拷貝到虛擬機(jī)目錄下,運(yùn)行MbrVmconsole即可運(yùn)行虛擬機(jī)進(jìn)行檢測(cè)。
[0137]mbrGood.bin 為正常 MBR ;
[0138]mbrguiyingl.bin 為鬼影 IMBR ;
[0139]mbrguiying3.bin 為鬼影 3MBR ;
[0140]mbrTdl.bin 為 TDL4MBR ;
[0141]運(yùn)行時(shí),將相應(yīng)的文件改名為mbr.bin即可進(jìn)行相應(yīng)的檢測(cè)。
[0142]綜上所述,隨著現(xiàn)在殺毒軟件技術(shù)的日益成熟,木馬等病毒生存的空間越來(lái)越狹小,傳統(tǒng)的木馬技術(shù),已經(jīng)很難生存和發(fā)展了。但Bootkit技術(shù)的出現(xiàn),給病毒一個(gè)很大的生存發(fā)展空間,使其可以做到無(wú)文件、無(wú)進(jìn)程、無(wú)注冊(cè)表修改等任何殺軟能檢測(cè)到的東西,只需要在MBR里寫(xiě)入加載代碼,就可以加載起一個(gè)完整的病毒執(zhí)行體系。而且即使格式化重裝,也照樣能復(fù)活。所以基于本申請(qǐng)所實(shí)現(xiàn)的方法和裝置,在以后檢測(cè)該方面的木馬等病毒中起到?jīng)Q定性的作用,而這正是目前機(jī)會(huì)所有殺毒軟件的盲點(diǎn)。
[0143]本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。
[0144]還需要說(shuō)明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。
[0145]以上對(duì)本申請(qǐng)所提供的一種檢測(cè)惡意程序的方法、裝置及虛擬機(jī),進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。
【權(quán)利要求】
1.一種檢測(cè)惡意程序的方法,其特征在于,包括: 設(shè)直虛擬內(nèi)存; 讀取主引導(dǎo)記錄MBR并保存到所述虛擬內(nèi)存; 模擬執(zhí)行虛擬內(nèi)存中主引導(dǎo)記錄MBR中的每一條指令,并在執(zhí)行完每一條指令后檢測(cè)所述虛擬內(nèi)存是否被修改,如果被修改,則發(fā)現(xiàn)惡意程序;否則,繼續(xù)模擬執(zhí)行下一條指令,直到主引導(dǎo)記錄MBR的所有指令模擬執(zhí)行完畢。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述檢測(cè)所述虛擬內(nèi)存是否被修改,包括: 檢測(cè)所述虛擬內(nèi)存的大小是否改變,如果改變,則所述虛擬內(nèi)存被修改;否則,未被修 改。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述設(shè)置虛擬內(nèi)存之前,還包括: 設(shè)置虛擬CPU ; 則所述模擬執(zhí)行虛擬內(nèi)存中主引導(dǎo)記錄MBR中的每一條指令,包括: 由所述虛擬CPU模擬執(zhí)行虛擬內(nèi)存中主引導(dǎo)記錄MBR中的每一條指令。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于, 所述設(shè)置虛擬CPU包括:初始化虛擬CPU ; 所述設(shè)置虛擬內(nèi)存包括:初始化BIOS數(shù)據(jù)區(qū),所述BIOS數(shù)據(jù)區(qū)保存虛擬內(nèi)存的大小。
5.根據(jù)權(quán)利要求1或2所述的方法,其特征在于, 所述模擬執(zhí)行虛擬內(nèi)存中主引導(dǎo)記錄MBR中的每一條指令之前,還包括:設(shè)置虛擬硬盤; 則所述模擬執(zhí)行虛擬內(nèi)存中主引導(dǎo)記錄MBR中的每一條指令包括: 將虛擬內(nèi)存中的主引導(dǎo)記錄MBR拷貝到所述虛擬硬盤; 從所述虛擬硬盤讀取主引導(dǎo)記錄MBR,并模擬執(zhí)行主引導(dǎo)記錄MBR中的每一條指令。
6.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,還包括: 對(duì)主引導(dǎo)記錄MBR中的每一條指令進(jìn)行反匯編,并輸出顯示。
7.—種檢測(cè)惡意程序的裝置,其特征在于,包括: 第一設(shè)置模塊,用于設(shè)置虛擬內(nèi)存; 讀取及保存模塊,用于讀取主引導(dǎo)記錄MBR并保存到所述虛擬內(nèi)存; 模擬執(zhí)行模塊,用于模擬執(zhí)行虛擬內(nèi)存中主引導(dǎo)記錄MBR中的每一條指令; 檢測(cè)模塊,用于在所述模擬執(zhí)行模塊執(zhí)行完每一條指令后檢測(cè)所述虛擬內(nèi)存是否被修改,如果被修改,則發(fā)現(xiàn)惡意程序;否則,觸發(fā)所述模擬執(zhí)行模塊繼續(xù)模擬執(zhí)行下一條指令,直到主引導(dǎo)記錄MBR的所有指令模擬執(zhí)行完畢。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于: 所述檢測(cè)模塊通過(guò)檢測(cè)所述虛擬內(nèi)存的大小是否改變來(lái)判斷是否被修改,如果改變,則所述虛擬內(nèi)存被修改;否則,未被修改。
9.一種檢測(cè)惡意程序的虛擬機(jī),其特征在于,包括: 虛擬CPU初始化模塊,用于初始化虛擬CPU ; 虛擬內(nèi)存初始化模塊,用于初始化虛擬內(nèi)存,并在初始化的過(guò)程中讀取主引導(dǎo)記錄MBR然后保存到所述虛擬內(nèi)存;虛擬內(nèi)存,用于存儲(chǔ)主引導(dǎo)記錄MBR; 虛擬CPU,用于模擬執(zhí)行虛擬內(nèi)存中主引導(dǎo)記錄MBR中的每一條指令,并在執(zhí)行完每一條指令后檢測(cè)所述虛擬內(nèi)存是否被修改,如果被修改,則發(fā)現(xiàn)惡意程序;否則,繼續(xù)模擬執(zhí)行下一條指令,直到主引導(dǎo)記錄MBR的所有指令模擬執(zhí)行完畢。
10.根據(jù)權(quán)利要求9所述的虛擬機(jī),其特征在于,還包括: 虛擬硬盤初始化模塊,用于初始化虛擬硬盤,并在初始化的過(guò)程中將虛擬內(nèi)存中的主引導(dǎo)記錄MBR拷貝到所述虛擬硬盤,所述虛擬CPU從虛擬硬盤讀取主引導(dǎo)記錄MBR并模擬執(zhí)行; 虛擬硬盤,用于存儲(chǔ) 拷貝的主引導(dǎo)記錄MBR。
【文檔編號(hào)】G06F21/56GK103617391SQ201310594976
【公開(kāi)日】2014年3月5日 申請(qǐng)日期:2011年9月14日 優(yōu)先權(quán)日:2011年9月14日
【發(fā)明者】邵堅(jiān)磊, 譚合力 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
沾化县| 莒南县| 大连市| 巩留县| 嘉义县| 五寨县| 延寿县| 垦利县| 曲阜市| 雷山县| 白山市| 荣成市| 同德县| 雷山县| 盖州市| 建昌县| 元氏县| 和田县| 宁明县| 威信县| 政和县| 前郭尔| 康定县| 高安市| 江源县| 北安市| 辽宁省| 茂名市| 丹巴县| 当阳市| 大埔区| 巴彦县| 武汉市| 屏南县| 定西市| 仙桃市| 南昌县| 城口县| 富源县| 报价| 抚顺市|