李嘉鑫 馬征兆 張葉舟 唐遠新 翟繼強
摘要:針對云計算中的大多數(shù)實時取證工具可能會被受感染的操作系統(tǒng)(OS)欺騙造成取證信息不可靠,或傳統(tǒng)的通用虛擬機監(jiān)視器由于代碼量巨大而容易受到攻擊的問題,提出了一種專用的虛擬機監(jiān)視器程序ForenMoni。通過利用輕量級體系結(jié)構(gòu)來減小可信計算基(TCB)的大小,直接從硬件收集證據(jù),使用Filesafe模塊保護證據(jù)和其他敏感文件,并在Windows平臺上實現(xiàn)了概念驗證原型。實驗結(jié)果表明,F(xiàn)orenMoni的TCB大小相對較小,約為13 KLOC,并且只會導(dǎo)致目標(biāo)系統(tǒng)的性能下降不到10%,即使客戶機OS受到Worm.WhBoy等病毒的入侵,F(xiàn)orenMoni仍可以保證受保護文件不受干擾,提高了可靠性。
關(guān)鍵詞:云取證;可信計算基;虛擬機監(jiān)視器
中圖分類號:TP316文獻標(biāo)志碼:A文章編號:1008-1739(2020)23-61-4
0引言
云計算已被廣泛用來提供計算服務(wù),云計算環(huán)境中采用了一些復(fù)雜的技術(shù),例如虛擬化技術(shù)[1]。數(shù)字取證用于收集、分析和復(fù)現(xiàn)網(wǎng)絡(luò)犯罪的證據(jù),當(dāng)前基于虛擬化技術(shù)的數(shù)字取證面臨一些新的挑戰(zhàn)[2]。大多數(shù)虛擬機監(jiān)視器(例如Xen和VMware)的源代碼量非常龐大,從而可能導(dǎo)致各種代碼漏洞。同時,對于大多數(shù)虛擬機監(jiān)視器而言,設(shè)置虛擬化環(huán)境需要重新啟動甚至重新安裝目標(biāo)系統(tǒng),不可避免地破壞了易失性證據(jù),與實時分析的目的相矛盾。
為了解決安全問題,本文提出了一種輕量級的虛擬機監(jiān)視器ForenMoni,減小了TCB的大小,增加了實時數(shù)據(jù)采集和存儲的可靠性。同時ForenMoni作為驅(qū)動程序加載,而無需重新啟動目標(biāo)OS,只會對內(nèi)存布局造成很小的影響。
1系統(tǒng)設(shè)計
1.1設(shè)計原理
ForenMoni的設(shè)計考慮虛擬機監(jiān)視器的安全性、證據(jù)獲取的可靠性以及證據(jù)文件的安全性。從3個方面提高可靠性:①采用這種輕量級的虛擬機監(jiān)視器架構(gòu)來減少代碼大小并保護取證過程不被篡改;②ForenMoni直接從硬件收集完整的系統(tǒng)狀態(tài),包括過程數(shù)據(jù)、原始內(nèi)存和I/O數(shù)據(jù),而無需依賴設(shè)備驅(qū)動程序;③ForenMoni將易失性數(shù)據(jù)存儲在磁盤上,并使用Filesafe模塊保護它們。Filesafe模塊還可以為取證分析所必需的客戶OS中的敏感文件(例如日志)提供保護。
由于ForenMoni是作為系統(tǒng)驅(qū)動程序加載的,因此有2種方法可以獲取實時數(shù)據(jù):調(diào)用OS接口以及直接從硬件獲取數(shù)據(jù)。前者更易于實現(xiàn),并且與目標(biāo)OS沒有語義上的差距。但是,因為目標(biāo)OS可能會受到Rootkit的破壞,收集的數(shù)據(jù)可能會被惡意軟件偽造或篡改。因此ForenMoni采用后一種方法來收集證據(jù),同時在ForenMoni中采用有關(guān)虛擬機自?。╒MI)來彌合語義鴻溝[3]。
文件保護機制可確保證據(jù)保存的可靠性,F(xiàn)orenMoni將證據(jù)文件存儲在本地磁盤中,并通過訪問控制策略對其進行保護。該策略位于塊級別,控制對磁盤的任何操作。
1.2輕量級虛擬機監(jiān)視器架構(gòu)
用于可靠取證的輕量級虛擬機監(jiān)視器架構(gòu)如圖1所示,在此體系結(jié)構(gòu)中,取證系統(tǒng)特權(quán)級別高于OS內(nèi)核。由于特權(quán)模式不同,應(yīng)用程序和OS不知道該虛擬機監(jiān)視器的存在。取證系統(tǒng)由虛擬機控制結(jié)構(gòu)記錄器(VMCS Recorder)、內(nèi)存轉(zhuǎn)儲器(Memory Dumper)、鍵盤記錄器(Key logger)、網(wǎng)絡(luò)接口卡攔截器(NIC Interceptor)和File Safe五個模塊組成。前4個模塊分別用于記錄CPU狀態(tài)、內(nèi)存內(nèi)容、按鍵和網(wǎng)絡(luò)數(shù)據(jù)包,F(xiàn)ile Safe模塊保護收集的數(shù)據(jù)。
虛擬機監(jiān)視器是基于硬件輔助虛擬化技術(shù)設(shè)計的,消除了用于硬件仿真的大量代碼,設(shè)計基于Intel VT-x技術(shù),可以輕松移植到AMD平臺。其次,采用在體系結(jié)構(gòu)中僅攔截感興趣的操作,以最大程度地減少I/O攔截器的代碼大小。
2系統(tǒng)實現(xiàn)
2.1虛擬化方法
在系統(tǒng)收集實時數(shù)據(jù)之前,預(yù)先構(gòu)建一個虛擬機環(huán)境。將本機OS轉(zhuǎn)換為虛擬機可能需要重新引導(dǎo)甚至重新安裝,因此不可避免地會丟失實時系統(tǒng)數(shù)據(jù)。為了避免破壞實時證據(jù),使用后期虛擬化技術(shù)動態(tài)地建立了取證系統(tǒng)管理程序。后期虛擬化技術(shù)意味著在不干擾正在運行的目標(biāo)OS的執(zhí)行的情況下,在本機OS和硬件之間動態(tài)插入管理程序?qū)印:笃谔摂M化技術(shù)需要硬件輔助虛擬化技術(shù)的支持,系統(tǒng)在英特爾平臺VT-x上實現(xiàn)[4]。為了實現(xiàn)虛擬化,除了傳統(tǒng)的4層保護環(huán)之外,CPU模式還引入了另一個特權(quán)級別,新級別稱為VMX根模式,是為管理程序建立的??蛻魴COS在由原始4個環(huán)組成的VMX非根模式下運行。在新的保護模型中,提供了新的結(jié)構(gòu)VMCS,以保存主機OS和客戶機OS的CPU狀態(tài)并控制應(yīng)進行模式切換的條件。
啟動過程包括:
①啟用CPU的VMX根模式;
②初始化VMCS結(jié)構(gòu)以注冊虛擬機監(jiān)視器關(guān)心的敏感事件以及虛擬機監(jiān)視器中相應(yīng)事件的處理程序;
③配置VMCS之后,目標(biāo)OS已變成包裝在虛擬機監(jiān)視器中的客戶機OS,當(dāng)客戶機OS執(zhí)行一些特權(quán)指令時,將引發(fā)對監(jiān)視系統(tǒng)的陷阱,然后可以執(zhí)行取證過程;
④虛擬機監(jiān)視器錄好了足夠的信息后,一個VMENTRY執(zhí)行指令以繼續(xù)客戶機OS的運行。
但引發(fā)的一個潛在漏洞是啟動過程可能會受到內(nèi)核模式Rootkit的破壞,因為它是在ring0模式而不是VMX root模式下執(zhí)行的[5]。為避免這種情況,應(yīng)將虛擬機監(jiān)視器的映像放置在只讀介質(zhì)中,并由受信任的平臺模塊(TPM)檢查其完整性。
2.2 Filesafe API
記錄器VMCS、存儲器、鍵盤記錄器和NIC攔截器得到其所需的數(shù)據(jù),都依賴File Safe模塊來編寫和保護證據(jù)數(shù)據(jù)。抽象了File Safe模塊的功能為其他模塊提供一組API。主要API如下:
①AllocProtect分配受保護的文件,客戶機OS不會檢測到該文件,新文件塊的相應(yīng)控制策略將立即添加到策略列表中,該文件將被設(shè)置為讀控制和寫控制;
②SetPolicy設(shè)置文件的控制策略,參數(shù)指示要進行讀控制或?qū)懣刂频脑L問策略;
③DelProtect刪除受保護的文件,并且相關(guān)的塊級策略也將同時被刪除;
④Read讀取受保護文件的內(nèi)容,如果該文件是讀控制的,則對該接口以外的文件的任何讀操作都將被拒絕;
⑤Write會將一些內(nèi)容寫入受保護的文件,如果未通過此接口執(zhí)行對寫控制文件的任何寫操作,將拒絕該操作,將新塊附加到文件后,將同時添加到策略列表。
3系統(tǒng)測試
測試環(huán)境為Core i5-650 3.2 GHz、4 GB DDR3 RAM、Intel 82578DM千兆以太網(wǎng)NIC和250 GB Seagate SATA2磁盤的Intel機器,主機OS為Windows 7 SP2,安裝虛擬機監(jiān)視器作為客戶機OS。
3.1 TCB大小
ForenMoni消除了內(nèi)存取證不必要的一些通用組件,總代碼大小約為13 336源代碼行(SLOC),表1中列出了ForenMoni的每個組件的代碼大小。
圖2中比較了一些流行的當(dāng)代虛擬環(huán)境的TCB大小,可以看到ForenMoni的TCB大小遠遠小于Xen和KVM等通用虛擬機監(jiān)視器。與另一個專用虛擬機監(jiān)視器Bitvisor[6]相比,F(xiàn)orenMoni的TCB大小仍然要小得多。但ForenMoni的TCB大小比TrustVisor的大,是因為TrustVisor僅致力于代碼完整性以及數(shù)據(jù)完整性,因此沒有用于收集數(shù)據(jù)的組件。HyperSleuth是另一個具有與ForenMoni類似功能的專用虛擬機監(jiān)視器,由于HyperSleuth不是開源訪問的,不顯示HyperSleuth的TCB大小。
3.2功能評估
(1)數(shù)據(jù)收集
測試系統(tǒng)啟動后,將ForenMoni加載為系統(tǒng)驅(qū)動程序,其生成4個文件,分別為proc,mem,key,net。proc包括許多CPU寄存器在內(nèi)的進程數(shù)據(jù),可以從這些數(shù)據(jù)中輕松提取一些初步信息,例如進程數(shù)和進程的頁表;mem文件轉(zhuǎn)儲原始內(nèi)存,位于原始結(jié)構(gòu)中,具有與物理內(nèi)存相同的大?。籯ey文件攔截I/O操作,存儲的敲擊的鍵的掃描碼;net文件存儲鏈路層數(shù)據(jù)包。
(2)文件安全模塊
ForenMoni可以保護目標(biāo)系統(tǒng)上的文件免遭各種蠕蟲(例如Worm.WhBoy)破壞。Worm.WhBoy用Delphi編寫,該病毒刪除擴展名為.gho的文件,以使用戶無法使用鏡像恢復(fù)其OS,也可將有問題的URL添加到html文件,會對用戶的敏感文件和OS造成極大的損害。
在實驗中,測試文件a.jpg,b.mp3,a1.gho,b1.exe,c1. html受File Safe保護。實驗表明,即使OS受到威脅,F(xiàn)ile Safe仍可確保提供強大的保護。
ForenMoni與其他虛擬機監(jiān)視器之間的功能比較如表2所示,包括專用的監(jiān)視器(例如HyperSleuth)和通用監(jiān)視器(例如Xen和KVM)。比較的功能包括虛擬機監(jiān)視器可以收集哪些數(shù)據(jù)以及是否可以動態(tài)加載它們。HyperSleuth僅收集有限的數(shù)據(jù)而沒有捕獲關(guān)鍵的網(wǎng)絡(luò)流量,并且不為客戶機OS中的文件提供保護。通用虛擬機監(jiān)視器Xen和KVM可以收集與ForenMoni一樣多的信息,但是它們也不能保護客戶機OS中的文件,此外,它們不能被動態(tài)加載,從而限制了可用性。
3.3性能開銷
測試Apache http服務(wù)器的性能,在速度為100 Mbps的LAN環(huán)境中,http_load用于生成不同并發(fā)級別的工作負載,范圍是10~250。如圖3所示,F(xiàn)orenMoni不會對吞吐量和延遲造成明顯的開銷。原因是ForenMoni的開銷非常小,以致于網(wǎng)絡(luò)速度的變化隱藏了該開銷。因此,F(xiàn)orenMoni在不降低用戶體驗的情況下在實際應(yīng)用中很實用。
4結(jié)束語
本文提出了一個輕量級的虛擬機監(jiān)視器,專門用于獲取和保存數(shù)據(jù)以進行可靠的現(xiàn)場取證。通過3種方式提高了可靠性,利用硬件輔助的虛擬化技術(shù),消除了未使用的設(shè)備驅(qū)動程序,以減小TCB的大小,從而降低了虛擬機監(jiān)視器的漏洞,并在Windows平臺上實現(xiàn)了概念驗證原型系統(tǒng)。實驗結(jié)果表明,系統(tǒng)具有較小的代碼量、適度的系統(tǒng)開銷和穩(wěn)定的性能,即使客戶機OS受到諸如Worm.WhBoy之類的病毒的攻擊,F(xiàn)orenMoni仍可以對指定的文件提供強大保護。
參考文獻
[1]劉雪花,丁麗萍,劉文懋,等.一種基于軟件定義安全和云取證趨勢分析的云取證方法[J].計算機研究與發(fā)展,2019,56(10):2262-2276.
[2]張瑜,劉慶中,李濤,等.內(nèi)存取證研究與進展[J].軟件學(xué)報, 2015,26(5):1151-1172.
[3]張健,高鋮,宮良一,等.虛擬機自省技術(shù)研究[J].信息網(wǎng)絡(luò)安全,2017(9):63-68.
[4]盧建平,郭玉東,王曉睿,等.基于協(xié)作型VMM的虛擬機執(zhí)行環(huán)境動態(tài)配置模型[J].計算機應(yīng)用,2012,32(3):831-834.
[5]鄧良,曾慶凱.引入內(nèi)可信基的應(yīng)用程序保護方法[J].軟件學(xué)報,2016,27(4):1042-1058.
[6]趙明.基于輕量級虛擬機監(jiān)控器的安全計算環(huán)境[D].成都電子科技大學(xué),2020.