楊中皇, 趙 月, 鄭 東
(1.西安郵電大學(xué) 無線網(wǎng)絡(luò)安全技術(shù)國家工程實驗室, 陜西 西安 710121;2. 高雄師范大學(xué) 軟件工程與管理學(xué)系,臺灣 高雄 82444)
隨著移動技術(shù)的快速發(fā)展,移動設(shè)備已經(jīng)成為人們生活工作中必不可少的組成部分[1]。Android設(shè)備因其系統(tǒng)開源性和兼容性等特點已成為最受歡迎的操作系統(tǒng)之一[2]。根據(jù)eMarKete統(tǒng)計數(shù)據(jù)顯示[3],2017年Android操作系統(tǒng)的市場份額達到86%。隨著Android設(shè)備計算能力和存儲容量的提高,移動辦公[4]也已經(jīng)成為企業(yè)辦公的趨勢。但是,Android 操作系統(tǒng)常會因用戶使用不當而產(chǎn)生系統(tǒng)漏洞,導(dǎo)致系統(tǒng)不安全[5]。為了提供完整的定制化和個性化服務(wù),應(yīng)用程序必須完全接受權(quán)限要求才能被安裝。例如,要求用戶賦予應(yīng)用位置、聯(lián)系人、通話記錄、讀取與寫入SD 卡等權(quán)限[6]。因此,任意獲取權(quán)限不但讓惡意應(yīng)用程序有機可趁,也讓用戶的隱私暴露于風險當中。
目前,針對Android系統(tǒng)組態(tài)設(shè)置不當造成的系統(tǒng)漏洞和應(yīng)用程序后臺行為監(jiān)控等問題,已有的移動設(shè)備隱私保護主要采用對網(wǎng)絡(luò)訪問以及內(nèi)存卡讀寫設(shè)置權(quán)限方法,對特定權(quán)限對應(yīng)的監(jiān)控行為內(nèi)容較少,不能滿足日益增多的權(quán)限漏洞檢測,而多數(shù)移動設(shè)備安全漏洞的產(chǎn)生是由于使用設(shè)備不當導(dǎo)致的[7]。因此,管理和修正錯誤的狀態(tài)設(shè)置,監(jiān)控應(yīng)用程序后臺活動,消除因其產(chǎn)生的系統(tǒng)漏洞,降低惡意攻擊者竊取隱私資料的風險顯得尤為重要[8]。
本文擬設(shè)計一種基于Android 的移動設(shè)備隱私保護系統(tǒng)。通過應(yīng)用程序接口(application programming interface,API)管理移動設(shè)備組態(tài),減少產(chǎn)生的系統(tǒng)漏洞。調(diào)用Intent和logcat獲取移應(yīng)用程序的后臺活動,對設(shè)備進行監(jiān)控,并且通過Package Manager[9]獲取應(yīng)用程序的權(quán)限內(nèi)容并進行檢測,以期降低惡意攻擊者竊取隱私資料的風險,從而提高設(shè)備的安全性。
Android 系統(tǒng)架構(gòu)[10-12]主要包括Linux內(nèi)核層、系統(tǒng)庫層、應(yīng)用程序框架層和應(yīng)用程序?qū)樱鐖D1 所示。
圖1 Android系統(tǒng)架構(gòu)
Linux內(nèi)核為底層管理,包括驅(qū)動管理、硬件驅(qū)動和安全管理等。在安全方面,Linux內(nèi)核為Android 提供簡單的安全模型,可進行安全的進程間通信和進程隔離,減小了受攻擊的范圍。在內(nèi)核中,應(yīng)用程序獨立運行,沒有讀取其他應(yīng)用和系統(tǒng)資源的權(quán)限。通過內(nèi)核編譯ANDROID_PARANOID_NETWORK,可實現(xiàn)調(diào)用進程的群組ID對藍牙和網(wǎng)絡(luò)模塊的限制性訪問。
系統(tǒng)庫層主要使用C/C++語言實現(xiàn),并對系統(tǒng)硬件進行代碼優(yōu)化。Android 應(yīng)用可通過調(diào)用本地接口(java native interface,JNI) 實現(xiàn)系統(tǒng)庫提供的函數(shù)功能,如安全套接層(secure sockets layer,SSL)和SQLite數(shù)據(jù)庫等。
應(yīng)用程序框架層提供了管理服務(wù)組件,主要包括內(nèi)容管理器、位置管理器、消息管理器和活動管理器等。其主要功能是為 Android 開發(fā)提供API,已經(jīng)封裝好的API有眾多系統(tǒng)功能,通過對API的合理調(diào)用,且不需要弄清楚Android中的全部代碼,就可以開發(fā)個性化的Android應(yīng)用程序。
應(yīng)用程序?qū)又饕娫?、短信和日歷等系統(tǒng)應(yīng)用程序和微信、微博及娛樂軟件等第三方應(yīng)用程序,所有應(yīng)用程序都在獨自的沙箱內(nèi)運行,未被授權(quán)相互之間不能進行訪問。
在Android應(yīng)用開發(fā)中,通過AndroidManifest.xml文件中的
一般權(quán)限由系統(tǒng)自動授予,說明應(yīng)用程序訪問系統(tǒng)時本身風險較低。
危險權(quán)限以某些方式控制設(shè)備或者允許訪問數(shù)據(jù),獲取隱私資料和設(shè)置重要數(shù)據(jù),具有較高風險,安裝應(yīng)用時需要經(jīng)過同意。
簽名權(quán)限只能賦予聲明權(quán)限使用相同密鑰簽名的應(yīng)用程序,需要持有開發(fā)者管理的簽名密鑰,而密鑰是由應(yīng)用程序或平臺的所有者控制。
簽名或系統(tǒng)權(quán)限可被賦予系統(tǒng)鏡像的部分應(yīng)用,或與聲明權(quán)限具有相同密鑰的應(yīng)用程序,允許設(shè)備制造商在沒有共享簽名密鑰的情況下,能夠預(yù)先安裝應(yīng)用共享所需的權(quán)限特定功能。在Android 4.4系統(tǒng)之后,只有安裝在 /system/priv-app/ 目錄下的應(yīng)用才能賦予 signatureOrSystem 級別的權(quán)限。
Android 安全組態(tài)標準由網(wǎng)絡(luò)安全中心 (center for internet security,CIS)[14]提出,規(guī)定了Android系統(tǒng)中的組態(tài)設(shè)置在何種狀態(tài)下較為安全,如設(shè)備設(shè)置鎖屏、禁用相機等。根據(jù)Android 安全組態(tài)標準設(shè)定Android 系統(tǒng)組態(tài),可提升設(shè)備的安全性。Android 系統(tǒng)組態(tài)的安全設(shè)置如表1所示。
表1 Android 系統(tǒng)組態(tài)的安全設(shè)置項目與內(nèi)容
基于Android的隱私保護系統(tǒng)主要由權(quán)限分析、應(yīng)用監(jiān)控、組態(tài)設(shè)定和風險評估等4部分組成。通過Package Manager提供的相關(guān)API分析每個應(yīng)用程序所定義的權(quán)限內(nèi)容,將權(quán)限內(nèi)容解析分類,分析其風險系數(shù);利用Intent工具獲取應(yīng)用程序的后臺活動,通過應(yīng)用監(jiān)控了解設(shè)備隱私狀態(tài)及安全動態(tài);根據(jù)軟體開發(fā)套件(software development kit,SDK)提供的相關(guān)API,設(shè)定系統(tǒng)重要組件,管理移動設(shè)備組態(tài);對設(shè)備所有應(yīng)用的權(quán)限及組態(tài)進行整體風險評估,及時更改系統(tǒng)相關(guān)功能設(shè)置,保護設(shè)備信息及用戶隱私資料。系統(tǒng)架構(gòu)如圖2 所示。
圖2 系統(tǒng)架構(gòu)
系統(tǒng)由Java語言和SDK搭配Logger 機制設(shè)計而成,可直接運行于8.0 版本以上的Android應(yīng)用程序安裝包(android application package,APK)。開發(fā)與測試環(huán)境如表2所示。
表2 系統(tǒng)開發(fā)與測試環(huán)境
2.2.1 權(quán)限分析
應(yīng)用程序必須在AndroidManifest.xml文檔里使用
2.2.2 應(yīng)用行為監(jiān)控
為了監(jiān)控應(yīng)用程序運行時后臺的活動,針對應(yīng)用程序之間主要的聯(lián)系橋梁Intent對設(shè)備進行掃描。直接通過Shell對設(shè)備使用logcat命令,同時使用grep指令篩選與Intent活動相關(guān)的關(guān)鍵字,根據(jù)檢測出來的log信息監(jiān)控應(yīng)用程序活動。
2.2.3 組態(tài)設(shè)定
為了避免使用不當?shù)南到y(tǒng)組態(tài)設(shè)定而造成的隱私風險,依據(jù)Android 安全組態(tài)標準進行系統(tǒng)設(shè)定隱私檢測,通過ContentResolver、Cookie Manager、Device Policy Manager和WiFi Manager等SDK提供的相關(guān)API實現(xiàn)。
2.2.4 風險評估
依據(jù)Google所定義的權(quán)限保護等級與權(quán)限風險層級前20名排名名單計算隱私風險系數(shù)。保護層等級為“Normal”與“Dangerous”的權(quán)限,隱私風險系數(shù)分別為2與8;保護層級為“Signature”或“Signature Or System”的權(quán)限,隱私風險系數(shù)為5。若系統(tǒng)的組態(tài)設(shè)定沒有符合標準,其隱私風險系數(shù)為8;若符合標準,其隱私風險系數(shù)為0。最后計算權(quán)限以及組態(tài)設(shè)定的平均風險系數(shù),系數(shù)越高,說明系統(tǒng)危險程度越高;若平均風險系數(shù)為藍色,則表示設(shè)備風險系數(shù)低。
權(quán)限分析是以獲取谷歌瀏覽器的權(quán)限列表為例,如圖3所示,應(yīng)用程序可讀取系統(tǒng)設(shè)定、發(fā)送廣播和管理賬號權(quán)限android.permission.MANGE_ACCOUNTS()等。雖然可在設(shè)備“應(yīng)用管理”中查看權(quán)限詳情,但此功能所檢測的權(quán)限更加詳細,且可以獲得AndroidManifest.xml中對權(quán)限的定義的描述。
以應(yīng)用程序QQ為例,通過QQ發(fā)送文件,并將發(fā)送記錄刪除。如圖4所示,應(yīng)用程序活動監(jiān)控能夠成功檢測到QQ傳輸了文件,字段“act=android.intent.action.SEND”代表該應(yīng)用程序有傳輸資料的行為。
將Android設(shè)備的系統(tǒng)版本升級到最新版,應(yīng)用程序的安裝方式設(shè)置為允許未知來源安裝、未禁用相機和未設(shè)置鎖屏密碼等,如圖5所示,系統(tǒng)組態(tài)設(shè)置檢測可以檢測出設(shè)備沒有設(shè)置鎖屏和密碼以及相機沒有禁止等,點擊“修改”按鍵對Fail的設(shè)置進行修改。
對安裝在設(shè)備的所有應(yīng)用程序和系統(tǒng)組態(tài)檢測,可計算得出設(shè)置危險風險系數(shù)為4.999,如圖6所示。該危險風險系數(shù)低,說明設(shè)備安全性高。
圖3 權(quán)限分析
圖4 應(yīng)用行為監(jiān)控 圖5 系統(tǒng)組態(tài)檢測 圖6 風險評估
通過分析應(yīng)用程序的權(quán)限等級,根據(jù)Android安全組態(tài)標準,設(shè)計了一種符合移動設(shè)備安全標準的 Android隱私保護系統(tǒng)。將應(yīng)用行為的檢測轉(zhuǎn)變?yōu)闄?quán)限的動態(tài)檢測,同時將應(yīng)用行為與permission 相關(guān)聯(lián),完成了對應(yīng)用行為的動態(tài)檢測,幫助管理與修改因不當設(shè)定而產(chǎn)生的系統(tǒng)漏洞。驗證結(jié)果表明,該系統(tǒng)通過監(jiān)控應(yīng)用程序活動,掌握了設(shè)備潛在的危險因素;通過風險評估分析每個應(yīng)用程序的權(quán)限等級,避免了權(quán)限過高導(dǎo)致設(shè)備安全性降低的問題;最后根據(jù)合理的組態(tài)設(shè)定,降低了惡意軟件攻擊風險,提高了 Android 移動設(shè)備安全性。