李嘉鑫 馬征兆 張葉舟 唐遠新 翟繼強
摘要:針對云計算中的大多數實時取證工具可能會被受感染的操作系統(OS)欺騙造成取證信息不可靠,或傳統的通用虛擬機監視器由于代碼量巨大而容易受到攻擊的問題,提出了一種專用的虛擬機監視器程序ForenMoni。通過利用輕量級體系結構來減小可信計算基(TCB)的大小,直接從硬件收集證據,使用Filesafe模塊保護證據和其他敏感文件,并在Windows平臺上實現了概念驗證原型。實驗結果表明,ForenMoni的TCB大小相對較小,約為13 KLOC,并且只會導致目標系統的性能下降不到10%,即使客戶機OS受到Worm.WhBoy等病毒的入侵,ForenMoni仍可以保證受保護文件不受干擾,提高了可靠性。
關鍵詞:云取證;可信計算基;虛擬機監視器
中圖分類號:TP316文獻標志碼:A文章編號:1008-1739(2020)23-61-4

0引言
云計算已被廣泛用來提供計算服務,云計算環境中采用了一些復雜的技術,例如虛擬化技術[1]。數字取證用于收集、分析和復現網絡犯罪的證據,當前基于虛擬化技術的數字取證面臨一些新的挑戰[2]。大多數虛擬機監視器(例如Xen和VMware)的源代碼量非常龐大,從而可能導致各種代碼漏洞。同時,對于大多數虛擬機監視器而言,設置虛擬化環境需要重新啟動甚至重新安裝目標系統,不可避免地破壞了易失性證據,與實時分析的目的相矛盾。
為了解決安全問題,本文提出了一種輕量級的虛擬機監視器ForenMoni,減小了TCB的大小,增加了實時數據采集和存儲的可靠性。同時ForenMoni作為驅動程序加載,而無需重新啟動目標OS,只會對內存布局造成很小的影響。
1系統設計
1.1設計原理
ForenMoni的設計考慮虛擬機監視器的安全性、證據獲取的可靠性以及證據文件的安全性。從3個方面提高可靠性:①采用這種輕量級的虛擬機監視器架構來減少代碼大小并保護取證過程不被篡改;②ForenMoni直接從硬件收集完整的系統狀態,包括過程數據、原始內存和I/O數據,而無需依賴設備驅動程序;③ForenMoni將易失性數據存儲在磁盤上,并使用Filesafe模塊保護它們。Filesafe模塊還可以為取證分析所必需的客戶OS中的敏感文件(例如日志)提供保護。
由于ForenMoni是作為系統驅動程序加載的,因此有2種方法可以獲取實時數據:調用OS接口以及直接從硬件獲取數據。前者更易于實現,并且與目標OS沒有語義上的差距。但是,因為目標OS可能會受到Rootkit的破壞,收集的數據可能會被惡意軟件偽造或篡改。因此ForenMoni采用后一種方法來收集證據,同時在ForenMoni中采用有關虛擬機自省(VMI)來彌合語義鴻溝[3]。
文件保護機制可確保證據保存的可靠性,ForenMoni將證據文件存儲在本地磁盤中,并通過訪問控制策略對其進行保護。該策略位于塊級別,控制對磁盤的任何操作。
1.2輕量級虛擬機監視器架構
用于可靠取證的輕量級虛擬機監視器架構如圖1所示,在此體系結構中,取證系統特權級別高于OS內核。由于特權模式不同,應用程序和OS不知道該虛擬機監視器的存在。取證系統由虛擬機控制結構記錄器(VMCS Recorder)、內存轉儲器(Memory Dumper)、鍵盤記錄器(Key logger)、網絡接口卡攔截器(NIC Interceptor)和File Safe五個模塊組成。前4個模塊分別用于記錄CPU狀態、內存內容、按鍵和網絡數據包,File Safe模塊保護收集的數據。

