亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種Windows平臺下檢測虛擬機(jī)監(jiān)視器存在的方法

文檔序號:6352735閱讀:1045來源:國知局
專利名稱:一種Windows平臺下檢測虛擬機(jī)監(jiān)視器存在的方法
技術(shù)領(lǐng)域
本發(fā)明涉及檢測虛擬機(jī)監(jiān)視器(VMM)存在的方法,尤指通過頁表緩沖寄存器差異 來檢測虛擬機(jī)監(jiān)視器存在的方法。
背景技術(shù)
在硬件虛擬化技術(shù)中,虛擬機(jī)監(jiān)視器(Virtual Machine Monitor,VMM)是能夠?yàn)?計(jì)算機(jī)系統(tǒng)創(chuàng)建高效、隔離的副本的軟件。由于VMM具有比客戶操作系統(tǒng)(Guest OS)更高 的權(quán)限,越來越多的惡意代碼利用VMM作為隱藏自身行為與提供惡意服務(wù)的平臺。對于這 種惡意代碼的檢測技術(shù)主要以檢測VMM (Virtual Machine Monitor)存在特征為主,只有 檢測了 VMM存在,才能以此作為檢測這種新型惡意代碼存在的重要依據(jù)之一。傳統(tǒng)的檢測 VMM方法目前有以下幾種
(1)檢測邏輯差異。邏輯指紋是指計(jì)算機(jī)物理硬件系統(tǒng)與虛擬化的硬件系統(tǒng)提供的 不同接口之間的語義差異。檢測邏輯差異就是通過發(fā)現(xiàn)運(yùn)行環(huán)境與x86體系結(jié)構(gòu)的差異 來判斷VMM的存在。但是,這種檢測必須基于一個(gè)前提虛擬機(jī)軟件為了簡化實(shí)現(xiàn),只模 擬了某一種能夠支持虛擬機(jī)所有功能但是實(shí)現(xiàn)更為簡便的芯片組,包括VMware Player和 Microsoft Virtual PC等。一旦虛擬機(jī)軟件精確模擬出相應(yīng)的芯片組,這種檢測方法將失 效。(2) RedPill0 RedPill項(xiàng)目通過在用戶模式運(yùn)行一個(gè)單機(jī)語言指令SIDT,存儲處 理機(jī)寄存器里中斷描述符列表寄存器(IDTR)的內(nèi)容。通過判斷IDTR的地址范圍來確定當(dāng) 前操作系統(tǒng)是否運(yùn)行在VMM之上。但是這種檢測方法存在著局限性對于VMM直接運(yùn)行在 硬件環(huán)境上的情況,VMM并不把IDTR重定位到一個(gè)新地址,從而也就無法區(qū)分當(dāng)前操作系 統(tǒng)的運(yùn)行環(huán)境。(3)檢測時(shí)間差異。由于VMM需要通過某種特定的方式取得操作系統(tǒng)的控制權(quán)(通 常通過捕獲特權(quán)指令),當(dāng)VMM對特權(quán)指令產(chǎn)生下陷并模擬整個(gè)特權(quán)指令的執(zhí)行過程最終把 正常執(zhí)行結(jié)果返回操作系統(tǒng),這一系列動作會對特權(quán)指令的執(zhí)行產(chǎn)生一個(gè)延遲。這種方法 就是通過檢測特權(quán)指令在真實(shí)系統(tǒng)和VMM中執(zhí)行時(shí)間的差異來判斷VMM的存在。對于這種 檢測方法,部分VMM可以采取修改時(shí)間戳寄存器的方法避免檢查,所以這種檢測方法通用 性不強(qiáng)。以上三種方法雖然各具特色,從不同方面提出了基于不同環(huán)境對于VMM的檢測方 法,但是三種方法受制于應(yīng)用環(huán)境,通用性不強(qiáng)。對于檢測VMM的方法,可以從VMM和客戶操作系統(tǒng)之間共享的系統(tǒng)資源差異入手, 因?yàn)闊o論VMM怎么隱蔽自己,它總會占用或者消耗系統(tǒng)的資源,例如處理器、物理內(nèi)存和磁 盤空間,可能還有網(wǎng)絡(luò)帶寬。基于這種資源共享構(gòu)架,可以從這些資源差異中發(fā)現(xiàn)VMM的特 性,作為檢測VMM存在的方法,但目前還沒有通過頁表緩沖寄存器這種資源差異來檢測VMM 存在的技術(shù)方案的公開報(bào)導(dǎo)。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題在于針對惡意代碼利用VMM作為隱藏自身行為與提供 惡意服務(wù)的平臺的問題,提出一種通過資源差異來檢測VMM存在的方法,使用戶在通用環(huán) 境下,實(shí)現(xiàn)對VMM存在的有效檢測,從而以此作為檢測以VMM為平臺的惡意代碼的重要依 據(jù),提高系統(tǒng)安全性。為了解決上述技術(shù)問題,本發(fā)明的技術(shù)方案為以CPU中的頁表緩沖寄存器為檢 測目標(biāo),為兩個(gè)頁表指針分別分配內(nèi)存地址——更改映射前地址和更改映射后地址。通過 修改頁表項(xiàng)的指針地址,同時(shí)對頁表緩沖寄存器的內(nèi)容不進(jìn)行更新。在檢測程序產(chǎn)生一個(gè) 特權(quán)指令之后,對目標(biāo)頁表緩沖寄存器進(jìn)行檢測,如果頁表緩沖寄存器在特權(quán)指令執(zhí)行期 間被更改,則證明系統(tǒng)中存在VMM;反之,如果頁表緩沖寄存器在特權(quán)指令運(yùn)行前后沒有變 化,則證明系統(tǒng)中不存在VMM。定義
A 更改映射前地址,即頁表項(xiàng)中存儲的原始物理地址。B 更改映射后地址,即頁表項(xiàng)中存儲的更改以后的物理地址,明顯區(qū)別于A。N (N為正整數(shù))頁表緩沖寄存器大小。PTE =Page Table Entry,頁表項(xiàng),指頁表中的基本組成單位,其內(nèi)容是當(dāng)前頁表項(xiàng) 對應(yīng)的物理地址。Allocated PTEs 分配好內(nèi)存空間且大小為N的一組頁表項(xiàng)。Special PTE 分配好內(nèi)存空間且大小為1的頁表項(xiàng)。具體技術(shù)方案為
第一步、根據(jù)頁表緩沖寄存器大小N,通過Windows提供的函數(shù)Malloc ()為Allocated PTCs分配內(nèi)存空間。同時(shí),為另一個(gè)頁表項(xiàng)Special PTE分配內(nèi)存空間,這個(gè)內(nèi)存空間用于 存放更改映射后地址B。第二步、對Allocated PTCs通過Windows提供的函數(shù)Memset ()寫入更改映射前 地址A ;對分配單獨(dú)的頁表Special PTE寫入更改映射后地址B,用于區(qū)別更改映射之后頁 表緩沖寄存器的變化。第三步、對Allocated PTEs依次進(jìn)行訪問,將所有指向地址A的頁表項(xiàng)都存入頁 表緩沖寄存器中,也就是說頁表緩沖寄存器內(nèi)全部的N條記錄都指向更改映射前地址A。第四步、在不改變頁表緩沖寄存器內(nèi)容的前提下,把Allocated PTCs指針內(nèi)容依 次改為Special PTE所指向的地址B。通過改變虛擬地址到物理地址的映射,把Special PTE所指向的地址B存入Allocated PTEs的內(nèi)存空間里,這個(gè)過程并不改變頁表緩沖寄存 器的內(nèi)容。此時(shí),頁表緩沖寄存器內(nèi)的指針地址A與實(shí)際頁表項(xiàng)Allocated PTCs的指針地 址B不一致。第五步、執(zhí)行Windows系統(tǒng)中的特權(quán)指令RDMSR,如果存在VMM,該指令引起系統(tǒng)控 制權(quán)的下陷,即系統(tǒng)控制權(quán)轉(zhuǎn)換給VMM。第六步、設(shè)置一個(gè)計(jì)數(shù)器Counter,初始值為N ;設(shè)置指針i,并使該指針指向頁表 緩沖寄存器的起始地址。第七步、若i > =起始地址+N,轉(zhuǎn)第十步;否則轉(zhuǎn)第八步。第八步、對指針i所指向的頁表項(xiàng)內(nèi)的指針地址進(jìn)行判定若當(dāng)前頁表項(xiàng)內(nèi)的指針地址為更改映射前的地址A時(shí),i加1,轉(zhuǎn)第七步;否則轉(zhuǎn)第九步。第九步、使計(jì)數(shù)器Counter數(shù)值減1,i加1,轉(zhuǎn)第七步。第十步、對計(jì)數(shù)器Counter的數(shù)值進(jìn)行判斷如果計(jì)數(shù)器Counter的數(shù)值為N, 說明在特權(quán)指令RDMSR執(zhí)行期間,頁表緩沖寄存器沒有被篡改,則判定當(dāng)前系統(tǒng)內(nèi)不存在 VMM ;如果計(jì)數(shù)器Counter的數(shù)值小于N,則說明在特權(quán)指令RDMSR執(zhí)行期間,頁表緩沖寄存 器被使用過,判定當(dāng)前系統(tǒng)內(nèi)存在VMM,且計(jì)數(shù)器Counter的數(shù)值越小,檢測的準(zhǔn)確性越高。與現(xiàn)有技術(shù)相比,采用本發(fā)明可達(dá)到以下技術(shù)效果
1.本發(fā)明從操作系統(tǒng)與VMM共享資源頁表緩沖寄存器入手,避免了傳統(tǒng)基于時(shí)間檢測 和基于邏輯差異檢測的局限性。無論VMM體積再怎么小巧,功能再怎么單一,都必須和操作 系統(tǒng)爭奪系統(tǒng)資源,因此本發(fā)明適用范圍廣,通用性較強(qiáng)。2.與現(xiàn)有針對內(nèi)存或是通用寄存器的檢測技術(shù)相比,本發(fā)明的檢測目標(biāo)為CPU內(nèi) 部的頁表緩沖寄存器,避免了 VMM對檢測目標(biāo)的惡意篡改,使得本發(fā)明可靠性和準(zhǔn)確度有 了大幅度提高。


