周益周,謝小權
(中國航天科工集團第二研究院七〇六所 北京 100854)
云環境下基于VMI技術的入侵檢測架構研究
周益周,謝小權
(中國航天科工集團第二研究院七〇六所 北京100854)
虛擬機自?。╒irtual Machine Introspection,VMI)指在虛擬機監視器層對虛擬機進行安全監控,VMI技術可用于監控和分析云環境下虛擬機內部的惡意行為。本文設計了一個可以檢測云環境中虛擬機內部惡意行為的入侵檢測架構,為解決當前虛擬環境下監控數據獲取方法安全性的不足,本文提出并設計了一種云環境下利用硬件輔助虛擬化(Virtualization Technology)技術在虛擬機監視器層獲取監控數據的方法,將此數據作為入侵檢測的數據源。
虛擬機自省;虛擬化;硬件輔助虛擬化;云計算;入侵檢測
云用戶可以使用IaaS提供的計算、存儲、網絡等基本計算資源,并能夠在上面部署操作系統和應用軟件。云用戶并不能夠管理或控制底層的基礎設施,但可以控制其部署的操作系統、存儲資源和應用程序。與此同時,攻擊者也可以將惡意代碼部署在云基礎設施上,借助被植入惡意程序的虛擬機,繼續感染云中的其他虛擬機或外部網絡。
為此,云服務商有責任為云用戶提供一個安全的云環境,最典型的方式是在每臺虛擬機內部安裝代理,實現對云基礎設施的監控。但是虛擬機內部的代理本身并不安全,因為虛擬機可能會被攻擊者控制,若虛擬機被惡意控制后,該虛擬機可以攻擊云環境內部或外部其他的用戶,所以云服務商不能依賴傳統方式對云進行保護。
云計算引入虛擬化技術為其提供核心支持的同時,也引入了虛擬化技術帶來的安全風險。虛擬機逃逸是一種針對虛擬化技術的攻擊方式,攻擊者通過執行一個虛擬機內部的惡意程序,獲取虛擬機監視器權限,從而可對宿主機上的其他虛擬機進行攻擊。2008年,Core Security Technologies發現了VMware的漏洞(CVE-2008-0923)[2],其可以證明虛擬機逃逸是存在的。2012年,在Xen 4.1.2版本中也發現了一個類似的漏洞(CVE-2012-0217)[3],證明Intel處理器在執行SYSRET指令的差錯處理時出現問題,使得本地用戶通過執行一個惡意程序就可以獲得管理員權限,進而可對云環境中的其他虛擬機造成威脅。
這說明,在云環境中監控虛擬機并識別出虛擬機中發生的惡意行為對于解決云安全問題非常關鍵。基于以上背景,為了保證云環境的安全性,本文將設計一個針對云環境的入侵檢測系統,可以檢測虛擬機的惡意行為。
為了檢測虛擬機內部的惡意行為,需要對虛擬機進行監控,傳統的監控方式是通過在虛擬機內部加載鉤子函數來攔截被監控虛擬機中的行為,并通過虛擬機監視器對這些鉤子函數進行保護。具有代表性的系統是Lares[4]。這種架構的優點是由于在虛擬機內部對虛擬機的行為進行監控,所獲得的監控數據是操作系統級語義,無需進行語義重構。缺點是需要對每個被監控的虛擬機中增加鉤子函數,可移植性差,且監控工具在虛擬機內部查找惡意行為的同時,惡意軟件也會發現監控工具的行為,由此惡意軟件可通過分析監控工具的行為,對自己進行適當改變從而逃避監控。
X86處理器有4個特權級別 (Ring 0~Ring 3),Ring 0優先級最高,Ring 3最低。上述虛擬機內部監控機制其監控工具與惡意程序同在Ring 3層,導致該機制不夠安全。為了避免虛擬機內部監控所存在的問題,Tal Garfinkel[5]首次提出了VMI技術的概念:VMI是一種為了分析運行在虛擬機內部的軟件而在虛擬機監視器層對該虛擬機進行檢測的方法。由此可見,在Ring 0層對Ring 1~Ring 3層進行監控,避免了傳統監控方式下惡意軟件可以檢測到監控軟件存在的缺點。Sina Bahram[6]等人提出的DKSM攻擊,是對現有基于VMI技術的安全工具的一種攻擊手段,DKSM攻擊可以改變客戶虛擬機中內核數據結構的語法和語義,DKSM通過內核Rootkit工具偽造并交付給客戶和VMI工具所想要看到的信息,但實際上這兩種信息都不是系統執行的真實信息,這就使得基于客戶虛擬機中內核數據結構的語法和語義的VMI安全工具都失去作用。
針對以上問題,本文提出一個基于硬件輔助虛擬化技術(Virtualization Technology,簡稱VT技術)的VMI監控虛擬機內部狀態的方案,并使其符合云環境的特點,設計一個云環境下基于該方案的入侵檢測架構。
本文主要的工作有:
設計云環境下基于VMI技術的入侵檢測體系結構,該結構采用節點端-云端雙重入侵檢測分析模式。節點端是指在每個節點服務器對其上的每個虛擬機的行為進行入侵檢測,通過在節點服務器上部署系統調用序列采集工具,收集其上每個虛擬機用戶空間所執行的進程的系統調用序列,實時的對其進行入侵檢測。云端入侵檢測分析是指對某時期客戶虛擬機所產生的行為進行階段性集中分析。
提出基于硬件的監控數據采集機制。該機制具有兩個特點:1)確保自身安全性。不論是傳統的虛擬機內部監控工具和基于VMI技術的監控工具,其本身都可能會遭到惡意程序危害。本文通過研究x86架構的VT技術,設計一個只需要底層硬件支持的VMI工具進行監控數據采集,保證該采集工具的自身安全性。2)普適性。本文監控數據采集機制設計的最終目的是用于對云環境進行入侵檢測,該機制需滿足云環境中各種各樣的操作系統不同的監控數據采集方式,該機制將對x86架構所支持的系統調用進行采集,所采集的系統調用序列將作為入侵檢測的原始數據。
將云環境下基于VMI技術的入侵檢測系統分為3個層次,其總體架構如圖1虛線左側所示,虛線右側是云中入侵檢測系統工作流程模塊圖。其中,云控制端是系統的核心,云環境中所有虛擬機的運行狀態以及所采集的監控信息都保存在云控制端。同時它也是外界訪問云內部唯一的接口,其通過公用網絡實現對集群控制端的管理。集群控制端主要負責協調一個集群內的虛擬機資源,并且管理集群內的網絡流量,起到負載均衡的作用,在本文的研究中,它的作用主要是通過網絡完成數據的轉發。節點端運行在每個托管了虛擬機物理服務器上,控制主機操作系統以及相應的虛擬機監視器。具體如下:

