本發(fā)明涉及計算機(jī)硬件虛擬化領(lǐng)域和操作系統(tǒng)安全領(lǐng)域,具體涉及一種硬件虛擬化(簡稱HEV)在AMD CPU下的支持技術(shù),防止windows系統(tǒng)下的Windows系統(tǒng)服務(wù)描述表的被篡改的系統(tǒng)和方法。
背景技術(shù):
在現(xiàn)有技術(shù)中,公知的技術(shù)是隨著云計算、大數(shù)據(jù)等新型技術(shù)的發(fā)展,對云服務(wù)器和PC終端的安全性要求越來越高。操作系統(tǒng)是云服務(wù)器和PC終端的核心,一旦操作系統(tǒng)被黑客或非法用戶控制及利用,后果將不堪設(shè)想。SSDT是Windows操作系統(tǒng)的關(guān)鍵部件,是所有應(yīng)用層API的統(tǒng)一入口,所以SSDT的安全就特別重要。事實(shí)上,黑客經(jīng)常使用自己編寫的Rootkit后門程序來篡改SSDT,以達(dá)到隱藏自身、破壞系統(tǒng)正常行為的目的。在目前已有的黑客攻擊統(tǒng)計中,篡改SSDT的方式占了大多數(shù)。所以如何有效的保證SSDT的安全性和完整性就成為急需解決的技術(shù)問題。操作系統(tǒng)廠商已經(jīng)意識到了這個問題,目前64位Windows操作系統(tǒng)自身已經(jīng)有了PatchGuard機(jī)制,在操作系統(tǒng)運(yùn)行期間這個機(jī)制會檢查SSDT是否被篡改,如果被篡改操作系統(tǒng)馬上報錯、宕機(jī)。Windows操作系統(tǒng)的PatchGuard機(jī)制具有很大的局限性, 1、32位Windows操作系統(tǒng)沒有該機(jī)制,且目前32位操作系統(tǒng)有大量用戶在使用;2、這種事后檢查機(jī)制有漏洞,因?yàn)樵跈z查之前Rootkit后門程序可能已經(jīng)完成了自己要做的事情;3、宕機(jī)的后果是用戶接受不了的,尤其是關(guān)鍵的業(yè)務(wù)服務(wù)器;4、高級的黑客會在Rootkit程序中將Windows操作系統(tǒng)的運(yùn)行模式置于調(diào)試模式,在調(diào)試模式下PatchGuard機(jī)制是不生效的。因此,要想防止Windows操作系統(tǒng)的SSDT被篡改,在硬件虛擬化層面采取措施是一勞永逸的手段,一種通過硬件虛擬化(簡稱HEV)在AMD CPU下的支持技術(shù)(簡稱Pacifica技術(shù))的Windows系統(tǒng)服務(wù)描述表的防篡改方法應(yīng)運(yùn)而生。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的就是針對現(xiàn)有技術(shù)所存在的不足,而提供一種防止windows系統(tǒng)服務(wù)描述表被篡改的系統(tǒng)和方法,使通過修改系統(tǒng)服務(wù)描述表隱藏自己、進(jìn)行破壞的Rootkit后門程序完全失效,使Windows操作系統(tǒng)上的各種程序安全運(yùn)行,充分確保系統(tǒng)服務(wù)描述表的安全性和完整性,進(jìn)而使通過修改系統(tǒng)服務(wù)描述表進(jìn)行破壞的黑客程序完全失效,有效的提高了Windows操作系統(tǒng)的安全性、穩(wěn)定性。
本方案是通過如下技術(shù)措施來實(shí)現(xiàn)的:一種防止windows操作系統(tǒng)下系統(tǒng)服務(wù)描述表被篡改的系統(tǒng),其特征是包括如下模塊:
CPU虛擬化驅(qū)動模塊,用于分配硬件虛擬化數(shù)據(jù)結(jié)構(gòu)所需的內(nèi)存,設(shè)置CPU寄存器(EFER)的標(biāo)志位、填充虛擬機(jī)控制塊指明攔截內(nèi)存操作、從通信驅(qū)動模塊獲取系統(tǒng)服務(wù)描述表SSDT的內(nèi)存地址空間范圍、讓當(dāng)前操作系統(tǒng)作為虛擬機(jī)運(yùn)行在虛擬CPU上;攔截寫入系統(tǒng)服務(wù)描述表地址范圍的內(nèi)存指令,讓該內(nèi)存寫入失??;所述的硬件虛擬化數(shù)據(jù)結(jié)構(gòu)包括最高特權(quán)進(jìn)入?yún)^(qū)(簡稱HSA區(qū)域)和虛擬機(jī)控制塊(簡稱VMCB控制塊)。
通信驅(qū)動模塊,用于獲取當(dāng)前操作系統(tǒng)的系統(tǒng)服務(wù)描述表的起始內(nèi)存地址和內(nèi)存地址范圍,然后保存該地址,啟動CPU虛擬化驅(qū)動模塊和主服務(wù)進(jìn)程模塊的請求消息監(jiān)聽;所述的通信驅(qū)動模塊啟動CPU虛擬化驅(qū)動模塊和主服務(wù)進(jìn)程模塊的請求消息監(jiān)聽后,一面等待CPU虛擬化模塊發(fā)來的請求消息,包括獲取系統(tǒng)服務(wù)描述表地址消息和已攔截日志消息,一面等待主服務(wù)進(jìn)程模塊發(fā)來的獲取攔截日志消息。如果是CPU虛擬化模塊發(fā)來的已攔截日志消息,它將消息緩存在日志鏈表中。
主服務(wù)進(jìn)程模塊,用于安裝CPU虛擬化驅(qū)動模塊和通信驅(qū)動模塊,卸載兩個模塊和自身,與通信驅(qū)動模塊進(jìn)行通信獲取篡改系統(tǒng)服務(wù)描述表的攔截日志,先安裝CPU虛擬化驅(qū)動模塊,再安裝通信驅(qū)動模塊,卸載時先卸載CPU虛擬化驅(qū)動模塊,再卸載通信驅(qū)動模塊。
一種防止windows操作系統(tǒng)下系統(tǒng)服務(wù)描述表被篡改的方法,其特征是在于包括如下步驟:
1)主服務(wù)進(jìn)程模塊初始化時加載通信驅(qū)動模塊和CPU虛擬化驅(qū)動模塊;
2)通信驅(qū)動模塊運(yùn)行后,獲取當(dāng)前操作系統(tǒng)的系統(tǒng)服務(wù)描述表的起始內(nèi)存地址和內(nèi)存地址范圍,然后保存該地址;啟動CPU虛擬化驅(qū)動模塊和主服務(wù)進(jìn)程模塊的請求消息監(jiān)聽;
3)CPU虛擬化驅(qū)動模塊運(yùn)行后,依次執(zhí)行分配硬件虛擬化數(shù)據(jù)結(jié)構(gòu)所需的內(nèi)存,設(shè)置CPU寄存器的標(biāo)志位、填充虛擬機(jī)控制塊指明攔截內(nèi)存操作、從通信驅(qū)動模塊獲取系統(tǒng)服務(wù)描述表的內(nèi)存地址空間范圍、讓當(dāng)前操作系統(tǒng)作為虛擬機(jī)運(yùn)行在虛擬CPU上;
4) CPU虛擬化驅(qū)動模塊在攔截到每條指令后,如果是內(nèi)存寫入指令且寫入的是SSDT的地址范圍,則讓該內(nèi)存寫入失敗
5) 通信驅(qū)動模塊獲得CPU虛擬化模塊發(fā)來的已攔截日志消息,并將消息緩存在日志鏈表中;
6)通信驅(qū)動模塊接收主服務(wù)進(jìn)程模塊發(fā)來的獲取攔截日志消息,將消息從日志鏈表中取出,并返回給主服務(wù)進(jìn)程模塊;
所述的CPU虛擬化驅(qū)動模塊采用內(nèi)核驅(qū)動的方式實(shí)現(xiàn),由主服務(wù)進(jìn)程安裝,隨操作系統(tǒng)運(yùn)行自動運(yùn)行;CPU以ROOT模式運(yùn)行CPU虛擬化驅(qū)動模塊的代碼,具有最高的權(quán)限。
通信驅(qū)動模塊采用內(nèi)核驅(qū)動的方式實(shí)現(xiàn),由主服務(wù)進(jìn)程安裝,隨操作系統(tǒng)運(yùn)行自動運(yùn)行,CPU以非ROOT和RO的模式運(yùn)行OS通信驅(qū)動的代碼,通信驅(qū)動模塊的權(quán)限低于CPU虛擬化驅(qū)動模塊,和其它操作系統(tǒng)內(nèi)核代碼相同。
本方案的有益效果可根據(jù)對上述方案的敘述得知,本發(fā)明通過使用AMD CPU支持的硬件虛擬化技術(shù)和Windows操作系統(tǒng)內(nèi)核驅(qū)動技術(shù),在用戶未察覺的情況下將操作系統(tǒng)置于透明虛擬化層上運(yùn)行,監(jiān)控所有對SSDT的寫入操作,可以徹底保證Windows操作系統(tǒng)上SSDT的安全性和完整性。主服務(wù)進(jìn)程啟動時,首先安裝兩個內(nèi)核模塊,先安裝通信驅(qū)動模塊,再安裝CPU虛擬化驅(qū)動模塊,安裝完畢自動進(jìn)入SSDT保護(hù)狀態(tài)。主服務(wù)進(jìn)程退出時,自動卸載兩個內(nèi)核模塊,使操作系統(tǒng)SSDT脫離保護(hù)。用戶不用進(jìn)行其它干預(yù)。通信驅(qū)動模塊形成了主服務(wù)進(jìn)程到操作系統(tǒng)內(nèi)核驅(qū)動,再到硬件虛擬化驅(qū)動的通道,從而可以及時讓用戶看到CPU虛擬化模塊的攔截事件由此可見,本發(fā)明與現(xiàn)有技術(shù)相比,具有突出的實(shí)質(zhì)性特點(diǎn)和顯著的進(jìn)步,其實(shí)施的有益效果也是顯而易見的。
附圖說明
圖1為本發(fā)明系統(tǒng)的結(jié)構(gòu)示意圖。
圖2為主服務(wù)進(jìn)程模塊工作流程圖。
圖3為通信驅(qū)動模塊啟動流程圖。
圖4為通信驅(qū)動模塊消息處理流程圖。
圖5為CPU虛擬化模塊初始化流程圖。
圖6為CPU虛擬化模塊指令攔截處理流程圖。
具體實(shí)施方式
為能清楚說明本方案的技術(shù)特點(diǎn),下面通過一個具體實(shí)施方式,并結(jié)合其附圖,對本方案進(jìn)行闡述。
通過附圖可以看出,本方案的防止windows操作系統(tǒng)下系統(tǒng)服務(wù)描述表被篡改的系統(tǒng),其特征是包括如下模塊:
CPU虛擬化驅(qū)動模塊,用于分配硬件虛擬化數(shù)據(jù)結(jié)構(gòu)所需的內(nèi)存,設(shè)置CPU寄存器(EFER)的標(biāo)志位、填充虛擬機(jī)控制塊指明攔截內(nèi)存操作、從通信驅(qū)動模塊獲取系統(tǒng)服務(wù)描述表SSDT的內(nèi)存地址空間范圍、讓當(dāng)前操作系統(tǒng)作為虛擬機(jī)運(yùn)行在虛擬CPU上;攔截寫入系統(tǒng)服務(wù)描述表地址范圍的內(nèi)存指令,讓該內(nèi)存寫入失敗;所述的硬件虛擬化數(shù)據(jù)結(jié)構(gòu)包括最高特權(quán)進(jìn)入?yún)^(qū)(簡稱HSA區(qū)域)和虛擬機(jī)控制塊(簡稱VMCB控制塊)。
通信驅(qū)動模塊,用于獲取當(dāng)前操作系統(tǒng)的系統(tǒng)服務(wù)描述表的起始內(nèi)存地址和內(nèi)存地址范圍,然后保存該地址,啟動CPU虛擬化驅(qū)動模塊和主服務(wù)進(jìn)程模塊的請求消息監(jiān)聽;所述的通信驅(qū)動模塊啟動CPU虛擬化驅(qū)動模塊和主服務(wù)進(jìn)程模塊的請求消息監(jiān)聽后,一面等待CPU虛擬化模塊發(fā)來的請求消息,包括獲取系統(tǒng)服務(wù)描述表地址消息和已攔截日志消息,一面等待主服務(wù)進(jìn)程模塊發(fā)來的獲取攔截日志消息。如果是CPU虛擬化模塊發(fā)來的已攔截日志消息,它將消息緩存在日志鏈表中。
主服務(wù)進(jìn)程模塊,用于安裝CPU虛擬化驅(qū)動模塊和通信驅(qū)動模塊,卸載兩個模塊和自身,與通信驅(qū)動模塊進(jìn)行通信獲取篡改系統(tǒng)服務(wù)描述表的攔截日志,先安裝CPU虛擬化驅(qū)動模塊,再安裝通信驅(qū)動模塊,卸載時先卸載CPU虛擬化驅(qū)動模塊,再卸載通信驅(qū)動模塊。
一種基于上述系統(tǒng)的防止windows操作系統(tǒng)下系統(tǒng)服務(wù)描述表被篡改的方法,其特征是在于包括如下步驟:
1)主服務(wù)進(jìn)程模塊初始化時加載通信驅(qū)動模塊和CPU虛擬化驅(qū)動模塊;
2)通信驅(qū)動模塊運(yùn)行后,獲取當(dāng)前操作系統(tǒng)的系統(tǒng)服務(wù)描述表的起始內(nèi)存地址和內(nèi)存地址范圍,然后保存該地址;啟動CPU虛擬化驅(qū)動模塊和主服務(wù)進(jìn)程模塊的請求消息監(jiān)聽;通信驅(qū)動模塊采用內(nèi)核驅(qū)動的方式實(shí)現(xiàn),由主服務(wù)進(jìn)程安裝,隨操作系統(tǒng)運(yùn)行自動運(yùn)行,CPU以非ROOT和RO的模式運(yùn)行OS通信驅(qū)動的代碼,通信驅(qū)動模塊的權(quán)限低于CPU虛擬化驅(qū)動模塊,和其它操作系統(tǒng)內(nèi)核代碼相同。
3)CPU虛擬化驅(qū)動模塊運(yùn)行后,依次執(zhí)行分配硬件虛擬化數(shù)據(jù)結(jié)構(gòu)所需的內(nèi)存,設(shè)置CPU寄存器的標(biāo)志位、填充虛擬機(jī)控制塊指明攔截內(nèi)存操作、從通信驅(qū)動模塊獲取系統(tǒng)服務(wù)描述表的內(nèi)存地址空間范圍、讓當(dāng)前操作系統(tǒng)作為虛擬機(jī)運(yùn)行在虛擬CPU上;所述的CPU虛擬化驅(qū)動模塊采用內(nèi)核驅(qū)動的方式實(shí)現(xiàn),由主服務(wù)進(jìn)程安裝,隨操作系統(tǒng)運(yùn)行自動運(yùn)行;CPU以ROOT模式運(yùn)行CPU虛擬化驅(qū)動模塊的代碼,具有最高的權(quán)限。
4) CPU虛擬化驅(qū)動模塊在攔截到每條指令后,如果是內(nèi)存寫入指令且寫入的是SSDT的地址范圍,則讓該內(nèi)存寫入失敗
5) 通信驅(qū)動模塊獲得CPU虛擬化模塊發(fā)來的已攔截日志消息,并將消息緩存在日志鏈表中;
6)通信驅(qū)動模塊接收主服務(wù)進(jìn)程模塊發(fā)來的獲取攔截日志消息,將消息從日志鏈表中取出,并返回給主服務(wù)進(jìn)程模塊;
本發(fā)明并不僅限于上述具體實(shí)施方式,本領(lǐng)域普通技術(shù)人員在本發(fā)明的實(shí)質(zhì)范圍內(nèi)做出的變化、改型、添加或替換,也應(yīng)屬于本發(fā)明的保護(hù)范圍。