曹歡歡,李永忠
(江蘇科技大學(xué) 計算機科學(xué)與工程學(xué)院,江蘇 鎮(zhèn)江 212003)
Android是一個開源的移動平臺操作系統(tǒng),占據(jù)了大部分市場份額。隨著Android的快速發(fā)展,針對Android的惡意軟件也越來越多。從2004年第一個手機病毒出現(xiàn)起[1],現(xiàn)在已發(fā)展有數(shù)百種,而且還在繼續(xù)增長。根據(jù)日前發(fā)布的“2014年上半年手機安全狀況報告”顯示,2014年上半年互聯(lián)網(wǎng)安全中心共截獲Android平臺新增惡意程序樣本21.53萬個,較2013年同期增長116%,手機木馬增長一倍、垃圾短信規(guī)模已超百億,造成用戶大量的直接或間接經(jīng)濟損失、隱私泄露等危害。
Android惡意軟件的危害越來越嚴(yán)重,本文結(jié)合Android系統(tǒng)自身特點,提出并實現(xiàn)了一個安全檢測軟件。
Android的系統(tǒng)架構(gòu)采用了分層架構(gòu)的思想[2],如圖1所示。從上層到底層共包括四層,分別是應(yīng)用層(Applications)、應(yīng)用框架層(Application Framework)、系統(tǒng)庫和Android運行時 (Libraries、Android Runtime) 以 及 Linux 內(nèi) 核 層 (Linux Kernel)。
應(yīng)用層主要是一些核心應(yīng)用程序包,包括系統(tǒng)自帶的和用戶安裝的應(yīng)用程序。應(yīng)用框架層是Android應(yīng)用開發(fā)的基礎(chǔ),為應(yīng)用程序提供API,包括活動管理器、內(nèi)容提供者、電話管理器、位置管理器等。系統(tǒng)庫為應(yīng)用框架層提供C/C++庫,Android運行時提供JAVA核心庫和Dalvik虛擬機。Linux內(nèi)核層是Android的核心,也是作為硬件與軟件棧的抽象層,提供底層服務(wù)。

圖1 Android系統(tǒng)架構(gòu)圖Fig.1 System architecture of Android
針對Android系統(tǒng)的惡意軟件類型包括:
1)資費消耗[3]:這類惡意軟件在后臺連網(wǎng),上傳用戶的隱私信息或者在后臺下載其他應(yīng)用程序、訂購業(yè)務(wù)或者其它病毒程序。
2)獲取隱私[4]:這類惡意軟件主要竊取用戶位置信息、通訊錄、支付信息等隱私資料,通過網(wǎng)絡(luò)上傳到指定的服務(wù)器或者通過短信發(fā)送到指定的手機上。
3)流氓軟件:這類惡意軟件一般從網(wǎng)絡(luò)上下載或者被二次打包到別的應(yīng)用中,難以卸載,影響手機的正常使用。
4)惡意扣費軟件[5]:這類惡意軟件通過短信或者電話等詐騙用戶,或在用戶不知情的情況下,向SP訂購付費業(yè)務(wù),造成用戶的經(jīng)濟損失。
現(xiàn)在惡意軟件大多采用偽裝的方式,騙取用戶安裝并授予一定的權(quán)限,之后濫用這些權(quán)限在后臺執(zhí)行一些特定行為,給用戶造成損失。因此本文著重加強短信、電話、網(wǎng)絡(luò)方面的檢測,加強手機的安全。
本文根據(jù)Android手機特點,研究實現(xiàn)了一個在應(yīng)用層上保護(hù)和加強系統(tǒng)和用戶數(shù)據(jù)的安全檢測軟件[6-8]。
該軟件主要根據(jù)病毒特征[9-10],進(jìn)行病毒掃描,查殺病毒程序,同時監(jiān)聽短信、電話、網(wǎng)絡(luò)、流量、支付環(huán)境和程序安裝等敏感行為,實時檢測系統(tǒng)的安全狀態(tài)。系統(tǒng)主要由5個模塊構(gòu)成:手機殺毒、支付檢測、安全檢測、安全日志、和手機防盜模塊,如圖2所示。

