摘要:在手機終端應(yīng)用軟件和移動業(yè)務(wù)呈現(xiàn)出多樣化發(fā)展的同時,針對手機短信進行后臺監(jiān)聽與竊取的惡意軟件也大量出現(xiàn),已經(jīng)對手機信息安全構(gòu)成了嚴重的威脅。從Android系統(tǒng)的Broadcast運行機制入手,設(shè)計一個具有捕獲第三方惡意軟件劫取短信行為的監(jiān)測軟件,全程對廣播進行監(jiān)聽和行為捕獲,終止短信被劫取、轉(zhuǎn)發(fā)等惡意行為的發(fā)生。在經(jīng)過測試試驗后效果良好,可以有效地解決短信被泄露的問題。
關(guān)鍵詞:廣播; 監(jiān)聽; 注冊; 調(diào)用
中圖分類號: TP311
文獻標志碼:A
文章編號: 2095-2163(2016)06-0059-03
0引言
隨著智能手機的普及與風(fēng)靡,人們通過安裝手機軟件就可以隨意點選由智能手機提供的網(wǎng)上購物、手機支付、手機銀行等電子時代e服務(wù)。但是就在人們?nèi)遮吚硐?、便捷地暢享智能手機帶來的各項服務(wù)便利的同時,許多捆綁有惡意行為的Android系統(tǒng)應(yīng)用軟件,也已通過各種免費下載平臺自動入侵并安裝至用戶的手機終端。這一類的應(yīng)用軟件可以在Android系統(tǒng)的后臺靜默運行,任意劫取和轉(zhuǎn)發(fā)用戶的手機短信內(nèi)容,從而嚴重侵犯了手機用戶的個人隱私。目前,Android開發(fā)技術(shù)正呈現(xiàn)方興未艾的活力態(tài)勢,這一類的惡意軟件也正在朝著多樣化、復(fù)雜化以及日漸隱蔽化的方向發(fā)展,這就使得智能手機終端信息安全問題則日趨顯著突出,并亟待有效解決。本文即針對這一課題內(nèi)容展開研究論述。
[BT4]1系統(tǒng)設(shè)計原則和目標
[BT5]1.1設(shè)計原則
本系統(tǒng)是基于當前較為流行的手機操作系統(tǒng)Android平臺構(gòu)建推進預(yù)期設(shè)計與研發(fā)的,針對手機中惡意軟件可能操縱生成的短信劫取、轉(zhuǎn)發(fā)等行為進行監(jiān)聽和攔截。在設(shè)計中,系統(tǒng)將按照可靠性、實用性、可實現(xiàn)性和二次開發(fā)性這4個方面作為原則出發(fā)點來支持確保后續(xù)方案的技術(shù)品級與領(lǐng)域價值。具體地,系統(tǒng)可靠性要求在系統(tǒng)中實時監(jiān)測短信廣播,監(jiān)聽惡意軟件劫取和轉(zhuǎn)發(fā)短信的行為,并終止這些危險行為的發(fā)生;系統(tǒng)實用性要求系統(tǒng)操作過程簡單、運行穩(wěn)定和監(jiān)聽過程準確;系統(tǒng)可實現(xiàn)性要求對于開發(fā)技術(shù)要求和軟件目標功能要求具有可實現(xiàn)性;二次開發(fā)性要求設(shè)計要采用模塊化,模塊功能要逐步細化,并能夠降低各個模塊的耦合性,從而提高系統(tǒng)的二次開發(fā)擴展性。
[BT5]1.2設(shè)計目標
系統(tǒng)設(shè)計目標是在分析Android系統(tǒng)如何發(fā)送和接收短信的運行過程、運行原理的基礎(chǔ)上,通過判斷哪些應(yīng)用程序具有攔截、劫取短信的動作行為,監(jiān)控并終止這些惡意行為,為手機終端用戶提供相對安全的使用環(huán)境,保護用戶的個人信息安全。
[BT4]2Android系統(tǒng)短信監(jiān)聽機制
[BT5]2.1系統(tǒng)廣播機制
Android系統(tǒng)中短信的接收與回應(yīng)是通過Broadcast Receiver組件來定制完成的\[1\],Broadcast框架模型如圖1所示。Android中的廣播可以由系統(tǒng)或是其它程序根據(jù)當前運行的行為來調(diào)控生成,因此這些廣播不是以時間為驅(qū)動的,也就是將具有明顯的異步性。為了能夠及時響應(yīng)某個廣播,在程序設(shè)計中大多數(shù)會采用2種方式。一種方式是讓監(jiān)聽程序長期駐留后臺內(nèi)存中,隨時監(jiān)聽廣播的發(fā)生,但是這種設(shè)計的弊端在于長期占用后臺內(nèi)存資源,對系統(tǒng)的資源造成了浪費。另一種方式是對要接收的廣播類型在程序中進行注冊,只要在Android中產(chǎn)生了注冊的廣播類型,監(jiān)聽程序就可以馬上捕獲。這種方式的突出優(yōu)點長處就在于即使程序不是運行狀態(tài),也可以捕獲注冊的廣播類型,從而能夠高度可觀地節(jié)省下系統(tǒng)的資源。
2.2廣播的注冊方式
Broadcast Receiver就是指廣播的注冊方式,重點組成主要包括2種,分別是:靜態(tài)注冊與動態(tài)注冊方式。在此,針對這2種方式分別給出如下的性能分析闡釋與概述。
1)靜態(tài)注冊方式。是把接收廣播者的特征注冊到程序的配置文件中提供聲明,當對應(yīng)廣播發(fā)生的時候,系統(tǒng)會按照一定的順序到程序的配置文件中去查找和確定該廣播的接收者。靜態(tài)注冊方式的廣播接收者存儲在程序的配置文件中,因此只要程序不被卸載或是刪除,注冊就保持一直有效。靜態(tài)注冊方式對預(yù)知類型的廣播有著非??焖俚捻憫?yīng),但是對于程序自定義產(chǎn)生的廣播類型監(jiān)聽效率卻不高[2]。
2)動態(tài)注冊方式。是通過在程序運行過程中調(diào)用Register Receiver和UnRegister Receiver的方法來完成注冊的。動態(tài)注冊方式的優(yōu)勢是可以隨時根據(jù)程序的需求來響應(yīng)、指定格式廣播,即時性較強,同時動態(tài)注冊方式的操作設(shè)定也較為靈活。動態(tài)注冊方式的缺點是注冊過程相比靜態(tài)注冊方式的設(shè)置過程要更為復(fù)雜,同時注冊后監(jiān)聽過程的生存期與靜態(tài)注冊方式相比也較為短暫。
[BT5]2.3監(jiān)聽發(fā)送短信過程
研究可知,在Android系統(tǒng)中對Intent不會進行廣播,因此對于發(fā)送短信的行為監(jiān)聽就將存在現(xiàn)實困難。根據(jù)Android平臺的系統(tǒng)規(guī)定,只有在后臺運行或操作的行為Intent才能夠進行廣播,發(fā)送短信是用戶的主動行為,并不屬于廣播Intent的范圍,因而不會產(chǎn)生系統(tǒng)廣播消息,此時采用傳統(tǒng)的注冊Broadcast Receiver監(jiān)聽收發(fā)短信則不再具備技術(shù)發(fā)生基礎(chǔ)[3]。為了能夠?qū)崿F(xiàn)對收發(fā)短信的監(jiān)控,本系統(tǒng)在設(shè)計過程中是通過調(diào)用onChange函數(shù),來實時監(jiān)聽Content observer對象的變換,進而觀察存儲短信的數(shù)據(jù)表狀態(tài)來確定是否發(fā)送短信。
[BT5]2.4監(jiān)聽接收短信過程
監(jiān)聽接收短信過程就是對Android系統(tǒng)自帶的收件箱,可將接收到短信之前的所有短信廣播接收者進行跟蹤監(jiān)聽,并判斷有哪些程序具有劫取和轉(zhuǎn)發(fā)短信的行為。監(jiān)聽程序可以將偵測到的表現(xiàn)有惡意行為的軟件構(gòu)建形成完整記錄,并可以終止其運行。在設(shè)計中,監(jiān)聽程序可以通過調(diào)用onReceive函數(shù)生成有序廣播來發(fā)送廣播消息。
[BT4]3系統(tǒng)的實現(xiàn)
[BT5]3.1功能實現(xiàn)
監(jiān)聽系統(tǒng)的主要實現(xiàn)功能可綜述如下:
1)Service組件將程序隱蔽在后臺運行,綁定系統(tǒng)開機消息并能夠開機啟動。
2)Service可以掃描和監(jiān)聽具有劫取短信惡意行為的進程,并終止惡意進程的運行。
3)檢測各個應(yīng)用程序的系統(tǒng)權(quán)限,有效遏制惡意程序?qū)Χ绦艔V播的接收。
4)對手機短信收發(fā)過程進行不間斷監(jiān)聽,全程監(jiān)聽用戶收發(fā)短信過程。
5)監(jiān)聽并記錄Android系統(tǒng)中應(yīng)用軟件獲取的危險權(quán)限。
6)對短信數(shù)據(jù)庫中短信表進行監(jiān)控,及時發(fā)現(xiàn)非法讀取短信內(nèi)容的進程,并終止該進程的執(zhí)行。
7)產(chǎn)生惡意劫取和轉(zhuǎn)發(fā)短信行為后,及時警告用戶并終止惡意行為的繼續(xù)發(fā)生。
[BT5]3.2主要功能模塊實現(xiàn)
[HT5”SS][ST5”BZ][WT5”BZ]3.2.1短信監(jiān)聽模塊
短信監(jiān)聽模塊主要用于實現(xiàn)系統(tǒng)對目標手機發(fā)送和接收短信動作的不間斷監(jiān)聽,本系統(tǒng)采用了Service組件來提供功能效果設(shè)計支持。由于Service組件沒有交互界面,因而全部在系統(tǒng)后臺運行實現(xiàn)。這也于無形中增強了系統(tǒng)的隱蔽性和抗干擾性。
相對于權(quán)限設(shè)定而言,可在程序設(shè)置文件AndroidMainfest.xml中對接收短信廣播進行注冊。為了能夠擁有更高的優(yōu)先權(quán)獲取廣播,研究可將android:priority的值設(shè)置為“1000”。權(quán)限設(shè)置代碼為:
public void onReceive(Context context,Intent intent)
{
Object[]object=(Object[]) intent.getExtras().get(“object”);
Intenti=new Intent(context,SMSHandle.class);
i.putExra(“sms”,object);
context.startService(i);
}
3.2.2監(jiān)聽應(yīng)用程序是否具有轉(zhuǎn)發(fā)短信行為
Android系統(tǒng)中發(fā)送短信方式通常有3種。第1種是直接將要發(fā)送的數(shù)據(jù)與Intent綁定在一起,然后將Intent進行廣播,這樣就可以正常調(diào)用系統(tǒng)本身自帶的短信程序來發(fā)送短信[4]。第2種方式是調(diào)用Android系統(tǒng)已有的短信程序來展開發(fā)送;隱蔽性最強的是第3種,該種短信發(fā)送是通過調(diào)用系統(tǒng)底層的短信發(fā)送接口來具體實現(xiàn),對第3種方式設(shè)定監(jiān)控,是本系統(tǒng)研發(fā)中的功能組成重點。具體實現(xiàn)代碼如下:
public void onclick(View v){
String num=((EditText)findViewById(R.id.num)).getText().toString().Trim();
String sms=((EditText)findViewById(R.id.sms)).getText().toString().Trim();
SmsManagermessages=SmsManager.getDefault();
if(sms.1ength() >=100) {
ArrayList
messages.sendMultipartTextMessage(num, null,msgs,null,null);
}
Else {
Messages.sendTextMessage(num,null,sms,null,null):
}
}
3.2.3監(jiān)聽應(yīng)用程序讀取短信數(shù)據(jù)庫內(nèi)容
通過對Content Observer對象的監(jiān)聽,捕獲并記錄訪問Content Observer對象的程序列表,為分析和判斷應(yīng)用程序是否劫取短信內(nèi)容提供依據(jù)。注冊短信變化主要代碼如下:
SmsContent content = new SmsContent(new Handler());
this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"),true, content);
捕獲應(yīng)用程序通過Content Observer對象訪問短信內(nèi)容主要實現(xiàn)代碼:
Bundle bundle = intent.getExtras();
Object msgs[] = (Object[]) bundle.get("msg");
SmsMessage smsmsgs [] = new smsmsgs [msgs.length];
smsmsgs[n] = smsmsgs.createFromPdu((byte[JP2][[KG-*5]][JP]) messages[n]);
sender =smsmsgs [n].getOriginatingAddress();
content =smsmsgs [n].getMessageBody();
[BT4]4系統(tǒng)測試
[BT5]4.1監(jiān)聽接收短信功能測試
在程序界面中單擊“啟動服務(wù)”按鈕啟動監(jiān)聽程序。通過向手機發(fā)送短信,測試本系統(tǒng)在后臺監(jiān)聽接收短信功能是否可以達到設(shè)計要求。測試結(jié)果如圖2、3所示。
[BT5]4.2發(fā)現(xiàn)惡意進程劫取短信功能測試
監(jiān)聽Android自帶短信程序以外的具有劫取和轉(zhuǎn)發(fā)短信行為的其它應(yīng)用程序,并及時預(yù)警、記錄、終止惡意程序執(zhí)行。測試結(jié)果如圖4所示。
經(jīng)過測試實驗后可知,本系統(tǒng)能夠?qū)崿F(xiàn)在后臺不間斷地監(jiān)聽收發(fā)短信過程,并能準確、及時地捕獲具有劫取和轉(zhuǎn)發(fā)短信行為的惡意軟件,同時還能為用戶提供下一步操作指示,測試結(jié)果表明設(shè)計符合預(yù)期標準,可以滿足實用需求。[FL)]
[PS劉環(huán)2.EPS;S*2;X*2,BP#]
[HT5”SS][ST5”BZ][WT5”BZ][FL(2K2]
[BT4]5結(jié)束語
以Broadcast組件收發(fā)短信的基本運行原理為基礎(chǔ)、采用動態(tài)注冊廣播監(jiān)聽器、獲取系統(tǒng)級短信監(jiān)聽高級權(quán)限,分析應(yīng)用程序是否具有劫取和轉(zhuǎn)發(fā)短信的行為動作為設(shè)計思想,實現(xiàn)了對Android系統(tǒng)手機用戶的短信保護,有效阻止了手機用戶短信內(nèi)容的泄露,系統(tǒng)設(shè)計完成并經(jīng)過測試后,達到、并取得了預(yù)期的功能和效果。
[LL][HS1*2][HT5H]參考文獻:[HT]
[WTBZ][ST6BZ][HT6SS][1] [ZK(#〗
[HJ*2]
朱明. Android環(huán)境下隱私保護的設(shè)計與實現(xiàn)[D]. 南京:南京理工大學(xué), 2014.
[2] 韋強生. Android軟件安全與逆向分析[M]. 北京:人民郵電出版社, 2013.
[3] 李寅,范明鈺,王光衛(wèi). 基于反編譯的Android平臺惡意代碼靜態(tài)分析[J]. 計算機系統(tǒng)應(yīng)用, 2012,21(11):187-189.
[4] 高岳,胡愛群. 基于權(quán)限分析的 Android 隱私數(shù)據(jù)泄露動態(tài)檢測方法[J]. 信息網(wǎng)絡(luò)安全, 2014(2):27-31.[ZK)]
[FL)]
[WT6HZ][HT6H][ST6HZ][JZ]圖2啟動與關(guān)閉服務(wù)界面圖3短信內(nèi)容監(jiān)聽界面圖4報警界面
[JZ]Fig. 2Startup and shutdown service interfaceFig. 3 SMS content monitor interfaceFig. 4 Alarm interface