林振文
(廈門軟件職業(yè)技術(shù)學(xué)院,福建廈門 361024)
隨著智能芯片技術(shù)的不斷發(fā)展,智能終端在過去一段時(shí)間獲得長足發(fā)展,當(dāng)前移動(dòng)智能終端已經(jīng)與人們的生活緊密結(jié)合在一起,并通過其自身搭載的系統(tǒng)實(shí)現(xiàn)各種生活需求。Android系統(tǒng)便是在該背景下被應(yīng)用到智能終端中,并已經(jīng)成為當(dāng)前移動(dòng)智能終端占比最大的應(yīng)用系統(tǒng)。隨著Android平臺(tái)應(yīng)用范圍的不斷擴(kuò)大,該種系統(tǒng)帶來的安全問題也逐漸受到人們的重視。Android平臺(tái)與其他系統(tǒng)能夠?qū)崿F(xiàn)有效兼容,在此背景下Android為人們帶來極大便利,同時(shí)也帶來一些安全隱患,因此合理構(gòu)建基于Android平臺(tái)的移動(dòng)智能終端安全防護(hù)系統(tǒng)尤為重要。
結(jié)合當(dāng)前移動(dòng)智能終端用戶實(shí)際需求,在研發(fā)安全防護(hù)系統(tǒng)時(shí)需要其具備三方面功能,分別為防盜模塊、程序鎖模塊、垃圾信號(hào)攔截模塊。這三個(gè)模塊在移動(dòng)智能終端運(yùn)行過程中實(shí)時(shí)展開工作,為移動(dòng)智能終端的運(yùn)行奠定堅(jiān)實(shí)基礎(chǔ)[1]。
當(dāng)前移動(dòng)智能終端均需在其內(nèi)部安裝一個(gè)移動(dòng)運(yùn)營商通信卡,該卡的卡號(hào)是唯一的。例如手機(jī)里面的SIM卡,用戶可通過將SIM卡號(hào)綁定方式保證其安全。Android系統(tǒng)在實(shí)際操作中會(huì)將其保存到系統(tǒng)后臺(tái)中,此時(shí)該移動(dòng)智能終端便成為唯一產(chǎn)品。若移動(dòng)智能終端出現(xiàn)丟失情況,即使別人更換里面的SIM卡也無法使用,卡被更換后系統(tǒng)在開機(jī)時(shí)會(huì)自動(dòng)產(chǎn)生開機(jī)信息,并通過后臺(tái)系統(tǒng)自動(dòng)判斷當(dāng)前卡號(hào)是否與之前卡號(hào)一致,若不一致則將當(dāng)前卡號(hào)記錄并發(fā)送至用戶規(guī)定的另一個(gè)密保移動(dòng)智能終端上,并開始對(duì)更換卡后的移動(dòng)智能終端進(jìn)行實(shí)時(shí)定位,幫助用戶找尋到自己的移動(dòng)智能終端。用戶需要通過該程序設(shè)定其安全密碼,一般而言安全密碼十分重要,用戶設(shè)置該安全密碼后實(shí)現(xiàn)對(duì)移動(dòng)智能終端的遠(yuǎn)程控制,只要用戶發(fā)現(xiàn)手機(jī)丟失便可通過網(wǎng)絡(luò)驗(yàn)證方式獲得控制權(quán)限,保障移動(dòng)智能終端丟失后自己信息不被泄露,同時(shí)也可及時(shí)找回丟失的移動(dòng)智能終端。
用戶可將自己的隱私通過移動(dòng)智能終端添加到網(wǎng)絡(luò)數(shù)據(jù)庫中,用戶在某些時(shí)候不希望自己的這些信息被別人看見,此時(shí)就會(huì)對(duì)這些信息進(jìn)行上鎖,此即為程序鎖。在此基礎(chǔ)上用戶便可自由地對(duì)想保密的文件進(jìn)行上鎖后將其加入數(shù)據(jù)庫。對(duì)于確定需要打開的程序后臺(tái)會(huì)首先判斷該程序是否位于數(shù)據(jù)庫中,此時(shí)用戶移動(dòng)智能終端便會(huì)通過后臺(tái)服務(wù)器打開相應(yīng)程序,在打開過程中將受保護(hù)的文件列出來,將需要輸入密碼才能打開的文件顯現(xiàn)出來,用戶必須輸入與數(shù)據(jù)庫中密碼一致的結(jié)果才能打開該文件[2]。
垃圾信息攔截則是Android系統(tǒng)的一項(xiàng)重要安全防護(hù)功能,通過該功能可對(duì)外來信息進(jìn)行過濾,挑選出其中一些疑似垃圾信息。當(dāng)前Android系統(tǒng)在判斷信息是否為垃圾信息時(shí)均通過關(guān)鍵詞時(shí)間,例如當(dāng)信息中含有敏感字眼便會(huì)提醒用戶是否為垃圾信息,同時(shí)也可根據(jù)信息是否被多次舉報(bào)來判斷。
圖1為本研究構(gòu)建的Android防護(hù)系統(tǒng)框架結(jié)構(gòu),系統(tǒng)在運(yùn)行過程中對(duì)運(yùn)行程序進(jìn)行掃描,檢驗(yàn)系統(tǒng)中是否存在惡意程序,在系統(tǒng)運(yùn)行中主要通過特征碼比對(duì)方式進(jìn)行檢驗(yàn),發(fā)現(xiàn)系統(tǒng)中存在的病毒,并在檢測到惡意程序后將其加入黑名單,并提醒用戶刪除惡意程序[3]。
圖1 Android防護(hù)系統(tǒng)框架結(jié)構(gòu)
對(duì)系統(tǒng)中存在的應(yīng)用程序進(jìn)行實(shí)時(shí)監(jiān)測,消息可以被接收或發(fā)送到應(yīng)用程序,通過電話進(jìn)行竊聽,并建立Wi-Fi連接方式,通過無線連接監(jiān)控互聯(lián)網(wǎng)連接的行為。當(dāng)應(yīng)用程序生成這些行為時(shí),可以通過技術(shù)手段截獲系統(tǒng)廣播消息,如果系統(tǒng)敏感且可疑,則該系統(tǒng)彈出一個(gè)對(duì)話框,詢問用戶是否允許。即使我們不能確定應(yīng)用程序是否是惡意的,也可以監(jiān)視其行為,停止其危險(xiǎn)行為,最后通過應(yīng)用管理程序禁止操作甚至卸載。
嚴(yán)格控制授予應(yīng)用程序的所有權(quán)限。將隱私安全權(quán)限分為兩方面,短信、聯(lián)系人記錄、通話記錄、手機(jī)定位、識(shí)別碼、記錄和視頻相機(jī)等屬于隱私權(quán);發(fā)短信、接聽電話、打開移動(dòng)網(wǎng)絡(luò)、打開Wi-Fi、藍(lán)牙軟件信息公開、閱讀屬于安全權(quán)限。獲得所有應(yīng)用程序的權(quán)限,并根據(jù)權(quán)限對(duì)它們進(jìn)行分類。對(duì)被監(jiān)視的軟件設(shè)置規(guī)則,包括允許、提示和禁止[4]。
2.2.1 代碼注入
代碼注入主要有兩種形式,分別為靜態(tài)注入和動(dòng)態(tài)注入。其中,靜態(tài)注入主要針對(duì)可執(zhí)行文件,包括ELF、DEX等文件,其輔助工具較多,包括IDA、JEB、ApkTool等。動(dòng)態(tài)注入針對(duì)進(jìn)程,如對(duì)系統(tǒng)進(jìn)程寄存器以及內(nèi)存值的修改等。
2.2.2 Binder Proxy技術(shù)分析
在Android系統(tǒng)安全防護(hù)中需要首先對(duì)Broadcast Receiver的優(yōu)先級(jí)進(jìn)行提升,即對(duì)Android系統(tǒng)開機(jī)廣播事件BOOT_COMPLETED進(jìn)行監(jiān)聽,系統(tǒng)啟動(dòng)后開啟一個(gè)Service,并進(jìn)行動(dòng)態(tài)的注冊(cè)BroadcastReceiver,將注冊(cè)的優(yōu)先級(jí)調(diào)整到最高級(jí)integer.MAX_VALUE.該過程涉及代碼如下:
Intent Filter filter=new
Intent Filter("android.provider.Telephony.SMS_RECEIVED");
filter.set Priority(Integer.MAX_VALUE);
register Receiver(new Sms Receiver(), filter);
為提高系統(tǒng)應(yīng)對(duì)高級(jí)惡意軟件的效果,在向系統(tǒng)中額外添加以下幾個(gè)出發(fā)點(diǎn):
WIFI_STATE_CHANED
CONNECTIVITY_CHANGE
ACCESS_NETWORK_STATE
ACCESS_WIFI_STATE
這些系統(tǒng)時(shí)間較之BOOT_COMPLETED均觸發(fā)更早,因此惡意軟件可能優(yōu)先攔截到短信。Android在廣播發(fā)送過程中通過Activity Manager Service(AMS)進(jìn)行轉(zhuǎn)發(fā),因此Activity Manager Service(AMS)中存有多個(gè)Broadcast Receiver的相關(guān)信息,可通過Binder Proxy進(jìn)行調(diào)整,將代碼注入進(jìn)程中,調(diào)整廣播順序。Android系統(tǒng)Binder機(jī)制中的四個(gè)組件Client、Server、Service Manager和Binder 驅(qū)動(dòng)程序的關(guān)系如圖2所示[5]。
圖2 Binder機(jī)制關(guān)系圖
在圖2中,Service Manager、Client、Server的功能是在用戶空間實(shí)現(xiàn),Binder的功能是在內(nèi)核空間實(shí)現(xiàn)。Binder和Service Manager封裝于系統(tǒng)中,通過接口與外界空間相連,用戶通過這些接口實(shí)現(xiàn)對(duì)應(yīng)的Client、Server的功能;用戶在與系統(tǒng)進(jìn)行交接的過程中需通過Binder提供設(shè)備文件/dev/binder,Client、Server和Service Manager則以open和ioctl文件操作函數(shù)實(shí)現(xiàn)與Binder的通信;在系統(tǒng)運(yùn)行過程中需要通過Binder實(shí)現(xiàn)Client和Server之間的通信,并以Service Manager對(duì)Server進(jìn)行管理。在Android系統(tǒng)中,幾乎所有的IPC都是通過綁定機(jī)制進(jìn)行的,包括客戶端與服務(wù)器之間的通信,將所有的服務(wù)稱為本地服務(wù),多個(gè)客戶機(jī)可以對(duì)應(yīng)同一個(gè)本地服務(wù)。
該模塊的主要作用是對(duì)系統(tǒng)中的程序進(jìn)行掃描,檢查其是否為惡意軟件,且在系統(tǒng)運(yùn)行過程中需要讓用戶直觀地觀察系統(tǒng)程序運(yùn)營情況,檢測APP是否為安全的。在實(shí)際設(shè)計(jì)過程中可將界面劃分為三部分,自上而下分別為正在掃描的信息、掃描進(jìn)度條、被掃描用于程序名稱及檢測結(jié)果。其具體界面顯示見圖3。
圖3 病毒掃描模塊界面
在系統(tǒng)運(yùn)行過程中首先需要獲取病毒庫資源,其中病毒樣本信息主要通過Andro Mal Share等平臺(tái)得到,之后將其集中存儲(chǔ)于Virus.db數(shù)據(jù)庫中,并建立其本地存儲(chǔ)空間,便于將掃描的APP HASH值與系統(tǒng) DATABASE中的樣本HASH值進(jìn)行匹配。其具體實(shí)現(xiàn)過程如下:(1)通過系統(tǒng)連接網(wǎng)絡(luò),從服務(wù)器端下載最新數(shù)據(jù)庫,之后將其作為本地存儲(chǔ)文件存儲(chǔ)于本地?cái)?shù)據(jù)庫;(2)從Android端獲取所有APP的程序名稱以及簽名;(3)對(duì)獲取的信息進(jìn)行MDS加密處理,并得到對(duì)應(yīng)HASH值;(4)將得到的對(duì)應(yīng)HASH值與病毒文件庫中的程序簽名進(jìn)行比對(duì);(5)通過Scroll View標(biāo)簽將得到的結(jié)果進(jìn)行滾動(dòng)顯示。流程如圖4所示[6]。
圖4 病毒查殺流程圖
本文在設(shè)計(jì)結(jié)構(gòu)模型時(shí)采用MVC模式,通過View層以及Controller層建立模型方式,該種方式不僅可保證系統(tǒng)充分發(fā)揮其功能,還能從根本上消除系統(tǒng)中存在的不足。該種結(jié)構(gòu)在應(yīng)用中可將不同邏輯功能代碼進(jìn)行分層管理,在此基礎(chǔ)上得到一個(gè)與之相應(yīng)的應(yīng)用程序,保證程序結(jié)構(gòu)的邏輯性和清晰度,并需要保證Model以及View的同步性,當(dāng)該結(jié)構(gòu)中的Model發(fā)生變化時(shí)系統(tǒng)中的View也會(huì)發(fā)生同步改變,因此就要采用結(jié)構(gòu)中的Controller對(duì)其進(jìn)行控制。
防盜模塊是移動(dòng)智能終端的重要組成部分,該部分的主要作用是通過設(shè)置各種密碼并將移動(dòng)智能終端信息與SIM卡進(jìn)行綁定實(shí)現(xiàn)相應(yīng)功能。在開機(jī)時(shí)便需要驗(yàn)證,驗(yàn)證方式可以是指紋識(shí)別,也可以是輸入數(shù)字密碼方式,并可通過SIM卡信息識(shí)別進(jìn)行驗(yàn)證,在開機(jī)時(shí)會(huì)自動(dòng)產(chǎn)生開機(jī)信息,并通過后臺(tái)系統(tǒng)自動(dòng)判斷當(dāng)前卡號(hào)是否與之前卡號(hào)一致,若不一致則將當(dāng)前卡號(hào)記錄并發(fā)送至用戶規(guī)定的另一個(gè)密保移動(dòng)智能終端上,并開始對(duì)更換卡后的移動(dòng)智能終端進(jìn)行實(shí)時(shí)定位,幫助用戶找尋到自己的移動(dòng)智能終端。垃圾信息攔截模塊與防盜模塊工作原理類似,并且構(gòu)建系統(tǒng)的模式較為類似,因此在本研究不再對(duì)此進(jìn)行詳細(xì)概述。
在設(shè)計(jì)程序鎖模塊時(shí)主要通過建立表的方式,將用戶需要進(jìn)行保護(hù)的文件進(jìn)行加密處理后存放于數(shù)據(jù)庫中,在下次使用時(shí)需要進(jìn)行驗(yàn)證,只有在驗(yàn)證無誤的情況下才能獲得相應(yīng)文件的訪問權(quán)限。基于Android系統(tǒng)的程序鎖模塊較為簡單,所有程序自身包含的程序包名都是一致的,因此在實(shí)際設(shè)計(jì)中應(yīng)該通過已設(shè)定的標(biāo)準(zhǔn)比對(duì)判斷其正誤。表1為一種常見的程序表數(shù)據(jù)結(jié)構(gòu)。
表1 程序鎖數(shù)據(jù)結(jié)構(gòu)表
在以上設(shè)計(jì)的基礎(chǔ)上,可將垃圾信息攔截模塊設(shè)置于系統(tǒng)中,本文設(shè)計(jì)的系統(tǒng)是以關(guān)鍵詞作為判斷依據(jù),判斷Android系統(tǒng)接收到的信息是否為垃圾信息。當(dāng)收到垃圾信息時(shí)系統(tǒng)便會(huì)自動(dòng)發(fā)出關(guān)于垃圾信息處理的廣播,并通過相關(guān)應(yīng)用程序?qū)畔⒌膬?nèi)容進(jìn)行比對(duì)處理,若最終確定其為垃圾信息則將其標(biāo)記并提醒用戶謹(jǐn)慎打開,防止不良程序在移動(dòng)智能終端中擴(kuò)散,以此實(shí)現(xiàn)對(duì)垃圾信息的有效攔截,從根本上降低垃圾信息的危害。
本研究對(duì)Android平臺(tái)的移動(dòng)智能終端安全防護(hù)系統(tǒng)應(yīng)用設(shè)計(jì)進(jìn)行分析,結(jié)合當(dāng)前移動(dòng)智能終端用戶實(shí)際需求,所研發(fā)的安全防護(hù)系統(tǒng)具備三方面功能,分別為防盜模塊、程序鎖模塊、垃圾信號(hào)攔截模塊。在實(shí)際設(shè)計(jì)中設(shè)置病毒掃描模塊、防盜模塊、程序鎖模塊、垃圾信息攔截模塊,對(duì)系統(tǒng)中存在的應(yīng)用程序進(jìn)行實(shí)時(shí)監(jiān)測,消息被接收或發(fā)送到應(yīng)用程序,通過電話竊聽、Wi-Fi連接方式、無線連接監(jiān)控互聯(lián)網(wǎng)連接等操作,及時(shí)發(fā)現(xiàn)系統(tǒng)中存在的安全威脅,保障Android平臺(tái)安全穩(wěn)定運(yùn)行。
[參考文獻(xiàn)]
[1]儲(chǔ)小寶,馬兆豐,黃勤龍.基于Android平臺(tái)的移動(dòng)智能終端敏感信息安全防護(hù)技術(shù)的研究與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2015.
[2]吳斌,逯全芳.基于Linux日志系統(tǒng)的Android移動(dòng)智能終端操作系統(tǒng)攻擊測評(píng)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2015(12):75-76.
[3]李春杰,史正樂,高慧敏,等.移動(dòng)智能終端的個(gè)人隱私保護(hù)系統(tǒng)的開發(fā)設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用與軟件,2017(6):217-220.
[4]吳斌,逯全芳.Android移動(dòng)智能終端操作系統(tǒng)權(quán)限機(jī)制的安全評(píng)估[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2015(12):74.
[5]龍則靈,李祎.基于Android移動(dòng)平臺(tái)的檔案利用服務(wù)系統(tǒng)[J].蘭臺(tái)世界,2016(8):9-11.
[6]周克輝.基于Android平臺(tái)的手機(jī)導(dǎo)航系統(tǒng)設(shè)計(jì)[J].現(xiàn)代商貿(mào)工業(yè),2016(33):383-384.