周益周,謝小權
(中國航天科工集團第二研究院七〇六所 北京 100854)
云環(huán)境下基于VMI技術的入侵檢測架構研究
周益周,謝小權
(中國航天科工集團第二研究院七〇六所 北京100854)
虛擬機自省(Virtual Machine Introspection,VMI)指在虛擬機監(jiān)視器層對虛擬機進行安全監(jiān)控,VMI技術可用于監(jiān)控和分析云環(huán)境下虛擬機內部的惡意行為。本文設計了一個可以檢測云環(huán)境中虛擬機內部惡意行為的入侵檢測架構,為解決當前虛擬環(huán)境下監(jiān)控數(shù)據(jù)獲取方法安全性的不足,本文提出并設計了一種云環(huán)境下利用硬件輔助虛擬化(Virtualization Technology)技術在虛擬機監(jiān)視器層獲取監(jiān)控數(shù)據(jù)的方法,將此數(shù)據(jù)作為入侵檢測的數(shù)據(jù)源。
虛擬機自??;虛擬化;硬件輔助虛擬化;云計算;入侵檢測
云用戶可以使用IaaS提供的計算、存儲、網(wǎng)絡等基本計算資源,并能夠在上面部署操作系統(tǒng)和應用軟件。云用戶并不能夠管理或控制底層的基礎設施,但可以控制其部署的操作系統(tǒng)、存儲資源和應用程序。與此同時,攻擊者也可以將惡意代碼部署在云基礎設施上,借助被植入惡意程序的虛擬機,繼續(xù)感染云中的其他虛擬機或外部網(wǎng)絡。
為此,云服務商有責任為云用戶提供一個安全的云環(huán)境,最典型的方式是在每臺虛擬機內部安裝代理,實現(xiàn)對云基礎設施的監(jiān)控。但是虛擬機內部的代理本身并不安全,因為虛擬機可能會被攻擊者控制,若虛擬機被惡意控制后,該虛擬機可以攻擊云環(huán)境內部或外部其他的用戶,所以云服務商不能依賴傳統(tǒng)方式對云進行保護。
云計算引入虛擬化技術為其提供核心支持的同時,也引入了虛擬化技術帶來的安全風險。虛擬機逃逸是一種針對虛擬化技術的攻擊方式,攻擊者通過執(zhí)行一個虛擬機內部的惡意程序,獲取虛擬機監(jiān)視器權限,從而可對宿主機上的其他虛擬機進行攻擊。2008年,Core Security Technologies發(fā)現(xiàn)了VMware的漏洞(CVE-2008-0923)[2],其可以證明虛擬機逃逸是存在的。2012年,在Xen 4.1.2版本中也發(fā)現(xiàn)了一個類似的漏洞(CVE-2012-0217)[3],證明Intel處理器在執(zhí)行SYSRET指令的差錯處理時出現(xiàn)問題,使得本地用戶通過執(zhí)行一個惡意程序就可以獲得管理員權限,進而可對云環(huán)境中的其他虛擬機造成威脅。
這說明,在云環(huán)境中監(jiān)控虛擬機并識別出虛擬機中發(fā)生的惡意行為對于解決云安全問題非常關鍵?;谝陨媳尘?,為了保證云環(huán)境的安全性,本文將設計一個針對云環(huán)境的入侵檢測系統(tǒng),可以檢測虛擬機的惡意行為。
為了檢測虛擬機內部的惡意行為,需要對虛擬機進行監(jiān)控,傳統(tǒng)的監(jiān)控方式是通過在虛擬機內部加載鉤子函數(shù)來攔截被監(jiān)控虛擬機中的行為,并通過虛擬機監(jiān)視器對這些鉤子函數(shù)進行保護。具有代表性的系統(tǒng)是Lares[4]。這種架構的優(yōu)點是由于在虛擬機內部對虛擬機的行為進行監(jiān)控,所獲得的監(jiān)控數(shù)據(jù)是操作系統(tǒng)級語義,無需進行語義重構。缺點是需要對每個被監(jiān)控的虛擬機中增加鉤子函數(shù),可移植性差,且監(jiān)控工具在虛擬機內部查找惡意行為的同時,惡意軟件也會發(fā)現(xiàn)監(jiān)控工具的行為,由此惡意軟件可通過分析監(jiān)控工具的行為,對自己進行適當改變從而逃避監(jiān)控。
X86處理器有4個特權級別 (Ring 0~Ring 3),Ring 0優(yōu)先級最高,Ring 3最低。上述虛擬機內部監(jiān)控機制其監(jiān)控工具與惡意程序同在Ring 3層,導致該機制不夠安全。為了避免虛擬機內部監(jiān)控所存在的問題,Tal Garfinkel[5]首次提出了VMI技術的概念:VMI是一種為了分析運行在虛擬機內部的軟件而在虛擬機監(jiān)視器層對該虛擬機進行檢測的方法。由此可見,在Ring 0層對Ring 1~Ring 3層進行監(jiān)控,避免了傳統(tǒng)監(jiān)控方式下惡意軟件可以檢測到監(jiān)控軟件存在的缺點。Sina Bahram[6]等人提出的DKSM攻擊,是對現(xiàn)有基于VMI技術的安全工具的一種攻擊手段,DKSM攻擊可以改變客戶虛擬機中內核數(shù)據(jù)結構的語法和語義,DKSM通過內核Rootkit工具偽造并交付給客戶和VMI工具所想要看到的信息,但實際上這兩種信息都不是系統(tǒng)執(zhí)行的真實信息,這就使得基于客戶虛擬機中內核數(shù)據(jù)結構的語法和語義的VMI安全工具都失去作用。
針對以上問題,本文提出一個基于硬件輔助虛擬化技術(Virtualization Technology,簡稱VT技術)的VMI監(jiān)控虛擬機內部狀態(tài)的方案,并使其符合云環(huán)境的特點,設計一個云環(huán)境下基于該方案的入侵檢測架構。
本文主要的工作有:
設計云環(huán)境下基于VMI技術的入侵檢測體系結構,該結構采用節(jié)點端-云端雙重入侵檢測分析模式。節(jié)點端是指在每個節(jié)點服務器對其上的每個虛擬機的行為進行入侵檢測,通過在節(jié)點服務器上部署系統(tǒng)調用序列采集工具,收集其上每個虛擬機用戶空間所執(zhí)行的進程的系統(tǒng)調用序列,實時的對其進行入侵檢測。云端入侵檢測分析是指對某時期客戶虛擬機所產(chǎn)生的行為進行階段性集中分析。
提出基于硬件的監(jiān)控數(shù)據(jù)采集機制。該機制具有兩個特點:1)確保自身安全性。不論是傳統(tǒng)的虛擬機內部監(jiān)控工具和基于VMI技術的監(jiān)控工具,其本身都可能會遭到惡意程序危害。本文通過研究x86架構的VT技術,設計一個只需要底層硬件支持的VMI工具進行監(jiān)控數(shù)據(jù)采集,保證該采集工具的自身安全性。2)普適性。本文監(jiān)控數(shù)據(jù)采集機制設計的最終目的是用于對云環(huán)境進行入侵檢測,該機制需滿足云環(huán)境中各種各樣的操作系統(tǒng)不同的監(jiān)控數(shù)據(jù)采集方式,該機制將對x86架構所支持的系統(tǒng)調用進行采集,所采集的系統(tǒng)調用序列將作為入侵檢測的原始數(shù)據(jù)。
將云環(huán)境下基于VMI技術的入侵檢測系統(tǒng)分為3個層次,其總體架構如圖1虛線左側所示,虛線右側是云中入侵檢測系統(tǒng)工作流程模塊圖。其中,云控制端是系統(tǒng)的核心,云環(huán)境中所有虛擬機的運行狀態(tài)以及所采集的監(jiān)控信息都保存在云控制端。同時它也是外界訪問云內部唯一的接口,其通過公用網(wǎng)絡實現(xiàn)對集群控制端的管理。集群控制端主要負責協(xié)調一個集群內的虛擬機資源,并且管理集群內的網(wǎng)絡流量,起到負載均衡的作用,在本文的研究中,它的作用主要是通過網(wǎng)絡完成數(shù)據(jù)的轉發(fā)。節(jié)點端運行在每個托管了虛擬機物理服務器上,控制主機操作系統(tǒng)以及相應的虛擬機監(jiān)視器。具體如下:
圖1 云環(huán)境中基于VMI技術的入侵檢測系統(tǒng)體系結構Fig.1 Cloud environment IDS structure based on VMI
1.1節(jié)點端
節(jié)點端負責對運行在其服務器上的主機操作系統(tǒng)和運行在該系統(tǒng)之上的虛擬機實例的管理,接收集群控制端和云控制端的命令管理虛擬機實例,并反饋客戶虛擬機系統(tǒng)的資源情況和控制信息。除了上述基本功能外,節(jié)點端還需收集客戶虛擬機的行為信息,并對單個事件的行為進行節(jié)點端檢測,即上圖實時分析模塊。單個事件的行為特征主要表現(xiàn)為客戶虛擬機中程序所執(zhí)行的系統(tǒng)調用序列。在計算機系統(tǒng)運行過程中,系統(tǒng)會發(fā)生各種事件,例如文件的讀寫、進程的啟動與刪除、U盤的插入與拔出等。為了實現(xiàn)程序的功能,內核操作系統(tǒng)提供系統(tǒng)調用接口為這些程序所用,系統(tǒng)調用序列可以反映客戶虛擬機操作系統(tǒng)的運行狀態(tài)。
節(jié)點端的實時分析主要采用基于行為特征的分析方法,主要思想是先對安全程序所產(chǎn)生的系統(tǒng)調用序列進行學習并建立行為特征庫。該行為特征庫存放在云端,當采集到客戶虛擬機所產(chǎn)生的系統(tǒng)調用序列后,實時分析模塊從云端行為特征庫中獲取該程序所對應的安全系統(tǒng)調用序列特征,并對比采集的系統(tǒng)調用序列,從而判斷該客戶虛擬機中是否有惡意行為。
系統(tǒng)調用序列分析結果的處理策略主要分為兩大類:交互式和非交互式。交互式處理指符合特征的事件觸發(fā)后,向用戶和云管理員詢問處理方式,如果超過指定時間沒有得到反饋,則按默認方式處理。非交互式處理指直接按照預先設置的策略,對觸發(fā)的事件進行處理。最后根據(jù)定義的處理策略,對發(fā)生的事件進行報警處理。
1.2云控制端
云控制端是系統(tǒng)的核心,負責各節(jié)點端監(jiān)控數(shù)據(jù)的收集、存儲、階段性分析等工作。云控制端需具備高效率、高穩(wěn)定性的特點。
云環(huán)境中虛擬機眾多,其節(jié)點端所采集的監(jiān)控數(shù)據(jù)量大,消息隊列子模塊管理消息隊列,任何從節(jié)點端接收的監(jiān)控數(shù)據(jù)都會先被送入消息隊列等候處理,起到緩沖的作用,防止數(shù)據(jù)量過大造成丟失或阻塞。然后使用關系型數(shù)據(jù)庫對消息隊列中的監(jiān)控數(shù)據(jù)進行存儲,這些存儲的監(jiān)控數(shù)據(jù)會根據(jù)云管理員所配置的篩選規(guī)則進行階段性分析。篩選規(guī)則是指云管理員通過配置規(guī)則,篩選特定的事件進行檢測,即指定對某用戶、某節(jié)點、某程序或某時間段進行檢測,可以通過搜索算法篩選數(shù)據(jù)庫記錄得到所需事件。階段性分析是指從大量數(shù)據(jù)中發(fā)現(xiàn)用戶異常行為數(shù)據(jù),對歷史數(shù)據(jù)進行統(tǒng)計分析,得出云環(huán)境的安全狀況,發(fā)現(xiàn)在某段時間潛在的安全威脅。
文中主要對上述系統(tǒng)的監(jiān)控信息采集模塊進行設計。
由于純軟件的虛擬化解決方案會增加系統(tǒng)的復雜性和性能開銷,所以出現(xiàn)了硬件輔助虛擬化(Virtualization Technology,VT技術)。由于VT技術支持客戶操作系統(tǒng)直接在其上運行,無需進行二進制翻譯或超級調用,因此減少了相關性能開銷。硬件支持虛擬化技術設計初衷并沒有將VMI技術考慮在內,其重點也并不在安全方面,它本身只支持直接對一部分事件進行截獲,并不能直接截獲某些安全方面關注的事件。
目前,Intel IA-32和Intel EM64T架構不支持系統(tǒng)調用事件陷入VMM,為了獲得安全監(jiān)控所需要的系統(tǒng)調用事件,可以利用Intel虛擬化擴展技術(VT-x技術)提供的強制系統(tǒng)中斷方法使控制權陷入VMM。如此一來,便可以在VMM層實現(xiàn)系統(tǒng)調用的截獲,過程如圖2所示。
圖2 截獲系統(tǒng)調用過程Fig.2 The process of intercept system calls
文中設計的監(jiān)控信息采集工具所采集的監(jiān)控信息是客戶虛擬機中程序運行時所產(chǎn)生的系統(tǒng)調用序列。該采集工具有兩個特點:1)確保自身安全性。傳統(tǒng)的虛擬機監(jiān)控工具在虛擬機的內部,這會使得惡意軟件發(fā)現(xiàn)監(jiān)控工具的存在,通過分析監(jiān)控工具的行為可隱藏自己;基于客戶操作系統(tǒng)內核的VMI監(jiān)控工具工作在VMM層(即Ring 0層),可能遭到上述DKSM攻擊,其自身也不安全。本文通過研究x86架構的VT技術,設計一個只需要底層硬件支持的VMI工具,相當于在Ring-1層對客戶虛擬機進行監(jiān)控,其本身不會受到內核級或用戶級攻擊。2)普適性。目前使用最廣的是x86架構的機器,最常見的操作系統(tǒng)是Windows和Linux,分別有32位和64位。x86架構有3種系統(tǒng)調用機制,本文將對3種系統(tǒng)調用的截獲方法進行研究。
2.1基于中斷的系統(tǒng)調用
基于中斷的系統(tǒng)調用也稱為傳統(tǒng)系統(tǒng)調用,通過軟中斷的方式實現(xiàn)。x86架構通過中斷描述符表(IDT)執(zhí)行中斷操作,IDT將每個異?;蛑袛嘞蛄糠謩e與它們的處理過程聯(lián)系起來。IDT最多有256個描述符,每個描述符長度為8B。處理器通過中斷描述符表寄存器 (IDTR)來定位IDT的位置,IDTR中存放著IDT的長度值和系統(tǒng)內存中IDT的開始地址(即基地址)。當中斷發(fā)生時,硬件通過IDTR查詢IDT,找出中斷處理函數(shù)的位置并執(zhí)行。
Intel的虛擬化擴展技術支持系統(tǒng)中斷(int0~int31)陷入VMM,系統(tǒng)中斷即指是由Intel固定設定或保留用的,屬于軟件中斷。但不支持用戶中斷(int31~int255)陷入VMM,用戶中斷是指用戶自己設定的,這些用戶中斷可能會用于系統(tǒng)調用。所以必須設計一種方法,通過用戶中斷形成系統(tǒng)中斷。
將進行如下設計:對IDT進行自虛擬,即將客戶機IDT拷貝到虛擬機監(jiān)視器,然后對修改IDTR寄存器并陷入所有的寫訪問,因此就不會接受其他操作。IDTR寄存器中存有IDT的長度值,接著把IDTR中存放的IDT大小的值加入到基礎地址,從而獲得IDT最后一位有效字節(jié)的偏移,將IDT大小設置為32*8-1=255。這樣做的話,所有的系統(tǒng)中斷(int0~int31)將不受影響,而所有的用戶中斷(int32~int255)將會引起一個一般性保護錯誤(int13),即IDT邊界溢出。接著就可以將所有的一般性保護錯誤陷入到虛擬機監(jiān)視器,但是,必須分清故意設計的一般性保護錯誤和正常發(fā)生的一般性保護錯誤。
如果這個異常不是故意造成的 (即屬于程序正常的異常),將該異常傳回客戶虛擬機并繼續(xù)執(zhí)行。但如果這個異常是由用戶中斷產(chǎn)生的(即故意造成的),那么查看該中斷號并判斷是否已經(jīng)捕獲系統(tǒng)調用。若陷入了系統(tǒng)調用,則根據(jù)指定規(guī)則進行數(shù)據(jù)收集,否則使用VMM中的IDT仿真int指令并將控制權還給客戶虛擬機。當發(fā)生系統(tǒng)調用后,寄存器EAX保存了系統(tǒng)調用號(System Call Number)。
2.2基于SYSCALL的系統(tǒng)調用
執(zhí)行SYSCALL/SYSRET指令也可以進行系統(tǒng)調用。但需要一組MSR寄存器對這兩個指令進行支持,分別是STAR_MSR(適用于32位傳統(tǒng)模式),CSTAR_MSR(適用于保護模式),LSTAR_MSR (適用于 64位長模式)。在執(zhí)行SYSCALL/SYSRET指令前,進程會檢測EFER寄存器的SCE標志位,以確認是否開啟系統(tǒng)調用擴展(System Call Extension)功能,如果沒有開啟會產(chǎn)生無效操作碼(opcode)異常。
因此,可以使用上述方式造成系統(tǒng)中斷,將SCE標志位設置為關閉狀態(tài),便可使所有的無效操作碼異常陷入虛擬機監(jiān)視器。當虛擬機監(jiān)視器得到控制權時,還需再次區(qū)分該異常是原本就會發(fā)生的異常還是故意造成的異常??梢酝ㄟ^檢查違反指令,若指令既不是SYSCALL也不是SYSRET,我們在客戶操作系統(tǒng)中注入一個無效操作碼異常,并將控制權還給客戶操作系統(tǒng)。但如果違反指令是SYSCALL,那么將對所需信息進行收集,并對該指令進行仿真,最后把控制權還給客戶操作系統(tǒng)。
上述操作同樣適用于SYSRET指令?;赟YSENTER的系統(tǒng)調用與SYSCALL/SYSRET類似,此處不再敘述。
上述所截獲到的客戶虛擬機中的系統(tǒng)調用是底層信息,虛擬機監(jiān)視器并不清楚是哪個進程發(fā)起了這個系統(tǒng)調用,所以該工具還要確定系統(tǒng)調用是由哪個進程產(chǎn)生的。本文將采取這樣的思想:每次系統(tǒng)調用中斷時,收集對于某進程而言是唯一的標識符,即進程號(pid)和進程名(comm)。該信息都存儲于內核數(shù)據(jù)結構task_struct中,內核在初始化進程的時候,為每個進程分配了獨立的存儲空間,其中存有結構體thread_info和內核態(tài)堆 棧,thread_info中 存 放 了指向task_struct的指針,VMM通過讀取ESP寄存器指示的內核態(tài)堆棧棧頂值,通過地址計算可以得到thread_info的首地址,進而找到task_struct并對其進行分析,可以得到進程號和進程名。具體過程如圖3所示。
圖3 由ESP寄存器值取得進程信息過程Fig.3 The process of ESP register achieving process information
在x86平臺上,CR3寄存器為處理器提供當前進程的頁目錄表的基地址。虛擬機監(jiān)視器除了讀取ESP寄存器來獲取進程信息以外,還要讀取CR3寄存器的值。如此一來可以建立一個進程標識符表,在每次進行系統(tǒng)調用時(系統(tǒng)調用號保存在EAX寄存器中,相應參數(shù)按順序保存在ebx、ecx、edx、esi及edi寄存器中),向進程標識表中添加CR3寄存器值、進程號、進程名、系統(tǒng)調用號、系統(tǒng)調用參數(shù)5類信息。根據(jù)進程標識表與其對應的系統(tǒng)調用陷入的先后順序,可以構造某進程的系統(tǒng)調用序列。在此需要說明的是,只比較CR3寄存器的值就可以判斷是否為同一進程,添加進程號和進程名在進程標識表中是為了云環(huán)境中入侵檢測分析端使用方便。
云計算中共享基礎設施和遠程隨時訪問的特點給其帶來了各種各樣的威脅,本文從虛擬機的惡意行為檢測的角度進行了研究,接下來的工作重點是對云計算環(huán)境中其他方面可能面臨的威脅進行研究,比如說數(shù)據(jù)存儲、訪問權限、網(wǎng)絡控制等問題,進而形成一個完整的云安全架構。
[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—),男,山西太原人,碩士,助理工程師。研究方向:信息安全。