圖1為本發(fā)明的總流程圖。
具體實(shí)施例方式圖1是本發(fā)明的總流程圖。步驟1)、給大小為N的頁表Allocated PTCs和另一個(gè)頁表項(xiàng)Special PTE分配內(nèi) 存空間;
步驟2) JfAllocated PTEs寫入地址A,對Special PTE寫入地址B ; 步驟3)、依次讀取大小為N的Allocated PTEs內(nèi)容,使指向地址A的頁表項(xiàng)被全部存 入頁表緩沖寄存器中;
步驟4)、在不改變頁表緩沖器內(nèi)容的前提下,把Allocated PTCs指針內(nèi)容依次改為 Special PTE所指向的地址B ;
步驟5)、執(zhí)行一個(gè)特權(quán)指令RDMSR ;
步驟6)、設(shè)置一個(gè)計(jì)數(shù)器,初始值為N,設(shè)置指針i,并使該指針指向頁表緩沖寄存器的 起始地址;
步驟7)、若指針i已遍歷頁表緩沖寄存器內(nèi)的全部頁表項(xiàng),則執(zhí)行步驟10);否則執(zhí)行 步驟8)。步驟8)、對指針i所指向的頁表項(xiàng)內(nèi)的指針地址進(jìn)行判定若當(dāng)前頁表項(xiàng)內(nèi)的指 針地址為地址A時(shí),i加1并執(zhí)行步驟7),否則執(zhí)行步驟9)。步驟9)、使計(jì)數(shù)器Counter數(shù)值減1,i加1并執(zhí)行步驟7);
步驟10)、判定計(jì)數(shù)器Counter的數(shù)值是否跟頁表緩沖寄存器大小N—致。如果計(jì)數(shù)器 Counter的數(shù)值為N,則判定當(dāng)前系統(tǒng)內(nèi)不存在VMM ;如果計(jì)數(shù)器Counter的數(shù)值小于N,判 定當(dāng)前系統(tǒng)內(nèi)存在VMM。
權(quán)利要求
1. 一種Windows平臺下檢測虛擬機(jī)監(jiān)視器存在的方法,其特征在于包括以下步驟 第一步、根據(jù)頁表緩沖寄存器大小N,通過Windows提供的函數(shù)Malloc ()為頁表項(xiàng) Allocated PTCs和Special PTE分配內(nèi)存空間,Allocated PTCs為分配好內(nèi)存空間且大 小為N的一組頁表項(xiàng);Special PTE為分配好內(nèi)存空間且大小為1的頁表項(xiàng);頁表項(xiàng)是頁表 中的基本組成單位,其內(nèi)容是當(dāng)前頁表項(xiàng)對應(yīng)的物理地址;第二步、對Allocated PTEs通過Windows提供的函數(shù)Memset ()寫入更改映射前地址 A即頁表項(xiàng)中存儲的原始物理地址;對Special PTE寫入更改映射后地址B,即頁表項(xiàng)中存 儲的更改以后的物理地址;第三步、對Allocated PTEs依次進(jìn)行訪問,使所有指向地址A的頁表項(xiàng)都存入頁表緩 沖寄存器中,也就是說頁表緩沖寄存器內(nèi)全部的N條記錄都指向更改映射前地址A ;第四步、在不改變頁表緩沖寄存器內(nèi)容的前提下,把Allocated PTCs指針內(nèi)容依次改 為Special PTE所指向的地址B ;第五步、執(zhí)行Windows系統(tǒng)中的特權(quán)指令RDMSR,如果存在VMM,該指令引起系統(tǒng)控制權(quán) 的下陷,即系統(tǒng)控制權(quán)轉(zhuǎn)換給VMM ;第六步、設(shè)置一個(gè)計(jì)數(shù)器Counter,初始值為N ;設(shè)置指針i,并使該指針指向頁表緩沖 寄存器的起始地址;第七步、若i > =起始地址+N,轉(zhuǎn)第十步;否則轉(zhuǎn)第八步;第八步、對指針i所指向的頁表項(xiàng)內(nèi)的指針地址進(jìn)行判定若當(dāng)前頁表項(xiàng)內(nèi)的指針地 址為更改映射前的地址A,i加1,轉(zhuǎn)第七步;若當(dāng)前頁表項(xiàng)內(nèi)的指針地址不為更改映射前的 地址A,轉(zhuǎn)第九步;第九步、使計(jì)數(shù)器Counter數(shù)值減1,i加1,并轉(zhuǎn)第七步;第十步、判定計(jì)數(shù)器Counter的數(shù)值是否跟頁表緩沖寄存器大小N —致,如果計(jì)數(shù)器 Counter的數(shù)值為N,則判定當(dāng)前系統(tǒng)內(nèi)不存在VMM ;如果計(jì)數(shù)器Counter的數(shù)值小于N,判 定當(dāng)前系統(tǒng)內(nèi)存在VMM。
全文摘要
本發(fā)明公開了一種Windows平臺下檢測虛擬機(jī)監(jiān)視器存在的方法,目的是針對惡意代碼利用VMM作為隱藏自身行為與提供惡意服務(wù)的平臺的問題,提出一種通過資源差異來檢測VMM存在的方法。技術(shù)方案是先給頁表Allocated PTEs和頁表項(xiàng)Special PTE分配內(nèi)存空間;對Allocated PTEs寫入更改映射前地址A;對Special PTE寫入更改映射后地址B;對Allocated PTEs依次進(jìn)行訪問,使所有指向地址A的頁表項(xiàng)都存入頁表緩沖寄存器中;把Allocated PTEs指針內(nèi)容依次改為Special PTE所指向的地址B;執(zhí)行Windows系統(tǒng)中的特權(quán)指令RDMSR;設(shè)置計(jì)數(shù)器,遍歷頁表緩沖寄存器內(nèi)的全部頁表項(xiàng),通過判定計(jì)數(shù)器的數(shù)值是否跟N一致來則判定當(dāng)前系統(tǒng)內(nèi)是否存在VMM。采用本發(fā)明可對VMM進(jìn)行有效檢測,提高系統(tǒng)安全性。
文檔編號G06F9/455GK102063594SQ201110003479
公開日2011年5月18日 申請日期2011年1月10日 優(yōu)先權(quán)日2011年1月10日
發(fā)明者劉波, 寧劍, 張靜, 彭磊, 王天佐, 肖楓濤, 陳新, 陳林, 馬曉龍 申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1