引言
通過(guò)監(jiān)控文件系統(tǒng)操作能夠有效地幫助系統(tǒng)管理員及時(shí)發(fā)現(xiàn)入侵痕跡,保護(hù)系統(tǒng)安全。然而,當(dāng)攻擊者入侵成功并獲取足夠的權(quán)限后,就能夠破壞計(jì)算機(jī)系統(tǒng),關(guān)閉系統(tǒng)中的文件監(jiān)控程序,隱藏文件并清除日志以掩蓋入侵蹤跡,或者安裝后門(mén)程序以便再次入侵。因此,如果能夠保護(hù)好文件系統(tǒng)的操作日志,就能夠檢測(cè)出系統(tǒng)異常,快速找出隱藏文件,恢復(fù)系統(tǒng)。目前大部分的文件監(jiān)控系統(tǒng)和文件保護(hù)系統(tǒng)與操作系統(tǒng)運(yùn)行在同一特權(quán)級(jí),如果操作系統(tǒng)被入侵,任何運(yùn)行在該系統(tǒng)上的文件保護(hù)機(jī)制都有可能被繞過(guò)或關(guān)閉,因此,只有保證文件監(jiān)控系統(tǒng)不被禁用和繞過(guò),才能夠持續(xù)保護(hù)文件系統(tǒng)的安全。
隨著虛擬機(jī)技術(shù)的發(fā)展,利用虛擬機(jī)進(jìn)行檢測(cè)入侵和系統(tǒng)保護(hù)的工作得到了廣泛關(guān)注,由于虛擬機(jī)監(jiān)視器(Virtual Machine Monitor,VMM)相對(duì)于運(yùn)行其上的客戶虛擬機(jī)(virtual Machine,VM)具有更高的特權(quán)級(jí),VMM和VM之間能夠進(jìn)行有效的安全隔離,因此利用虛擬機(jī)技術(shù)能夠?qū)M中的文件系統(tǒng)進(jìn)行更加可靠的監(jiān)控。
一 虛擬化技術(shù)與Xen
硬件虛擬化主要有Intel的VT-x和AMD的AMD-V兩種技術(shù),都是通過(guò)引入新的指令和處理器運(yùn)行模式,讓VMM和Guest OS分別運(yùn)行在合適的模式下。該系統(tǒng)基于vT-X技術(shù)。vT-X引入了兩種新的運(yùn)行模式:VMX root模式和VMX non-root模式,如圖1所示。VMM運(yùn)行在VMX root模式,Guest OS運(yùn)行在VMX non-root模式。運(yùn)行在VMX root模式下的VMM 顯式調(diào)用VMLAUNCH或VMRESUME指令切換到VMX non-root模式,這種轉(zhuǎn)換稱(chēng)為VM entry。Guest OS運(yùn)行過(guò)程中遇到需要VMM處理的特殊事件,或者主動(dòng)調(diào)用VMCALL指令調(diào)用VMM的服務(wù),則切換到VMX root模式,這種轉(zhuǎn)換稱(chēng)為VM exit。
在該系統(tǒng)中,當(dāng)Guest OS運(yùn)行一些底層系統(tǒng)調(diào)用或者產(chǎn)生異常時(shí)將會(huì)產(chǎn)生VM exit進(jìn)入到VMX root操作模式,在VM-Exit陷入時(shí)實(shí)現(xiàn)對(duì)系統(tǒng)調(diào)用的截獲。
Xen是由劍橋大學(xué)計(jì)算機(jī)實(shí)驗(yàn)室開(kāi)發(fā)的一個(gè)開(kāi)源的虛擬機(jī)軟件。Xen存在一個(gè)特權(quán)域用來(lái)輔助Xen管理其他Domain,提供相應(yīng)的虛擬資源服務(wù),這個(gè)特權(quán)域稱(chēng)為Domain0,其他域則稱(chēng)為DomainU。Xen同時(shí)支持半虛擬化(PV)和全虛擬化(HVM)。前者需要對(duì)客戶操作系統(tǒng)進(jìn)行修改;后者不需要修改客戶操作系統(tǒng),但需要CPU的硬件虛擬化支持。該系統(tǒng)利用XEN針對(duì)全虛擬(HVM)下的Guest OS進(jìn)行監(jiān)控,能對(duì)多個(gè)操作系統(tǒng)同時(shí)進(jìn)行監(jiān)控。
二 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
2.1 系統(tǒng)架構(gòu)
系統(tǒng)結(jié)構(gòu)如圖2所示,主要由Xen監(jiān)測(cè)部分、DomO文件分析、日志記錄和報(bào)警模塊組成。
Xen監(jiān)測(cè)模塊位于Xen Hypervisor中,主要功能是完成相關(guān)系統(tǒng)調(diào)用的截獲以及文件操作信息的提取,通過(guò)對(duì)Xen內(nèi)核進(jìn)行改動(dòng)來(lái)實(shí)現(xiàn)。截獲了客戶端的系統(tǒng)調(diào)用以后,提取出需要監(jiān)控的有用信息,包括系統(tǒng)調(diào)用號(hào)及其參數(shù)、進(jìn)程信息、操作文件名稱(chēng)及相關(guān)內(nèi)存信息。
文件分析模塊位于Dom0中,首先根據(jù)配置策略選擇要監(jiān)控的文件以及目錄,利用Xen提供的事件通道機(jī)制從VMM中獲取文件操作信息;分析當(dāng)前操作是否對(duì)監(jiān)控文件的敏感操作,是則將當(dāng)前操作寫(xiě)入日志記錄模塊,同時(shí)產(chǎn)生報(bào)警輸出,否則將當(dāng)前操作寫(xiě)入日志記錄模塊,便于事后離線分析。
日志記錄和報(bào)警模塊分別完成日志記錄和報(bào)警輸出功能。
2.2 設(shè)計(jì)實(shí)現(xiàn)
2.2.1 截獲系統(tǒng)調(diào)用
Linux的系統(tǒng)調(diào)用通過(guò)兩種方式來(lái)實(shí)現(xiàn):使用int Ox80中斷方式和快速系統(tǒng)調(diào)用sysenter/sysexit方式。
1)int Ox80中斷方式
通過(guò)對(duì)中斷向量表上的Ox80中斷向量地址修改,使其陷入到VMM中來(lái)截獲系統(tǒng)調(diào)用。首先通過(guò)VMM獲取客戶機(jī)的IDT(中斷向量表)地址,由IDT找到Ox80中斷的地址,并對(duì)Xen的影子頁(yè)表進(jìn)行改動(dòng),將其地址設(shè)置為NO_PRESENT。當(dāng)系統(tǒng)產(chǎn)生int 0x80中斷就會(huì)觸發(fā)VM exit進(jìn)入Xen內(nèi)核中相應(yīng)的缺頁(yè)處理函數(shù),在其中添加處理代碼,判斷是否由0x80中斷產(chǎn)生,從而實(shí)現(xiàn)對(duì)系統(tǒng)調(diào)用的截獲。
2)快速系統(tǒng)調(diào)用方式
執(zhí)行快速系統(tǒng)調(diào)用指令SYSENTER/SYSEXIT讀取相關(guān)MSR寄存器值(SYSENTER_CS_MSR,SYSENTER_ESP_MSB,SYSENTER-EIP-MSR),通過(guò)修改SYSENTER-EIP-MSR寄存器值進(jìn)行快速系統(tǒng)調(diào)用的截獲。在Xen中記錄實(shí)際MSR寄存器的值并修改SYSENTER-EIP-MSR,將其指向一個(gè)不可訪問(wèn)的地址,當(dāng)系統(tǒng)調(diào)用發(fā)生時(shí),會(huì)由于錯(cuò)誤的MSR寄存器地址導(dǎo)致VM exit,就可以截獲系統(tǒng)調(diào)用進(jìn)行相關(guān)處理。
2.2.2 提取文件操作信息
系統(tǒng)監(jiān)控信息包括當(dāng)前運(yùn)行的DomainU、進(jìn)行文件操作的進(jìn)程相關(guān)信息、文件操作類(lèi)型以及其他重要信息(如寄存器或緩沖區(qū)內(nèi)容)。
當(dāng)前運(yùn)行的DomainU直接從Xen上下文中獲取,并利用寄存器和內(nèi)核堆棧信息提取出產(chǎn)生當(dāng)前系統(tǒng)調(diào)用的進(jìn)程信息。
文件操作通過(guò)系統(tǒng)調(diào)用號(hào)判斷,截獲了系統(tǒng)調(diào)用以后,提取出關(guān)心的系統(tǒng)調(diào)用號(hào)以及系統(tǒng)調(diào)用參數(shù)。Linux系統(tǒng)中,系統(tǒng)調(diào)用號(hào)存放在EAX寄存器中,寄存器EBX、ECX、EDX、ESI、EDI以及EBP保存的是對(duì)應(yīng)的參數(shù)。
由于要對(duì)文件系統(tǒng)進(jìn)行監(jiān)測(cè), 因此,關(guān)注的主要是sys_open、sys_create、sys_read、sys_write、sys_unlink等與文件系統(tǒng)相關(guān)的系統(tǒng)調(diào)用號(hào)及其參數(shù)。
系統(tǒng)調(diào)用參數(shù)以及參數(shù)所引用的內(nèi)存信息對(duì)文件監(jiān)控很重要,通過(guò)參數(shù)地址或相關(guān)數(shù)據(jù)結(jié)構(gòu)獲取。以獲取文件名稱(chēng)為例,Linux系統(tǒng)中,與文件操作相關(guān)的系統(tǒng)調(diào)用大都通過(guò)文件描述符表示一個(gè)文件,假設(shè)當(dāng)前打開(kāi)文件描述符為k,利用內(nèi)核數(shù)據(jù)結(jié)構(gòu),可以從當(dāng)前進(jìn)程中通過(guò)current-files-fd[k]-f_dentry-d_name獲取到文件名。
2.2.3 DomO文件分析
當(dāng)提取文件操作信息結(jié)束后,需要將數(shù)據(jù)提交給位于Dom0域的文件分析模塊進(jìn)行分析。為了減少性能損失,文件分析模塊僅對(duì)系統(tǒng)中的敏感文件或目錄進(jìn)行監(jiān)控。
Dom0文件分析模塊同時(shí)對(duì)監(jiān)控文件或目錄進(jìn)行不同的輸出處理,將敏感操作輸出到報(bào)警模塊,其他操作則輸出到日志文件中保存。例如對(duì)系統(tǒng)配置文件的寫(xiě)操作,對(duì)系統(tǒng)日志文件的刪除操作定義為敏感操作。
三 功能測(cè)試
系統(tǒng)基于Xen 3.3.0和Linux 2.6.18(Guest OS)實(shí)現(xiàn),硬件平臺(tái)采用Intel Core2 2.4 GHZ CPU,內(nèi)存為2 G RAM。表1是對(duì)Linux下的系統(tǒng)日志目錄/vat/log/的監(jiān)控結(jié)果。
入侵者在侵入系統(tǒng)后通常會(huì)修改或刪除相應(yīng)的系統(tǒng)日志文件隱藏入侵痕跡,利用該系統(tǒng)能夠?qū)⑽募到y(tǒng)操作記錄到另外的不受攻擊者控制的機(jī)器上,能夠及時(shí)發(fā)現(xiàn)潛在的風(fēng)險(xiǎn)。同時(shí)為了評(píng)估系統(tǒng)檢測(cè)惡意代碼和隱藏文件的能力,針對(duì)目前比較流行的Linux內(nèi)核rootkit進(jìn)行測(cè)試,測(cè)試結(jié)果如表2所示。
Linux下rootkit的安裝過(guò)程中通常會(huì)對(duì)系統(tǒng)文件進(jìn)行替換或修改,為了保持隱蔽性,還會(huì)有隱藏文件、進(jìn)程、端口等行為, 內(nèi)核級(jí)rootkit能夠繞過(guò)用戶級(jí)和內(nèi)核級(jí)的文件檢測(cè)工具。該系統(tǒng)中,文件系統(tǒng)監(jiān)控的目錄文件只要有操作,就能實(shí)時(shí)記錄或報(bào)警,通過(guò)交叉對(duì)比,能夠快速發(fā)現(xiàn)攻擊痕跡。
四 結(jié)語(yǔ)
文中基于虛擬機(jī)架構(gòu),利用硬件虛擬化技術(shù),提出了在VMM中監(jiān)控Guest OS文件系統(tǒng),能夠?qū)崟r(shí)監(jiān)測(cè)文件系統(tǒng),發(fā)現(xiàn)文件系統(tǒng)中的隱藏文件和敏感操作,進(jìn)而檢測(cè)出系統(tǒng)中可能存在的安全風(fēng)險(xiǎn)。相對(duì)于現(xiàn)有的文件系統(tǒng)監(jiān)控,利用虛擬機(jī)技術(shù)能夠?qū)崿F(xiàn)更加可靠透明的監(jiān)控。系統(tǒng)實(shí)現(xiàn)基于全虛擬化技術(shù),監(jiān)控對(duì)象同樣適用于Windows等操作系統(tǒng)。該架構(gòu)只能對(duì)文件系統(tǒng)行為進(jìn)行監(jiān)控,并不能阻止對(duì)于計(jì)算機(jī)系統(tǒng)的攻擊行為。研究如何在虛擬機(jī)架構(gòu)下阻止對(duì)敏感文件的修改將是下一步的工作方向。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:基于虛擬機(jī)架構(gòu)的文件系統(tǒng)監(jiān)控
本文網(wǎng)址:http://www.ezxoed.cn/html/support/1112155213.html