圖2 Android安全檢測系統(tǒng)結(jié)構(gòu)圖Fig.2 Schematic diagram of the Android security detection system
系統(tǒng)中手機殺毒和支付檢測模塊是提取手機的特征碼,并與病毒庫中的特征碼進(jìn)行比較,是依賴已有的病毒庫來殺毒的。安全檢測模塊是在后臺檢測手機的短信、電話、流量等來判斷程序是否正常,除了依賴已有的病毒庫,還由用戶來進(jìn)行判斷程序是否是病毒程序。日志模塊用來顯示檢測的信息,手機防盜模塊防止手機丟失后,用戶的信息泄露。系統(tǒng)的這些模塊可以全面的保護(hù)Android手機用戶的安全。
殺毒模塊使用靜態(tài)檢測方法,提取Android設(shè)備中所有應(yīng)用程序的特征值,與病毒特征庫中的值相匹配。每一種病毒都有特定的特征碼,就是MD5值。殺毒模塊就是根據(jù)程序和文件的特征碼來判斷是否是病毒。
每一個Android應(yīng)用程序的包名和簽名都是一一對應(yīng)的,對在Android上已經(jīng)安裝的應(yīng)用程序,只要提取到應(yīng)用程序的特征碼,然后查詢數(shù)據(jù)庫,對比即可實現(xiàn)病毒的查詢。用PackageManager類可以獲取已安裝的應(yīng)用程序的簽名信息,遍歷應(yīng)用程序的簽名信息,將簽名信息轉(zhuǎn)成MD5值,用于與病毒數(shù)據(jù)庫比對。
而殺毒過程就是一個卸載應(yīng)用程序的過程,需要將病毒存入緩存中,然后通過遍歷卸載即可。
隨著手機支付的流行,支付類病毒越來越多,保護(hù)網(wǎng)購的環(huán)境至關(guān)重要。本系統(tǒng)中,支付檢測模塊可以在手機進(jìn)行網(wǎng)上支付的時候,檢測手機的環(huán)境是否有病毒。
當(dāng)用戶選擇支付檢測保護(hù)之后,會發(fā)送一個Brocast Receiver的子類PaymentReceive,用來監(jiān)聽正在運行的程序。如果正在運行手機錢包、米折等支付類程序時,掃描手機正在運行的程序是否是病毒程序,以保證用戶支付環(huán)境的安全。
安全檢測模塊是具有主動防御的功能。此模塊可以監(jiān)聽短信、監(jiān)聽電話、監(jiān)聽程序的安裝、監(jiān)聽網(wǎng)絡(luò)、流量檢測等,可以檢測除了病毒庫之外的惡意軟件和病毒。此模塊是一個后臺的Service服務(wù),在應(yīng)用上沒有顯示界面,可以實時監(jiān)控手機的安全,有病毒入侵時可以及時檢測出來,提醒用戶處理病毒。
在Service中創(chuàng)建一個BrocastReceiver的子類Detection Receiver,為了防止廣播被病毒優(yōu)先接到而終止,把優(yōu)先級設(shè)為最大整型數(shù),監(jiān)聽短信電話、網(wǎng)絡(luò)、流量等信息,流程圖如圖3。

圖3 安全檢測流程圖Fig.3 Flow chart of the security detection
安全日志模塊用于記錄手機掃描的結(jié)果和安全檢測發(fā)現(xiàn)病毒的日志,包括手機掃描的時間、掃描的結(jié)果,以及后臺監(jiān)聽的時候發(fā)現(xiàn)病毒的時間、名稱、路徑、處理結(jié)果。
利用SQLite在本地創(chuàng)建一個數(shù)據(jù)庫securitylog.db,發(fā)現(xiàn)可疑程序后,先與病毒庫比對,如果不在病毒庫內(nèi),再讓用戶判斷;如果確定是病毒程序,就用SQL語句,將可疑病毒加入到病毒庫,并在安全日志中記錄。
隨著手機支付的流行,手機里不僅有用戶的個人隱私信息,還有個人的銀行賬號信息。如果手機不小心遺失,里面的信息都會泄露,可能會遭受經(jīng)濟損失。手機防盜模塊可以向綁定的安全號碼發(fā)送一些防盜指令,來獲取手機位置、播放報警音樂、遠(yuǎn)程鎖屏、清除手機數(shù)據(jù),從而保護(hù)用戶的信息安全。
對于手機,當(dāng)SIM卡發(fā)生變化時,系統(tǒng)會重新啟動,然后重新識別SIM卡。系統(tǒng)重新啟動時,手機發(fā)出“android.intent.action.BOOT_COMPLETED”的消息廣播,需要配置接收開機自動啟動廣播的權(quán)限和發(fā)送短信的權(quán)限:
android.permission.RECEIVE_BOOT_COMPLETED
android.permission.SEND_SMS
當(dāng)SIM卡改變之后,可以向指定的安全號碼發(fā)送消息。安全號碼收到報警信息之后,可以向丟失的手機發(fā)送一些指令:播放報警音樂、鎖屏、獲取位置信息、清除數(shù)據(jù)恢復(fù)至出廠設(shè)置。丟失的手機收到信息之后,分析信息類容,獲取超級管理員權(quán)限,做出相應(yīng)的處理:
#*location*#獲取手機位置
#*alarm*# 播放報警音樂
#*locksrceen*#遠(yuǎn)程鎖屏
#*wipedata*#清除數(shù)據(jù)
Android安全檢測系統(tǒng)的實現(xiàn)如圖4所示。

