林鑫
(南京理工大學(xué)江蘇南京210094)
基于沙盒的Android惡意軟件檢測(cè)技術(shù)研究
林鑫
(南京理工大學(xué)江蘇南京210094)
隨著互聯(lián)網(wǎng)技術(shù)和計(jì)算機(jī)技術(shù)的高速發(fā)展,人們獲取資源和服務(wù)變得更加方便快捷了,但與之伴隨而來的安全問題也日益突出。特別是在使用廣泛的移動(dòng)終端上,竊取信息、惡意吸費(fèi)等惡意軟件層出不窮。由于受到資源和計(jì)算能力的限制,移動(dòng)終端無法安裝功能強(qiáng)大、性能要求高的病毒查殺軟件。本文從實(shí)際出發(fā),針對(duì)移動(dòng)終端對(duì)安全的需求和現(xiàn)有查殺軟件存在的弊端進(jìn)行了深入的分析,提出了一種基于沙盒的結(jié)合移動(dòng)端和云端的惡意軟件檢測(cè)技術(shù)。該技術(shù)采用了基于動(dòng)態(tài)分析的沙盒技術(shù),從一定程度上彌補(bǔ)了傳統(tǒng)的靜態(tài)分析方法所存在的不足,沙盒所特有的隔離環(huán)境,同時(shí)保證在系統(tǒng)執(zhí)行檢測(cè)任務(wù)時(shí)免遭惡意程序的破壞。另外,考慮到移動(dòng)終端的局限性和檢測(cè)過程的可靠性,在移動(dòng)終端經(jīng)過預(yù)處理后,使用高效的比對(duì)算法進(jìn)行二進(jìn)制比對(duì),同時(shí)通過網(wǎng)絡(luò)將APK中的class字節(jié)碼文件上傳到云端,通過在云端的虛擬機(jī)中運(yùn)行執(zhí)行代碼進(jìn)行進(jìn)一步檢測(cè),從而提高檢測(cè)的可靠性和效率。
沙盒;Android;惡意軟件;云計(jì)算
2007年至今的短短七年時(shí)間里,Android一躍成為市場(chǎng)占有率最高的移動(dòng)智能終端操作系統(tǒng)。生態(tài)封閉的iOS和Windows Phone保證了開發(fā)平臺(tái)和產(chǎn)品一致性,應(yīng)用程序經(jīng)過嚴(yán)格審查,價(jià)值鏈控制嚴(yán)密.而Android系統(tǒng)秉持開放性原則,吸引了大批用戶、手機(jī)廠商、應(yīng)用開發(fā)商和銷售商,但是開放的應(yīng)用市場(chǎng)和相對(duì)寬松的應(yīng)用審查機(jī)制導(dǎo)致Android惡意軟件泛濫、安全威脅與日俱增[1]。
現(xiàn)有Android惡意軟件反逆向、抗檢測(cè)技術(shù)不斷發(fā)展成熟,惡意軟件變種迅速,家族種類繁多,已經(jīng)形成了以吸費(fèi)扣費(fèi)、惡意推廣、隱私販賣為目的的灰色利益產(chǎn)業(yè)鏈[2]。安全公司每天面臨大量待測(cè)可疑樣本,分析檢測(cè)工作量巨大,特征提取效率低下,導(dǎo)致了基于靜態(tài)掃描引擎的安全軟件檢出率不高。應(yīng)用市場(chǎng)間競(jìng)爭激烈,同質(zhì)化嚴(yán)重,基本處于無序發(fā)展?fàn)顟B(tài).這樣的“內(nèi)憂外患”惡化了Andoird安全形勢(shì)。
受電池、帶寬、CPU、內(nèi)存資源限制,傳統(tǒng)適用于PC的惡意軟件分析檢測(cè)手段不能直接運(yùn)用在移動(dòng)智能終端上。如何針對(duì)Android移動(dòng)平臺(tái)惡意軟件進(jìn)行快速有效的分析檢測(cè)成為當(dāng)務(wù)之急[3]。
本文由4個(gè)部分組成,第1節(jié)研究現(xiàn)有Android惡意軟件攻擊技術(shù)的相關(guān)內(nèi)容,包括Android惡意軟件檢測(cè)技術(shù)及其優(yōu)缺點(diǎn);第2節(jié)提出一種較為完整的解決方案,一種動(dòng)態(tài)檢測(cè)和靜態(tài)檢測(cè)結(jié)合移動(dòng)終端和云端聯(lián)動(dòng)的檢測(cè)模型;第3節(jié)針對(duì)現(xiàn)有研究中的不足之處,提出了幾點(diǎn)未來的發(fā)展方向。
1.1惡意軟件攻擊技術(shù)
綜合分析已知惡意軟件,它們的危害大體上可分為兩方面,一方面是針對(duì)用戶個(gè)人,另一方面是針對(duì)通信網(wǎng)絡(luò)等硬件,主要行為表現(xiàn)為:惡意扣費(fèi)或消耗套餐,竊取用戶隱私資料,提示聯(lián)網(wǎng)下載軟件,大量傳播惡意軟件等。
惡意程序的攻擊方式有很多,但都會(huì)表現(xiàn)出一定的特征,一般完成一次攻擊,要經(jīng)歷入侵、獲取權(quán)限、潛伏、實(shí)施破壞行為等過程。在惡意程序?qū)嵤┕粜袨榈倪^程中主要使用到進(jìn)程注入技術(shù)、遠(yuǎn)程控制技術(shù)、端口反向連接與端口復(fù)用技術(shù)、自生產(chǎn)和升級(jí)技術(shù)、自啟動(dòng)技術(shù)等[4]。
1.2惡意軟件檢測(cè)技術(shù)
1.2.1靜態(tài)檢測(cè)方法
靜態(tài)分析方法,是指不運(yùn)行可疑惡意程序,僅僅通過某些分析工具或者反編譯工具獲得待測(cè)程序的語義和特征,然后進(jìn)行程序樣本庫的匹配,從而識(shí)別目標(biāo)程序是否具有惡意性質(zhì)[5]。顯而易見,使用靜態(tài)分析方法進(jìn)行分析的優(yōu)點(diǎn)是不必運(yùn)行目標(biāo)程序,所以分析速度快,系統(tǒng)也因此可以免遭不可預(yù)測(cè)的惡意破壞。而該方法的缺點(diǎn)是,在執(zhí)行對(duì)某些經(jīng)過加殼或者加密的可疑程序的分析時(shí),往往得不到任何的分析信息,因此靜態(tài)分析方法有一定的局限性。根據(jù)識(shí)別惡意程序的依據(jù)不同,可以把靜態(tài)分析方法分為基于代碼特征分析法和基于代碼語義分析法兩類。
1)基于代碼特征的分析方法
基于代碼特征分析法是一種根據(jù)目標(biāo)程序代碼所出現(xiàn)的統(tǒng)計(jì)特性進(jìn)行惡意識(shí)別的一種靜態(tài)分析方法。在使用靜態(tài)分析方法時(shí)往往可以通過分析工具得到可疑惡意程序的某些統(tǒng)計(jì)特性,通常情況下,這些統(tǒng)計(jì)特性在惡意代碼中表現(xiàn)的特別明顯,惡意程序?yàn)榱藢?shí)現(xiàn)其惡意目的,在其代碼中難免會(huì)出現(xiàn)多次對(duì)某些系統(tǒng)API函數(shù)的調(diào)用,例如操作系統(tǒng)注冊(cè)表的函數(shù),而正常情況下,無惡意的軟件是很少會(huì)多次操作注冊(cè)表信息的,因此一旦在基于代碼特征的分析的過程中發(fā)現(xiàn)目標(biāo)程序具有這種統(tǒng)計(jì)特性時(shí),就可以初步將目標(biāo)程序判定為疑似惡意程序。
2)基于代碼語義的分析方法
與上述方法不同,基于代碼語義的分析方法并不是依賴于目標(biāo)程序的代碼統(tǒng)計(jì)特性進(jìn)行惡意判定,該方法首先是利用某些工具對(duì)惡意代碼進(jìn)行反編譯,然后通過對(duì)語義的理解和分析,重構(gòu)目標(biāo)程序的功能模塊圖以及執(zhí)行流程圖。
1.2.2動(dòng)態(tài)檢測(cè)方法
當(dāng)惡意程序運(yùn)用了加殼、多態(tài)技術(shù)以及變形技術(shù)時(shí),采用靜態(tài)分析法進(jìn)行分析就有可能失效。使用動(dòng)態(tài)分析方法進(jìn)行惡意程序檢測(cè)往往可以得到更加全面的分析結(jié)果,其好處是可以提高分析的準(zhǔn)確率,并且可以使一些經(jīng)過加殼或者加密的惡意程序無處遁形。根據(jù)動(dòng)態(tài)分析過程中所關(guān)注的內(nèi)容不同,可以將動(dòng)態(tài)分析法分為兩類:狀態(tài)對(duì)比法和動(dòng)態(tài)追蹤法。
1)狀態(tài)對(duì)比法
如果希望快速了解惡意程序所使用的攻擊方式以及破壞意圖,可采用狀態(tài)分析法進(jìn)行快速分析,其原理如下,記錄系統(tǒng)運(yùn)行目標(biāo)程序前后的環(huán)境以及系統(tǒng)狀態(tài)變化,通過對(duì)比變化,與行為特征庫進(jìn)行匹配,即可初步確定目標(biāo)惡意程序所屬類型和所使用的攻擊方式。
2)動(dòng)態(tài)追蹤法
如果希望在動(dòng)態(tài)分析的過程中獲取目標(biāo)程序產(chǎn)生的所有信息,則需要使用動(dòng)態(tài)跟蹤法。與狀態(tài)對(duì)比法相比,該方法關(guān)注的重點(diǎn)是目標(biāo)程序執(zhí)行時(shí)所表現(xiàn)出的全部行為特征,通過綜合分析這些特征屬性,來確定目標(biāo)程序是否具有惡意性。
1.3沙箱技術(shù)研究
1.3.1沙盒技術(shù)概述
沙盒技術(shù)是國際反病毒業(yè)界近年來提出的反病毒新概念。它在計(jì)算機(jī)系統(tǒng)內(nèi)部構(gòu)造了一個(gè)獨(dú)立的虛擬空間,當(dāng)發(fā)現(xiàn)程序的可疑行為時(shí)讓程序繼續(xù)運(yùn)行,確認(rèn)是病毒時(shí)才終止[6]。沙盒技術(shù)能讓程序的可疑行為在電腦虛擬的沙盒里充分表演,并記下它的每一個(gè)動(dòng)作,在病毒充分暴露了其病毒屬性后,沙盒就會(huì)執(zhí)行回滾機(jī)制,將病毒的痕跡和動(dòng)作抹去,恢復(fù)系統(tǒng)到正常狀態(tài)。
1.3.2沙盒分析方法
根據(jù)上述概念,使用傳統(tǒng)的沙盒分析方法時(shí),首先創(chuàng)造一個(gè)虛擬的程序運(yùn)行環(huán)境,然后將目標(biāo)程序放入其中執(zhí)行,由于該虛擬環(huán)境擁有像真實(shí)操作系統(tǒng)一樣的環(huán)境,因此目標(biāo)程序能夠正常執(zhí)行并且會(huì)表現(xiàn)出它本身所具有的惡意性,當(dāng)系統(tǒng)確定待測(cè)程序?qū)儆趷阂獬绦驎r(shí),就會(huì)終止目標(biāo)程序的運(yùn)行,以避免它對(duì)真實(shí)操作系統(tǒng)造成破壞。沙盒分析結(jié)束后,分析系統(tǒng)會(huì)生成目標(biāo)程序的分析日志,用戶可以通過該分析日志來確定目標(biāo)程序是否具有惡意性。
經(jīng)過綜合考慮,本文專門提出了一種靜態(tài)掃描和動(dòng)態(tài)執(zhí)行結(jié)合,移動(dòng)終端和云端聯(lián)動(dòng)的檢測(cè)模式。在移動(dòng)終端上只做靜態(tài)檢測(cè),在云平臺(tái)上做進(jìn)一步的動(dòng)態(tài)檢測(cè),甚至可以將靜態(tài)檢測(cè)中耗時(shí)的操作遷移至云平臺(tái)上,進(jìn)一步節(jié)省手機(jī)電量,降低手機(jī)資源的消耗。系統(tǒng)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖
2.1云端沙箱聯(lián)動(dòng)機(jī)制
在移動(dòng)終端主要進(jìn)行解壓縮,簡單的二進(jìn)制對(duì)比,簡單的API調(diào)用序列對(duì)比和上傳動(dòng)作;云端主要運(yùn)行了重新修改編譯后的虛擬機(jī)來動(dòng)態(tài)執(zhí)行手機(jī)端上傳的樣本代碼,重新編譯好的框架層或者DVM虛擬機(jī)會(huì)動(dòng)態(tài)執(zhí)行該樣本,可以獲得樣本加載系統(tǒng)模塊,動(dòng)作行為等具體信息,進(jìn)一步來增強(qiáng)檢測(cè)效果。
系統(tǒng)首先將對(duì)目標(biāo)代碼進(jìn)行靜態(tài)檢測(cè),移動(dòng)終端的軟件將會(huì)負(fù)責(zé)APK解壓,先進(jìn)行啟發(fā)式掃描,然后檢查Manifest. xml文件,最后分析DEX文件中的全部敏感屬性,假設(shè)以上結(jié)果檢測(cè)不出結(jié)果,或者3項(xiàng)中的結(jié)果只有一項(xiàng)有可疑結(jié)果,我們就上傳APK至云端,動(dòng)用動(dòng)態(tài)檢測(cè)來進(jìn)一步分析,假設(shè)云端動(dòng)態(tài)執(zhí)行后的結(jié)果出目標(biāo)代碼是惡意代碼,則目標(biāo)軟件能夠肯定屬于惡意軟件[7],假設(shè)之前的靜態(tài)檢測(cè)已經(jīng)能夠明確的指出代碼是惡意代碼,則可以省去動(dòng)態(tài)檢測(cè)這一步驟,直接對(duì)用戶提示潛在威脅,云端沙箱聯(lián)動(dòng)機(jī)制的具體檢測(cè)流程如圖2所示。
圖2 云端沙箱聯(lián)動(dòng)機(jī)制檢測(cè)流程圖
目的是出于考慮到手機(jī)平臺(tái)的特殊性,網(wǎng)絡(luò)上傳動(dòng)作需要較多的電量和帶寬支持,假設(shè)使用GPRS網(wǎng)絡(luò)上傳,單個(gè)APP的大小通常在幾M到30M左右,會(huì)使用戶手機(jī)產(chǎn)生較大的流量費(fèi)用,假設(shè)使用WiFi,則用戶相對(duì)容易接受(考慮設(shè)計(jì)一個(gè)監(jiān)聽廣播收集用戶Android系統(tǒng)的網(wǎng)絡(luò)狀態(tài),只在系統(tǒng)存在WiFi鏈接時(shí),才進(jìn)行APK上傳動(dòng)作,提高用戶體驗(yàn))。
2.2移動(dòng)終端預(yù)處理
在移動(dòng)終端端上,利用APP完成相對(duì)簡單的預(yù)處理過程,比如解壓APK,上傳特定的文件至服務(wù)器,簡單的靜態(tài)檢測(cè),對(duì)用戶進(jìn)行提醒等等。
在移動(dòng)終端,主體功能在于對(duì)目標(biāo)代碼進(jìn)行靜態(tài)檢測(cè),同時(shí)具備查看日志和提醒用戶等功能,程序總體是由一個(gè)運(yùn)行在后臺(tái)的Service和一個(gè)運(yùn)行在前端的Activity組成,Service會(huì)攔截系統(tǒng)啟動(dòng)Boost廣播,從而實(shí)現(xiàn)自啟動(dòng),Service在整個(gè)用戶手機(jī)運(yùn)行期間,均會(huì)在后臺(tái)運(yùn)行,同時(shí)Service會(huì)監(jiān)聽系統(tǒng)安裝程序的廣播,對(duì)新安裝的程序進(jìn)行默認(rèn)掃描,假如靜態(tài)檢測(cè)無法識(shí)別,而目標(biāo)代碼可疑程度較高則會(huì)通過上傳模塊,上傳至云端,進(jìn)行動(dòng)態(tài)檢測(cè);在Activity中,能夠?qū)崿F(xiàn)系統(tǒng)的基本配置管理,查看運(yùn)行日志和查看歷史提醒等功能。查看日志主要為方便用戶,查看提醒采用Toast組件對(duì)用戶進(jìn)行提醒,Toast組件的持續(xù)時(shí)間較短,用戶可能忽略,因此必須設(shè)置查看歷史提醒功能。在Service中,首先對(duì)APK進(jìn)行解壓,然后對(duì)APK結(jié)構(gòu)執(zhí)行啟發(fā)式掃描,之后執(zhí)行初步二進(jìn)制對(duì)比class.dex文件的全部敏感字段,最后檢查Manifest.xml文件,關(guān)鍵在于分析廣播器、監(jiān)聽器以及系統(tǒng)權(quán)限信息,如果無法得出結(jié)果,則考慮上傳APK至服務(wù)器。在Activity中,主要有基本配置管理,查看運(yùn)行日志,查看歷史提醒等功能模塊。移動(dòng)終端APP功能結(jié)構(gòu)劃分如圖3所示。
圖3 移動(dòng)終端APP功能結(jié)構(gòu)圖
2.3云端檢測(cè)處理
在后臺(tái)服務(wù)器集群構(gòu)建的云端負(fù)責(zé)接收上傳APK,使用重新編譯好的模擬器來觀察動(dòng)態(tài)執(zhí)行的結(jié)果,反匯編APK,對(duì)比APK源碼結(jié)構(gòu),建立并管理簽名數(shù)據(jù)庫和惡意代碼數(shù)據(jù)庫,反饋結(jié)果至移動(dòng)終端。后臺(tái)服務(wù)器主要運(yùn)行在Linux操作系統(tǒng)上,由于某些靜態(tài)檢測(cè)非常耗費(fèi)資源,云端同樣會(huì)執(zhí)行部分靜態(tài)檢測(cè)。
假設(shè)之前的靜態(tài)檢測(cè)并不足以判斷一個(gè)APK是否為惡意軟件,必須上傳此目標(biāo)APK至云端。在云端結(jié)合專業(yè)的病毒庫,進(jìn)一步進(jìn)行比對(duì)分析,目標(biāo)對(duì)象為XML文件,簽名文件以及反編譯DEX文件,假設(shè)檢測(cè)仍然沒有結(jié)果[8],但目標(biāo)代碼的確存在可疑之處,借助重新編譯后的虛擬機(jī)動(dòng)態(tài)執(zhí)行目標(biāo)代碼,從執(zhí)行過程調(diào)用的系統(tǒng)框架層函數(shù)中,捕獲所需參數(shù)信息,以及目標(biāo)代碼是否加載某些系統(tǒng)模塊進(jìn)行檢測(cè)。云端子系統(tǒng)功能結(jié)構(gòu)劃分如圖4所示。
圖4 云端子系統(tǒng)功能結(jié)構(gòu)圖
本文對(duì)Android惡意軟件檢測(cè)技術(shù)進(jìn)行了系統(tǒng)的調(diào)研,分析了Android惡意軟件檢測(cè)技術(shù)的各方面相關(guān)內(nèi)容,在此基礎(chǔ)上提出了一種全新的基于沙盒的Android惡意軟件檢測(cè)方案。本文提出的方案解決了現(xiàn)有方案存在的不足,為Android應(yīng)用程序提供了一個(gè)真實(shí)的運(yùn)行環(huán)境,使應(yīng)用程序暴露出其真實(shí)的行為。
本方案也存在幾點(diǎn)不足之處。首先,對(duì)Android沙盒的控制依賴于虛擬化軟件,虛擬化軟件的穩(wěn)定性決定了Android沙盒的穩(wěn)定性;其次,Android沙盒系統(tǒng)的版本依賴于Android開源項(xiàng)目,新版本的Android系統(tǒng)如果加入了新的系統(tǒng)API,將無法檢測(cè)出這些新的API調(diào)用;最后,本文的Android惡意軟件檢測(cè)方案在移動(dòng)終端無法訪問網(wǎng)絡(luò)時(shí)存在功能局限性,只能進(jìn)行簡單的移動(dòng)終端預(yù)處理。
針對(duì)上面提出的三點(diǎn)不足之處,下一步的研究重點(diǎn)是改進(jìn)Android沙盒,降低甚至消除Android沙盒對(duì)虛擬化軟件和Android開源項(xiàng)目的過分依賴,在移動(dòng)終端搭建相對(duì)智能化的可自動(dòng)進(jìn)化升級(jí)的Android惡意軟件預(yù)檢測(cè)機(jī)制,在考慮移動(dòng)終端局限性的同時(shí),盡可能提高惡意軟件檢出效率。
[1]Steven MP,Contrary to what you've heard,Android is almost impenetrable to malware[EB/OL].(2013-10-03)[2015-06-23].http://qz.com/131436/contrary-to-what-you' veeard-android-is-almost-impenetrable-to-malware.
[2]馮博,戴航.Android惡意軟件檢測(cè)方法研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2014,24(2):149-152.
[3]彭國軍,李晶雯,孫潤康,等.Android惡意軟件檢測(cè)研究與進(jìn)展[J].武漢大學(xué)學(xué)報(bào)(理學(xué)版),2015(1):21-33.
[4]何國賢.基于沙盒技術(shù)的多平臺(tái)惡意程序分析工具研究與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2013.
[5]Kasama,Takahiro.Malware Detection Method by Catching Their Random Behavior in Multiple Executions[C]//2012 IEEE/IPSJ 12th International Symposium on Applications and the Internet,Izmir,2012:262-266.
[6]Jana,Suman.Building Secure,Efficient Sandboxes with System Transactions[C]//2011 IEEE Symposium on Security and Privacy,Berkeley,CA,2011:329-344.
[7]劉一田,孔震,李萌.Web應(yīng)用中故障檢測(cè)機(jī)制的研究與改進(jìn)[J].陜西電力,2012(11):66-69.
[8]周云端,何志勇,趙瑞國.基于遺傳算法的加速度控制PID參數(shù)自整定研究[J].火箭推進(jìn),2012(4):68-71.
Malware detection technology research of Android platform based on sandbox
LIN Xin
(Nanjing University of Science and Technology,Nanjing 210094,China)
With the rapid development of Internet technology and computer technology,people's access to resources and services become more convenient,but the security issue with the attendant increasingly prominent.Especially in the use of a wide range of mobile devices,steal information,malicious suction fee malware endless.Due to limited resources and computing power,the mobile terminal cannot install a powerful,high performance requirements virus killing software.This article from the reality,for mobile terminal security requirements and existing software Disadvantages killing depth analysis,the malware detection technology based on a combination of sandbox mobile terminal and the cloud.The technology uses sandbox technology based dynamic analysis,to some extent,compensate for the shortcomings of traditional static analysis methods exist,sandbox unique isolated environment,while ensuring that malicious programs from the system to perform inspection tasks in damage.In addition,taking into account the limitations and reliability of the detection process of the mobile terminal,the mobile terminal after pretreatment,the use of efficient than binary comparison algorithm,and through a network of APK class bytecode files uploaded to the cloud by the virtual machine to execute code to run in the cloud for further testing to improve the reliability and efficiency of detection.
sandbox;android;malware detection;cloud computing
TN929.5
A
1674-6236(2016)12-0048-03
2015-07-15稿件編號(hào):201507110
林鑫(1983—),男,福建閩侯人,碩士,助理研究員。研究方向:計(jì)算機(jī)應(yīng)用技術(shù)。