圖1 云環境中基于VMI技術的入侵檢測系統體系結構Fig.1 Cloud environment IDS structure based on VMI
1.1節點端
節點端負責對運行在其服務器上的主機操作系統和運行在該系統之上的虛擬機實例的管理,接收集群控制端和云控制端的命令管理虛擬機實例,并反饋客戶虛擬機系統的資源情況和控制信息。除了上述基本功能外,節點端還需收集客戶虛擬機的行為信息,并對單個事件的行為進行節點端檢測,即上圖實時分析模塊。單個事件的行為特征主要表現為客戶虛擬機中程序所執行的系統調用序列。在計算機系統運行過程中,系統會發生各種事件,例如文件的讀寫、進程的啟動與刪除、U盤的插入與拔出等。為了實現程序的功能,內核操作系統提供系統調用接口為這些程序所用,系統調用序列可以反映客戶虛擬機操作系統的運行狀態。
節點端的實時分析主要采用基于行為特征的分析方法,主要思想是先對安全程序所產生的系統調用序列進行學習并建立行為特征庫。該行為特征庫存放在云端,當采集到客戶虛擬機所產生的系統調用序列后,實時分析模塊從云端行為特征庫中獲取該程序所對應的安全系統調用序列特征,并對比采集的系統調用序列,從而判斷該客戶虛擬機中是否有惡意行為。
系統調用序列分析結果的處理策略主要分為兩大類:交互式和非交互式。交互式處理指符合特征的事件觸發后,向用戶和云管理員詢問處理方式,如果超過指定時間沒有得到反饋,則按默認方式處理。非交互式處理指直接按照預先設置的策略,對觸發的事件進行處理。最后根據定義的處理策略,對發生的事件進行報警處理。
1.2云控制端
云控制端是系統的核心,負責各節點端監控數據的收集、存儲、階段性分析等工作。云控制端需具備高效率、高穩定性的特點。
云環境中虛擬機眾多,其節點端所采集的監控數據量大,消息隊列子模塊管理消息隊列,任何從節點端接收的監控數據都會先被送入消息隊列等候處理,起到緩沖的作用,防止數據量過大造成丟失或阻塞。然后使用關系型數據庫對消息隊列中的監控數據進行存儲,這些存儲的監控數據會根據云管理員所配置的篩選規則進行階段性分析。篩選規則是指云管理員通過配置規則,篩選特定的事件進行檢測,即指定對某用戶、某節點、某程序或某時間段進行檢測,可以通過搜索算法篩選數據庫記錄得到所需事件。階段性分析是指從大量數據中發現用戶異常行為數據,對歷史數據進行統計分析,得出云環境的安全狀況,發現在某段時間潛在的安全威脅。
文中主要對上述系統的監控信息采集模塊進行設計。
由于純軟件的虛擬化解決方案會增加系統的復雜性和性能開銷,所以出現了硬件輔助虛擬化(Virtualization Technology,VT技術)。由于VT技術支持客戶操作系統直接在其上運行,無需進行二進制翻譯或超級調用,因此減少了相關性能開銷。硬件支持虛擬化技術設計初衷并沒有將VMI技術考慮在內,其重點也并不在安全方面,它本身只支持直接對一部分事件進行截獲,并不能直接截獲某些安全方面關注的事件。
目前,Intel IA-32和Intel EM64T架構不支持系統調用事件陷入VMM,為了獲得安全監控所需要的系統調用事件,可以利用Intel虛擬化擴展技術(VT-x技術)提供的強制系統中斷方法使控制權陷入VMM。如此一來,便可以在VMM層實現系統調用的截獲,過程如圖2所示。

