王力,萬園春,邱衛(wèi)東
基于蜜罐的Android惡意代碼動態(tài)分析
王力,萬園春,邱衛(wèi)東
針對目前Android平臺存在大量的惡意應(yīng)用程序,設(shè)計并實現(xiàn)一種針對Android系統(tǒng)惡意代碼的動態(tài)檢測系統(tǒng)。該系統(tǒng)采用蜜罐的方式對惡意代碼進行觸發(fā),大大提高了代碼覆蓋率,并且可以與其他檢測方法結(jié)合使用,對于惡意代碼分析具有很好的啟示作用。系統(tǒng)的實現(xiàn)則基于QEMU Android模擬器來進行深度定制開發(fā),并實現(xiàn)相應(yīng)的管理模塊,使多個蜜罐可以同時運行于一臺主機,多臺主機同時工作,進行大規(guī)模部署,提高檢測效率。該系統(tǒng)的設(shè)計為黑盒的方式,操作簡單,配置靈活,可以方便對其升級和維護。目前該系統(tǒng)已經(jīng)在某大型互聯(lián)網(wǎng)公司進行部署,運行效果良好。
蜜罐;Android系統(tǒng);惡意代碼檢測;動態(tài)分析
自從2010年第一個Android平臺的木馬程序FakePlayer被發(fā)現(xiàn)之后,Android惡意代碼呈現(xiàn)快速的發(fā)展趨勢。特別是近年來,隨著移動安全領(lǐng)域的發(fā)展,一些安全分析工具和方法也逐漸被開發(fā)出來,比如反編譯、重打包等工具;而這些工具卻也被攻擊者來輕松地進行自動化、批量化的惡意代碼制作。惡意代碼給Android用戶帶來極大的危害,比如截取支付短信、自動發(fā)送短信訂閱增值服務(wù)等惡意行為,就會給用戶造成財產(chǎn)損失的威脅或后果。而且,隨著Android越來越復(fù)雜,碎片化的問題也愈加嚴重,導(dǎo)致很多已發(fā)現(xiàn)的系統(tǒng)漏洞無法得到及時修復(fù),使得許多Android系統(tǒng)的惡意代碼能夠利用這些漏洞進行提權(quán)操作,危害性十分嚴重,這也導(dǎo)致Android平臺的惡意代碼問題一直處于高發(fā)態(tài)勢。
針對Android平臺嚴峻的安全形勢,安全研究人員也開發(fā)了一些惡意代碼檢測分析的工具和平臺,比如谷歌開發(fā)的一款名為Bouncer[1]的動態(tài)檢測系統(tǒng),可以對Google Play上的應(yīng)用使用沙盒技術(shù)進行分析。但是因為Android系統(tǒng)的開放性,如今 Android智能手機越來越受到歡迎,根據(jù)2015年Q2智能機市場份額報告可以看出,Android平臺的市場份額達82.8%?,F(xiàn)在Android平臺上的應(yīng)用數(shù)量以百萬計,據(jù)國外網(wǎng)站Statista統(tǒng)計,直到2015年11月份Google Play上可供下載的應(yīng)用數(shù)量超過180萬[2],此外還有其他各類應(yīng)用市場,如安智市場、豌豆莢等。面對如此龐大的應(yīng)用數(shù)量,檢測效率是一個瓶頸,而且針對本地的特殊情況,國外的一些檢測工具并不足以滿足國內(nèi)用戶的需求,本文提出一種基于蜜罐的惡意應(yīng)用動態(tài)檢測方案,并實現(xiàn)一套管理機制,可以將蜜罐進行大規(guī)模部署,從而提高針對一種或多種惡意行為的監(jiān)測效率。
Android平臺的惡意代碼研究方向主要分為兩種:靜態(tài)分析和動態(tài)分析。也有一些檢測工具和平臺同時采用動靜態(tài)結(jié)合的分析方法,同時利用兩種方法各自的優(yōu)點,實現(xiàn)更加精準和高效的惡意代碼檢測。
靜態(tài)分析是指在不安裝應(yīng)用的條件下,使用軟件逆向的手段,對應(yīng)用進行反編譯之后的代碼邏輯進行分析,判斷該
應(yīng)用是否有惡意行為。這一領(lǐng)域的工具有很多,最典型的就是Androguard[3],其他很多惡意代碼檢測系統(tǒng)都基于它開發(fā)。這些分析工具,主要是利用 Java代碼反編譯比較容易的特點,而且反編譯的代碼之后可閱讀性比較強,可以方便地在代碼片段中尋找惡意的邏輯。但是Android平臺的軟件保護技術(shù)越來越成熟,惡意代碼也利用這些技術(shù)對自己進行隱藏和保護,靜態(tài)分析的方法便顯得捉襟見肘。并且靜態(tài)分析的方法主要針對Java層的代碼,對于Native代碼的分析基本無能為力。
由于靜態(tài)分析的局限性,安全研究人員提出動態(tài)分析的方法。針對靜態(tài)分析難以突破代碼混淆、加密、反射調(diào)用等障礙,研究人員安裝并運行應(yīng)用程序,通過運行期間的行為模式來判斷是否具有惡意行為。Android平臺的動態(tài)分析方法主要分為三種:一是基于系統(tǒng)關(guān)鍵API的調(diào)用監(jiān)控技術(shù),如本文設(shè)計的系統(tǒng);二是基于指令流的動態(tài)分析技術(shù),如DroidScope[4]、ParanoidAndroid[5]等;三是基于數(shù)據(jù)流的動態(tài)分析技術(shù),如 TaintDroid[6]、DroidBox[7]等。但動態(tài)分析的方法也有自身局限性所帶來的問題,包括如何提升代碼覆蓋率[8]來觸發(fā)惡意邏輯,以及如何有效避免惡意應(yīng)用檢測到自己運行在一個動態(tài)分析的環(huán)境中。
當前惡意代碼的動態(tài)檢測面臨的主要瓶頸就在于如何觸發(fā)惡意代碼,本文采用蜜罐這種方式來觸發(fā)惡意代碼,提高代碼覆蓋率,以期能夠減少惡意代碼的漏報率。
對于單個Android模擬器,動態(tài)監(jiān)測模塊的配置框架如圖1所示:
圖1 動態(tài)檢測整體框架
如圖1所示,整個動態(tài)監(jiān)測模塊分為蜜罐管理子模塊和行為監(jiān)控子模塊。
2.1 蜜罐的設(shè)計
“蜜罐”是一種計算機安全機制,系統(tǒng)管理員通過對一個隔離的系統(tǒng)進行定制或者配置,給攻擊者造成迷惑,讓攻擊者以為自己運行在真實的主機環(huán)境,從而觸發(fā)自己的攻擊邏輯,然后系統(tǒng)管理員就可以通過蜜罐的監(jiān)控模塊來對這些攻擊行為進行監(jiān)控和分析。鑒于這樣的思路,并考慮到大規(guī)模部署的成本,本文選擇QEMU android模擬器作為基礎(chǔ),結(jié)合API Hook技術(shù)和反-反模擬器技術(shù)對其進行定制,實現(xiàn)蜜罐環(huán)境。針對不同的情景,蜜罐的類型可以有多種,包括針對隱私竊取檢測的隱私蜜罐、針對root權(quán)限獲取的root蜜罐,以及針對漏洞利用相關(guān)的漏洞蜜罐等等。本文主要以短信蜜罐為例進行說明。
2.1.1 API Hook[9]框架
API Hook是通過控制應(yīng)用對系統(tǒng)API的調(diào)用來達到監(jiān)控應(yīng)用行為的目的,涉及到Java Hook和Inline Hook,整體基于Cydia Substrate[10]框架實現(xiàn)。而且在這一層中我們設(shè)置過濾規(guī)則,將系統(tǒng)內(nèi)置的應(yīng)用過濾掉,將作用范圍集中到被檢測的樣本進程。這樣做的原因在于,既能提高系統(tǒng)的效率,同時也可以避免處理系統(tǒng)應(yīng)用產(chǎn)生的信息所帶來的復(fù)雜性。
2.1.2 反-反模擬器
目前大多數(shù)Android應(yīng)用都實現(xiàn)了反模擬器技術(shù)增加其安全性。模擬器與實體機器有很多不同,反模擬器技術(shù)就是通過檢測這些不同點來實現(xiàn),通常有兩種方式:基于系統(tǒng)特殊文件的檢測和基于系統(tǒng)特殊屬性的檢測。在Android模擬器中有一些模擬器特有的文件,應(yīng)用程序可以通過檢測當前運行系統(tǒng)中是否存在這些文件來判定自己是否運行在模擬器環(huán)境下;而且Android模擬器的一些特定的系統(tǒng)屬性也與實體機器有區(qū)別,應(yīng)用程序也可以通過訪問系統(tǒng)屬性來檢測這些特定的屬性值來判斷自己的運行環(huán)境。惡意應(yīng)用也會利用這些特點,從而針對模擬器環(huán)境隱藏自己的惡意邏輯,甚至不能運行。
而反-反模擬器技術(shù)就是通過對上面兩種檢測進行攔截,并返回實體機器環(huán)境下的正常值,以此避開應(yīng)用程序的檢測。這一部分基本上也是通過Cydia Substrate框架實現(xiàn)。
2.2 短信蜜罐
目前Android平臺上大量的惡意行為主要以短信攔截和偷發(fā)為主,而且尤其針對銀行和支付軟件所發(fā)送的信息。我們設(shè)置的場景是:應(yīng)用可能會攔截用戶收到的銀行或者支付軟件所發(fā)送的驗證信息,盜取用戶的資產(chǎn),或者在用戶不知情的情況下向某些服務(wù)提供商發(fā)送訂閱短信,造成惡意扣費。這些都會給用戶的財產(chǎn)安全帶來很大的危害。
2.2.1 短信情景構(gòu)造
蜜罐中的短信是由蜜罐的管理模塊向蜜罐模擬器發(fā)送的,為了檢測蜜罐中的應(yīng)用對不同短信的反應(yīng)和行為,我們構(gòu)造了不同類型的短信,包括銀行和支付寶等金融相關(guān)的機構(gòu)發(fā)送的驗證短信,也包括普通的會話短信。為了實現(xiàn)自動化處理,我們將這些短信寫入一個XML配置文件中,由管理模塊向蜜罐逐一發(fā)送。短信的配置文件內(nèi)容如圖2所示:
圖2 短信情景構(gòu)造
可以看到我們構(gòu)造的短信內(nèi)容涵蓋不同的類型,這樣就能夠更加精確地判斷待檢測應(yīng)用程序攔截短信的行為。由于這些短信基本都是中文字符,用很多常用的短信發(fā)送命令都會導(dǎo)致亂碼。最終我們通過構(gòu)建能夠正確傳輸中文的 PDU(protocol description unit)[11]數(shù)據(jù),然后使用telnet連接作為蜜罐的 Android模擬器,再通過其自帶的短信發(fā)送命令“sms pdu {pdu}”[12]來發(fā)送短信。
2.2.2 評分細則和輸出格式
我們已經(jīng)設(shè)置好了短信蜜罐,也能夠?qū)?yīng)用程序進行檢測。接下來,就該對檢測結(jié)果進行評估。我們根據(jù)惡意行為發(fā)生的場景,預(yù)先對不同的行為設(shè)置不同的分值,分數(shù)越高代表對應(yīng)行為危險程度越高,最后再將所有分數(shù)之和作為最終整體的評估標準。評分細則如表1所示:
表1 評分細則
access_calllog_data 訪問通話記錄3 access_bookmarks_data 訪問書簽數(shù)據(jù) 2
最終的動態(tài)分析結(jié)果以JSON[13]文件格式輸出,分為簡單報告和詳細報告兩種。詳細報告的格式如圖3和圖4所示:
圖3 JSON詳細報告(1)
圖4 JSON詳細報告(2)
其中score表示得分,0分表示沒有檢測出惡意行為,大于0分表示有惡意行為。items是一個映射表,key為惡意行為的名稱,如上圖中的 non_interactive_Root_Ac cess_Operation和non_interactive_Uninstalling_Silenced,分別表示root權(quán)限的獲取和靜默卸載。表中的每個value表示一條惡意行為,將其展開來看,繼續(xù)分為三個部分,score表示該行為的分值,type表示其所屬類型,logs保存了相關(guān)API的日志信息。
2.3. 行為檢測
各種蜜罐的檢測結(jié)果都依賴于系統(tǒng)能否準確地對各種惡意行為進行監(jiān)控,所以我們需要一個行為檢測模塊來判斷應(yīng)用的惡意行為是否被觸發(fā)。比如上文提到的短信蜜罐,因為Android系統(tǒng)是以廣播的形式來向所有正在運行的應(yīng)用程序通知短信到達的信息,所以要判斷被測試的應(yīng)用程序是否會攔截短信,就需要判斷其是否調(diào)用了android.content.Broad castReceiver.abortBroadcast()這個系統(tǒng)API;如果待檢測的應(yīng)用搶先接收了短信廣播,并調(diào)用該API終止了短信的廣播消息,就能夠在用戶不知情的情況下攔截用戶的短信。因此我們對于行為檢測模塊主要是基于對系統(tǒng)敏感 API的監(jiān)控來實現(xiàn)。
我們采用了可擴展的方式來對行為檢測模塊進行設(shè)計,以便于升級和維護,主要是將需要監(jiān)控的系統(tǒng)敏感API分類寫入一個XML格式的配置文件中。對于待檢測的應(yīng)用程序,系統(tǒng)會在其啟動之前預(yù)先讀取并分析該配置文件的內(nèi)容,并對其中所列舉的系統(tǒng)API進行監(jiān)控。
配置文件的內(nèi)容如下圖所示:
圖4 行為檢測配置
該文件是按照層次化的組織形式來整理的,從高到低所對應(yīng)的關(guān)鍵字表示的意義依次是:category表示API所屬類型,class表示API具體的類名,method表示API對應(yīng)的方法名,item表示對惡意行為的描述。關(guān)于行為檢測模塊,我們也是通過打分機制來進行最終評估,不同惡意行為對應(yīng)的打分細則如前文評分細則表所示。
2.4 系統(tǒng)的部署
前面已經(jīng)詳細介紹了單個蜜罐的設(shè)計與實現(xiàn)。在本文中動態(tài)檢測系統(tǒng)被設(shè)計成為一個黑盒的形式,系統(tǒng)接收一個待檢測的應(yīng)用,通過一系列內(nèi)部處理獲得一個輸出報告,而黑盒主要是通過 Android模擬器對進行定制來實現(xiàn)。結(jié)合Android模擬器本身的特點,我們很容易能夠進行大量的部署。
同時,為了能夠提高系統(tǒng)的檢測效率,對于Android模擬器的啟動采用快照的方式??煺諉拥姆绞接袃蓚€優(yōu)點:一方面,可以消除前一被檢測應(yīng)用程序在系統(tǒng)中留下的痕跡,從而每次分析待檢測的應(yīng)用程序時能夠保證其運行在一個純凈的環(huán)境中避免干擾;另一方面,快照可以加快系統(tǒng)啟動速度,從而提高檢測效率。采用Android模擬器的方式可以在同一臺高性能的主機上同時運行多個Android模擬器,以并行的方式對應(yīng)用程序進行檢測,這樣方便進行大規(guī)模部署。
但是這樣也會使管理變得比較復(fù)雜,本文采用了如圖5所示的架構(gòu)設(shè)計:
圖5 部署架構(gòu)
總體管理模塊負責(zé)管理各個主機,并從每個主機中定時獲取檢測結(jié)果;模擬器管理模塊負責(zé)對模擬器進行啟動和回收;模擬器通信模塊負責(zé)保證與每個模擬器之間的穩(wěn)定鏈接,保證命令的正確傳輸。這三種模塊都是由Python開發(fā)。
本文在實現(xiàn)蜜罐動態(tài)檢測系統(tǒng)的基礎(chǔ)上,隨機選擇了10個樣本進行檢測,各個樣本的檢測時間如圖6所示:
圖6 動態(tài)檢測時間表
檢測時間包括:啟動動態(tài)檢測系統(tǒng)的時間、安裝樣本的時間和對樣本進行動態(tài)分析的時間。不同樣本之間的檢測時間也不相同,造成這一現(xiàn)象的主要原因有兩種:樣本的大小和具體申請的權(quán)限。樣本越大安裝時間越久,而樣本所申請的權(quán)限類型會影響到系統(tǒng)是否會啟動相關(guān)的蜜罐來對其進行監(jiān)控。
從表中的數(shù)據(jù)可以得出,每個樣本的平均檢測時間為223.9 秒,每臺模擬器正常工作一天可以處理386個的樣本;若是有多臺主機,每臺主機上運行多個模擬器,這樣的處理效率相當可觀。
本文針對Android平臺提出了一種基于蜜罐的惡意代碼動態(tài)檢測方法。通過試驗可以看出,這種檢測方法的效率比較理想,而且操作簡單,適合大規(guī)模部署;還具有配置靈活的特點,可以很容易進行升級和維護。并且,蜜罐可以與其他檢測方法結(jié)合使用,進而大大提高檢測效率和精度,這是值得后面研究借鑒的一種思路。但是本文的方法主要針對的是Java層的系統(tǒng)API的監(jiān)控,而目前隨著開發(fā)人員技能的提升,很多惡意應(yīng)用逐漸采用 native代碼進行開發(fā),為Android平臺安全研究帶來新的挑戰(zhàn)。再者,通過蜜罐的方法雖然很大程度上提高了代碼的觸發(fā)率,但是針對很多情景效果依然不夠理想,比如惡意代碼的定時運行等,未來在這一方面也要進行更多的研究。
[1] Delosières L, García D. Infrastructure for detecting Android malware[M]//Information Sciences and Systems 2013. Springer International Publishing, 2013: 389-398.
[2] Statista. Number of available applications in the Google Play Store from December 2009 to November 2015 [EB/OL]. [2016-3-2]. http://www.statista.com/statistics 266210/number-of-available-applications-in-the-google-pl ay-store/.
[3] Desnos A. Androguard: Reverse engineering, malware and goodware analysis of android applications... and more (ninja!)[EB/OL]. 2013-03-26]. http://code.google.com/p/ androguard.
[4] Yan L K, Yin H. DroidScope: Seamlessly Reconstructing the OS and Dalvik Semantic Views for Dynamic Android malware analysis[C]//21st USENIX security symposium. Bellevue, USA. 2012: 569-584.
[5] Georgios Portokalidis, Philip Homburg, Kostas Anagnostakis, et al. Paranoid Android: versatile protection for smartphones[C]//Proceedings of the 26th Annual Computer Security Applications Conference. New York, USA. ACM :2010.
[6] Enck W, Gilbert P, Han S, et al. TaintDroid: an information-flow tracking system for realtime privacy monitoring on smartphones[J]. ACM Transactions on Computer Systems (TOCS), 2014, 32(2): 5.
[7] P Lantz, A Desnos, K Yang. DroidBox: An Android application sandbox for dynamic analysis [EB/OL]. (2014)[2016-3-2]. https://code. google. com/p/droidbox.
[8] Chun-Ying Huang, Ching-Hsiang Chiu, Chih-Hung Lin, Han-Wei Tzeng. Code Coverage Measurement for Android Dynamic Analysis Tools[C]//Mobile Services (MS), 2015 IEEE International Conference on. New York, NY, USA: IEEE, 2015.
[9] Wikipedia. Hooking [EB/OL]. (2016-2-18)[2016-3-2]. https://en.wikipedia.org/wiki/Hooking.
[10] Cydia Substrate [EB/OL]. [2016-3-2] http://www.cydias ubstrate.com/.
[11] Advanced Wireless Planet. SMS PDU Mode [EB/OL]. (2009-04-18)[2016-3-2]. http://www.gsm-modem.de/sms-pdu-mode.html.
[12] Matos V. Android Environment Emulator[J]. Cleveland State University, Jul, 2009, 20: 11.
[13] Tamada R. Android JSON Parsing Tutorial[J]. 2012.
Dynamic Analysis of Android Malware Based on Honeypot
Wang Li , Wan Yuanchun, Qiu Weidong
(School of Electronic Information and Electrical Engineering, Shanghai Jiao Tong University, Shanghai 200240, China)
A dynamic detection system is designed for detecting the increasing amounts of Android malwares. The system is innovatively implemented to trigger the malicious code with honeypots, which can efficiently expand the code coverage. Also, this method can work with other malware detection approaches, and it will be an important hint role in this field. QEMU Android emulator is used to develop the system with a deep customization. Meanwhile, a management model has been developed, which can make multi-emulators run on a host at the same time and many hosts liks this work together, so that the detection efficiency can be largely improved. Working just like a black box, the system can be operated easily and configured flexibly, and be allowed to maintain and update more conveniently. So far, this system has been deployed by an internet giant, and showed a good performance.
Honeypot; Android OS; Malware detection; Dynamic analysis
TP393
A
1007-757X(2016)11-0050-04
2016.10.13)
王 力(1993-),男,上海交通大學(xué),電子信息與電氣工程學(xué)院,碩士研究生,研究方向:信息安全,移動平臺應(yīng)用安全,上海 200240
萬園春(1991-),男,上海交通大學(xué),電子信息與電氣工程學(xué)院,碩士研究生,研究方向:移動平臺應(yīng)用安全,上海 200240
邱衛(wèi)東(1973-),男,上海交通大學(xué),電子信息與電氣工程學(xué)院,教授、博士,博士生導(dǎo)師,研究方向:計算機取證、密碼分析破解、
密鑰防護及電子信息對抗等,上海 200240