來(lái)源:Yanfang Ye, Tao Li, Donald Adjeroh, and S. Sitharama Iyengar. 2017. A survey on malware detection using data mining techniques. ACM Comput. Surv. 50, 3, Article 41 (June 2017), 40 pages.
一、背景
隨著電腦和互聯(lián)網(wǎng)的普及,互聯(lián)網(wǎng)在日常生活中變得不可或缺。ITU(國(guó)際電信聯(lián)盟)報(bào)告稱(chēng),世界各地的互聯(lián)網(wǎng)用戶,如電子銀行、電子商務(wù)、即時(shí)通訊、教育和娛樂(lè)等互聯(lián)網(wǎng)服務(wù),2014年(2014年)已達(dá)到29.2億。就像物理世界一樣,有些人懷有惡意。(網(wǎng)絡(luò)罪犯)。他們?cè)噲D利用合法用戶,并從經(jīng)濟(jì)上獲利。惡意軟件(惡意軟件的簡(jiǎn)稱(chēng))是一個(gè)通用術(shù)語(yǔ),用來(lái)表示所有不同類(lèi)型的不需要的軟件程序。這些程序包括病毒、蠕蟲(chóng)、木馬、間諜軟件、機(jī)器人、rootkit、ransomware等等。惡意軟件已被網(wǎng)絡(luò)犯罪分子用作實(shí)現(xiàn)目標(biāo)的武器。特別是,惡意軟件已經(jīng)被用來(lái)發(fā)動(dòng)廣泛的安全攻擊,比如破壞計(jì)算機(jī),竊取機(jī)密信息,發(fā)送垃圾郵件,降低服務(wù)器性能,滲透網(wǎng)絡(luò),和癱瘓的關(guān)鍵基礎(chǔ)設(shè)施。這些攻擊通常會(huì)造成嚴(yán)重的損害和重大的財(cái)務(wù)損失。根據(jù)卡巴斯基實(shí)驗(yàn)室最近的一份報(bào)告,為了把這一觀點(diǎn)考慮在內(nèi),大約有10億美元是在全球金融機(jī)構(gòu)因惡意軟件攻擊(卡巴斯基2015年)而被盜的。此外,Kingsoft報(bào)告說(shuō),每天受感染電腦的平均數(shù)量在200- 500萬(wàn)之間[Kingsoft 2016]。
許多惡意軟件的攻擊對(duì)互聯(lián)網(wǎng)用戶構(gòu)成了嚴(yán)重的安全威脅。為了保護(hù)合法用戶免受這些威脅,來(lái)自不同公司的反惡意軟件產(chǎn)品提供了針對(duì)惡意軟件的主要防御手段,如科摩多、卡巴斯基、金山和賽門(mén)鐵克。通常,基于簽名的方法在這些廣泛使用的惡意軟件檢測(cè)工具中使用,以識(shí)別各種威脅。簽名是一個(gè)簡(jiǎn)短的字節(jié)序列,它通常是每個(gè)已知的惡意軟件特有的,允許新出現(xiàn)的文件以一個(gè)小的錯(cuò)誤率正確地識(shí)別出來(lái)[Ye et al. 2011]。然而,由于經(jīng)濟(jì)利益,惡意軟件的作者很快開(kāi)發(fā)出了自動(dòng)化的惡意軟件開(kāi)發(fā)工具包(例如,Zeus [Song et al. 2008])。這些工具包使用了一些技術(shù),如指令虛擬化、包裝、多態(tài)性、仿真和變質(zhì)(instruction virtualization, packing, polymor?phism, emulation, and metamorphism),以編寫(xiě)和修改能夠逃避檢測(cè)的惡意代碼[Beaucamps和ric Filiol 2007;Filiol et al . 2007]。這些惡意軟件創(chuàng)建工具包大大降低了新手攻擊者進(jìn)入網(wǎng)絡(luò)犯罪世界的障礙(允許沒(méi)有經(jīng)驗(yàn)的攻擊者編寫(xiě)和定制他們自己的惡意軟件樣本),并導(dǎo)致新的惡意軟件樣本的大量擴(kuò)散,這是由于他們的廣泛可用性。結(jié)果,惡意軟件樣本迅速流行,并在全世界范圍內(nèi)以前所未有的速度傳播和感染計(jì)算機(jī)。2008年,賽門(mén)鐵克報(bào)告說(shuō),惡意程序和其他不受歡迎的代碼的發(fā)布速度可能超過(guò)了良性軟件應(yīng)用程序[Symantec 2008]。這表明傳統(tǒng)的基于簽名的惡意軟件檢測(cè)解決方案可能面臨巨大的挑戰(zhàn),因?yàn)樗鼈兛梢员粣阂廛浖髡叱健@纾鶕?jù)賽門(mén)鐵克的報(bào)告,在2008年,大約有180萬(wàn)個(gè)惡意軟件的簽名被發(fā)布,這導(dǎo)致了每月2億次的檢測(cè)[Symantec 2008]。2013年,金山軟件反惡意軟件實(shí)驗(yàn)室收集的可疑文件達(dá)到1.2億,426萬(wàn)(34%)被檢測(cè)為惡意軟件[金山軟件2014]。雖然許多惡意軟件樣本被檢測(cè)和屏蔽,大量的惡意軟件樣本(例如,所謂的“零日”惡意軟件[Wikipedia 2017f])已經(jīng)產(chǎn)生或突變,他們傾向于逃避傳統(tǒng)的基于簽名的反病毒掃描工具。這促使反惡意軟件行業(yè)重新考慮他們的惡意軟件檢測(cè)方法,因?yàn)檫@些方法主要基于現(xiàn)有的基于簽名的模型的變體。為了保持有效,許多反惡意軟件公司開(kāi)始使用基于云(服務(wù)器)的檢測(cè)[Nachenberg和Seshadri 2010;Ye et al. 2011;Stokes et,2012年。基于云的惡意軟件檢測(cè)采用基于云的架構(gòu)(Ye et al. 2011):反惡意軟件產(chǎn)品在客戶端使用一個(gè)輕量級(jí)簽名庫(kù)來(lái)認(rèn)證有效的軟件程序,并阻止無(wú)效的軟件程序,同時(shí)預(yù)測(cè)任何未知的文件(例如:在云(服務(wù)器)端上的灰色列表,并快速向客戶端生成判定結(jié)果。隨著惡意軟件的編寫(xiě)和創(chuàng)建技術(shù)的發(fā)展,灰色列表中的文件樣本數(shù)量不斷增加(例如,金山云安全中心每天收集50多萬(wàn)個(gè)文件樣本)。因此,智能方法自動(dòng)檢測(cè)來(lái)自云端新收集的文件中的惡意軟件樣本是急需的。因此,許多研究報(bào)告使用數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)技術(shù)來(lái)開(kāi)發(fā)智能惡意軟件檢測(cè)系統(tǒng)[Schultz et al. 2001;Kolter和Maloof 2004;Karim et al. 2005;Lee和Mody 2006;Ye et al. 2007;Moskovitch et al . 2008;Kolbitsch et al . 2009;Ye et al. 2010, 2011;Karampatziakis et al. 2013;Tamersoy et al . 2014;2015年,薩克斯和柏林;Ni等人,2016年。
在本文中,我們首先簡(jiǎn)要介紹了惡意軟件和防病毒軟件行業(yè),并介紹了惡意軟件檢測(cè)的工業(yè)需求。然后我們調(diào)查了智能惡意軟件的檢測(cè)方法。在這些方法中,惡意軟件檢測(cè)分為兩步:特征提取和分類(lèi)/聚類(lèi)。這種惡意軟件檢測(cè)方法的性能?chē)?yán)重依賴于提取的特征和分類(lèi)技術(shù)。我們對(duì)特征提取和分類(lèi)/聚類(lèi)步驟進(jìn)行了全面的研究。我們還討論了利用數(shù)據(jù)挖掘技術(shù)進(jìn)行惡意軟件檢測(cè)的其他問(wèn)題和挑戰(zhàn),并最終預(yù)測(cè)了惡意軟件開(kāi)發(fā)的趨勢(shì)。本文的其余部分組織如下:第2節(jié)介紹了惡意軟件和反惡意軟件行業(yè)的概況。第3節(jié)介紹了利用數(shù)據(jù)挖掘技術(shù)進(jìn)行惡意軟件檢測(cè)的全過(guò)程。第4節(jié)描述了惡意軟件的文件表示方法,第5節(jié)系統(tǒng)地討論了惡意軟件檢測(cè)的特征選擇方法。第6節(jié)介紹了惡意軟件檢測(cè)的分類(lèi),第7節(jié)描述了用于惡意軟件檢測(cè)的聚類(lèi)。第8節(jié)進(jìn)一步討論了使用數(shù)據(jù)挖掘技術(shù)進(jìn)行惡意軟件檢測(cè)的其他問(wèn)題。第9節(jié)預(yù)測(cè)了惡意軟件開(kāi)發(fā)的趨勢(shì)。最后,第10節(jié)總結(jié)了這篇文章。
二、惡意軟件和反惡意軟件行業(yè)的概述
惡意軟件是故意滿足惡意攻擊者有害意圖的軟件程序[Bayer et al. 2006b]。它的設(shè)計(jì)是為了實(shí)現(xiàn)攻擊者的目標(biāo)。這些目標(biāo)包括干擾系統(tǒng)操作、獲取計(jì)算系統(tǒng)和網(wǎng)絡(luò)資源,以及在未經(jīng)用戶允許的情況下收集個(gè)人敏感信息。因此,惡意軟件通常會(huì)威脅到主機(jī)的完整性、Internet的可用性和用戶的隱私。
惡意軟件可以以不同的方式通過(guò)多種渠道到達(dá)系統(tǒng)。這些不同的方法總結(jié)如下:(1)網(wǎng)絡(luò)上的脆弱服務(wù)允許惡意軟件自動(dòng)感染可訪問(wèn)的系統(tǒng)。(2)從互聯(lián)網(wǎng)下載過(guò)程:已顯示70-80%的惡意軟件來(lái)自流行網(wǎng)站[Rehmani et al. 2011]。通過(guò)利用web瀏覽器的漏洞,drive - By下載能夠首先從因特網(wǎng)獲取惡意代碼,然后在受害者的機(jī)器上執(zhí)行代碼[Egele等2012]。(3)攻擊者還可以誘使受害者故意在他們的機(jī)器上執(zhí)行惡意代碼。典型的例子包括要求用戶安裝一個(gè)提供的“編解碼器”來(lái)觀看在網(wǎng)站上播放的電影,或者點(diǎn)擊/打開(kāi)附加到垃圾郵件的圖片[Egele et al. 2012]。在某些情況下,惡意軟件可能只會(huì)影響系統(tǒng)性能和創(chuàng)建過(guò)載進(jìn)程。在間諜活動(dòng)中,惡意軟件隱藏在系統(tǒng)中,竊取計(jì)算機(jī)的關(guān)鍵信息,并向攻擊者發(fā)送信息。
為了保護(hù)合法用戶免受惡意軟件攻擊,主要的防御是來(lái)自反惡意軟件公司的軟件產(chǎn)品。然而,反惡意軟件行業(yè)在檢測(cè)和預(yù)防攻擊方面越成功,在野外就可能出現(xiàn)越復(fù)雜的惡意軟件樣本。因此,惡意軟件防御者和惡意軟件作者之間的軍備競(jìng)賽正在繼續(xù)升級(jí)。在接下來(lái)的章節(jié)中,我們介紹了惡意軟件的分類(lèi),闡述了惡意軟件行業(yè)的發(fā)展,并描述了惡意軟件檢測(cè)的進(jìn)展。
2.1 惡意軟件的分類(lèi)
基于不同的目的和擴(kuò)散方式,惡意軟件可以分為不同的類(lèi)型。本節(jié)簡(jiǎn)要概述了大多數(shù)常見(jiàn)的惡意軟件,如病毒、蠕蟲(chóng)、木馬、間諜軟件、ransomware、scareware、bots和rootkit。
病毒(Viruses):病毒是一段可以附加到其他系統(tǒng)程序的代碼,當(dāng)被執(zhí)行時(shí),受影響的區(qū)域被“感染”[Wikipedia 2017b]。病毒不能獨(dú)立運(yùn)行,因?yàn)樗鼈冃枰伤鼈兊摹八拗鳌背绦蚣せ頪Spafford 1989]。由Bob Thoma編寫(xiě)的爬蟲(chóng)病毒是一種實(shí)驗(yàn)性的自我復(fù)制程序,在20世紀(jì)70年代早期首次被發(fā)現(xiàn)[Wikipedia 2017b]。
蠕蟲(chóng)(Worms):不像病毒需要它的“宿主”程序運(yùn)行來(lái)激活它,蠕蟲(chóng)是一個(gè)能夠獨(dú)立運(yùn)行的程序。注意,蠕蟲(chóng)可以將自己的完全工作副本傳播到其他機(jī)器上[Spafford 1989]。Morris蠕蟲(chóng)(在1988年被釋放)是第一個(gè)公開(kāi)的程序?qū)嵗憩F(xiàn)出類(lèi)似蠕蟲(chóng)的行為[Spafford 1989]。在莫里斯上訴過(guò)程中,根據(jù)美國(guó)上訴法院的估計(jì),移除莫里斯蠕蟲(chóng)的費(fèi)用約為1億美元[維基百科2017c]。那些臭名昭著的蠕蟲(chóng),如愛(ài)門(mén),編碼,SQL的關(guān),我的末日,和風(fēng)暴蠕蟲(chóng),已經(jīng)成功地攻擊了數(shù)以千萬(wàn)計(jì)的Windows電腦并且造成了巨大的損失。例如,在其發(fā)布的第一天,紅色代碼蠕蟲(chóng)(2001年首次發(fā)布)感染359000臺(tái)主機(jī)在互聯(lián)網(wǎng)上(摩爾和香農(nóng)2002],雖然MyDoom的蠕蟲(chóng)(2004年的)減慢全球互聯(lián)網(wǎng)接入10%,造成某些網(wǎng)站的訪問(wèn)(2011年Bizjournals)減少了50%。
特洛伊木馬(Trojans):與蠕蟲(chóng)病毒相比,它更容易將自己的一個(gè)完整的工作版本傳播到其他機(jī)器上,特洛伊病毒是一個(gè)假裝有用但在后端執(zhí)行惡意操作的軟件程序[Schultz et al. 2001]。最近著名的特洛伊木馬,宙斯(也被稱(chēng)為Zbot)能夠執(zhí)行許多惡意和犯罪的任務(wù)。宙斯經(jīng)常被用來(lái)竊取與銀行相關(guān)的信息,通過(guò)敲擊鍵盤(pán)記錄和獲取(維基百科2017g)。2009年6月,安全公司Prevx發(fā)現(xiàn),在許多公司的網(wǎng)站上,有超過(guò)74000個(gè)FTP賬號(hào)被Zeus泄露(包括ABC、Amazon、BusinessWeek、Cisco、NASA、Monster.com、Oracle、Play.com和美國(guó)銀行)[Wikipedia 2017g]。
間諜軟件(Spyware):間諜軟件是一種惡意程序,監(jiān)視用戶的活動(dòng),而不需要用戶的知情或同意[邊界和Prakash 2004]。攻擊者可以使用間諜軟件監(jiān)視用戶活動(dòng)、收集擊鍵和獲取敏感數(shù)據(jù)(例如,用戶登錄、帳戶信息)。
Ransomware: Ransomware是近年來(lái)最流行的惡意軟件之一[Symantec 2016],它在受害者的電腦上秘密安裝,并執(zhí)行一種對(duì)其不利的加密病毒攻擊[Wikipedia 2017d]。如果計(jì)算機(jī)被這個(gè)惡意軟件感染,受害者被要求支付贖金給攻擊者來(lái)解密它。
Scareware: Scareware是一種最新類(lèi)型的惡意文件,旨在欺騙用戶購(gòu)買(mǎi)和下載不必要的、潛在危險(xiǎn)的軟件,如假冒的反病毒保護(hù)[Wikipedia 2016],它對(duì)受害者構(gòu)成了嚴(yán)重的財(cái)務(wù)和隱私相關(guān)的威脅。
機(jī)器人(bot):機(jī)器人是一種惡意程序,允許機(jī)器人主人遠(yuǎn)程控制被感染的系統(tǒng)[Stinson和Mitchell 2007]。機(jī)器人的典型傳播方法是利用軟件漏洞和使用社會(huì)工程技術(shù)。一旦系統(tǒng)被感染,機(jī)器人主人可以安裝蠕蟲(chóng)、間諜軟件和木馬,并將個(gè)人受害系統(tǒng)轉(zhuǎn)化為僵尸網(wǎng)絡(luò)。僵尸網(wǎng)絡(luò)廣泛用于發(fā)起分布式拒絕服務(wù)(DDoS)攻擊[Kanich et al. 2008]、發(fā)送垃圾郵件和托管釣魚(yú)欺詐。Agobot和Sdbot是兩個(gè)最臭名昭著的機(jī)器人。
rootkit:一種隱秘的軟件,旨在隱藏特定的進(jìn)程或程序,并允許繼續(xù)訪問(wèn)計(jì)算機(jī)(Wikipedia 2017e)。Rootkit技術(shù)可以在不同的系統(tǒng)級(jí)別上使用:它們可以在用戶模式中調(diào)用應(yīng)用程序編程接口(API),或者將操作系統(tǒng)結(jié)構(gòu)作為設(shè)備驅(qū)動(dòng)程序或內(nèi)核模塊進(jìn)行篡改。
混合惡意軟件(Hybrid Malware):混合惡意軟件將兩個(gè)或更多其他形式的惡意代碼合并成一個(gè)新的類(lèi)型,以實(shí)現(xiàn)更強(qiáng)大的攻擊功能。
其他一些常見(jiàn)的網(wǎng)絡(luò)害蟲(chóng)也會(huì)對(duì)計(jì)算機(jī)用戶造成危害,比如“垃圾郵件”、“廣告軟件”等等。實(shí)際上,這些典型的惡意軟件并不相互排斥。換句話說(shuō),一個(gè)特定的惡意軟件樣本可能同時(shí)屬于多個(gè)惡意軟件類(lèi)型。
2.2 惡意軟件產(chǎn)業(yè)發(fā)展
病毒是惡意軟件的第一個(gè)實(shí)例。惡意軟件作者的最初動(dòng)機(jī)常常是突出安全性的弱點(diǎn),或者僅僅是為了展示他們的技術(shù)能力。此外,為了躲避反惡意軟件的檢測(cè),惡意軟件作者和攻擊者開(kāi)發(fā)并應(yīng)用了各種隱藏技術(shù):(1)加密(Encryption):加密的惡意軟件包括加密算法、加密密鑰、加密的惡意代碼和解密算法[Sung et .2004]。密鑰和解密算法用于解密惡意軟件中的惡意組件。攻擊者使用新生成的密鑰和加密算法,并生成新版本的惡意軟件以逃避檢測(cè)。(2)打包(Packing):打包是一種用于加密或壓縮可執(zhí)行文件的技術(shù)[Kendall和McMillan 2007]。通常情況下,要揭示包裝惡意程序的整體語(yǔ)義,需要打開(kāi)一個(gè)解包的階段。(3)混淆:Obfuscation [Sung et .2004]的目的是隱藏程序的底層邏輯,防止其他人對(duì)代碼有任何相關(guān)的知識(shí)。典型的混淆技術(shù)包括添加垃圾命令、不必要的跳轉(zhuǎn)等等。通過(guò)應(yīng)用混淆,惡意代碼及其所有有害功能在被激活之前仍然無(wú)法理解。(4)多態(tài)性(Polymorphism)[Bazrafshan et al. 2013]:一個(gè)多態(tài)性的惡意軟件每次被復(fù)制時(shí)都被設(shè)定為不同的外觀,同時(shí)保持原始代碼的完整性。不同于簡(jiǎn)單的加密,多態(tài)惡意軟件可以使用無(wú)限數(shù)量的加密算法,在每次執(zhí)行中,解密代碼的一部分將會(huì)改變。根據(jù)惡意軟件類(lèi)型,惡意軟件執(zhí)行的不同惡意操作可以被置于加密操作之下。通常,一個(gè)轉(zhuǎn)換引擎嵌入到加密的惡意軟件中。注意,在任何更改中,引擎都會(huì)生成一個(gè)隨機(jī)加密算法。然后,使用生成的算法對(duì)引擎和惡意軟件進(jìn)行加密,并與它們連接新的解密密鑰。(5)變形(Metamorphic)(Bazrafshan et al. 2013;Crandall et al. 2005]:變形惡意軟件是最復(fù)雜的惡意軟件。在變形的惡意軟件中,惡意代碼改變了自己,使一個(gè)新的實(shí)例與原始的實(shí)例沒(méi)有相似之處。惡意軟件沒(méi)有任何編碼引擎。在每個(gè)傳輸中,惡意軟件源代碼中會(huì)自動(dòng)發(fā)生更改。
惡意軟件作者的動(dòng)機(jī)隨著時(shí)間的推移而改變。隨著計(jì)算機(jī)的普及和互聯(lián)網(wǎng)的高速發(fā)展,電子商務(wù)在銀行業(yè)和金融業(yè)中得到了廣泛的應(yīng)用。eMarketer的最新預(yù)測(cè)顯示,全球B2C電子商務(wù)銷(xiāo)售額將達(dá)到1.5萬(wàn)億美元[eMarketer 2014]。因此,在今天的電子商務(wù)中,存在著一個(gè)蓬勃發(fā)展的地下惡意軟件經(jīng)濟(jì)[zbig et al. 2008]。通過(guò)傳播破壞性的有效載荷,惡意軟件可以首先感染并控制脆弱的計(jì)算機(jī)系統(tǒng),并利用它們獲取非法資金[Zhuge et al. 2008]。金錢(qián)的前景,而不是有趣的因素,成為惡意軟件開(kāi)發(fā)的驅(qū)動(dòng)力。在相當(dāng)大的經(jīng)濟(jì)利益的驅(qū)動(dòng)下,惡意軟件樣本的多樣性和復(fù)雜性在過(guò)去幾年顯著增加[Hu 2011]。例如,Ramnit最初是2010年發(fā)現(xiàn)的一種普通蠕蟲(chóng)病毒,后來(lái)被惡意軟件作者修改為盜取了45,000個(gè)Facebook賬戶。通過(guò)從宙斯木馬上獲取的一些代碼從web會(huì)話中獲取數(shù)據(jù),當(dāng)前版本的Ramnit是原始蠕蟲(chóng)的混合版本,它允許黑客進(jìn)行財(cái)務(wù)欺詐。木馬程序的設(shè)計(jì)目的是提供未經(jīng)授權(quán)和遠(yuǎn)程訪問(wèn)的電腦,允許黑客竊取敏感信息(如Facebook賬戶或電子銀行賬戶),它的受歡迎程度越來(lái)越高,目前在惡意軟件收集中占多數(shù)(73%)[Ye 2010]。
現(xiàn)在已經(jīng)有一個(gè)成熟的木馬產(chǎn)業(yè)鏈(如圖1所示),在經(jīng)濟(jì)效益方面是有利可圖的:從木馬的創(chuàng)建到規(guī)避檢測(cè)、傳播、bot控制、賬戶盜竊、銷(xiāo)售。勞動(dòng)分工十分明確,整個(gè)過(guò)程和組織構(gòu)成了一個(gè)健全完整的裝配線。在中國(guó),這樣一個(gè)黑色鏈的增長(zhǎng)速度非常快,每年的產(chǎn)值可以超過(guò)10億美元[Ye 2010]。
然而,盡管惡意軟件更加復(fù)雜,編寫(xiě)和定制惡意軟件的必要知識(shí)實(shí)際上已經(jīng)大大減少[Hu2011]。這主要是由于許多自動(dòng)惡意軟件創(chuàng)建工具包的可用性,這些工具也易于使用,比如Zeus [TrendMicro 2010]和SpyEye [Coogan 2010]。這些工具包允許沒(méi)有經(jīng)驗(yàn)的攻擊者定制并創(chuàng)建惡意軟件程序來(lái)實(shí)施網(wǎng)絡(luò)犯罪,這將導(dǎo)致大量的惡意軟件變體。此外,許多惡意軟件樣本不斷變異,以繞過(guò)反惡意軟件供應(yīng)商的檢測(cè)。而不是從頭編寫(xiě)一個(gè)新的惡意軟件,惡意軟件作者總是采取一種更具成本效益的策略來(lái)完善現(xiàn)有的惡意軟件樣本(略有修改源代碼或二進(jìn)制文件)他們繞過(guò)反惡意軟件掃描檢測(cè),使用一組不同的工具和技術(shù)通常包括指令重新排序,垃圾插入,等同替換代碼和運(yùn)行時(shí)包裝。因此,這些變種的惡意軟件樣本已經(jīng)演化成一個(gè)流排列的過(guò)程[奧曼2010]。由于惡意軟件的變種可以自動(dòng)和快速地生成,惡意軟件作者可以替換過(guò)時(shí)的惡意軟件,在新的檢測(cè)簽名被開(kāi)發(fā)和更新之前,給他們的變種提供一個(gè)有利的攻擊窗口。這種惡意軟件突變過(guò)程的易用性導(dǎo)致了新的惡意軟件文件樣本的指數(shù)增長(zhǎng)[Ye等人,2009c]。基于金山云安全中心提供的數(shù)據(jù)[Kingsoft 2014, 2015, 2016],圖2展示了從2003年到2015年中國(guó)惡意軟件樣本的增長(zhǎng)趨勢(shì)。該數(shù)據(jù)顯示,自2008年以來(lái),惡意軟件樣本的數(shù)量急劇增加,2015年收集的新惡意軟件樣本總數(shù)達(dá)到4066萬(wàn)例[金山軟件2016]。不幸的是,這種趨勢(shì)可能會(huì)繼續(xù)下去,惡意軟件仍將是互聯(lián)網(wǎng)用戶面臨的最大安全威脅之一。
2.3 惡意軟件檢測(cè)的進(jìn)展
2.3.1。基于簽名的惡意軟件檢測(cè)。為了保護(hù)合法用戶免受惡意軟件的威脅,來(lái)自反惡意軟件公司的軟件產(chǎn)品(例如,來(lái)自科摩多、卡巴斯基、金山、麥咖啡和賽門(mén)鐵克的產(chǎn)品)提供了主要的防御。通常,他們使用基于簽名的方法來(lái)識(shí)別已知的威脅。簽名是每個(gè)已知的惡意軟件的一個(gè)簡(jiǎn)短的字節(jié)序列,它允許新遇到的文件以一個(gè)小錯(cuò)誤率正確地識(shí)別出來(lái)[Ye et al. 2011]。圖3顯示了一個(gè)用于檢測(cè)在線游戲木馬的示例簽名。
基于簽名的方法從二進(jìn)制代碼中識(shí)別唯一的字符串[Moskovitch et al. 2009]。這種傳統(tǒng)檢測(cè)方法的過(guò)程如圖4所示。每當(dāng)一種新的惡意軟件被釋放,反惡意軟件供應(yīng)商就需要獲得新的惡意軟件的實(shí)例,分析實(shí)例,創(chuàng)建新的簽名,并在他們的客戶端部署(Micropoint 2008;Moskovitch et al . 2009]。傳統(tǒng)上,簽名基礎(chǔ)通常是由領(lǐng)域?qū)<沂止ど伞⒏潞蛡鞑サ摹_@個(gè)過(guò)程通常被稱(chēng)為時(shí)間和勞動(dòng)消耗。這種檢測(cè)方法使得反惡意軟件工具對(duì)新威脅的響應(yīng)能力較弱。它甚至可能允許一些惡意軟件樣本繞過(guò)檢測(cè),并在很長(zhǎng)一段時(shí)間內(nèi)不被發(fā)現(xiàn)。例如,一個(gè)惡意軟件的發(fā)布到它被反惡意軟件軟件工具檢測(cè)的一個(gè)典型的時(shí)間窗口大約是54天[Hu 2011]。在更糟糕的情況下,在180天之后,15%的樣本仍未被發(fā)現(xiàn)[Damballa 2008]。
2.3.2 基于啟發(fā)式的惡意軟件檢測(cè)。通過(guò)應(yīng)用上面描述的對(duì)策(例如加密、打包、混淆、多態(tài)性和變質(zhì)),惡意軟件作者可以輕松繞過(guò)基于簽名的檢測(cè)。從20世紀(jì)90年代末到2008年,基于啟發(fā)式的方法是檢測(cè)惡意軟件最重要的方法。基于啟發(fā)性的檢測(cè)是基于專(zhuān)家確定的規(guī)則/模式,以區(qū)分惡意軟件樣本和良性文件。這些規(guī)則/模式應(yīng)該足夠通用,可以與相同惡意軟件威脅的變體保持一致,但不能與惡意文件相匹配[Egele et al. 2012]。然而,惡意軟件樣本的分析和領(lǐng)域?qū)<覍?duì)規(guī)則/模式的構(gòu)建往往容易出錯(cuò),且耗時(shí)。更重要的是,如上所述,在經(jīng)濟(jì)利益的驅(qū)動(dòng)下,惡意軟件行業(yè)已經(jīng)發(fā)明了自動(dòng)的惡意軟件開(kāi)發(fā)工具包(如Zeus [TrendMicro 2010]),可以每天創(chuàng)建和變異數(shù)千個(gè)惡意代碼,這些代碼可以通過(guò)傳統(tǒng)的基于簽名或基于啟發(fā)式的檢測(cè)[Symantec 2008]。因此,人工分析已成為惡意軟件分析工作的主要瓶頸,要求智能技術(shù)自動(dòng)分析傳入的樣本。這種智能技術(shù)可以讓反惡意軟件供應(yīng)商跟上快速的惡意軟件生成和部署,同時(shí)減少他們對(duì)新的惡意軟件威脅的響應(yīng)時(shí)間。此外,惡意軟件創(chuàng)建的速度(例如,超過(guò)10,000個(gè)新的惡意軟件/天)比簽名生成速度快,而且簽名的增加使得客戶變得越來(lái)越“沉重”。
2.3.3 基于云計(jì)算的惡意軟件檢測(cè)。為了克服上述挑戰(zhàn),并保持有效,許多反惡意軟件供應(yīng)商已經(jīng)使用基于云(服務(wù)器)的檢測(cè)。基于云的檢測(cè)工作流如圖5所示。具體來(lái)說(shuō),該方案可以在以下[Ye et al. 2011]中描述:
(1)用戶通過(guò)客戶端不同渠道從互聯(lián)網(wǎng)接收新文件。
(2)客戶端上的簽名集首先被反惡意軟件產(chǎn)品用于掃描新文件。如果現(xiàn)有的簽名不能檢測(cè)到這些文件,那么這些文件將被標(biāo)記為“未知”。
(3)收集未知文件的信息(如文件聲譽(yù)、文件特性、甚至文件)并發(fā)送到云服務(wù)器。
(4)在云服務(wù)器上,分類(lèi)器(s)對(duì)未知文件樣本進(jìn)行分類(lèi),生成判決(良性或惡性)。
(5)裁決結(jié)果將立即發(fā)送給客戶。
(6)基于云服務(wù)器的結(jié)果,客戶端掃描過(guò)程進(jìn)行檢測(cè)。
(7)隨著云服務(wù)器的快速響應(yīng)和反饋,客戶端用戶將擁有最新的安全解決方案。
綜上所述,惡意軟件檢測(cè)現(xiàn)在以客戶端-服務(wù)器方式進(jìn)行,采用基于云的架構(gòu)[Ye et al. 2011]:從黑名單中屏蔽無(wú)效的軟件程序,從客戶端(用戶)的白列表中驗(yàn)證有效的軟件程序,并預(yù)測(cè)任何未知的文件(例如:,在云(服務(wù)器)端顯示灰色列表,并快速向客戶端生成結(jié)果。灰色列表包含未知的軟件文件,這些文件可能是良性的,也可能是惡意的。傳統(tǒng)上,灰色列表被惡意軟件分析人員拒絕或手動(dòng)驗(yàn)證。隨著惡意軟件的編寫(xiě)和創(chuàng)建技術(shù)的發(fā)展,灰色列表中的文件樣本數(shù)量不斷增加。例如,Kingsoft或Comodo云安全中心收集的灰色列表通常每天包含超過(guò)500,000個(gè)文件示例[Ye 2010]。因此,迫切需要開(kāi)發(fā)智能技術(shù),以便在云(服務(wù)器)端支持高效、有效的惡意軟件檢測(cè)。
近年來(lái),金山安全產(chǎn)品等商業(yè)產(chǎn)品[Ye et al. 2009c, 2010],科摩多殺毒(AV)產(chǎn)品[Ye et al. 2011];Chen et al. 2015;Hardy et al. 2016],賽門(mén)鐵克的抗alware (AM)產(chǎn)品[Chau et al. 2011],以及微軟的Internet Explorer [Stokes et al. 2012]已經(jīng)開(kāi)始使用數(shù)據(jù)挖掘技術(shù)來(lái)執(zhí)行惡意軟件檢測(cè)。
3 應(yīng)用數(shù)據(jù)挖掘技術(shù)進(jìn)行惡意軟件檢測(cè)的總體過(guò)程
近年來(lái),基于數(shù)據(jù)挖掘技術(shù)的惡意軟件檢測(cè)被大量報(bào)道。這些技術(shù)能夠?qū)σ郧安豢梢?jiàn)的惡意軟件樣本進(jìn)行分類(lèi),識(shí)別惡意軟件樣本的惡意軟件家族,以及/或推斷簽名。在這些系統(tǒng)中,檢測(cè)通常是兩步過(guò)程:特征提取和分類(lèi)/聚類(lèi)。圖6顯示了使用數(shù)據(jù)挖掘技術(shù)的惡意軟件檢測(cè)的整個(gè)過(guò)程。在第一步中,靜態(tài)和/或動(dòng)態(tài)地提取各種特性(參見(jiàn)第4節(jié)),如API調(diào)用、二進(jìn)制字符串和程序行為,以捕獲文件示例的特征。在第二步中,利用分類(lèi)或聚類(lèi)等智能技術(shù),在分析特征表示的基礎(chǔ)上,自動(dòng)將文件樣本分類(lèi)為不同的類(lèi)/組。注意,這些基于數(shù)據(jù)挖掘的惡意軟件探測(cè)器主要區(qū)別于特征表示和所使用的數(shù)據(jù)挖掘技術(shù)。
分類(lèi):對(duì)任何未知文件進(jìn)行分類(lèi),可以是良性的,也可以是惡性的,分類(lèi)過(guò)程可以分為兩個(gè)連續(xù)步驟:模型構(gòu)建和模型使用。第一步,向系統(tǒng)提供包括惡意軟件和良性文件在內(nèi)的訓(xùn)練樣本。然后,對(duì)每個(gè)樣本進(jìn)行解析,提取代表其基本特征的特征。提取的特征被轉(zhuǎn)換為訓(xùn)練集中的向量,將每個(gè)樣本的特征向量和類(lèi)標(biāo)簽作為分類(lèi)算法(如人工神經(jīng)網(wǎng)絡(luò)(ANN)、決策樹(shù)(DT)和支持向量機(jī)(SVM))的輸入。分類(lèi)算法通過(guò)對(duì)訓(xùn)練集的分析,建立分類(lèi)模型(或分類(lèi)器)。然后,在模型使用階段,一個(gè)新的未知的文件樣本的集合,也可以是良性的或惡意的,被提交給從訓(xùn)練集中生成的分類(lèi)器。請(qǐng)注意,新文件樣本的代表向量首先提取(使用相同的特征提取技術(shù)在訓(xùn)練階段)。分類(lèi)器根據(jù)提取的特征向量對(duì)新的文件樣本進(jìn)行分類(lèi)。
聚類(lèi):在許多情況下,很少有標(biāo)記訓(xùn)練樣本用于惡意軟件檢測(cè)。因此,研究人員提出了使用聚類(lèi)來(lái)自動(dòng)將具有相似行為的惡意軟件樣本分組到不同的組中。聚類(lèi)是對(duì)一組對(duì)象進(jìn)行分組的任務(wù),使得同一組中的對(duì)象(被稱(chēng)為集群)比其他組(集群)中的對(duì)象彼此更相似(例如,使用特定距離或相似性度量)。聚類(lèi)允許自動(dòng)的惡意軟件分類(lèi),并且還能夠生成用于檢測(cè)的簽名。
為了評(píng)估目的,通常采用表一所示的經(jīng)典方法來(lái)評(píng)估基于分類(lèi)的惡意軟件檢測(cè)的性能。注意,在惡意軟件檢測(cè)中,惡意軟件樣本通常被用作陽(yáng)性實(shí)例。真正的陽(yáng)性率(TPR)衡量的是惡意軟件樣本(即。通過(guò)分類(lèi)模型對(duì)正實(shí)例進(jìn)行了正確的分類(lèi),而假陽(yáng)性率(FPR)是良性文件的分類(lèi)率(即錯(cuò)誤分類(lèi)(例如:,誤分類(lèi)為惡意軟件樣本)。Accuracy (ACY)度量正確分類(lèi)的文件實(shí)例的速率,包括正實(shí)例和負(fù)實(shí)例。使用傳統(tǒng)方法的評(píng)估方法通常被稱(chēng)為累積方法(cumulative approach)[Nachenberg和Seshadri 2010]。累積方法衡量的是在實(shí)例級(jí)的惡意軟件檢測(cè)方法/系統(tǒng)的性能(例如,每級(jí)文件)。還有另一種度量方法,稱(chēng)為基于交互的度量方法(interactive-based)[Ramzan et al. 2013],它試圖在事務(wù)級(jí)度量惡意軟件檢測(cè)方法/系統(tǒng)的性能(考慮到不同的用戶群)。基于交互的度量方法基于實(shí)際的用戶群來(lái)度量惡意軟件檢測(cè)方法/系統(tǒng)的真實(shí)保護(hù)和虛假正面影響。例如,假設(shè)在時(shí)間T,有兩個(gè)測(cè)試文件的惡意軟件,(有100萬(wàn)用戶)和B(10個(gè)用戶),和惡意軟件檢測(cè)方法/系統(tǒng)錯(cuò)誤分類(lèi)的第一個(gè)文件(例如,一個(gè)假陰性,將惡意軟件劃分為一個(gè)良性的文件),但第二個(gè)文件B正確歸類(lèi)為惡意軟件樣本。僅基于這兩個(gè)文件,累積測(cè)量將給出50%的準(zhǔn)確性,因?yàn)樗_地分類(lèi)一個(gè)文件,而一個(gè)文件不正確;但是在基于交互的測(cè)量方法中,它會(huì)根據(jù)A和b的用戶對(duì)錯(cuò)誤的負(fù)面和真實(shí)的優(yōu)點(diǎn)分配不同的權(quán)重。對(duì)于基于集群的方法,不同算法的性能通常是通過(guò)使用宏f1和微f1度量來(lái)評(píng)估的,這兩種方法分別強(qiáng)調(diào)了系統(tǒng)在罕見(jiàn)的和常見(jiàn)的分類(lèi)上的性能。
4 特征提取
特征提取方法提取用于表示文件樣本的模式。在本文中,我們主要討論對(duì)Windows可執(zhí)行文件的檢測(cè)。注意,PE是Windows操作系統(tǒng)的一種常見(jiàn)文件格式,而PE惡意軟件是大多數(shù)惡意軟件樣本。注意CIH、CodeBlue、costed、Killonce、LoveGate、Nimda、Sircam和Sobig都針對(duì)PE文件[Ye et al. 2007]。惡意軟件檢測(cè)中主要有兩種不同類(lèi)型的特征提取:靜態(tài)分析和動(dòng)態(tài)分析。
4.1 靜態(tài)分析
靜態(tài)分析分析PE文件而不執(zhí)行它們。靜態(tài)分析的目標(biāo)可以是二進(jìn)制或源代碼[Christodorescu和Jha 2003]。如果PE文件被第三方二進(jìn)制壓縮工具(例如UPX和ASPack Shell)壓縮或嵌入自制的封隔器中,則需要首先對(duì)其進(jìn)行解壓/解壓[Yeet al. 2007]。要對(duì)windows可執(zhí)行文件進(jìn)行反編譯,可以使用反匯編器(disassembler)和內(nèi)存轉(zhuǎn)儲(chǔ)器工具(Memory dumper tools)。反編譯工具(例如,IDA Pro IDAPro 2016)顯示惡意軟件代碼為英特爾86匯編指令。內(nèi)存轉(zhuǎn)儲(chǔ)工具(例如,OllyDump[2006]和LordPE[2013])用于獲取位于主內(nèi)存中的受保護(hù)代碼,并將其轉(zhuǎn)儲(chǔ)到文件中[Gandotra et al. 2014]。內(nèi)存轉(zhuǎn)儲(chǔ)對(duì)于分析打包的難以分解的可執(zhí)行文件非常有用。在解壓縮和解密可執(zhí)行文件之后,可以提取靜態(tài)分析中使用的檢測(cè)模式,如Windows API調(diào)用、字節(jié)N-gram、字符串、操作碼(操作碼)和控制流圖。
——Windows API調(diào)用:幾乎所有程序都使用Windows API調(diào)用向操作系統(tǒng)發(fā)送請(qǐng)求[Orenstein 2000]。因此,Windows API調(diào)用可以反映程序代碼片段的行為。例如,“KERNEL32”中“GetVersionExA”的Windows API。惡意軟件可以使用DLL來(lái)檢查當(dāng)前操作系統(tǒng)的版本,這是通過(guò)調(diào)用系統(tǒng)調(diào)用實(shí)現(xiàn)的。因此,Windows API之間的關(guān)聯(lián)和關(guān)系可能捕獲惡意軟件行為的底層語(yǔ)義,并可作為惡意軟件檢測(cè)的基本特性,如“KERNEL32”中的Windows API調(diào)用。“OpenProcess”、“CopyFileA”、“CloseHandle”、“GetVersionEx A”、“GetModuleFileNameA”和“WriteFile”的DLL在惡意軟件樣本集合中總是同時(shí)出現(xiàn),而很少在良性文件集中同時(shí)出現(xiàn)[Ye et al. 2007]。
——N-gram: N-gram是程序代碼中長(zhǎng)度為N的子字符串[Henchiri和Japkowicz 2006a]。例如,“82EDD875”序列被分割(表示)為5-gram,分別為“82EDD”、“2EDD8”、“EDD87”和“DD875”。在過(guò)去的十年中,許多研究基于二進(jìn)制代碼內(nèi)容進(jìn)行了未知的惡意軟件檢測(cè);[2004],[2004],[2005],Elovici等[2007],Masud等[2007],Anderson等[2012]。
—— string:可解釋字符串是惡意行為的高級(jí)規(guī)范。這些字符串可以反映攻擊者的意圖和目標(biāo),因?yàn)樗鼈儼匾恼Z(yǔ)義信息[Ye et al. 2009]。例如,“window.open(‘readme.eml’)” 總是存在于“Nimda”的蠕蟲(chóng)中,暗示蠕蟲(chóng)試圖感染腳本。另一個(gè)例子是字符串“&gameid = %s&pass = %s;myparentthreadid = % d;myguid =%s,“這表明攻擊者意圖竊取在線游戲的密碼并將其發(fā)送回服務(wù)器。”此外,字符串是健壯的特性,惡意軟件作者不容易逃避基于字符串的檢測(cè)。這是因?yàn)榧词箰阂廛浖凅w可以通過(guò)重新編譯或采用混淆技術(shù)生成,修改所有可解釋的字符串在大多數(shù)程序中也不實(shí)用[Ye et al. 2009]。
——Opcodes(操作碼):操作碼是機(jī)器語(yǔ)言指令的子部分,用于標(biāo)識(shí)要執(zhí)行的操作[Wikipedia 2017a]。更具體地說(shuō),程序被定義為一系列有序的匯編指令。指令是由操作碼、操作數(shù)或操作數(shù)列表(例如“mov ebx”、“add eax 1”、“xor eax eax”和“call sub_401BCD”)組成的一對(duì)指令。指令段通常可以反映程序的功能。研究表明,在實(shí)踐中,來(lái)自相同源代碼或?qū)儆谕患易宓膼阂廛浖颖就ǔ9蚕泶罅康闹噶顗K/段[Ye et .2010]。
——Control Flow Graphs (CFGs)控制流圖:CFG是表示程序控制流的圖。CFGs廣泛應(yīng)用于軟件分析,也被廣泛研究[Anderson et al. 2012]。
還有許多其他靜態(tài)特性來(lái)表示文件示例,如文件屬性、文件資源信息和導(dǎo)出表。靜態(tài)分析能夠探究惡意軟件樣本中所有可能的執(zhí)行路徑。因此,它在檢測(cè)惡意邏輯方面具有詳盡的優(yōu)點(diǎn)。換句話說(shuō),靜態(tài)分析沒(méi)有動(dòng)態(tài)分析所遇到的覆蓋問(wèn)題。靜態(tài)分析的另一個(gè)優(yōu)點(diǎn)是,分析器的機(jī)器不能被正在研究的惡意軟件攻擊。靜態(tài)分析的一個(gè)缺點(diǎn)是,在處理某些情況時(shí),由于不可判定性(例如,通過(guò)函數(shù)指針間接控制轉(zhuǎn)移)而無(wú)法進(jìn)行。因此,無(wú)論何時(shí)需要進(jìn)行分析,都必須在精確和效率之間做出權(quán)衡。靜態(tài)分析的其他缺點(diǎn)包括缺乏對(duì)運(yùn)行時(shí)打包代碼的支持以及與復(fù)雜混淆相關(guān)的限制。Moser等人[2007]討論了靜態(tài)分析的缺點(diǎn)。他們認(rèn)為,動(dòng)態(tài)分析可以成為靜態(tài)分析的必要和有用的補(bǔ)充。
4.2 動(dòng)態(tài)分析
動(dòng)態(tài)分析技術(shù)(例如,調(diào)試和分析)觀察PE文件的執(zhí)行(在真實(shí)或虛擬處理器上),以獲得特性[Egele等人2012]。可以采用自動(dòng)啟動(dòng)可擴(kuò)展性點(diǎn)、函數(shù)參數(shù)分析、函數(shù)調(diào)用監(jiān)控、信息流跟蹤、指令跟蹤等多種技術(shù)進(jìn)行動(dòng)態(tài)分析[Egele et al. 2012];Gandotra et al . 2014]。典型的動(dòng)態(tài)分析工具包括Valgrind [Nethercote和Seward 2007]、QEMU [QEMU 2016]和strace。對(duì)惡意軟件的動(dòng)態(tài)分析已經(jīng)有了大量的研究,在執(zhí)行環(huán)境中對(duì)惡意軟件和分析粒度進(jìn)行了不同的分析。下面我們根據(jù)執(zhí)行環(huán)境對(duì)動(dòng)態(tài)分析技術(shù)進(jìn)行分類(lèi):
——Debugger:在指令級(jí)別上,可以使用GDB (Loukides和Oram 1996)、Windbg (Robbins 1999)或Softice (Compuware 1999)等調(diào)試器對(duì)二進(jìn)制代碼(包括惡意軟件)進(jìn)行細(xì)粒度分析。然而,大多數(shù)惡意軟件(如果不是全部的話)已經(jīng)變得足夠智能,可以通過(guò)監(jiān)視對(duì)代碼的更改來(lái)檢測(cè)調(diào)試器的存在,這些更改是支持?jǐn)帱c(diǎn)(調(diào)試的主要工具)所必需的。為了對(duì)抗這種反調(diào)試的惡意軟件,研究了新的調(diào)試方法。吸血鬼[Vasudevan和Yerraballi 2005]支持秘密斷點(diǎn),通過(guò)利用虛擬內(nèi)存和硬件單步機(jī)制,幫助調(diào)試自修改和/或自檢查惡意軟件。構(gòu)建于吸血鬼之上的Cobra [Vasudevan和Yerraballi 2006]是一個(gè)細(xì)粒度的惡意軟件分析框架,可以選擇性地部署在惡意代碼流上,以提高分析效率。最后,Ether [Dinaburg et al. 2008]是一種調(diào)試工具,它利用諸如Intel VT [Intel 2013]等硬件虛擬化擴(kuò)展,使惡意軟件看不到它。
——Simulator模擬器:這組工具在受控環(huán)境中運(yùn)行惡意軟件并監(jiān)視其行為。例如,Detours [Hunt and Brubacher 1998]是一種動(dòng)態(tài)檢測(cè)工具,可以檢測(cè)惡意軟件示例調(diào)用的Windows API,而CWSandbox [Willems et al. 2007]通過(guò)執(zhí)行API連接和DLL注入來(lái)監(jiān)控惡意軟件調(diào)用的Windows API。
——仿真器(Emulator):TTAnalyze [Bayer et al. 2006a]是一個(gè)基于qemu的動(dòng)態(tài)惡意軟件分析框架,監(jiān)控Windows API調(diào)用和Windows本機(jī)系統(tǒng)調(diào)用,以及函數(shù)調(diào)用參數(shù)。BitBlaze二進(jìn)制分析平臺(tái)中的TEMU是一個(gè)仿真器,它支持指令級(jí)的動(dòng)態(tài)檢測(cè)和整個(gè)系統(tǒng)的污染跟蹤。一些專(zhuān)門(mén)的分析工具[Caballero et al. 2007;Kang et al. 2007;Yin等人2007]已經(jīng)在TEMU之上建立。K-Tracer [Lanzi et al. 2009]動(dòng)態(tài)跟蹤Windows內(nèi)核級(jí)rootkit的執(zhí)行情況,以查找其系統(tǒng)數(shù)據(jù)操作行為。
——虛擬機(jī)(Virtual Machine):Strider honeymonkey [Wang et al. 2006a]通過(guò)在Microsoft Virtual PC和Virtual server為基礎(chǔ)的環(huán)境中訪問(wèn)惡意網(wǎng)站,并識(shí)別這種訪問(wèn)導(dǎo)致的持續(xù)系統(tǒng)狀態(tài)變化,從而確定惡意網(wǎng)站。vGrounds [Jiang et al. 2005]研究基于用戶模式的Linux (UML)虛擬環(huán)境中的蠕蟲(chóng)行為。
在動(dòng)態(tài)特征提取中,配置或環(huán)境相關(guān)的信息(如變量值、系統(tǒng)配置和程序輸入)在提取過(guò)程中被解析。這是動(dòng)態(tài)分析的一大優(yōu)勢(shì)。這些環(huán)境或配置依賴于靜態(tài)分析會(huì)造成困難,因?yàn)樗鼈兂隽舜a本身。動(dòng)態(tài)分析在分析打包的惡意軟件時(shí)特別有用,因?yàn)樵诖蠖鄶?shù)情況下,當(dāng)惡意軟件運(yùn)行時(shí),在某個(gè)時(shí)刻,惡意軟件必須自行解壓,其原始代碼將位于主存中。Renovo [Kang et al.2007]就是這樣一個(gè)工具,它通過(guò)跟蹤惡意軟件新寫(xiě)入的內(nèi)存區(qū)域來(lái)提取隱藏的代碼,即使它是通過(guò)多層壓縮和加密來(lái)隱藏的。有限的覆蓋范圍是動(dòng)態(tài)分析的一個(gè)缺點(diǎn)。原因是一個(gè)執(zhí)行會(huì)話只能在惡意軟件中探索一個(gè)特定的程序路徑。但是一些惡意軟件行為可能取決于某些特殊的條件(例如,在特定的時(shí)間,當(dāng)收到特定的文件,或者執(zhí)行特定的命令/操作)。
此外,由于惡意軟件樣本在運(yùn)行時(shí)暴露其所有行為需要時(shí)間,因此動(dòng)態(tài)分析通常要比靜態(tài)分析耗費(fèi)更多的時(shí)間和資源。因此,這些特性限制了在商業(yè)分析系統(tǒng)中采用動(dòng)態(tài)分析。
4.3 混合分析
靜態(tài)和動(dòng)態(tài)特征提取方法都有各自的優(yōu)點(diǎn)和局限性。與動(dòng)態(tài)特性表示相比,靜態(tài)方法更便宜,可以覆蓋所有的代碼路徑(包括不總是執(zhí)行的程序片段),因此可以更準(zhǔn)確、更完整地描述程序功能[Hu 2011]。然而,由于低層次的突變技術(shù)(例如混淆和包裝),它的性能開(kāi)銷(xiāo)很大。相反,動(dòng)態(tài)分析能夠抵抗低層次的混淆,適合檢測(cè)惡意軟件變體和新的家庭,但是在基于觸發(fā)的惡意軟件樣本上表現(xiàn)很差。此外,由于動(dòng)態(tài)分析的覆蓋范圍有限,它的成本很高,而且不具有可擴(kuò)展性。根據(jù)Comodo云安全中心的統(tǒng)計(jì)數(shù)據(jù),大約80%的文件示例可以使用靜態(tài)特性得到很好的表示,而大約40%的文件示例可以動(dòng)態(tài)運(yùn)行[Ye et al. 2011]。
由于它們各自的優(yōu)缺點(diǎn),無(wú)論是靜態(tài)的還是基于動(dòng)態(tài)的特征提取方法都不能為惡意軟件分析中的特征提取提供一個(gè)完美的解決方案[Hu 2011]。因此,需要一種綜合的方法,將靜態(tài)和動(dòng)態(tài)分析結(jié)合起來(lái),并獲得兩者的好處。混合分析是一種結(jié)合靜態(tài)分析和動(dòng)態(tài)分析各自優(yōu)點(diǎn)的分析方法。例如,打包的惡意軟件可以首先通過(guò)一個(gè)動(dòng)態(tài)分析器,如PolyUnpack [Royal et al. 2006],通過(guò)比較惡意軟件實(shí)例的運(yùn)行時(shí)執(zhí)行與其靜態(tài)代碼模型,提取打包惡意軟件實(shí)例的隱藏代碼體。一旦隱藏代碼主體被發(fā)現(xiàn),靜態(tài)分析器就可以繼續(xù)分析惡意軟件。
4.4 其他新特征
也有一些研究使用文件內(nèi)容的語(yǔ)義來(lái)表示文件示例。例如,Christodorescu等[2005]提出了一種感知語(yǔ)義的惡意軟件檢測(cè)方法。在提出的框架中,使用模板描述惡意行為,模板是使用變量和符號(hào)常量的指令序列。基于提取的特征,提出了一種基于語(yǔ)義感知的惡意軟件檢測(cè)匹配算法。
除了從文件內(nèi)容中提取的靜態(tài)和動(dòng)態(tài)特性之外,還有其他可以代表惡意軟件或良性文件的特性嗎?正如《圣經(jīng)》中所說(shuō):“人因其所結(jié)交的人而為人所知。”“實(shí)際上,不同文件樣本之間的關(guān)系可能意味著它們之間的相互依賴,可以提供關(guān)于它們的屬性和特征的關(guān)鍵信息[Ye et al. 2011];Tamersoy et al . 2014]。更準(zhǔn)確地說(shuō),一個(gè)文件的合法性可以通過(guò)分析它與其他標(biāo)記為(良性或惡意的)對(duì)等點(diǎn)的關(guān)系來(lái)推斷。例如,如果一個(gè)未知的文件總是與許多木馬程序共存,那么該文件很有可能是惡意的木馬程序-下載加載程序[Ye et al. 2011],可以從遠(yuǎn)程服務(wù)器下載并安裝多個(gè)不需要的應(yīng)用程序(例如,trojan, adware)。Ye等人將文件關(guān)系和文件內(nèi)容結(jié)合起來(lái)進(jìn)行惡意軟件檢測(cè)。特別是,他們提出的方法已經(jīng)被成功地整合到Comodo的反惡意軟件產(chǎn)品中[Ye et .2011]。最近,更多的商業(yè)反惡意軟件產(chǎn)品,包括賽門(mén)鐵克的AM產(chǎn)品[Nachenberg和Seshadri 2010]和微軟的Internet Explorer [Stokes et al. 2012]已經(jīng)開(kāi)始使用文件內(nèi)容以外的特性來(lái)檢測(cè)惡意軟件:(1)賽門(mén)鐵克的AM產(chǎn)品通過(guò)分析文件-機(jī)器關(guān)系(Chau et al. 2011),通過(guò)對(duì)文件-機(jī)器關(guān)系的分析來(lái)判斷文件的聲譽(yù),并且還使用了文件關(guān)系圖[Tamersoy et al. 2014]檢測(cè)惡意軟件;(2)微軟的ie瀏覽器使用文件定位進(jìn)行惡意軟件檢測(cè)[Venzhega et al. 2013]。
表二總結(jié)了不同特征提取方法在惡意軟件檢測(cè)中的一些代表性研究。