圖2 截獲系統調用過程Fig.2 The process of intercept system calls
文中設計的監控信息采集工具所采集的監控信息是客戶虛擬機中程序運行時所產生的系統調用序列。該采集工具有兩個特點:1)確保自身安全性。傳統的虛擬機監控工具在虛擬機的內部,這會使得惡意軟件發現監控工具的存在,通過分析監控工具的行為可隱藏自己;基于客戶操作系統內核的VMI監控工具工作在VMM層(即Ring 0層),可能遭到上述DKSM攻擊,其自身也不安全。本文通過研究x86架構的VT技術,設計一個只需要底層硬件支持的VMI工具,相當于在Ring-1層對客戶虛擬機進行監控,其本身不會受到內核級或用戶級攻擊。2)普適性。目前使用最廣的是x86架構的機器,最常見的操作系統是Windows和Linux,分別有32位和64位。x86架構有3種系統調用機制,本文將對3種系統調用的截獲方法進行研究。
2.1基于中斷的系統調用
基于中斷的系統調用也稱為傳統系統調用,通過軟中斷的方式實現。x86架構通過中斷描述符表(IDT)執行中斷操作,IDT將每個異常或中斷向量分別與它們的處理過程聯系起來。IDT最多有256個描述符,每個描述符長度為8B。處理器通過中斷描述符表寄存器 (IDTR)來定位IDT的位置,IDTR中存放著IDT的長度值和系統內存中IDT的開始地址(即基地址)。當中斷發生時,硬件通過IDTR查詢IDT,找出中斷處理函數的位置并執行。
Intel的虛擬化擴展技術支持系統中斷(int0~int31)陷入VMM,系統中斷即指是由Intel固定設定或保留用的,屬于軟件中斷。但不支持用戶中斷(int31~int255)陷入VMM,用戶中斷是指用戶自己設定的,這些用戶中斷可能會用于系統調用。所以必須設計一種方法,通過用戶中斷形成系統中斷。
將進行如下設計:對IDT進行自虛擬,即將客戶機IDT拷貝到虛擬機監視器,然后對修改IDTR寄存器并陷入所有的寫訪問,因此就不會接受其他操作。IDTR寄存器中存有IDT的長度值,接著把IDTR中存放的IDT大小的值加入到基礎地址,從而獲得IDT最后一位有效字節的偏移,將IDT大小設置為32*8-1=255。這樣做的話,所有的系統中斷(int0~int31)將不受影響,而所有的用戶中斷(int32~int255)將會引起一個一般性保護錯誤(int13),即IDT邊界溢出。接著就可以將所有的一般性保護錯誤陷入到虛擬機監視器,但是,必須分清故意設計的一般性保護錯誤和正常發生的一般性保護錯誤。
如果這個異常不是故意造成的 (即屬于程序正常的異常),將該異常傳回客戶虛擬機并繼續執行。但如果這個異常是由用戶中斷產生的(即故意造成的),那么查看該中斷號并判斷是否已經捕獲系統調用。若陷入了系統調用,則根據指定規則進行數據收集,否則使用VMM中的IDT仿真int指令并將控制權還給客戶虛擬機。當發生系統調用后,寄存器EAX保存了系統調用號(System Call Number)。
2.2基于SYSCALL的系統調用
執行SYSCALL/SYSRET指令也可以進行系統調用。但需要一組MSR寄存器對這兩個指令進行支持,分別是STAR_MSR(適用于32位傳統模式),CSTAR_MSR(適用于保護模式),LSTAR_MSR (適用于 64位長模式)。在執行SYSCALL/SYSRET指令前,進程會檢測EFER寄存器的SCE標志位,以確認是否開啟系統調用擴展(System Call Extension)功能,如果沒有開啟會產生無效操作碼(opcode)異常。
因此,可以使用上述方式造成系統中斷,將SCE標志位設置為關閉狀態,便可使所有的無效操作碼異常陷入虛擬機監視器。當虛擬機監視器得到控制權時,還需再次區分該異常是原本就會發生的異常還是故意造成的異常??梢酝ㄟ^檢查違反指令,若指令既不是SYSCALL也不是SYSRET,我們在客戶操作系統中注入一個無效操作碼異常,并將控制權還給客戶操作系統。但如果違反指令是SYSCALL,那么將對所需信息進行收集,并對該指令進行仿真,最后把控制權還給客戶操作系統。
上述操作同樣適用于SYSRET指令。基于SYSENTER的系統調用與SYSCALL/SYSRET類似,此處不再敘述。
上述所截獲到的客戶虛擬機中的系統調用是底層信息,虛擬機監視器并不清楚是哪個進程發起了這個系統調用,所以該工具還要確定系統調用是由哪個進程產生的。本文將采取這樣的思想:每次系統調用中斷時,收集對于某進程而言是唯一的標識符,即進程號(pid)和進程名(comm)。該信息都存儲于內核數據結構task_struct中,內核在初始化進程的時候,為每個進程分配了獨立的存儲空間,其中存有結構體thread_info和內核態堆 棧,thread_info中 存 放 了指向task_struct的指針,VMM通過讀取ESP寄存器指示的內核態堆棧棧頂值,通過地址計算可以得到thread_info的首地址,進而找到task_struct并對其進行分析,可以得到進程號和進程名。具體過程如圖3所示。

