走近虚拟机——McAfee研究员孙冰谈虚拟机技术和虚拟机安全
生活随笔
收集整理的這篇文章主要介紹了
走近虚拟机——McAfee研究员孙冰谈虚拟机技术和虚拟机安全
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? 一、關(guān)于虛擬機(jī)技術(shù)的背景知識(shí) ? 1、Emulator和Virtualizer的區(qū)別 ? 現(xiàn)在很多殺毒軟件里面有所謂的智能脫殼功能,其實(shí)它就是用一個(gè)Emulator模擬器來解釋執(zhí)行機(jī)器指令,比如說x86的機(jī)器語言是一條一條來被翻譯執(zhí)行的。而Virtualizer并不是由軟件來模擬執(zhí)行,而是使這個(gè)代碼盡可能自然地在當(dāng)前的處理器上運(yùn)行,而虛擬機(jī)監(jiān)控器只需要在某些特定時(shí)候進(jìn)行干預(yù),比如說來處理一些特權(quán)指令操作。 Emulator中比較有名的一個(gè)是BOCHS,可能有一些朋友用它來進(jìn)行過一些操作系統(tǒng)級的調(diào)試。這是一個(gè)開源的軟件,在網(wǎng)上可以下載到。 Virtualizer比較有代表性的是VMware、VPC這些軟件。 VMM是虛擬機(jī)管理器,也叫做虛擬機(jī)監(jiān)控器,其實(shí)它就是一個(gè)軟件層。這個(gè)軟件層是在被虛擬執(zhí)行的操作系統(tǒng)和真實(shí)的硬件環(huán)境間由軟件構(gòu)架的一套中間層,由它來負(fù)責(zé)對下面的硬件,比如CPU處理器、硬件等進(jìn)行虛擬。我們后面還會(huì)看到對VMM的結(jié)構(gòu)和工作原理的介紹。 2、Host OS和Guest OS ? Host OS和Guest OS非常好理解,在虛擬機(jī)里運(yùn)行的系統(tǒng),我們稱之為客操作系統(tǒng)。對于二型VMM架構(gòu)它的主操作系統(tǒng),我們叫做Host OS。 3、VMM的類型 ? 下面我們介紹一下VMM的類型,有兩種:一種是在裸機(jī)上的架構(gòu),第二種是混合型,就是有主操作系統(tǒng)的VMM,典型代表有: Type I VMM(Bare Metal):VMware ESX, Xen, MS Hyper-V Type II VMM(Hosted/Hybrid):VMware Workstation, MS VPC 圖1描述的是I型VMM的結(jié)構(gòu)。我們可以看到虛擬機(jī)監(jiān)控器VMM是裝在裸機(jī)上的,在這個(gè)上面我們會(huì)有多個(gè)并發(fā)運(yùn)行的客操作系統(tǒng)Guest OS。 圖1? I型VMM結(jié)構(gòu)圖 對于有Host OS的II型VMM是圖2這樣的,虛擬機(jī)軟件本身是Host OS的一部分,通過虛擬機(jī)軟件,使VMM和Guest OS運(yùn)行在同一個(gè)線性地址空間里來虛擬Guest OS的執(zhí)行。另外VMM還有一個(gè)功能,從主操作系統(tǒng)的上下文空間向客操作系統(tǒng)的上下文空間進(jìn)行切換,由它進(jìn)行控制。 圖2? II型VMM結(jié)構(gòu)圖 我們原先用到虛擬機(jī)的技術(shù),多半都是由純軟件來實(shí)現(xiàn)的,因?yàn)槲覀冊谟布蠜]有對虛擬的直接的支持。用軟件來實(shí)現(xiàn)虛擬,是非常困難,而且非常非常有技巧的一件事情??赡苡眠^VMware的朋友都有一個(gè)疑問,它到底是怎么實(shí)現(xiàn)的?怎么來同時(shí)運(yùn)行兩個(gè)操作系統(tǒng)?VMware在里面的操作系統(tǒng)運(yùn)行在一個(gè)Windows窗口里面,外部的操作系統(tǒng)也在并發(fā)執(zhí)行,怎么做到的?其實(shí)這用到了很多比較復(fù)雜的技術(shù),包括所謂的執(zhí)行特權(quán)級壓縮。也就是說,在窗口里運(yùn)行的客操作系統(tǒng)的內(nèi)核模式,實(shí)際上不是在ring0執(zhí)行的,而是被降級到ring1執(zhí)行的。這樣就能保證它里面發(fā)出的一些特權(quán)指令的調(diào)用可以被虛擬機(jī)監(jiān)控器所捕獲到,來進(jìn)行模擬。而它里面用戶態(tài)的代碼是自然在CPU上執(zhí)行的,這就是為什么執(zhí)行的效率相比起其他的一些模擬器來說我們會(huì)覺得比較快,因?yàn)樗蟛糠值闹噶钊窃贑PU上自然執(zhí)行,不需要虛擬機(jī)監(jiān)控器來進(jìn)行干預(yù)。 但是由于x86這個(gè)體系本身對于虛擬來說有一些不支持的地方,比如一些敏感的但是不可捕獲的指令,比如說像SIDT這條指令,即便在ring3下執(zhí)行也不能產(chǎn)生異常,VMM抓不到它,這對虛擬來說是一個(gè)挑戰(zhàn)。所以VMM對于Guest OS的ring0采取的是二進(jìn)制翻譯,而對ring3采取的是直接執(zhí)行。下面這條是為了對付這種敏感但是不可虛擬的指令,而采用的二進(jìn)制翻譯的機(jī)制。 ? 4、用軟件來實(shí)現(xiàn)MMU ? 還有一個(gè)比較關(guān)鍵的技術(shù),就是所謂的用軟件來實(shí)現(xiàn)MMU(內(nèi)存管理單元),影子頁表。在圖2所示的II型VMM里面,客操作系統(tǒng)認(rèn)為自己是獨(dú)占線性地址空間,而且覺得這個(gè)物理內(nèi)存全部是它的。但是我們可以看到,VMM是跟它運(yùn)行在同一個(gè)線性空間里,而且只是劃分了一部分物理內(nèi)存給它使用,所以必須使用軟件虛擬MMU的方法來使它認(rèn)為自己好像是獨(dú)占這個(gè)空間的。 Guest OS有自己的頁表,但是這個(gè)頁表不能被硬件直接使用,而硬件的頁表是由VMM控制的。Guest OS自己的頁表和實(shí)際的硬件設(shè)置之間有一個(gè)對應(yīng)關(guān)系,這種對應(yīng)關(guān)系是由VMM來維護(hù)的。 由于軟件虛擬技術(shù)比較復(fù)雜,而且效率比較低,所以近幾年處理器直接加入了對虛擬的支持,即所謂的硬件虛擬。我們可以看到,Intel和AMD都有所動(dòng)作,Intel的叫做VT-x,AMD的叫做SVM技術(shù)。當(dāng)然后面還有一些別的后續(xù)技術(shù),比如說VT-d和IOMMU。 查看全文>> 本文主要內(nèi)容整理自McAfee研究員孫冰先生在2008中國軟件安全峰會(huì)上的演講,歡迎下載本文資料。 瀏覽更多精彩文章>>? 歡迎訂閱軟件安全電子期刊>> ?
轉(zhuǎn)載于:https://blog.51cto.com/broadviewsec/125260
總結(jié)
以上是生活随笔為你收集整理的走近虚拟机——McAfee研究员孙冰谈虚拟机技术和虚拟机安全的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BIOS中英文对照
- 下一篇: 写了一个测试正则表达式的小工具