圖4 Android安全檢測系統(tǒng)實現(xiàn)圖Fig.4 Implementation diagram of Android detection system
測試項:1)手機殺毒;2)支付檢測;3)安全檢測;4)日志;5)手機防盜。
測試時,對每項功能都進(jìn)行了驗證,結(jié)果如表1。
Android自帶的Monkey測試是Android平臺自動化測試的一種手段,通過Monkey程序模擬用戶觸摸屏幕、滑動Tracball、按鍵燈操作來對設(shè)備上的程序進(jìn)行壓力測試,檢測程序多久的時間會發(fā)生異常。

表1 測試結(jié)果Tab.1 Test result
將安裝Eclipse的tools路徑添加到環(huán)境變量中,在PC上執(zhí)行Monkey對程序進(jìn)行1000次測試:
adb shell monkey-p com.example.mobilesafe-v 1000
參數(shù)-p用于指定限制包名,-v用于反饋信息級別,就是日志的詳細(xì)程度。測試結(jié)果如圖5所示。

圖5 測試結(jié)果Fig.5 Test result
測試共耗時9 746 ms,在1000次測試中,只有2個按鍵操作丟失,其它事件的丟失數(shù)為0,表明此軟件具有較強的穩(wěn)定性。
根據(jù)測試結(jié)果,軟件在應(yīng)用層能夠有效查殺已安裝的病毒程序和病毒文件,并能實時監(jiān)控短信、電話、流量等。同時,抗壓能力較強,能夠穩(wěn)定的運行,有效保護(hù)Android用戶的安全。
[1]Aubrey-Derrick Schmidt,Hans-Gunther Schmidt,Batyuk L,et al.Smartphone malware evolution revisited:Android next target[R].International Conference on Malicious and Unwanted Software,2009.
[2]乜聚虎,周學(xué)海,余艷瑋,等.Android安全加固技術(shù)[J].計算機系統(tǒng)應(yīng)用,2011,20(10):74-77.NIE Ju-hu,ZHOU Xue-hai,YU Yan-wei,et a1.Android security reinforcement technology[J].Computer Systems&Applications,2011,20(10):74-77.
[3]程勝利.計算機病毒及其防治技術(shù)[C].北京:清華大學(xué)出版社,2004.
[4]羅忠,張旭,羅英,等.手機病毒——一個并不遙遠(yuǎn)的話題[J].移動通信,2002(5):83-85.LUO Zhong,ZHANG Xu,LUO Ying,et a1.Mobile phone virus-A not too distant topic[J].Mobile Communications,2002(5):83-85.
[5]朱圣軍,劉功申.智能手機病毒與信息安全[J].信息安全與通信保密,2011(5):96-97.ZHU Sheng-jun,LIU Gong-shen.Smartphone virus and information security[J].Information Security and Communications Privacy,2011(5):96-97.
[6]沈才樑,唐科萍,俞立峰,等.Android權(quán)限提升漏洞攻擊的檢測[J].電信科學(xué),2012.28(5):115-119.SHEN Cai-Liang,TAGN Ke-Ping,YU Li-Feng,et a1.Android privilegeescalation vulnerability attacksdetection[J].Telecommunications Science,2012,28(5):115-119.
[7]王力生,葉希哲.一種基于Android的防火墻的研究與實現(xiàn)[J].計算機安全,2009(10):36-38.WANG Li-Sheng,YE Xi-Zhe.Study and realization of a firewall based on android[J].Network and Computer Security,2009,(10):36-38.
[8]Ming-Yang Su.Prevention of selective black hole attacks on mobile ad hoc networks through intrusion detection systems[J].Computer communications,2011,34(1):107-117.
[9]Olli-Pekka Niemi,Jukka Manner et al.Dismantling Intrusion Prevention Systems[J].Computer Communication Review,2012.42(4):285-286.
[10]Cheung,Steven.Securing Collaborative Intrusion Detection Systems[J].IEEE Security&Privacy,2011,9(6):36-42.