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

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

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

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

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

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

圖5 測試結果Fig.5 Test result
測試共耗時9 746 ms,在1000次測試中,只有2個按鍵操作丟失,其它事件的丟失數為0,表明此軟件具有較強的穩定性。
根據測試結果,軟件在應用層能夠有效查殺已安裝的病毒程序和病毒文件,并能實時監控短信、電話、流量等。同時,抗壓能力較強,能夠穩定的運行,有效保護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]乜聚虎,周學海,余艷瑋,等.Android安全加固技術[J].計算機系統應用,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]程勝利.計算機病毒及其防治技術[C].北京:清華大學出版社,2004.
[4]羅忠,張旭,羅英,等.手機病毒——一個并不遙遠的話題[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權限提升漏洞攻擊的檢測[J].電信科學,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的防火墻的研究與實現[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.