王懷軍,王 琳,房鼎益,劉志偉
(西北大學(xué)信息科學(xué)與技術(shù)學(xué)院/愛迪德物聯(lián)網(wǎng)信息安全聯(lián)合實驗室,陜西西安 710127))
據(jù)美國市場研究機構(gòu) comScore調(diào)查[1],至2013年底Android移動平臺在美國智能手機市場的占有率已經(jīng)達到52%,已成為全球第一大智能移動操作系統(tǒng)。由于Android平臺的APK應(yīng)用可從第三方應(yīng)用市場、網(wǎng)站論壇等下載并直接安裝到手機,易被惡意軟件制造者利用,他們通過篡改流行APK應(yīng)用傳播惡意軟件。且在傳統(tǒng)PC客戶端,用戶通常會安裝安全防護類軟件來查殺木馬病毒,而在Android平臺,這類安全防護類應(yīng)用不具有root權(quán)限,和其他普通應(yīng)用處于同一級別,沒有管理和操作其他應(yīng)用的特權(quán)。因此,只能在未獲取root的情況下靜態(tài)檢測惡意應(yīng)用(通過對包名等特征進行匹配)、應(yīng)用加鎖、短信加密、手機防盜等功能,不能有效防止惡意軟件對用戶隱私數(shù)據(jù)的非法監(jiān)聽[2]。
本文對原生Android系統(tǒng)進行擴展,增強Android系統(tǒng)監(jiān)控惡意軟件的能力。
目前,Android平臺惡意軟件威脅主要有以下方面:①手機賬單欺詐。惡意軟件可在后臺撥打聲訊臺電話、惡意訂購運營商SP業(yè)務(wù)等,給用戶造成大額通信費用。②竊取用戶隱私。竊取用戶通訊錄、短信特定數(shù)據(jù)文件等隱私信息。③破壞手機系統(tǒng)。④惡意控制后門。在系統(tǒng)留下“后門”,提供惡意操作接口,實現(xiàn)惡意操作。⑤危害移動網(wǎng)絡(luò)環(huán)境。大量惡意軟件分布在不同用戶的移動設(shè)備,構(gòu)成了分布式的攻擊網(wǎng)絡(luò)。此外,誘騙用戶點擊或強制性在后臺訪問廣告、下載推廣應(yīng)用程序,影響用戶的體驗,給用戶造成額外的流量費用??梢姡瑦阂釧PK應(yīng)用給用戶帶來嚴峻的安全威脅。
眾多APK應(yīng)用數(shù)量和混亂的APK應(yīng)用市場管理,使得檢測驗證惡意應(yīng)用的工作非常困難。當(dāng)前APK惡意軟件的檢測和防范主要通過2個方面的技術(shù):靜態(tài)檢測和動態(tài)檢測。
靜態(tài)檢測技術(shù)通?;谀嫦蚬こ痰姆椒▽PK文件進行靜態(tài)分析,利用語義分析以及特征碼判別是否惡意。語義分析通常不易自動化,耗費大量時間和精力,且檢測效率取決于分析者水平,檢測結(jié)果不穩(wěn)定。特征碼識別[3-4]減少人工參與,可實現(xiàn)自動化檢測。它利用被檢測軟件特征與特征指標(biāo)的匹配程度判定惡意行為[5]。對于具有新特征的惡意應(yīng)用,采用特征碼識別有一定延遲性,且移動設(shè)備自身的計算和存儲資源有限,不適合大量的匹配計算。因此,靜態(tài)檢測方案僅可作為惡意檢測的輔助手段。
動態(tài)監(jiān)控技術(shù)是在惡意軟件執(zhí)行過程中阻攔惡意行為[6],Android系統(tǒng)中現(xiàn)有的安全防護類軟件大多使用了動態(tài)監(jiān)控技術(shù)。Android提供了一系列系統(tǒng)廣播通知應(yīng)用系統(tǒng)狀態(tài)的變化,應(yīng)用程序通過注冊廣播接收器(Broadcast Receiver)獲得相應(yīng)事件的感知能力。聯(lián)網(wǎng)開關(guān)是利用iptables防火墻來實現(xiàn)的[7]。此外,在動態(tài)檢測技術(shù)中也會應(yīng)用特征匹配技術(shù),選擇聯(lián)網(wǎng)、短信發(fā)送等應(yīng)用程序行為[8]作為特征指標(biāo)。
動態(tài)行為檢測技術(shù)是通過對指令執(zhí)行序列或API調(diào)用序列確定程序行為,不受到混淆、加密等規(guī)避檢測技術(shù)的影響,執(zhí)行效率也較高。因此,本文主要從對敏感數(shù)據(jù)跟蹤和敏感行為監(jiān)控兩方面,研究Android平臺惡意軟件的動態(tài)監(jiān)控方法,并設(shè)計基于Android的智能移動操作系統(tǒng)SecuD-roid。
SecuDroid是在Android系統(tǒng)的基礎(chǔ)上進行一系列擴展,以阻斷APK應(yīng)用的惡意行為,保護用戶隱私數(shù)據(jù)。旨在彌補Android系統(tǒng)在軟件運行過程中權(quán)限管理的缺陷,全方位保護用戶隱私數(shù)據(jù)、保障系統(tǒng)安全的智能移動操作系統(tǒng)。
SecuDroid主要遵循以下原則:① 保護效果行之有效。通過定義的隱私數(shù)據(jù)源,捕獲隱私數(shù)據(jù)傳播過程,攔截關(guān)鍵行為,確保隱私數(shù)據(jù)安全。另一方面,對于可能危及用戶隱私或系統(tǒng)安全的行為,準(zhǔn)確報警并阻斷。②避免過度使用設(shè)備資源。移動設(shè)備的計算、存儲資源有限,無法承受過重負荷的檢測防范系統(tǒng)。③不影響應(yīng)用或系統(tǒng)正常行為。在保護隱私數(shù)據(jù)過程中不破壞數(shù)據(jù),對關(guān)鍵行為攔截不影響系統(tǒng)或應(yīng)用正常行為。④用戶的可配置性。即可由用戶指定需要保護的隱私敏感數(shù)據(jù)和敏感操作行為。
SecuDroid對已安裝應(yīng)用軟件的行為實時監(jiān)控,從數(shù)據(jù)使用角度考慮,采用污點傳播分析技術(shù)來分析用戶隱私數(shù)據(jù)使用是否得當(dāng);從應(yīng)用程序行為角度考慮,對關(guān)鍵系統(tǒng)函數(shù)進行監(jiān)控,一旦檢測到數(shù)據(jù)濫用惡意行為即向用戶報警。可見,SecuDroid動態(tài)監(jiān)控主要包含兩個模塊:污點數(shù)據(jù)傳播分析和敏感行為監(jiān)控。
污點數(shù)據(jù)傳播分析模塊將污點數(shù)據(jù)分析技術(shù)引入隱私數(shù)據(jù)保護[9],從數(shù)據(jù)使用角度出發(fā),對數(shù)據(jù)使用過程進行跟蹤,檢測數(shù)據(jù)是否被濫用,該模塊基于Android隱私數(shù)據(jù)保護項目 Taint-Droid[10]實現(xiàn),TaintDroid 將污點數(shù)據(jù)分析技術(shù)引入隱私數(shù)據(jù)保護,實現(xiàn)全面隱私數(shù)據(jù)監(jiān)測,包括進程間消息、變量級、函數(shù)級和文件級的監(jiān)測。敏感行為監(jiān)控模塊是監(jiān)控可能危及用戶隱私和系統(tǒng)安全的關(guān)鍵操作,對高危操作進行記錄或報警。由于APK應(yīng)用的惡意行為通過多種途徑實現(xiàn),SecuDroid從應(yīng)用層、系統(tǒng)層和內(nèi)核層等多層次進行敏感行為監(jiān)控。
下面分別對污點數(shù)據(jù)傳播分析和敏感行為監(jiān)控進行介紹。
根據(jù)對TaintDroid的深入分析,利用污點數(shù)據(jù)傳播分析對隱私數(shù)據(jù)進行監(jiān)測。如圖1所示,通過對隱私數(shù)據(jù)添加污點標(biāo)記作為污點數(shù)據(jù)源(要跟蹤檢測的隱私數(shù)據(jù)),污點標(biāo)記跟蹤污點數(shù)據(jù)源的傳播過程,最后利用檢測節(jié)點檢測數(shù)據(jù),通過污點標(biāo)記判斷隱私類型,根據(jù)傳播途徑分析是否有隱私泄漏行為。通過分析,監(jiān)控流程主要包含3個步驟:污點數(shù)據(jù)標(biāo)記,污點數(shù)據(jù)跟蹤和污點數(shù)據(jù)檢測。
圖1 基于污點數(shù)據(jù)傳播的監(jiān)控流程Fig.1 Flow ofmonitoring based on tainted data disseminate
3.1.1 污點數(shù)據(jù)標(biāo)記 在Android系統(tǒng)中污點數(shù)據(jù)被定義為隱私數(shù)據(jù),如短信數(shù)據(jù)、聯(lián)系人數(shù)據(jù)、位置信息[11]等。在SecuDroid中定義一系列隱私數(shù)據(jù)標(biāo)記,如Secu-Location表示位置信息數(shù)據(jù)標(biāo)記,Secu-Contact表示聯(lián)系人信息數(shù)據(jù)標(biāo)記,Secu-Mic表示麥克風(fēng)輸入信息數(shù)據(jù)標(biāo)記等。隱私數(shù)據(jù)在數(shù)據(jù)源處被附加污點標(biāo)記,這些標(biāo)記以一個32位整型數(shù)的形式附于被標(biāo)記數(shù)據(jù)。
3.1.2 污點傳播原理 在Dalvik虛擬機解釋器中污點標(biāo)記在變量間傳播,當(dāng)應(yīng)用程序調(diào)用下層本地方法時,變量和污點標(biāo)記一起被傳入或返回,進程間的數(shù)據(jù)和污點標(biāo)記使用Binder方式傳播。
污點數(shù)據(jù)主要在變量間、方法間及進程間進行傳播。變量間傳播是指污點標(biāo)記在變量間傳播,如變量PhoneNSecu-Number被附加讀取手機號的污點標(biāo)記,若 Pm=Zone+PhoneNSecu-Number,則 Pm也被附加該污點標(biāo)記;方法間傳播是指在函數(shù)的調(diào)用過程中,污點標(biāo)記通過函數(shù)的參數(shù)或返回值進行傳播。如FuncA調(diào)用FuncB,則FunB中的污點數(shù)據(jù)也會傳播給FunA;進程間傳播是指在進程通信過程中,污點標(biāo)記隨著傳播的消息傳遞給其他進程。
3.1.3 污點數(shù)據(jù)檢測 檢測節(jié)點通過檢查被發(fā)送出的數(shù)據(jù)是否帶有預(yù)定義的污點標(biāo)記,判斷是否有隱私泄露行為。主要通過在數(shù)據(jù)的關(guān)鍵接口處進行污點數(shù)據(jù)標(biāo)記檢測,如果發(fā)現(xiàn)流出設(shè)備的數(shù)據(jù)中包含污點標(biāo)記,則將污點數(shù)據(jù)的使用信息打印在log信息中。對惡意行為進行控制,為用戶提供信息,由用戶決定是否放行,提高動態(tài)監(jiān)控的準(zhǔn)確度和實用性。
基于惡意行為的實現(xiàn)方法,監(jiān)控涉及敏感操作的關(guān)鍵行為。SecuDroid系統(tǒng)在應(yīng)用級通過ContentProvider監(jiān)聽,攔截“利用讀取隱私數(shù)據(jù)庫泄漏隱私”的行為;在系統(tǒng)級監(jiān)控關(guān)鍵函數(shù),攔截“利用相關(guān)Service泄漏隱私”的行為;在內(nèi)核級監(jiān)控Linux系統(tǒng)調(diào)用,攔截“通過調(diào)用本地方法泄漏隱私”的行為。
3.2.1 應(yīng)用級監(jiān)聽 在Android系統(tǒng)中有很多涉及用戶隱私或系統(tǒng)信息安全的公共數(shù)據(jù)庫,如日程表、聯(lián)系人、短信/彩信、通話記錄等,這些信息以SQLite數(shù)據(jù)庫的形式(.db文件)保存在相應(yīng)文件目錄中,并提供了ContentProvider接口供應(yīng)用程序訪問。如日程表信息保存路徑為“/data/data/com.a(chǎn)ndroid.providers.calendar/databases/calendar.db”。
在SecuDroid中,利用ContentObserver觀察者模式對數(shù)據(jù)庫內(nèi)容進行監(jiān)視,觀察和捕捉應(yīng)用程序訪問ContentProvider接口時引起的數(shù)據(jù)庫變化,當(dāng)其發(fā)生變化時(如寫操作),觸發(fā)回調(diào)函數(shù)進行處理。如監(jiān)視發(fā)送短信行為,當(dāng)有應(yīng)用程序發(fā)送短信時,短信發(fā)件箱數(shù)據(jù)庫的記錄會增加,根據(jù)監(jiān)視到短信數(shù)據(jù)庫的變化,在其回調(diào)函數(shù)中通知用戶——系統(tǒng)正在發(fā)送短信。
3.2.2 系統(tǒng)級監(jiān)控 通過Android framework層,對觸發(fā)敏感行為的API[12]進行監(jiān)控。在Android源碼中對撥打電話、發(fā)送短信、聯(lián)網(wǎng)等敏感行為的API函數(shù)進行修改,在其執(zhí)行關(guān)鍵操作之前插入用戶決策代碼,若用戶同意操作,則繼續(xù)執(zhí)行原來API功能,否則,返回。SecuDroid重點監(jiān)控涉及撥打電話、發(fā)送短信、聯(lián)網(wǎng)等敏感行為API。如監(jiān)控發(fā)送短信行為,可在Android源碼中修改Sms-Manager類中的sendText方法。
3.2.3 內(nèi)核級監(jiān)視 Linux系統(tǒng)提供實現(xiàn)各種系統(tǒng)功能的子程序(過程)供用戶空間的應(yīng)用程序調(diào)用,當(dāng)程序需要訪問系統(tǒng)資源時,通過系統(tǒng)調(diào)用命令調(diào)用系統(tǒng)過程。Android系統(tǒng)基于Linux內(nèi)核,也支持系統(tǒng)調(diào)用過程。在Android的Bionic系統(tǒng)庫中,定義了多種系統(tǒng)調(diào)用過程。SecuDroid通過在Bionic系統(tǒng)庫中涉及敏感操作的系統(tǒng)調(diào)用過程(如 open,execve,socket,sendto等)中添加監(jiān)視代碼,對系統(tǒng)調(diào)用過程進行監(jiān)控。
綜上所述,基于污點數(shù)據(jù)跟蹤隱私數(shù)據(jù),記錄了隱私數(shù)據(jù)的詳細傳播過程,為用戶分析APK應(yīng)用的惡意性提供依據(jù),為實時敏感行為的惡意性判斷提供支持。從應(yīng)用級、系統(tǒng)級、內(nèi)核級監(jiān)控檢測應(yīng)用程序的敏感行為,提高了監(jiān)控的全面性。
根據(jù)Android用戶安裝應(yīng)用程序的獲取來源,測試樣本主要從以下來源選取:①Google Play官方應(yīng)用市場;②第三方應(yīng)用市場、網(wǎng)站或論壇;③自行編寫的應(yīng)用程序。
通過安裝、運行樣本應(yīng)用軟件,測試動態(tài)監(jiān)控方案的有效性。運行安裝后應(yīng)用,盡可能完成各項主要操作。通過獲取敏感行為及其使用的隱私數(shù)據(jù),驗證動態(tài)監(jiān)控方案的有效性。最后,對樣本進行逆向工程分析,并將SecuDroid系統(tǒng)的測試結(jié)果與人工分析結(jié)果進行對比,分析SecuDroid系統(tǒng)的檢測效果。
通過執(zhí)行軟件樣本得到有效性測試結(jié)果,如表1所示。
從表1可看出:
1)動態(tài)監(jiān)控保護效果比較理想,可以發(fā)現(xiàn)和攔截大部分惡意行為,對于惡意扣費和竊取隱私類的惡意軟件防范效果顯著。但對于留有遠程控制后門的惡意應(yīng)用軟件(小球之星 v1.0和NormalDemo v1.0),因為其觸發(fā)條件非常隱蔽,在測試條件下未能觸發(fā)部分惡意行為,因此未能成功檢測。通過逆向分析,當(dāng)觸發(fā)后門條件惡意行為時,SecuDroid可以發(fā)現(xiàn)并阻止。
2)動態(tài)監(jiān)控方案目前不能發(fā)現(xiàn)阻攔短信接收提示的惡意行為。
3)墨跡天氣和公交查詢發(fā)送短信和定位行為是應(yīng)用自身需求,不能僅依據(jù)敏感行為作為判定惡意軟件的標(biāo)準(zhǔn),應(yīng)進一步分析敏感行為操作是否合理。此外,若用戶接受了應(yīng)用的該行為,則該行為即為可信行為。
SecuDroid是對Android 2.3.4系統(tǒng)源碼的修改和擴展,并重新編譯Android系統(tǒng)內(nèi)核,會對其應(yīng)用的運行效率產(chǎn)生一定影響。選擇以下常見應(yīng)用行為測試性能影響:① 裝載應(yīng)用程序;②撥打電話;③ 新建聯(lián)系人;④ 添加瀏覽器書簽;⑤ 復(fù)制300kB的文件。
在原生Android系統(tǒng)和SecuDroid系統(tǒng)上分別測試以上行為的執(zhí)行時間,記為 tandroid和tsecudriod,性能消耗增長率測試結(jié)果如表2所示。
由表2可以看出,相比原生Android系統(tǒng),SecuDroid系統(tǒng)的基本應(yīng)用行為會增加一定的性能消耗,但增長率基本介于5% ~20%之間。
本節(jié)對SecuDroid系統(tǒng)進行有效性測試和性能影響測試及分析。針對SecuDroid系統(tǒng)的保護模塊功能,選擇了存在惡意扣費、竊取隱私等行為的多個Android惡意應(yīng)用樣本以及少量正常應(yīng)用樣本進行有效性測試,驗證了SecuDroid系統(tǒng)監(jiān)控方案的有效性。此外,通過原生Android系統(tǒng)和SecuDroid系統(tǒng)中常用應(yīng)用行為的消耗時間對比,發(fā)現(xiàn),未對基本應(yīng)用行為的性能造成太大影響。
表1 動態(tài)監(jiān)控有效性測試Tab.1 Effectiveness test of dynam ic monitoring
表2 性能測試Tab.2 Performance Test
本文分析了APK惡意軟件造成的安全威脅,介紹了檢測和防范惡意APK應(yīng)用的一般技術(shù),提出了從動態(tài)監(jiān)控方面進行惡意分析的必要性,實現(xiàn)了增強安全機制的Android系統(tǒng)—SecuDroid。其中,利用污點數(shù)據(jù)傳播技術(shù)檢測用戶的隱私信息是否被泄露或濫用,結(jié)合關(guān)鍵API行為監(jiān)控技術(shù),在應(yīng)用層、系統(tǒng)層以及內(nèi)核層對敏感行為進行監(jiān)視和攔截,實現(xiàn)對隱私數(shù)據(jù)的跟蹤和惡意行為的監(jiān)控。并通過實驗驗證SecuDroid系統(tǒng)的有效性和可行性。
下一步研究工作中,將完善對敏感數(shù)據(jù)和行為的全面監(jiān)控。同時,進一步研究性能優(yōu)化問題。
[1] MILLER C.Mobile attacks and defense[J].Security& Privacy,IEEE,2011,9(4):68-70.
[2] IDIKA N,MATHUR A P.A survey ofmalware detection techniques[R].USA:Department of Computer Science,Purdue University,2007.
[3] ZHOU Y,JIANG X.Dissecting android malware:Characterization and evolution[C]∥2012 IEEE Symposium on Security and Privacy(SP),San Francisco Bay Area,California:IEEE,2012:95-109.
[4] SCHMIDT A D,BYE R,SCHMIDT H G,et al.Static analysis of executables for collaborativemalware detection on android[C]//ICC'09.IEEE International Conference on Communications, Dresden:IEEE,2009:1-5.
[5] SHABTAI A.Malware Detection on Mobile Devices[C]//2010 Eleventh International Conference on Mobile Data Management(MDM),Taipei:IEEE,2010:289-290.
[6] SCHMIDT A D,SCHMIDTH G,CLAUSEN J,et al.Enhancing security of linux-based android devices[C]//Linux Kongress-15th International Linux System Technology Conference.Hamburg:University of Hamburg,2008.
[7] CHIANG H S,TSAURW J.Mobile Malware Behavioral Analysis and Preventive Strategy Using Ontology[C]//2010 IEEE Second International Conference on Social Computing(SocialCom),Minneapolis:IEEE,2010:1080-1085.
[8] ZHU D Y,JUNG J,SONG D,et al.TaintEraser:protecting sensitive data leaks using application-level taint tracking[J].ACM SIGOPS Operating Systems Review,2011,45(1):142-154.
[9] ENCK W,GILBERT P,CHUN B G,et al.Taint-Droid:an information-flow tracking system for realtime privacy monitoring on smartphones[C]//Proceedings of the 9th USENIX Conference on Operating Systems Design and Implementation,Vancouver:ACM,2010:1-6.
[10] SHAKYA N.Privacy Issues of Antivirus Apps for Smartphones[C]//The 12th Winona Computer Science Undergraduate Research Symposium,Winona:Winona State University,2012:17.
[11] FELT A P,CHIN E,HANNA S,et al.Android permissions demystified[C]//Proceedings of the 18th ACM Conference on Computer and Communications,Security:ACM,2011:627-638.