劉彬彬,李永忠,舒 俊
(江蘇科技大學(xué) 江蘇 鎮(zhèn)江 212003)
Android平臺下的病毒原理分析及其防御技術(shù)研究
劉彬彬,李永忠,舒 俊
(江蘇科技大學(xué) 江蘇 鎮(zhèn)江 212003)
Android是現(xiàn)在最受歡迎的移動平臺操作系統(tǒng)之一。它最大的特點就是源代碼開源,因此吸引了很多行業(yè)領(lǐng)先企業(yè),包括通信運營商、設(shè)備制造商、芯片制造商等各類企業(yè),同時也吸引了大量用戶。根據(jù)市場研究公司IDC發(fā)布的數(shù)據(jù),截止2012年第二季度,Android的市場份額高達(dá)68.1%。為了使Android用戶不受病毒的危害,本文分析了Android平臺下的病毒攻擊原理,提出了一個基于Android的安全防御系統(tǒng)的解決方案,并進行了實現(xiàn)和測試,可以查殺病毒,自動監(jiān)控設(shè)備。測試結(jié)果表明,系統(tǒng)能夠有效監(jiān)測到病毒的入侵并及時采取措施。
Android;病毒原理;入侵檢測;主動防御
Android是一個開源的移動平臺操作系統(tǒng),占據(jù)了大部分市場份額。
Android的火爆引起了一些不法分子的注意,利用惡意軟件(即Android病毒)非法獲取用戶隱私、間接扣取用戶話費獲取經(jīng)濟利益等。隨著Android的快速發(fā)展,針對Android的惡意軟件也越來越多。根據(jù)網(wǎng)秦發(fā)布的2012年上半年全球手機安全報告,2012上半年新增手機惡意軟件17676款,而這其中的78%就是針對Android平臺的,這個數(shù)字在2011年年底還是38%。僅在2012年6月,單月查殺到Android惡意軟件5582款,直接感染用戶數(shù)百萬,造成用戶大量的直接或間接經(jīng)濟損失、隱私泄露等危害。
Android惡意軟件的危害越來越嚴(yán)重,本文通過對Android惡意軟件原理的研究與分析,結(jié)合Android系統(tǒng)自身特點,提出并實現(xiàn)了一個安全防御解決方案。
Android的架構(gòu)主要由應(yīng)用層(Applications)、應(yīng)用框架層(Application Framework)、Android 系統(tǒng)庫和運行時(Libraries、Android Runtime)、Linux 內(nèi) 核 (Linux Kernel) 構(gòu) 成 , 如 圖 1所示。
圖1 Android系統(tǒng)架構(gòu)圖Fig.1 System architecture of Android
應(yīng)用層主要包括系統(tǒng)自帶的和用戶安裝的應(yīng)用程序,應(yīng)用框架層為應(yīng)用程序提供API,Android系統(tǒng)庫為應(yīng)用框架層提供C/C++庫,Android運行時提供JAVA核心庫和Dalvik虛擬機,Linux內(nèi)核是Android的核心,提供底層服務(wù)。
通過分析網(wǎng)秦的2012年上半年全球手機安全報告,可以看出,雖然Android平臺下病毒的形式多樣,但主要攻擊方式如下:
1)惡意扣費:這類病毒在用戶不知情的情況下,向SP訂購付費業(yè)務(wù),扣除用戶的話費。
2)竊取隱私:這類惡意軟件主要是竊聽用戶通話 ,竊取用戶位置信息、通訊錄等資料,并在后臺上傳到服務(wù)器,從中獲取有利信息或者轉(zhuǎn)賣出去,進而獲利。
3)消耗資費:這類病毒主要在后臺自動聯(lián)網(wǎng),不斷下載廣告主推廣的應(yīng)用或其他惡意軟件,從而獲取非法利益。這樣直接導(dǎo)致用戶的網(wǎng)絡(luò)流量和設(shè)備電量消耗過大。
通過分析病毒源代碼,可以發(fā)現(xiàn)病毒主要是利用短信、電話、網(wǎng)絡(luò)等功能,加上一些其他的輔助功能,達(dá)到非法目的。
Android用權(quán)限管理機制來確定應(yīng)用程序是否有相應(yīng)的訪問權(quán)限。應(yīng)用程序在安裝時要請求所需的權(quán)限,只有用戶同意授權(quán)才能安裝。
病毒程序為了能使用短信、電話、網(wǎng)絡(luò)程序,會在Android Manifset.xml文件中請求相關(guān)權(quán)限。請求撥打電話的權(quán)限為:
android.permission.CALL_PHONE請求發(fā)送短信的權(quán)限為:
android.permission.SEND_SMS請求接收短信的權(quán)限為:
android.permission.RECEIVE_SMS請求聯(lián)網(wǎng)的權(quán)限為:
android.permission.INTERNET
在后臺偷偷向SP發(fā)送訂購付費業(yè)務(wù)短信,這是病毒最常用的手段,病毒獲得發(fā)送短信的權(quán)限后,利用SmsManager類,在用戶不知道的情況下,向SP發(fā)送訂購付費業(yè)務(wù)短信:
SmsManager.getDefault ().sendTextMessage (tel,null,message, null, null);
其中tel為短信發(fā)送地址,message為短信訂購內(nèi)容。
通常在向SP發(fā)送訂購業(yè)務(wù)后,SP會回復(fù)一個確認(rèn)短信給用戶,讓用戶再次確認(rèn)是否訂購該業(yè)務(wù)。這時,病毒屏蔽SP發(fā)來的確認(rèn)短信,不讓用戶看到,再次偷偷發(fā)送確認(rèn)短信給SP,然后刪除相關(guān)短信。這樣,就成功訂購了業(yè)務(wù),扣除了用戶的話費,而這一過程,用戶毫不知情。
病毒屏蔽短信是利用了Android的四大組件之一BroadcastReceiver,Android收到短信時,會發(fā)出一個有序廣播,病毒獲得接收短信的權(quán)限后,聲明一個BroadcastReceiver并把優(yōu)先級設(shè)的很高:
BroadcastReceiver receiver;
IntentFilter filter=new IntentFilter();filter.setPriority(priority);
registerReceiver(receiver, filter);
病毒優(yōu)先收到SP發(fā)來的短信后,判斷是否是特定SP的號碼,如果是,首先終止廣播的傳播,其他程序就不會收到短信了:
abortBroadcast();
然后再次偷偷向SP發(fā)送確認(rèn)短信,最后刪除SP發(fā)來的消息和發(fā)件箱中偷偷發(fā)出的短信。
對于Android手機,通過撥打電話扣費的病毒較少,因為撥號無法做到像偷發(fā)短信一樣那么好的隱蔽性,不過最近也出現(xiàn)了一些病毒,入侵用戶的手機后,自動撥打指定的號碼,這種號碼通常會收取很高的SP費用。
病毒獲得撥打電話的權(quán)限后 ,只需要調(diào)用一次Intent,即可實現(xiàn)撥打指定電話的功能:
Intent intent=new Intent (Intent.ACTION_CALL, Uri.parse(“tel:”+phone_number));
startActivity(intent);
病毒一般從兩個方面利用網(wǎng)絡(luò)。第一,在后臺聯(lián)網(wǎng),上傳用戶的隱私信息;第二,在后臺下載其他應(yīng)用程序或者病毒程序。這兩者都將消耗用戶大量的網(wǎng)絡(luò)流量,同時也消耗了很多電量。
無論是上傳還是下載,都是使用HTTP,借助于JAVA的輸入輸出流實現(xiàn)。上傳代碼類似于:
UploadFile(File file, String up_url);
其中file是上傳的文件,up_url是上傳服務(wù)器地址。下載代碼類似于:
DownFile(String url, String path, int thread_num);
其中,url為所下載文件的源地址,path是文件下載后的保存路徑,thread_num是下載的線程數(shù)。
目前,Android平臺的安全防御技術(shù)主要從以下幾個方面研究:文件監(jiān)控及訪問控制[1-3]、應(yīng)用程序訪問權(quán)限[4-6]、防火墻[7]、入侵檢 測[8-11]。
這些研究基本都是從系統(tǒng)和內(nèi)核層加強Android的安全,可是對于絕大多數(shù)用戶來說,系統(tǒng)是廠商決定的,自己無法改變。本文根據(jù)Android平臺的病毒原理,研究和實現(xiàn)了一個在應(yīng)用層保護系統(tǒng)和用戶數(shù)據(jù)的安全系統(tǒng)。
通過監(jiān)聽短信的發(fā)送和接收,在后臺運行一個Service監(jiān)測安裝的應(yīng)用程序是否有病毒。
監(jiān)聽收發(fā)短信,分別需要請求以下權(quán)限:
android.permission.RECEIVE_SMS
android.permission.READ_SMS
在Service中創(chuàng)建一個BroadcastReceiver,用于接收收發(fā)短信的廣播,為了防止廣播被病毒優(yōu)先接到而終止,可以把這個BroadcastReceiver的優(yōu)先級設(shè)為最大整數(shù)。
有短信到達(dá)時,BroadcastReceiver會收到帶有“android.provider.Telephony.SMS_RECEIVED”消息的廣播,通過接受這個廣播監(jiān)聽短信的接收。
由于發(fā)送短信時沒有廣播,不能用Broadcast Receiver監(jiān)聽短信的發(fā)送,但是可以利用ContentObserver監(jiān)聽短信發(fā)件箱的狀態(tài),從而實現(xiàn)對發(fā)送短信的監(jiān)聽。
在后臺運行Service監(jiān)聽外撥電話,監(jiān)測是否有病毒程序非法撥打電話。
利用BroadcastReceiver在Service中監(jiān)聽電話狀態(tài)需要的權(quán)限:
android.permission.READ_PHONE_STATE
android.permission.MODIFY_PHONE_STATE
android.permission.PROCESS_OUTGOING_CALLS
有電話撥出時,會收到帶有“android.intent.action.NEW_OUTGOING_CALL”消息的廣播,可以監(jiān)測是否是病毒行為。
監(jiān)聽網(wǎng)絡(luò)連接所需權(quán)限:
android.permission.INTERNET
設(shè)備聯(lián)網(wǎng)時,會發(fā)出帶有”android.net.conn.CONNECTIVITY_CHANGE”的廣播,通過運行在后臺的Service,接收廣播,檢測是否有病毒聯(lián)網(wǎng)。
通過監(jiān)聽?wèi)?yīng)用程序的安裝,病毒程序安裝的時候就可以監(jiān)測出來,從而在初始階段就可以杜絕病毒。
所需權(quán)限:
android.permission.RECEIVE_BOOT_COMPLETED
程序安裝時,會發(fā)出帶有“android.intent.action.PACKAGE_ADDED”的廣播,在后臺接收廣播,監(jiān)測是否有病毒安裝。
該系統(tǒng)主要根據(jù)病毒特征,進行病毒掃描,查殺病毒程序,同時監(jiān)聽短信、電話、網(wǎng)絡(luò)、程序安裝等敏感行為,實時監(jiān)測系統(tǒng)的安全狀態(tài)。
系統(tǒng)主要由4個模塊構(gòu)成:殺毒引擎、主動防御、更新病毒庫和日志模塊,如圖2所示。
圖2 Android安全防御系統(tǒng)結(jié)構(gòu)圖Fig.2 Schematic diagram of the Android security system
殺毒引擎根據(jù)程序和文件的一些特征值判斷是否病毒。
每一個Android應(yīng)用程序的包名和簽名都是一一對應(yīng)的,對于Android設(shè)備上已安裝的應(yīng)用程序,可以提取包名和簽名作為特征值,利用PackageInfo類可以得到:
package_name=PackageInfo.packageName;
signature=PackageInfo.signatures;
對于APK安裝包,還可以計算MD5值作為特征值:md5_str=MD5.GetMd5(file_path);其中file_path為APK文件路徑。
主動防御是一個后臺Service服務(wù),實時監(jiān)控Android的設(shè)備狀態(tài),有病毒入侵時,可以及時監(jiān)測出來,提醒用戶處理病毒。
在Service中創(chuàng)建一個BroadcastReceiver的子類DefendReceiver,優(yōu)先級設(shè)為最大整型數(shù),設(shè)置監(jiān)聽短信、電話、網(wǎng)絡(luò)等信息:
registerReceiver(receiver, filter);
創(chuàng)建一個ContentObserver的子類SmsObserver,監(jiān)聽短信發(fā)件箱的信息:
getContentResolver ().registerContentObserver (Uri.parse(“content://sms/”), true, observer);
本系統(tǒng)用tomcat部署服務(wù)器,為Android客戶端提供病毒庫升級服務(wù)。
利用Android提供的HTTP和JAVA的輸入輸出流,從服務(wù)器上下載最新病毒庫,在本地保存。
日志模塊用于記錄發(fā)現(xiàn)病毒的日志,包括病毒名稱、路徑、發(fā)現(xiàn)時間和處理結(jié)果。
利用SQLite在本地創(chuàng)建一個數(shù)據(jù)庫,發(fā)現(xiàn)病毒時,將病毒信息存入數(shù)據(jù)庫:
insertToLog(log_db, time, appname, apppath, result);
殺毒引擎和主動防御發(fā)現(xiàn)病毒后的處理流程如圖3所示。
圖3 病毒處理流程圖Fig.3 Flow chart of the virus processing
Android安全防御系統(tǒng)的實現(xiàn)如圖4所示。
系統(tǒng)中使用了Android 2.3.3以上版本的API,所以只能運行在Android 2.3.3以上的設(shè)備上。本文分別在Android模擬器和摩托MB525上測試本系統(tǒng)。
圖4 Android安全防御系統(tǒng)實現(xiàn)圖Fig.4 Implementation diagram of Android security system
測試項:1)掃描殺毒(包括快速掃描和全盤掃描);2)主動防御;3)更新病毒庫;4)查看日志。
測試時,對每項功能都進行了驗證,測試結(jié)果如表1。
表1 測試結(jié)果Tab.1 Test result
用Android自帶的工具monkey可以進行壓力測試。在PC上執(zhí)行以下命令即可對程序進行1 000次測試:
adb shell monkey-p com.securitysuite.v1-v 1000
測試結(jié)果如圖5所示。
圖5 測試結(jié)果Fig.5 Test result
測試共耗時88 670 ms,在1 000次測試中,只有2個按鍵操作丟失,其他事件的丟失數(shù)均為0,表明系統(tǒng)具有較強的穩(wěn)定性。
根據(jù)測試結(jié)果,系統(tǒng)在應(yīng)用層能夠有效查殺已安裝的病毒程序和病毒文件,并能實時監(jiān)控,同時,抗壓能力較強,能夠穩(wěn)定運行,有效保護了Android用戶的隱私和資金安全。
[1]乜聚虎,周學(xué)海,余艷瑋,等.Android安全加固技術(shù)[J].計算機系統(tǒng)應(yīng)用, 2011,20(10):74-77.
NIE Ju-hu,ZHOU Xue-hai,YU Yan-wei,etal.Android security reinforcement technology[J].Computer Systems&Applications,2011,20(10):74-77.
[2]溫敏,艾麗蓉,王志國.Android智能手機系統(tǒng)中文件實時監(jiān)控的研究與實現(xiàn)[J].科學(xué)技術(shù)與工程,2009,9(7):1716-1719,1724.
WEN Min,AI Li-rong,WANG Zhi-guo.Analysis and implementation of file real-time monitoring based on the Android smart phone system[J].Science Technology and Engineering,2009,9(7):1716-1719,1724.
[3]王志國,侯銀濤,石榮剛.Android智能手機系統(tǒng)的文件實時監(jiān)控技術(shù)[J].計算機安全,2009(12):42-44.
WANG Zhi-guo,HOU Yin-tao,SHI Rong-gang.The file realtime monitoring technology based on the Android smart phone system[J].Computer Security,2009(12):42-44.
[4]Nauman M,Khan S,Zhang X.Apex:extending android permission model and enforcement with user-defined runtime constraints[C].2010:328-332.
[5]吳俊昌,駱培杰,程紹銀,等.基于權(quán)限分類的Android應(yīng)用程序的靜態(tài)分析 [C]//第四屆信息安全漏洞分析與風(fēng)險評估大會,北京,2011:61-71.
[6]沈才樑,唐科萍,俞立峰,等.Android權(quán)限提升漏洞攻擊的檢測[J].電信科學(xué),2012(5):115-119.
SHI Cai-liang,TANG Ke-ping,YU LI-feng,et al.Android privilege escalation vulnerability attacks detection[J].Tele communications Science,2012(5):115-119.
[7]王力生,葉希哲.一種基于Android的防火墻的研究與實現(xiàn)[J].計算機安全,2009(10):36-38.
WANG Li-sheng,YE Xi-zhe.Study and realization of a fire wall based on Android[J].Computer Security,2009(10):36-38.
[8]Shabtai U, Kanonov,Elovici Y,et al.Andromaly:a behavioral malware detection framework for android devices[J].Journal of Intelligent Information Systems,2012:1-30.
[9]Shabtai U,Kanonov Y,Elovici.Detection,Alert and Response to Malicious Behavior in Mobile Devices:Knowledge-Based Approach[C].2009:357-358.
[10]Habtai U,Kanonov Y,Elovici.Intrusion detection for mobile devicesusingtheknowledge-based,temporalabstractionmethod[J].Journal of Systems and Software,2010,83(8):1524-1537.
[11]Shabtai Y,F(xiàn)ledel Y,Elovici,et al.Using the KBTA method for inferring computer and network security alerts from timestamped, raw system metrics[J].Journal in Computer Virology,2010,6(3):239.
Study and analysis of virus defense technology with Android platform
LIU Bin-bin, LI Yong-zhong, SHU Jun
(Jiangsu University of Science and Technology, Zhenjiang 212003, China)
Android is now one of the most popular mobile platform.The greatest characteristic is the source code is open,thus attracted a lot of enterprises which are the leaders in this industry.These enterprises include telecom carries,original equipment manufacturer, chip makers and so on.At the same time, a large number of users are attracted too.According to the data released by IDC, a market-research firm, Android’s market share reaches as high as 68.1%by the second quarter of 2012.In order to make the Android users do not suffer the harm of virus,the principle of virus with Android platform is analyzed,and a solution of virus defense system based-on Android is proposed in this paper.And the solution has been implemented and tested.The system can monitor the device automatically and run a virus scan.The results of the test show that the system can detect the intrusion of viruses and take measures timely.
Android; principle of virus; intrusion detection; active defens
TP311.52
A
1674-6236(2013)04-0040-04
2012-10-18稿件編號201210118
劉彬彬(1986—),女,湖北隨州人,碩士。研究方向:通信技術(shù)及其應(yīng)用工程。