朱永強 湯雄
摘要:VMware虛擬機因其良好的用戶體驗及便捷的功能,被廣泛應(yīng)用于云計算平臺搭建、惡意代碼分析等技術(shù)領(lǐng)域。因此,部分惡意代碼專門增加了VMware環(huán)境檢測功能,以發(fā)現(xiàn)自身是否運行在VMware虛擬環(huán)境。針對惡意代碼在VMware環(huán)境下的虛擬環(huán)境檢測技術(shù),分析了VMware虛擬機環(huán)境的檢測原理及優(yōu)缺點,提出了一套VMware環(huán)境下的反虛擬環(huán)境檢測方法,以欺騙惡意軟件的VMware環(huán)境檢測功能,提升基于VMware仿真的惡意代碼分析準確性。
關(guān)鍵詞關(guān)鍵詞:VMware;虛擬機;虛擬機環(huán)境檢測;虛擬機穿透
DOIDOI:10.11907/rjdk.161300
中圖分類號:TP309文獻標識碼:A文章編號文章編號:16727800(2016)007017003
基金項目基金項目:科技部科技型中小企業(yè)創(chuàng)新基金項目(10C26215122841)
0引言
虛擬化技術(shù)是指通過分割計算機硬件資源(如CPU、內(nèi)存、輔存等),使得一臺物理機上可以運行多個操作系統(tǒng)環(huán)境,從而提供更靈活高效的硬件資源分配技術(shù)。該技術(shù)最早由IBM在20世紀60年代初實現(xiàn)。虛擬化技術(shù)發(fā)展到今天,出現(xiàn)了多種虛擬化平臺,如XEN、KVM、VMware等。其中,VMware由于良好的性能及便捷的功能支持得到了廣泛應(yīng)用。
由于帶有快照還原功能以及物理隔離功能,虛擬化技術(shù)對惡意代碼分析人員是非常有用的工具,可以在保護本機不受侵害的情況下,對惡意代碼的實際行為進行有效的監(jiān)控,并且可以通過快照功能訊速恢復(fù)系統(tǒng),因此,此技術(shù)的博弈也隨之展開[1]。一些惡意代碼編寫人員在其惡意程序中加入虛擬環(huán)境檢測功能,一旦程序發(fā)現(xiàn)自身處于虛擬環(huán)境中,則可能休眠或者改變行為策略,甚至破壞虛擬機環(huán)境[2]。因此,在利用虛擬機進行惡意代碼分析的同時,了解惡意代碼的虛擬環(huán)境檢測技術(shù)并對其檢測功能進行防范,是信息安全工作人員重要工作之一。
本文針對常用的虛擬化平臺VMware,分析并總結(jié)了VMware平臺下常用的虛擬環(huán)境檢測技術(shù)原理及相應(yīng)工具,在此基礎(chǔ)上,提出了一套VMware環(huán)境下的反虛擬機環(huán)境檢測策略,用以提高虛擬機環(huán)境下惡意代碼分析的準確性,探討了該領(lǐng)域未來的發(fā)展趨勢。
1基于VMware的虛擬機環(huán)境檢測技術(shù)
本節(jié)基于VMware平臺,歸納并總結(jié)了VMware虛擬機環(huán)境下常用的虛擬環(huán)境檢測技術(shù)原理[26],并介紹了相應(yīng)工具。
1.1基于字符特征的VMware環(huán)境檢測方法
由于VMware環(huán)境只是實現(xiàn)了對硬件的虛擬,并沒有真正實現(xiàn)對硬件與操作系統(tǒng)的完整仿真。因此,VMware虛擬機的進程、文件系統(tǒng)、注冊表中包含很多VMware的特殊標識,比如VMware虛擬機系統(tǒng)信息的制造商顯示為VMware Inc.,而非真實的計算機制造商。在VMware虛擬機操作系統(tǒng)的注冊表內(nèi),也有一些帶有VMware特殊表示的鍵值,比如在虛擬操作系統(tǒng)WindowsXP中的注冊表項中,包含有名稱為_#VmwareVirtualPrinter的鍵,而真實的操作系統(tǒng)中并不存在此鍵。此外,據(jù)統(tǒng)計,VMware環(huán)境下有超過50個包含“VMware”和“vmx”的引用存在于文件系統(tǒng)中,有超過300 個包括“VMware”的引用存在于系統(tǒng)的注冊表中。
針對這些差異,可以收集這一類出現(xiàn)在特別位置的“特征字符串”,形成針對VMware環(huán)境的指紋庫,并通過字符串搜索與匹配的方式,實現(xiàn)對VMware虛擬機環(huán)境的檢測。
但該方法存在以下缺陷:①這些特征字符串的分布不具有通用性,較難形成通用的、系統(tǒng)的檢測理論;②暴力搜索方法不僅性能較低,還會造成較高的誤報;③這種方法也可以通過Rootkit等技術(shù)[7]進行欺騙。
1.2基于虛擬硬件的VMware環(huán)境檢測方法
VMware環(huán)境下虛擬出的硬件也往往包含有特殊特征,使其成為檢測VMware環(huán)境的檢測因素之一。VMware環(huán)境下,其網(wǎng)卡的Mac地址的前24位往往是00-0C-29、00-05-69或00-50-56 ,此外,VMware VGA 適配器、USB 控制器的類型、SCSI設(shè)備的類型往往都包含有VMware 特定的標記。概括來說,此方法一定程度上也屬于基于特征字符串的檢測方法。
Tobias Klein實現(xiàn)的工具DOO就是利用搜索虛擬環(huán)境下特殊的虛擬硬件標識來檢測虛擬機環(huán)境。DOO工具在Linux環(huán)境下主要搜尋I0、port以及SCSI等相關(guān)目錄下的“VMware”特征串,而在Windows下則重點搜索注冊表中SCSI適配器和VMware硬件類號的鍵值。
1.3通過特殊指令特征檢測VMware環(huán)境的方法
使用特殊指令SIDT、SLDT與SGDT等與返回值差異性的檢測方法對比,其依據(jù)的原理為此類指令的返回值,在虛擬機環(huán)境與真實操作系統(tǒng)環(huán)境中有著較大差別。通過獲取寄存器基值,觀測它是否超過某一傳統(tǒng)閾值,即可判斷是否處于虛擬機環(huán)境。
以SIDT指令為例,此指令用來獲取中斷描述表(Interrupt Descriptor Table)的位置,IDT在VMware環(huán)境的寄宿系統(tǒng)中一般位于在附近,而在實際操作系統(tǒng)中,一般位于附近,對比這種差異性,即可判斷程序是否運行在VMware虛擬機中。
該方法的缺陷:①SIDT在多處理器環(huán)境下容易誤報,相比較之下,SLDT在多處理器環(huán)境下的效果要好些;②VMware環(huán)境下開啟禁止加速模式后,VMware虛擬機會對ring3 層指令進行二進制翻譯,因此在此模式下對此類指令進行干預(yù)會使檢測方法失效。
1.4通過VMware穿透信道檢測VMware環(huán)境的方法
為了保證虛擬機系統(tǒng)的性能與易用性,往往會犧牲一些虛擬機環(huán)境對Guest OS的透明性,比如VMware提供的 communication channel功能,此功能用來實現(xiàn)主機與客操作系統(tǒng)之間的穿透與通信,以提供VMware對GUI性能的優(yōu)化,主操作系統(tǒng)與客操作系統(tǒng)之間的剪切板、文件拖動等功能,為VMware虛擬機環(huán)境識別提供了可能。
VMware 通過攔截I/O 的IN 指令來實現(xiàn)虛擬機穿透功能。由于IN 指令屬于特權(quán)指令,因此當運行在ring3 上的操作系統(tǒng)執(zhí)行IN 指令時,系統(tǒng)會產(chǎn)生一個異常,而運行在虛擬機中的客操作系統(tǒng)則不會產(chǎn)生。如果程序運行在VMware 之外,則會拋出一個處理器錯誤,利用此原理,即可檢測程序是否運行在VMware虛擬機環(huán)境中。
該方法缺陷為:使用的通信信道是VMware的高級功能,并不是必需功能,因此關(guān)閉此功能后,這種檢測方法將失效,而此功能關(guān)閉本身卻不會對VMware虛擬機的使用產(chǎn)生過大影響。
2基于VMware環(huán)境的反虛擬機檢測
根據(jù)前文對VMware虛擬機環(huán)境檢測技術(shù)的分析,總結(jié)了一組VMware環(huán)境下的反虛擬機環(huán)境檢測方法[26],以防止惡意代碼對虛擬機環(huán)境的有效檢測。
2.1反特征字符串檢測VMware環(huán)境方法
反特征字符串檢測VMware環(huán)境方法主要是獲取操作系統(tǒng)特定位置的參數(shù)值,再通過對這些參數(shù)值進行特征串匹配來完成虛擬機環(huán)境的檢測。通過以下手段根據(jù)具體應(yīng)用情況進行反虛擬環(huán)境檢測:①利用Rootkit技術(shù)隱藏這些特征字符串痕跡,使其不被發(fā)現(xiàn);②通過Hook 技術(shù)鉤掛系統(tǒng)文件、進程、注冊表、服務(wù)等的查詢函數(shù)也可以有效躲避此種檢測方法。
2.2反虛擬硬件檢測VMware環(huán)境
VMware環(huán)境下,虛擬硬件的各類參數(shù)可以便捷地通過配置文件重新設(shè)定修改,因此對基于虛擬硬件特征的虛擬環(huán)境檢測可通過以下方式進行反檢測:①通過修改VMware配置文件,修改虛擬硬件配置參數(shù),如MAC地址;②修改敏感部位的注冊表鍵值,將帶有VMware標識的鍵值抹去或者修改。
基于SIDT、SGDT、SLDT等特殊指令對VMware環(huán)境進行檢測的防范措施有:
(1)在VMware環(huán)境下開啟禁止加速模式,再通過代碼對此類指令的返回值進行干預(yù)。
(2)通過Hook技術(shù)對SIDT、SGDT、SLDT等指令掛鉤,一旦發(fā)現(xiàn)可疑程序調(diào)用這些指令,則自動將相應(yīng)的寄存器和內(nèi)存地址修改為真實操作系統(tǒng)的合理地址,以達到欺騙虛擬檢測程序的目的。
2.4反穿透信道檢測VMware環(huán)境
通過修改VMware虛擬機相應(yīng)的配置文件,可以禁止虛擬機與物理機之間的穿透指令,以預(yù)防針對VMware穿透指令的檢測。
關(guān)閉VMware穿透信道的配置選項如下[3]:
設(shè)置了這些參數(shù)會關(guān)閉VMware 相應(yīng)的一些功能, 但這些功能在進行惡意程序分析與仿真時并不是必須功能,一般不會對惡意代碼的分析與研究工作造成影響。
3結(jié)語
本文針對VMware虛擬機環(huán)境,分析了該環(huán)境下常見的虛擬機環(huán)境檢測技術(shù)及對應(yīng)的檢測工具,并在分析各種檢測技術(shù)原理與缺點的基礎(chǔ)上,提出了一組VMware下反虛擬機環(huán)境檢測方法,以提高利用VMware虛擬機進行惡意程序仿真時的準確率。由于虛擬機環(huán)境可檢測的根本原因是虛擬化系統(tǒng)本身為提升性能與效率,造成虛擬化系統(tǒng)對客操作系統(tǒng)的不透明性。因此,該技術(shù)領(lǐng)域除了虛擬機環(huán)境檢測與反檢測的技術(shù)博弈外,如何加強虛擬機環(huán)境本身的安全架構(gòu),降低虛擬化系統(tǒng)本身的不透明,也是該領(lǐng)域的一個重要研究方向。
參考文獻:
[1]盧勇.反病毒虛擬機的研究與實現(xiàn)[D].成都:電子科技大學(xué),2007.
[2]PETER FERRIE.Attacks on more virtual machine emulators[J].Symantec Advanced Threat Research,2007(4):126129.
[3]楊峰,姜輝,諸葛建偉,等.虛擬機環(huán)境檢測方法研究綜述[J].小型微型計算機系統(tǒng),2012,33(8):18301835.
[4]馬晨,周城,趙麗華.VMware虛擬機檢測技術(shù)研究 [J].電腦知識與技術(shù),2011, 7(11):27002702.
[5]王寶林,楊明,張永輝.虛擬機檢測技術(shù)研究[J].計算機安全,2009(12):13.