虛擬機監視器是基于硬件輔助虛擬化技術設計的,消除了用于硬件仿真的大量代碼,設計基于Intel VT-x技術,可以輕松移植到AMD平臺。其次,采用在體系結構中僅攔截感興趣的操作,以最大程度地減少I/O攔截器的代碼大小。
2系統實現
2.1虛擬化方法
在系統收集實時數據之前,預先構建一個虛擬機環境。將本機OS轉換為虛擬機可能需要重新引導甚至重新安裝,因此不可避免地會丟失實時系統數據。為了避免破壞實時證據,使用后期虛擬化技術動態地建立了取證系統管理程序。后期虛擬化技術意味著在不干擾正在運行的目標OS的執行的情況下,在本機OS和硬件之間動態插入管理程序層。后期虛擬化技術需要硬件輔助虛擬化技術的支持,系統在英特爾平臺VT-x上實現[4]。為了實現虛擬化,除了傳統的4層保護環之外,CPU模式還引入了另一個特權級別,新級別稱為VMX根模式,是為管理程序建立的。客戶機OS在由原始4個環組成的VMX非根模式下運行。在新的保護模型中,提供了新的結構VMCS,以保存主機OS和客戶機OS的CPU狀態并控制應進行模式切換的條件。
啟動過程包括:
①啟用CPU的VMX根模式;
②初始化VMCS結構以注冊虛擬機監視器關心的敏感事件以及虛擬機監視器中相應事件的處理程序;
③配置VMCS之后,目標OS已變成包裝在虛擬機監視器中的客戶機OS,當客戶機OS執行一些特權指令時,將引發對監視系統的陷阱,然后可以執行取證過程;
④虛擬機監視器錄好了足夠的信息后,一個VMENTRY執行指令以繼續客戶機OS的運行。
但引發的一個潛在漏洞是啟動過程可能會受到內核模式Rootkit的破壞,因為它是在ring0模式而不是VMX root模式下執行的[5]。為避免這種情況,應將虛擬機監視器的映像放置在只讀介質中,并由受信任的平臺模塊(TPM)檢查其完整性。
2.2 Filesafe API
記錄器VMCS、存儲器、鍵盤記錄器和NIC攔截器得到其所需的數據,都依賴File Safe模塊來編寫和保護證據數據。抽象了File Safe模塊的功能為其他模塊提供一組API。主要API如下:
①AllocProtect分配受保護的文件,客戶機OS不會檢測到該文件,新文件塊的相應控制策略將立即添加到策略列表中,該文件將被設置為讀控制和寫控制;
②SetPolicy設置文件的控制策略,參數指示要進行讀控制或寫控制的訪問策略;
③DelProtect刪除受保護的文件,并且相關的塊級策略也將同時被刪除;
④Read讀取受保護文件的內容,如果該文件是讀控制的,則對該接口以外的文件的任何讀操作都將被拒絕;
⑤Write會將一些內容寫入受保護的文件,如果未通過此接口執行對寫控制文件的任何寫操作,將拒絕該操作,將新塊附加到文件后,將同時添加到策略列表。
3系統測試
測試環境為Core i5-650 3.2 GHz、4 GB DDR3 RAM、Intel 82578DM千兆以太網NIC和250 GB Seagate SATA2磁盤的Intel機器,主機OS為Windows 7 SP2,安裝虛擬機監視器作為客戶機OS。
3.1 TCB大小
ForenMoni消除了內存取證不必要的一些通用組件,總代碼大小約為13 336源代碼行(SLOC),表1中列出了ForenMoni的每個組件的代碼大小。

圖2中比較了一些流行的當代虛擬環境的TCB大小,可以看到ForenMoni的TCB大小遠遠小于Xen和KVM等通用虛擬機監視器。與另一個專用虛擬機監視器Bitvisor[6]相比,ForenMoni的TCB大小仍然要小得多。但ForenMoni的TCB大小比TrustVisor的大,是因為TrustVisor僅致力于代碼完整性以及數據完整性,因此沒有用于收集數據的組件。HyperSleuth是另一個具有與ForenMoni類似功能的專用虛擬機監視器,由于HyperSleuth不是開源訪問的,不顯示HyperSleuth的TCB大小。