圖3 由ESP寄存器值取得進程信息過程Fig.3 The process of ESP register achieving process information
在x86平臺上,CR3寄存器為處理器提供當前進程的頁目錄表的基地址。虛擬機監視器除了讀取ESP寄存器來獲取進程信息以外,還要讀取CR3寄存器的值。如此一來可以建立一個進程標識符表,在每次進行系統調用時(系統調用號保存在EAX寄存器中,相應參數按順序保存在ebx、ecx、edx、esi及edi寄存器中),向進程標識表中添加CR3寄存器值、進程號、進程名、系統調用號、系統調用參數5類信息。根據進程標識表與其對應的系統調用陷入的先后順序,可以構造某進程的系統調用序列。在此需要說明的是,只比較CR3寄存器的值就可以判斷是否為同一進程,添加進程號和進程名在進程標識表中是為了云環境中入侵檢測分析端使用方便。
云計算中共享基礎設施和遠程隨時訪問的特點給其帶來了各種各樣的威脅,本文從虛擬機的惡意行為檢測的角度進行了研究,接下來的工作重點是對云計算環境中其他方面可能面臨的威脅進行研究,比如說數據存儲、訪問權限、網絡控制等問題,進而形成一個完整的云安全架構。
[1]Pfoh J,Schneider C,Eckert C.A formal model for virtual machine introspection,2009[C].Proceedings of the 2nd ACM workshop on Virtual Machine Security(VMSec’09). 2009:1-10.
[2]Core Security Technologies.Path Traversal vulnerability in VMware’s shared folders implementation-CVE-2008-0923. 2007.
[3]Mimoso M.Virtual Machine Escape Exploit Targets Xen. 2012.
[4]Payne D,Carbone M,Sharif M,et al.Lares:An Architecture for Secure Active Monitoring Using Virtualization,2008[C]// 2008 IEEE Symposium on Security and Privacy,2008:233-247.
[5]Garfinkel T,Rosenblum M.A virtual machine introspection based architecture for intrusion detection,2003[C]//Proceedings of Network Distributed System Security,2003:253-285.
[6]Bahram S,Jiang X,Wang Z,Grace M,et al.DKSM:Subverting Virtual Machine Introspection for Fun and Profit,2010[C]. Reliable Distributed System,2010 29th IEEE Symposium,2010:82-91.
[7]Jin H,Guofu Xiang,Deqing Zou,et al.A VMM-based intrusion prevention system in cloud computing environment [J].The Journal of Supercomputing,2013,66:1133-1151.
[8]Gupta S,S G,Gupta S,et al.An immediate system Call sequence based approach for detecting malicious program executions in cloud environment[J].Wireless Personal Communications,2014.
VMI-based intrusion detection framework in cloud environment
ZHOU Yi-zhou,XIE Xiao-quan
(Institute 706,The Second Academy of China Aerospace Science and Industry Corporation,Beijing 100854,China)
Virtual Machine Introspection(VMI)refers to monitoring the state of a virtual machine from the virtual machine monitor layer.It can also be used for monitoring and analysis of the malicious behavior of cloud infrastructure.this article designed an intrusion detection framework to detect the malicious behavior of virtual machine in the cloud,in order to solve the problem that lack of security in monitoring current virtual machines'state,this article also presented and designed a VT-based technology to get monitoring data from the virtual machine monitor layer,and made sure this method meet the characteristics of the cloud.
Virtual Machine Introspection;virtualization;hardware-assisted virtualization technology;cloud computing;intrusion detection
TP309
A
1674-6236(2016)01-0062-04
2015-01-31稿件編號:201501281
周益周(1990—),男,山西太原人,碩士,助理工程師。研究方向:信息安全。