高超 鄭小妹 賈曉啟
摘要:近年來,惡意軟件對物理機和云平臺上虛擬機均構(gòu)成巨大的安全威脅。在基礎(chǔ)設(shè)施即服務(wù)(IaaS)云平臺上部署傳統(tǒng)的殺毒軟件、防火墻等惡意軟件檢測工具存在以下問題:1)檢測工具可能被破壞或者關(guān)閉;2)單一的檢測工具效果不理想;3)檢測工具可能被加殼等方式繞過;4)需要給每臺客戶機安裝額外軟件,難以部署實施。為此提出一種面向云平臺的多樣化惡意軟件檢測架構(gòu)。該架構(gòu)利用虛擬化技術(shù)截獲客戶機的特定行為,抓取客戶機內(nèi)軟件釋放的代碼,通過多種殺毒軟件多樣化的掃描確定軟件的惡意性。采用的動態(tài)內(nèi)存提取的方式對客戶機完全透明。最后在Xen上部署該架構(gòu)并進(jìn)行惡意軟件檢測測試,該架構(gòu)對加殼惡意軟件的檢測率為85.7%,比殺毒軟件靜態(tài)掃描的檢測率高14.3個百分點。實驗結(jié)果表明,在云平臺上采用多樣化惡意軟件檢測框架能更好地保障客戶機的安全。
關(guān)鍵詞:
云平臺;惡意軟件檢測;虛擬化;多樣化;動態(tài)掃描
中圖分類號: TP309.5 文獻(xiàn)標(biāo)志碼:A
0引言
惡意軟件[1]是指帶有攻擊意圖所編寫的一段程序,用于破壞計算機操作、收集敏感信息或訪問專用計算機?,F(xiàn)有的惡意軟件檢測主要方法有2種[2]:一種方法是基于特征匹配。通過提取軟件二進(jìn)制文件特征或者動態(tài)的行為特征與惡意代碼庫的特征進(jìn)行比對來判斷是否是惡意軟件。另一種方法是基于異常檢測。通過發(fā)現(xiàn)軟件行為中與正常行為不符的方式來判定是惡意軟件?,F(xiàn)在,惡意軟件的檢測主要由操作系統(tǒng)上的殺毒軟件完成。在基礎(chǔ)設(shè)施即服務(wù)(Infrastructure as a Service, IaaS)云平臺客戶機中部署傳統(tǒng)殺毒軟件存在以下問題:1)殺毒軟件存在被關(guān)閉和破壞風(fēng)險。殺毒軟件處于客戶機內(nèi)部,惡意軟件通過技術(shù)手段檢測殺毒軟件的存在后進(jìn)行關(guān)閉和破壞操作。2)殺毒軟件的靜態(tài)掃描方式容易被加殼等手段繞過。3)單一殺毒軟件的檢測效果不理想。市面上主流殺毒軟件的檢測效果表現(xiàn)出較大差異。同一樣本在一部分殺毒軟件中報告安全,在另一部分中報告存在安全威脅。多種殺毒軟件同時進(jìn)行惡意軟件檢測表現(xiàn)出更好的效果,但是在同一臺客戶機中安裝多種殺毒軟件,除了普遍存在的兼容性問題,還會大量消耗客戶機資源,嚴(yán)重影響性能。4)IaaS云平臺的服務(wù)提供商需要在每個客戶機中預(yù)裝殺毒軟件,這種方式很難被接受并且不利于快速擴展。鑒于上述原因,在云平臺上客戶機外部統(tǒng)一部署惡意軟件的檢測模塊,提供客戶機多樣化的動態(tài)內(nèi)存掃描服務(wù)有重大意義,既很大程度上降低被關(guān)閉和破壞的風(fēng)險,增加了繞過的難度,還利用云平臺強大的計算能力、技術(shù)基礎(chǔ),又能減少在每個客戶機中部署殺毒軟件的資源消耗。
作為云平臺的基礎(chǔ)技術(shù),虛擬化技術(shù)[3]是通過在物理層和操作系統(tǒng)層之間加入中間層,即Hypervisor層。Hypervisor通過內(nèi)存管理、外設(shè)管理、中央處理器(Central Processing Unit, CPU)調(diào)度等模塊的重新設(shè)計完成內(nèi)存虛擬化、外設(shè)虛擬化和CPU虛擬化,在同一套硬件資源上虛擬出多套虛擬硬件資源。多個操作系統(tǒng)可以互不影響地在同一臺物理機上同時運行,復(fù)用物理資源。由于Hypervisor可以直接控制CPU、內(nèi)存等硬件,在云平臺上通過Hypervisor實現(xiàn)系統(tǒng)監(jiān)控、惡意軟件的檢測在學(xué)術(shù)界逐漸的發(fā)展。
針對惡意軟件檢測在云平臺上面臨的諸多問題,本文提出了一種面向云平臺的多樣化惡意軟件檢測架構(gòu)。該架構(gòu)采用修改影子頁表實現(xiàn)這一新方法,在對客戶機完全透明的情形下,利用虛擬化技術(shù)截獲客戶機的特定行為,抓取客戶機內(nèi)軟件釋放的代碼,最后綜合多種惡意軟件檢測工具的結(jié)果做出軟件是否惡意的判斷,實驗表明該架構(gòu)對加殼惡意軟件的檢測效果比殺毒軟件靜態(tài)掃描的檢測效果更好。
1相關(guān)研究
研究人員對利用虛擬化技術(shù)進(jìn)行監(jiān)控和惡意軟件檢測進(jìn)行了大量的研究,取得了一些這方面的成果。基于虛擬化技術(shù)的監(jiān)控技術(shù)按照監(jiān)控軟件的部署位置分為外部監(jiān)控和內(nèi)部監(jiān)控。內(nèi)部監(jiān)控軟件,與傳統(tǒng)的監(jiān)控軟件有些相似,與被監(jiān)控虛擬機位于同一個操作系統(tǒng)內(nèi)。外部監(jiān)控軟件位于被監(jiān)控系統(tǒng)外,借助Hypervisor獲得被監(jiān)控虛擬機的二進(jìn)制信息,通過技術(shù)手段恢復(fù)成操作系統(tǒng)的系統(tǒng)調(diào)用或者進(jìn)程創(chuàng)建等消息。這方面的監(jiān)控軟件很多,比如Panorama是Yin等[4]設(shè)計的基于QEMU(Quick Emulator)[5]的系統(tǒng)級別監(jiān)視系統(tǒng),用于分析惡意軟件的執(zhí)行流程和感染路徑。VAMPiRE[6]、Cobra[7]是已經(jīng)提出細(xì)粒度的監(jiān)控軟件框架:其中VAMPiRE是通過操作內(nèi)存的讀寫運行權(quán)限實現(xiàn)在系統(tǒng)的任何地方下斷點;Cobra采用將待監(jiān)控代碼分塊運行于低權(quán)限的環(huán)境中,通過修改內(nèi)存屬性等,完成對待監(jiān)控代碼的行為分析。外部監(jiān)控系統(tǒng)調(diào)用在VMwatcher(Virtual Machine watcher)[8]和TTAnalyze[9]中實現(xiàn)。VMwatcher支持多種虛擬化工具比如Xen[10]、KVM(Kernel Virtual Machine)[11]、VMware,它根據(jù)磁盤、內(nèi)存信息等重構(gòu)客戶機語義,進(jìn)而分析是否存在惡意軟件。TTAnalyze在QEMU模擬的環(huán)境中執(zhí)行惡意程序,并記錄惡意程序的系統(tǒng)調(diào)用和Windows應(yīng)用程序編程接口(Application Programming Interface, API)。這些安全軟件利用虛擬化技術(shù)的隔離性質(zhì),通過直接訪問被監(jiān)控虛擬機的內(nèi)存,重構(gòu)其內(nèi)核數(shù)據(jù)結(jié)構(gòu),確定虛擬機的狀態(tài)并采取相應(yīng)的措施。這些都屬于被動監(jiān)控的范疇,被動的監(jiān)控框架不適合于入侵防御系統(tǒng)(Intrusion Prevention System, IPS)等需要主動進(jìn)行安全防御的軟件。Lares[12]、SIM(Secure InVM)[13]屬于主動監(jiān)控框架,它們通過在內(nèi)核的適當(dāng)位置放置鉤子函數(shù)進(jìn)行監(jiān)控,Lares導(dǎo)致了大量的hypervisorguest切換開銷,不適合于細(xì)粒度的監(jiān)控,SIM通過Intel硬件虛擬化一些特殊技術(shù),消除了hypervisorguest切換開銷。HVSM(Hybrid Virtualization Security Monitor)[14]和RTKDSM(RealTime Kernel Data Structure Monitoring)[15]是最近提出的面向云平臺的虛擬機監(jiān)控框架。HVSM對虛擬機中所有進(jìn)程進(jìn)行hash校驗,通過比對hash校驗值判斷進(jìn)程是否被惡意軟件感染。RTKDSM基于啟發(fā)式的內(nèi)存分析工具實現(xiàn)對虛擬機內(nèi)存的分析,完成了支付數(shù)據(jù)流跟蹤、應(yīng)用程序白名單、進(jìn)程完整性校驗等一系列功能。
上述的各種框架,主要存在三方面的不足導(dǎo)致不能應(yīng)用于云平臺的惡意軟件檢測:1)以TTAnalyze為代表的架構(gòu)是基于QEMU虛擬機,不能直接應(yīng)用于當(dāng)前使用的KVM或Xen虛擬機的云平臺;2)以SIM為代表的內(nèi)部監(jiān)控框架,需要在客戶機內(nèi)安裝特定的功能模塊甚至修改客戶機內(nèi)核,本文認(rèn)為這種框架很難快速地部署在云平臺上,不具有通用性;3)HVSM和RTKDSM主要功能是保障虛擬機中進(jìn)程和數(shù)據(jù)的完整性,不能用于檢測虛擬機中惡意軟件。本文針對惡意軟件加殼等反檢測技術(shù),提出一種面向云平臺的多樣化惡意軟件檢測架構(gòu),在保持對客戶機透明的情況下,檢測客戶機中惡意軟件,并基于Xen虛擬化平臺實現(xiàn)原型系統(tǒng)。
2架構(gòu)設(shè)計
2.1威脅模型
近年來,惡意軟件的設(shè)計越來越復(fù)雜,隱藏水平愈加高級。IaaS云服務(wù)商提供客戶機惡意軟件掃描服務(wù)存在以下問題:1)殺毒軟件和惡意軟件運行環(huán)境缺少有效的隔離,存在被關(guān)閉和破壞的風(fēng)險。2)單一殺毒軟件的檢測效果與多種殺毒軟件聯(lián)合查殺效果相比存在較大差距。3)加殼惡意軟件可能繞過殺毒軟件檢測。這種惡意軟件,利用特殊的算法對代碼段、數(shù)據(jù)段等進(jìn)行加密壓縮,并添加入解密頭。其載入內(nèi)存時,解密頭動態(tài)的解密出惡意代碼,并將控制權(quán)交給惡意軟件。4)在客戶機內(nèi)安裝模塊,不便于迅速擴展也可能引入新的安全漏洞。客戶機內(nèi)安裝模塊可能不被云服務(wù)的消費者接受,安裝的模塊可能成為出現(xiàn)信息泄露等安全事件后被懷疑的對象。針對惡意軟件帶來的安全威脅和云平臺部署需求,本文提出一種面向云平臺的多樣化惡意軟件檢測架構(gòu)。該架構(gòu)部署在操作系統(tǒng)外部。在對客戶機透明的情況下,動態(tài)截獲客戶機中惡意軟件釋放惡意載荷過程,通過多種殺毒軟件的聯(lián)合查殺完成對云平臺上加殼惡意軟件檢測的目的。
2.2架構(gòu)設(shè)計
本文架構(gòu)中,將云平臺分為2部分:一部分是服務(wù)消費者控制的客戶機;另一部分是服務(wù)提供商控制的安全服務(wù)域和Hypervisor。如圖1,通過在Hypervisor中增加監(jiān)控模塊、安全模塊、數(shù)據(jù)中心,在安全服務(wù)域中增加服務(wù)線程,云服務(wù)商提供客戶機內(nèi)惡意軟件檢測服務(wù)。沒有更改客戶機的操作系統(tǒng)、模塊、應(yīng)用軟件,對客戶機保持透明。每個部分的工作如下。
監(jiān)控模塊通過在Hypervisor的客戶機捕獲處理過程中插入hook函數(shù),hook影子頁表修改事件s,過濾不關(guān)心的客戶機進(jìn)程,并從內(nèi)存和寄存器及相關(guān)結(jié)構(gòu)體數(shù)據(jù)結(jié)構(gòu)中重構(gòu)操作系統(tǒng)語義env,將這些數(shù)據(jù)傳給安全模塊。
安全模塊接收監(jiān)控模塊發(fā)送的事件信息(s,env),按設(shè)定的格式存儲到數(shù)據(jù)中心。然后選擇并通知某個安全服務(wù)域。同時,安全模塊還會響應(yīng)安全服務(wù)域的Hypercall請求。
數(shù)據(jù)中心負(fù)責(zé)存儲相關(guān)的事件信息(s,env)。
服務(wù)線程服務(wù)線程被喚醒后,通過Hypercall的方式請求Hypervisor中安全模塊的服務(wù),負(fù)責(zé)和Hypervisor進(jìn)行數(shù)據(jù)交換。
需要指出的是,與在客戶機內(nèi)部安裝傳統(tǒng)的殺毒軟件、防火墻等惡意軟件檢測工具的方式相比,本文提出的架構(gòu)具有4個特點:1)Hypervisor和客戶機、安全服務(wù)域和客戶機之間資源被很好地隔離,導(dǎo)致本文架構(gòu)不易被關(guān)閉和破壞。2)安裝不同惡意軟件檢測工具的多個安全域的綜合結(jié)果檢測率更高。3)該架構(gòu)通過截獲不同的事件,完成動態(tài)提取惡意軟件釋放的代碼。相比靜態(tài)掃描的方式,理論上更難被繞過。4)添加的所有模塊(監(jiān)控模塊、安全模塊、數(shù)據(jù)中心等)部署于服務(wù)提供商控制的安全服務(wù)域和Hypervisor中,所以不需要在客戶機中安裝額外軟件。
2.3惡意軟件檢測思路
從惡意軟件執(zhí)行過程分析,惡意代碼可以直接被操作系統(tǒng)載入內(nèi)存,也可以以加密數(shù)據(jù)的形式載入內(nèi)存,等到特定的條件觸發(fā)后被解密釋放到內(nèi)存中。通過在本架構(gòu)中抓取軟件的載入內(nèi)存行為或者釋放代碼行為,取出其載入的代碼或者釋放的代碼,用這些代碼塊的惡意性來判斷軟件的惡意性。為了保持對客戶機的透明性,不能采用在Hypervisor中利用客戶機操作系統(tǒng)的函數(shù)hook的方式或者和客戶機內(nèi)模塊交互的方式來獲取這些行為。希望在本框架下,監(jiān)控模塊選取特定的事件S,等價的截獲代碼載入內(nèi)存或者解密釋放的過程,利用寄存器、內(nèi)存值和相關(guān)數(shù)據(jù)結(jié)構(gòu)用語義重構(gòu)的方式恢復(fù)操作系統(tǒng)狀態(tài)env,并將事件(S,env)發(fā)送給安全模塊,安全模塊通過地址轉(zhuǎn)換函數(shù)確定正在操作的內(nèi)存塊,將內(nèi)存塊的起始地址、大小以及(S,env)存儲到數(shù)據(jù)中心的日志中,并通知某個安全服務(wù)域,安全服務(wù)域中的服務(wù)線程通過Hypercall的方式請求拷貝內(nèi)存塊,并將內(nèi)存塊保存到文件中,借助于主流殺毒軟件的文件掃描功能來判斷軟件的惡意性。
2.4事件的選取
在事件選取過程中,利用了影子頁表[16]和Intel禁止運行(NoeXecute, NX)技術(shù)。在內(nèi)存虛擬化的實現(xiàn)中,存在兩種不同的頁表:一種是客戶機維護(hù)的客戶機頁表;另一種是Hypervisor維護(hù)的影子頁表。客戶機頁表將客戶機虛擬地址映射為客戶機物理地址。影子頁表將客戶機地址映射為物理地址??蛻魴C物理地址是物理地址的抽象層,它們之間存在映射關(guān)系。客戶機在讀寫或者運行某個地址時發(fā)生頁錯誤,Hypervisor會同步該地址的影子頁表和客戶機頁表。比如軟件第一次載入內(nèi)存或者通過VirtualProtect更改內(nèi)存屬性會更改相應(yīng)的客戶機頁表項。當(dāng)實際用到這一地址的時候,通過影子頁表頁錯誤處理函數(shù)將客戶機頁表和影子頁表同步。在Intel CPU中,執(zhí)行禁止位(eXecute Disable, XD)用于區(qū)分內(nèi)存中的指令存儲區(qū)域和數(shù)據(jù)存儲區(qū)域。對支持?jǐn)?shù)據(jù)執(zhí)行保護(hù)(Data Executing Prevention, DEP)的操作系統(tǒng)會對程序數(shù)據(jù)段設(shè)置XD位,防止由于緩沖區(qū)溢出等漏洞導(dǎo)致執(zhí)行數(shù)據(jù)段的shellcode。稱XD未設(shè)置內(nèi)存區(qū)域為可執(zhí)行。
希望通過選取特定事件S來獲取客戶機中軟件的可執(zhí)行代碼。由于頁面分配可以同時設(shè)置可寫和可執(zhí)行屬性,后續(xù)對頁面的寫操作能夠產(chǎn)生新的可執(zhí)行代碼。這樣可執(zhí)行代碼來源于兩種情形,如圖 2所示。
S1:分配一塊屬性為可寫的內(nèi)存,寫入數(shù)據(jù),更改頁表屬性為可執(zhí)行。
S2:分配一塊可寫可運行的內(nèi)存,寫入代碼。
對于S1,客戶機更改頁表屬性,會導(dǎo)致頁中內(nèi)容被用到時,發(fā)生影子頁表的頁錯誤,Hypervisor可以獲得該事件。對于S2,如果設(shè)置影子頁表為可寫可運行屬性,后續(xù)對頁面的寫操作將不能截獲。通過更改影子頁表的實現(xiàn),對客戶機內(nèi)存可寫可執(zhí)行頁面采用特殊的處理方式:對于需要將影子頁表更改為可寫可運行的屬性的情況,根據(jù)當(dāng)前頁錯誤類型去掉寫或運行屬性。也就是,頁錯誤類型為寫錯誤,Hypervisor同步影子頁表的時候只給寫權(quán)限;頁錯誤類型為取指錯誤,給予運行權(quán)限并去掉寫權(quán)限。采取這種處理方式,能夠獲得對可寫可執(zhí)行頁面的后續(xù)操作同時不影響軟件的正常工作。
3惡意軟件檢測架構(gòu)原型系統(tǒng)實現(xiàn)
在Xen4.4.0上實現(xiàn)了上述架構(gòu)的原型。機器硬件配置是4核64位Intel Core i34150(支持VME、NX)CPU,內(nèi)存為4GB,采用Ubuntu14.04 LTS 內(nèi)核版本3.13.052作為宿主操作系統(tǒng),客戶機采用32位Windows 7操作系統(tǒng)。
操作系統(tǒng)中除了惡意軟件還有很多其他正常軟件。對所有的進(jìn)程都進(jìn)行事件的截獲會帶來很大的性能消耗。為減輕這種性能消耗,一般有兩種策略:一種是忽略系統(tǒng)和可信任進(jìn)程(即白名單策略);另一種是只處理疑似樣本進(jìn)行。在本文的實現(xiàn)中,只對疑似樣本進(jìn)行事件截獲。
3.1初始化階段
安全服務(wù)域dom0首先創(chuàng)建服務(wù)線程thread,thread申請足夠大的空間512個頁的空間作為Hypervisor和dom0進(jìn)行數(shù)據(jù)交換的緩沖區(qū)。然后,dom0注冊中斷處理函數(shù)scan_interrupt并綁定事件通道,這一步通過bind_virq_to_irqhandler完成。最后,dom0通過VMCALL指令通知Hypervisor對指定的domU設(shè)置疑似樣本的名字規(guī)則(比如virus前綴)并開啟事件截獲。
3.2函數(shù)hook和語義重構(gòu)
本文的hook函數(shù)放置在Xen影子頁表頁錯誤的處理函數(shù)sh_page_fault中。該函數(shù)首先判斷頁錯誤是否由影子頁表和客戶機頁表不同步導(dǎo)致:如果是則將客戶機頁表相應(yīng)的頁面“傳送”給影子頁表;如果不是,則將錯誤直接傳給客戶機。本文在sh_page_fault讀取完客戶機頁表相應(yīng)項,并計算出需要對影子頁表修改的值后,在實施修改之前(即在sh_page_fault中shadow_set_l1e語句前)加入hook函數(shù)scan_shadow_page_fault。該hook函數(shù)只有開啟了事件截獲才會執(zhí)行。
截獲指定事件后,從當(dāng)前VMCS結(jié)構(gòu)中讀取客戶機gdt表。gdt表中第6項、第7項分別包含處理器控制區(qū)域struct _KPCR結(jié)構(gòu)和當(dāng)前線程環(huán)境塊struct _TEB結(jié)構(gòu)的首地址。本文從struct _KPCR+0x124處得到線程控制結(jié)構(gòu)ethread,從struct _TEB中恢復(fù)整個進(jìn)程相關(guān)的信息,比如進(jìn)程標(biāo)識符PID、進(jìn)程名字、進(jìn)程的二進(jìn)制文件路徑。
3.3限制到指定進(jìn)程
對獲取到的事件都進(jìn)行語義重構(gòu)會引入較大的性能消耗,本文采取了特別的方式減少語義重構(gòu)的次數(shù)??蛻魴C進(jìn)程切換會對cr3賦值,該步驟需要hypervisor輔助完成。采用在cr3切換到疑似進(jìn)程時設(shè)置標(biāo)志位表示需要進(jìn)行語義重構(gòu),在cr3切換出去時清除標(biāo)志位的方式,避免在可信任進(jìn)程上進(jìn)行語義重構(gòu)的操作。
3.4事件處理
當(dāng)事件發(fā)生時,根據(jù)當(dāng)前寄存器值,內(nèi)存和Windows 7 相關(guān)數(shù)據(jù)結(jié)構(gòu)恢復(fù)出進(jìn)程相關(guān)的信息。根據(jù)頁錯誤的虛擬地址、客戶機頁表和影子頁表的對應(yīng)項,對S1和S2分別進(jìn)行處理(如程序1)。對于S1事件,過濾發(fā)生在內(nèi)核空間中的頁表屬性變化,對用戶空間的頁表屬性變化,則記錄其物理頁mfn。對于S2事件,如果頁錯誤是因為沒有寫權(quán)限引起的,則去掉運行權(quán)限,給予寫權(quán)限;如果是因為沒有運行權(quán)限引起的,則去掉寫權(quán)限,給予運行權(quán)限。
程序1事件處理函數(shù)。
程序前
Function handle_s1(va,Gl1e,Sl1e)
If (va>0x80000000)//不處理內(nèi)核地址
Return;
If ((?。⊿l1e & PAGE_X)) && (Gl1e & PAGE_X))
Log_this_page(Sl1e);//記錄這一頁,拷貝
Function handle_s2(Gl1e,regs)
If (Gl1e & PAGE_X) && (Gl1e & PAGE_W)//頁面可寫可執(zhí)行
If (regs->error_code & PEFC_insn_fetch)//當(dāng)前錯誤是運行錯誤,去掉寫權(quán)限
Gl1e &=~PAGE_W
If (regs->error_code & PEFC_write_access)//當(dāng)前錯誤是寫錯誤,去掉運行權(quán)限
Gl1e&=~PAGE_X
程序后
3.5異步讀寫
事件相關(guān)信息(物理頁、進(jìn)程名字、虛擬地址)記錄完畢。Hypervisor用send_guest_vcpu_virq函數(shù)給dom0發(fā)送中斷后,立即將控制權(quán)交還給客戶機操作系統(tǒng)。中斷處理函數(shù)scan_interrupt喚醒服務(wù)線程thread。thread通過VMCALL指令請求將相應(yīng)的頁面拷貝到指定內(nèi)存中。采用這種異步的方式,能夠使客戶機等待的時間特別短,對客戶機性能影響小。
服務(wù)線程最終將相應(yīng)的內(nèi)存塊分別寫入文件。由于現(xiàn)在沒有各種殺毒軟件的開放應(yīng)用程序編程接口(Application Programming Interface, API)API,不能利用API對內(nèi)存進(jìn)行掃描。暫時采取寫入文件,將多種殺毒軟件的掃描結(jié)果作為是否是惡意軟件的判斷依據(jù)。
4實驗結(jié)果
文獻(xiàn)[2]中提到,惡意軟件檢測主要有基于特征匹配的方式和基于異常檢測兩種?,F(xiàn)有的殺毒軟件一般采用了基于特征匹配的靜態(tài)掃描方式,首先對疑似的二進(jìn)制文件進(jìn)行特征提取和計算hash校驗值,并將這些值和惡意軟件特征庫進(jìn)行比對。下面,本文通過加殼惡意軟件檢測實驗,說明本文架構(gòu)對加殼惡意軟件的檢測效果比殺毒軟件靜態(tài)掃描的檢測效果更好。
實驗中,在原型系統(tǒng)的一個客戶機中運行收集到疑似惡意軟件樣本,原型系統(tǒng)會自動提取出程序動態(tài)釋放的內(nèi)存塊。本文的云平臺采用多樣化的掃描方式,采用Avast(11.1.2241)、Avira(15.0.13.210)、Kaspersky(15.0.0)、Dr.Web(10.0)、McAfee(14.0.1127)五款殺毒軟件對提取出的全部內(nèi)存塊進(jìn)行掃描。如果任何一個殺毒軟件檢測報告惡意軟件,則認(rèn)為該軟件惡意。如果都沒有報告惡意軟件,則認(rèn)為該軟件是正常軟件。作為對比,同時用Avast(11.1.2241)、Avira(15.0.13.210)、Kaspersky(15.0.0)、Dr.Web(10.0)、McAfee(14.0.1127)五款殺毒軟件直接對疑似樣本的二進(jìn)制文件進(jìn)行掃描,判斷是否惡意方式與原型系統(tǒng)中一致。
實驗過程中,對收集的107個疑似樣本(標(biāo)號為樣本1到樣本107)進(jìn)行加殼處理。加殼工具采用了ASPacker、ACProtect、NSpack、Upack等工具。其中由于61個疑似樣本在Windows 7 32位環(huán)境不能運行,采用其他46個進(jìn)行測試,得到相應(yīng)的實驗結(jié)果。圖3是原型系統(tǒng)的惡意軟件檢測數(shù)目和殺毒軟件檢測數(shù)目對比。本文提出的多樣化惡意軟件檢測框架的檢測率為85.7%,比傳統(tǒng)靜態(tài)掃描的71.4%檢測率高14.3個百分點。
10個樣本(如表1)在原型系統(tǒng)中報告存在惡意軟件,但是殺毒軟件靜態(tài)掃描不能檢測出惡意軟件。導(dǎo)致這種差異的原因是,靜態(tài)掃描加殼惡意軟件時,對疑似的二進(jìn)制文件進(jìn)行特征提取和計算hash校驗值的方式受到殼的干擾和原始二進(jìn)制加密等方面的影響,導(dǎo)致特征碼或hash值的改變,從而繞過檢測。而在本文實現(xiàn)的原型系統(tǒng)中,通過截獲惡意軟件釋放惡意代碼的過程,對釋放過程完成后的代碼進(jìn)行特征提取,此時外殼已經(jīng)執(zhí)行完成,加密的二進(jìn)制也完成了解密,所以能夠提取出原始軟件的特征,因此原型系統(tǒng)通過提取惡意軟件未加殼時的特征發(fā)現(xiàn)惡意軟件。
5個樣本(如表2)在原型系統(tǒng)中檢測不出,但是殺毒軟件能夠報告威脅。通過分析,導(dǎo)致這種情形的原因可能如下:1)惡意軟件未能觸發(fā)惡意載荷載入內(nèi)存的行為;2)惡意軟件通過面向返回的編程(ReturnOriented Programming, ROP)[17]或者returnintolibc[18]等方式利用系統(tǒng)動態(tài)鏈接庫文件(Dynamic Link Library, DLL)相關(guān)的代碼。接下來,為了解決上述問題,將完善惡意軟件自動觸發(fā)機制,并結(jié)合文獻(xiàn)[19]中的相關(guān)工作,完善對利用ROP和returnintolibc技術(shù)的惡意軟件的檢測。
5結(jié)語
本文提出了一種面向云平臺的多樣化惡意軟件檢測架構(gòu),利用虛擬化技術(shù)截獲客戶機的特定行為,抓取客戶機內(nèi)軟件釋放的代碼,通過多種殺毒軟件多樣化的掃描確定軟件的惡意性。已經(jīng)在Xen上實現(xiàn)了整個架構(gòu)的原型。在測試工作中,實現(xiàn)的原型系統(tǒng)對加殼惡意軟件的檢測效果比殺毒軟件靜態(tài)掃描的檢測效果更好。
接下來,將完善惡意軟件的自動觸發(fā)機制,使惡意軟件在條件未滿足時釋放惡意載荷,達(dá)到檢測的目的;同時,將完善對采用ROP和returnintolibc方式的惡意軟件的檢測。
參考文獻(xiàn):
[1]
Wikimedia Foundation. Malware [EB/OL]. [20160304]. https://en.wikipedia.org/wiki/Malware.
[2]
IDIKA N, MATHUR A P. A survey of malware detection techniques [D]. West Lafayette, IN: Purdue University, 2007: 1-48. http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.75.4594&rep=rep1&type=pdf.
[3]
UHLIG R, NEIGER G, RODGERS D, et al. Intel virtualization technology [J]. Computer, 2005, 38(5): 48-56.
[4]
YIN H, SONG D, EGELE M, et al. Panorama: capturing systemwide information flow for malware detection and analysis [C]// Proceedings of the 14th ACM Conference on Computer and Communications Security. New York: ACM, 2007: 116-127.
[5]
QEMU main page [EB/OL]. [20160304]. http://wiki.qemu.org/Main_Page.
[6]
VASUDEVAN A, YERRABALLI R. Stealth breakpoints [C]// Proceedings of the 21st Annual Computer Security Applications Conference. Piscataway, NJ: IEEE, 2005: 383-392.
[7]
VASUDEVAN A, YERRABALLI R. Cobra: finegrained malware analysis using stealth localizedexecutions [C]// Proceedings of the 2006 IEEE Symposium on Security and Privacy. Piscataway, NJ: IEEE, 2006: 265-279.
[8]
JIANG X, WANG X, XU D. Stealthy malware detection through VMMbased outofthebox semantic view reconstruction [C]// Proceedings of the 14th ACM Conference on Computer and Communications Security. New York: ACM, 2007: 128-138.
[9]
BAYER U, KRUEGEL C, KIRDA E. TTAnalyze: a tool for analyzing malware [EB/OL]. [20151220]. https://www.cs.ucsb.edu/~chris/research/doc/eicar06_ttanalyze.pdf.
[10]
Linux Foundation. The Xen project [EB/OL]. [20160304]. http://www.xenproject.org/.
[11]
LinuxKVM organization. Kernel virtual machine [EB/OL]. [20160304]. http://www.linuxkvm.org/page/Main_Page.
[12]
PAYNE B D, CARBONE M, SHARIF M, et al. Lares: an architecture for secure active monitoring using virtualization [C]// SP 2008: Proceedings of the 2008 IEEE Symposium on Security and Privacy. Piscataway, NJ: IEEE, 2008: 233-247.
[13]
SHARIF M I, LEE W, CUI W, et al. Secure inVM monitoring using hardware virtualization [C]// Proceedings of the 16th ACM Conference on Computer and Communications Security. New York: ACM, 2009: 477-487.
[14]
MAO Y, CHEN X, LUO Y. HVSM: an inoutVM security monitoring architecture in IAAS cloud [C]// Proceedings of the 2014 IEEE Information and Network Security. Piscataway, NJ: IEEE, 2014: 185-192.
[15]
HIZVER J, CHIUEH T. Realtime deep virtual machine introspection and its applications [C]// VEE14: Proceedings of the 10th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments. New York: ACM, 2014: 3-14.
[16]
BARHAM P, DRAGOVIC B, FRASER K, et al. Xen and the art of virtualization [J]. ACM SIGOPS Operating Systems Review, 2003, 37(5): 164-177.
[17]
BUCHANAN E, ROEMER R, SHACHAM H, et al. When good instructions go bad: Generalizing returnoriented programming to RISC [C]// Proceedings of the 15th ACM Conference on Computer and Communications Security. New York: ACM, 2008: 27-38.
[18]
SHACHAM H. The geometry of innocent flesh on the bone: returnintolibc without function calls (on the x86) [C]// Proceedings of the 14th ACM Conference on Computer and Communications Security. New York: ACM, 2007: 552-561.
[19]
JIA X, WANG R, JIANG J, et al. Defending returnoriented programming based on virtualization techniques [J]. Security and Communication Networks, 2013, 6(10): 1236-1249.