3.2功能評估
(1)數據收集
測試系統啟動后,將ForenMoni加載為系統驅動程序,其生成4個文件,分別為proc,mem,key,net。proc包括許多CPU寄存器在內的進程數據,可以從這些數據中輕松提取一些初步信息,例如進程數和進程的頁表;mem文件轉儲原始內存,位于原始結構中,具有與物理內存相同的大小;key文件攔截I/O操作,存儲的敲擊的鍵的掃描碼;net文件存儲鏈路層數據包。
(2)文件安全模塊
ForenMoni可以保護目標系統上的文件免遭各種蠕蟲(例如Worm.WhBoy)破壞。Worm.WhBoy用Delphi編寫,該病毒刪除擴展名為.gho的文件,以使用戶無法使用鏡像恢復其OS,也可將有問題的URL添加到html文件,會對用戶的敏感文件和OS造成極大的損害。
在實驗中,測試文件a.jpg,b.mp3,a1.gho,b1.exe,c1. html受File Safe保護。實驗表明,即使OS受到威脅,File Safe仍可確保提供強大的保護。
ForenMoni與其他虛擬機監視器之間的功能比較如表2所示,包括專用的監視器(例如HyperSleuth)和通用監視器(例如Xen和KVM)。比較的功能包括虛擬機監視器可以收集哪些數據以及是否可以動態加載它們。HyperSleuth僅收集有限的數據而沒有捕獲關鍵的網絡流量,并且不為客戶機OS中的文件提供保護。通用虛擬機監視器Xen和KVM可以收集與ForenMoni一樣多的信息,但是它們也不能保護客戶機OS中的文件,此外,它們不能被動態加載,從而限制了可用性。

3.3性能開銷
測試Apache http服務器的性能,在速度為100 Mbps的LAN環境中,http_load用于生成不同并發級別的工作負載,范圍是10~250。如圖3所示,ForenMoni不會對吞吐量和延遲造成明顯的開銷。原因是ForenMoni的開銷非常小,以致于網絡速度的變化隱藏了該開銷。因此,ForenMoni在不降低用戶體驗的情況下在實際應用中很實用。

4結束語
本文提出了一個輕量級的虛擬機監視器,專門用于獲取和保存數據以進行可靠的現場取證。通過3種方式提高了可靠性,利用硬件輔助的虛擬化技術,消除了未使用的設備驅動程序,以減小TCB的大小,從而降低了虛擬機監視器的漏洞,并在Windows平臺上實現了概念驗證原型系統。實驗結果表明,系統具有較小的代碼量、適度的系統開銷和穩定的性能,即使客戶機OS受到諸如Worm.WhBoy之類的病毒的攻擊,ForenMoni仍可以對指定的文件提供強大保護。
參考文獻
[1]劉雪花,丁麗萍,劉文懋,等.一種基于軟件定義安全和云取證趨勢分析的云取證方法[J].計算機研究與發展,2019,56(10):2262-2276.
[2]張瑜,劉慶中,李濤,等.內存取證研究與進展[J].軟件學報, 2015,26(5):1151-1172.
[3]張健,高鋮,宮良一,等.虛擬機自省技術研究[J].信息網絡安全,2017(9):63-68.
[4]盧建平,郭玉東,王曉睿,等.基于協作型VMM的虛擬機執行環境動態配置模型[J].計算機應用,2012,32(3):831-834.
[5]鄧良,曾慶凱.引入內可信基的應用程序保護方法[J].軟件學報,2016,27(4):1042-1058.
[6]趙明.基于輕量級虛擬機監控器的安全計算環境[D].成都電子科技大學,2020.