◆王 喆
?
Android移動(dòng)終端數(shù)據(jù)安全檢測(cè)方法研究
◆王 喆
(核工業(yè)計(jì)算機(jī)應(yīng)用研究所 北京 100048)
移動(dòng)終端數(shù)據(jù)安全一直是信息安全防護(hù)體系的薄弱點(diǎn)。實(shí)施數(shù)據(jù)安全檢測(cè)可及時(shí)發(fā)現(xiàn)終端設(shè)備敏感信息存在的安全隱患,有效防范信息泄露、賬號(hào)竊取及數(shù)據(jù)污染。但受移動(dòng)終端軟件高開放性、低準(zhǔn)入性以及設(shè)備多樣性的影響,很難形成統(tǒng)一的數(shù)據(jù)安全檢測(cè)標(biāo)準(zhǔn)和方法。本文以目前市場(chǎng)占有率較高的Android移動(dòng)終端數(shù)據(jù)安全為研究對(duì)象,根據(jù)敏感信息機(jī)密性、完整性、可用性原則,分析了移動(dòng)終端數(shù)據(jù)存儲(chǔ)和傳輸兩個(gè)重要環(huán)節(jié)中的安全防護(hù)要素,并基于此研究提出了一種Android移動(dòng)終端數(shù)據(jù)安全檢測(cè)評(píng)價(jià)方法。
信息安全;移動(dòng)應(yīng)用安全;企業(yè)業(yè)務(wù)安全;數(shù)據(jù)安全
隨著互聯(lián)網(wǎng)及移動(dòng)通信的匯聚融合,移動(dòng)終端互聯(lián)網(wǎng)應(yīng)用已融入人類世界的各個(gè)層面。人們?cè)谙硎芤苿?dòng)辦公、移動(dòng)支付、網(wǎng)絡(luò)社交及資訊、娛樂等便利的同時(shí),也面臨著更大的數(shù)據(jù)安全威脅和隱患。(1)開放平臺(tái)特性造成移動(dòng)終端系統(tǒng)本身存在諸多漏洞,為病毒、木馬的侵入提供了條件。截止到2017年底,CNNVD收錄Andorid系統(tǒng)漏洞1082個(gè)[1],抽樣調(diào)查顯示,每一移動(dòng)終端出廠前平均包含5個(gè)未修復(fù)漏洞,高危及以上漏洞超過90%,并且數(shù)量成快速增加的趨勢(shì)。(2)軟件APP的準(zhǔn)入門檻低,安全防護(hù)技術(shù)滯后,難以有效遏制惡意程序的傳播擴(kuò)散。目前Android平臺(tái)有近300萬個(gè)惡意程序,流氓行為類居多[2],其次是惡意扣費(fèi)類、資費(fèi)消費(fèi)類,惡意程序危害巨大,可為其他惡意行為創(chuàng)造進(jìn)入條件,是當(dāng)前移動(dòng)終端最大的安全隱患。③病毒、木馬、釣魚網(wǎng)站泛濫,移動(dòng)終端成為網(wǎng)絡(luò)攻擊的新目標(biāo)。據(jù)某安全公司監(jiān)測(cè)數(shù)據(jù)顯示,僅2017年上半年Android病毒數(shù)已超過1000萬,釣魚網(wǎng)站攻擊事件超過3000萬起。除此之外,針對(duì)移動(dòng)通信過程的新攻擊手段也層出不窮,CSFB(電路切換回退,4G LTE網(wǎng)絡(luò)中的安全漏洞)、Broadpwn(wifi基帶漏洞)都可能引發(fā)嚴(yán)重的安全事件[3]。
移動(dòng)終端安全防護(hù)的重心是數(shù)據(jù)安全,數(shù)據(jù)安全檢測(cè)是防范敏感信息數(shù)據(jù)防泄漏和抗污染的手段之一。然而,目前多數(shù)安全檢測(cè)類產(chǎn)品僅提供對(duì)移動(dòng)終端系統(tǒng)和應(yīng)用的自動(dòng)化檢測(cè)服務(wù),對(duì)其敏感信息數(shù)據(jù)并未做更多細(xì)致的過濾分析和保護(hù),無法真正保證數(shù)據(jù)存儲(chǔ)和傳輸安全;同時(shí),考慮市場(chǎng)競(jìng)爭(zhēng)、技術(shù)發(fā)展以及操作難度等因素,國(guó)家層面并未就移動(dòng)終端數(shù)據(jù)安全檢測(cè)制定單獨(dú)統(tǒng)一的標(biāo)準(zhǔn)規(guī)范和強(qiáng)制合規(guī)性要求,生產(chǎn)企業(yè)和應(yīng)用企業(yè)只能按照一些行標(biāo)條款制定自己產(chǎn)品和應(yīng)用場(chǎng)景的安全基線,缺乏有效的檢測(cè)手段和方法。因此,在移動(dòng)終端數(shù)據(jù)安全問題日益嚴(yán)重的今天,相應(yīng)安全檢測(cè)方法研究無論是技術(shù)需求還是規(guī)范標(biāo)準(zhǔn)的探索都是迫切且必要的。本文以市場(chǎng)占有率較高的Android移動(dòng)終端數(shù)據(jù)安全為研究對(duì)象,通過分析數(shù)據(jù)靜態(tài)存儲(chǔ)和動(dòng)態(tài)傳輸兩個(gè)重要環(huán)節(jié)的安全因素,探索移動(dòng)終端數(shù)據(jù)安全檢測(cè)評(píng)價(jià)方法。
數(shù)據(jù)存儲(chǔ)在開發(fā)中是使用最頻繁的,在這里主要介紹Android平臺(tái)中實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的4種方式:(1)SharedPreferences是Android平臺(tái)上一個(gè)輕量級(jí)的存儲(chǔ)類,主要是保存一些常用的配置比如窗口狀態(tài)[4]。SharedPreferences對(duì)象與SQLite數(shù)據(jù)庫相比,免去了創(chuàng)建數(shù)據(jù)庫,創(chuàng)建表,寫SQL語句等諸多操作,相對(duì)而言更加方便,簡(jiǎn)潔。但是SharedPreferences也有其自身缺陷,比如其職能存儲(chǔ)五種簡(jiǎn)單的數(shù)據(jù)類型,比如其無法進(jìn)行條件查詢等;(2)關(guān)于文件存儲(chǔ),Activity提供了openFileOutput()方法可以用于把數(shù)據(jù)輸出到文件中,具體的實(shí)現(xiàn)過程與在J2SE環(huán)境中保存數(shù)據(jù)到文件中是一樣的;(3)SQLite是輕量級(jí)嵌入式數(shù)據(jù)庫引擎,它支持 SQL 語言,并且只利用很少的內(nèi)存就有很好的性能。面向資源有限的設(shè)備,沒有服務(wù)器進(jìn)程,所有數(shù)據(jù)存放在同一文件中跨平臺(tái),可自由復(fù)制;(4)一個(gè)程序可以通過實(shí)現(xiàn)一個(gè)Content Provider的抽象接口將自己的數(shù)據(jù)暴露出去,外界可以通過這一套標(biāo)準(zhǔn)及統(tǒng)一的接口和程序里的數(shù)據(jù)打交道,可以讀取程序的數(shù)據(jù),也可以刪除程序的數(shù)據(jù),當(dāng)然,中間也會(huì)涉及一些權(quán)限的問題。
大多數(shù)的Android應(yīng)用程序都會(huì)使用HTTP協(xié)議來發(fā)送和接收網(wǎng)絡(luò)數(shù)據(jù),而Android中主要提供了兩種方式來進(jìn)行HTTP操作,HttpURLConnection和HttpClient。這兩種方式都支持HTTPS協(xié)議、以流的形式進(jìn)行上傳和下載、配置超時(shí)時(shí)間、IPV6、以及連接池等功能。在2.3及以后的版本中,HttpURLConnection是最好的選擇,它簡(jiǎn)單的API以及輕量級(jí)非常適合Android。壓縮和緩存機(jī)制降低了網(wǎng)路使用,提高了速度、節(jié)省了電量。但是在連接管理和線程安全方面,HttpClient仍然具有很大的優(yōu)勢(shì),其提供了大量的可擴(kuò)展的穩(wěn)定的APIs,但是在不破壞其兼容性的前提下,很難對(duì)其諸多API進(jìn)行修改,升級(jí)和擴(kuò)展。
加密算法在應(yīng)用中可對(duì)關(guān)鍵信息進(jìn)行保護(hù)。在代碼的關(guān)鍵點(diǎn)如登陸注冊(cè)等需要與后臺(tái)進(jìn)行交互的位置使用加密算法,在一定程度上可以保護(hù)用戶信息以及關(guān)鍵代碼的實(shí)現(xiàn)。但加密算法強(qiáng)度過于簡(jiǎn)單,或加密算法的完全缺失會(huì)暴露關(guān)鍵信息以及重要邏輯,威脅到用戶和企業(yè)的信息安全。
(1)數(shù)據(jù)存儲(chǔ)安全檢測(cè)評(píng)價(jià)方法
數(shù)據(jù)的存儲(chǔ)即數(shù)據(jù)本身的安全,主要是指采用現(xiàn)代密碼算法對(duì)數(shù)據(jù)進(jìn)行主動(dòng)保護(hù),如數(shù)據(jù)保密、數(shù)據(jù)完整性、雙向強(qiáng)身份認(rèn)證等[5]。如果敏感數(shù)據(jù)遭受到攻擊可能導(dǎo)致劫持、嗅探、破解、竊取等危害,導(dǎo)致非法修改和刷新、個(gè)人隱私數(shù)據(jù)的非法讀取訪問、病毒和惡意代碼的破壞,甚至移動(dòng)終端被盜等。
對(duì)存儲(chǔ)數(shù)據(jù)的檢查要針對(duì)本地存儲(chǔ)的敏感數(shù)據(jù),并且對(duì)其采用的加密措施進(jìn)行判斷。Android本地?cái)?shù)據(jù)存儲(chǔ)有四種方式:SharedPreferences存儲(chǔ)數(shù)據(jù)、文件存儲(chǔ)數(shù)據(jù)、SQLite數(shù)據(jù)庫存儲(chǔ)數(shù)據(jù)、ContentProvider存儲(chǔ)數(shù)據(jù)。每種數(shù)據(jù)的存儲(chǔ)對(duì)應(yīng)相應(yīng)的目錄和接口。通常需要首先查看相關(guān)目錄查看相關(guān)目錄(/data/data/[package_name]/Shared_Pref、/data/data/[package_name] /files、/data/data/[package_name]/database)里的數(shù)據(jù)文件,是否可以通過相關(guān)瀏覽工具直接打開;如果經(jīng)過加密處理,分析數(shù)據(jù)讀寫操作處的加密和解密接口實(shí)現(xiàn)是否安全。因此,對(duì)于敏感的數(shù)據(jù)一定要先經(jīng)過加密,并選擇加密算法盡量成熟、安全系數(shù)高的算法再存儲(chǔ)[6]。
本地通訊權(quán)限檢測(cè)要評(píng)估樣本是否存在超越權(quán)限的通訊或信息泄露行為。查看配置文件Mainfest.XML文件中是否有Broadcast,如果有,查看對(duì)應(yīng)的avtivity中發(fā)送的是否為敏感信息,如果為敏感信息,查看是否經(jīng)過加密,如果是加密后的數(shù)據(jù),可以認(rèn)為安全。如果未經(jīng)加密,查看是否為sendOrderedBroadcast廣播機(jī)制,有沒有使用指定發(fā)送的Andro類,如果沒有指定,則敏感信息容易在廣播中被截獲,存在安全問題因此,要信息的傳遞方式進(jìn)行改進(jìn),對(duì)權(quán)限進(jìn)行最小化處理[7]。
完整性校驗(yàn)檢查可通過對(duì)應(yīng)用進(jìn)行反編譯,查看是否具有反編譯防護(hù)措施;反編譯后回打包重簽名,查看應(yīng)用是否可以重打包成功;二次打包運(yùn)行后,查看應(yīng)用是否有運(yùn)行時(shí)的校驗(yàn);審計(jì)和跟蹤應(yīng)用邏輯,查看應(yīng)用校驗(yàn)算法實(shí)現(xiàn)方式和保護(hù)機(jī)制,對(duì)起保護(hù)強(qiáng)度等級(jí)進(jìn)行評(píng)估。因此,要對(duì)應(yīng)用添加保護(hù)標(biāo)志和校驗(yàn)代碼,是反編譯和二次打包后的運(yùn)行失效,并對(duì)應(yīng)用進(jìn)行加固處理。
(2)數(shù)據(jù)傳輸安全檢測(cè)評(píng)價(jià)方法
數(shù)據(jù)的傳輸安全適用各種網(wǎng)絡(luò)協(xié)議數(shù)據(jù)傳輸加密(如身份認(rèn)證,交易接口,數(shù)據(jù)加密等)各種網(wǎng)絡(luò)協(xié)議,尤其在用戶登陸認(rèn)證,交易接口等方面[8]。數(shù)據(jù)在傳輸過程沒有對(duì)關(guān)鍵數(shù)據(jù)進(jìn)行加密處理,就容易面臨被獲取進(jìn)行抓包分析、敏感信息隨意被分析篡改等風(fēng)險(xiǎn),同時(shí),也可以通過界面劫持和鍵盤監(jiān)聽的方式截取到本地存入的數(shù)據(jù),都會(huì)對(duì)應(yīng)用的安全性造成影響。
遠(yuǎn)程數(shù)據(jù)通訊協(xié)議對(duì)數(shù)據(jù)傳輸過程中的協(xié)議進(jìn)行檢查。使用抓包工具,對(duì)于非http類型的協(xié)議建議使用Wireshark對(duì)協(xié)議進(jìn)行解析,對(duì)于http/https協(xié)議使用fiddler。通過手動(dòng)的方式,可以將連接在電腦上的手機(jī)通過給程序授權(quán)777讀寫權(quán)限,使用命令./data/local/tcpdump -p -vv -s 0 -w /sdcard/capture.pcap抓取數(shù)據(jù),使用工具分析數(shù)據(jù)。獲取到的數(shù)據(jù)可以進(jìn)行分析和修改,判斷其安全性。因此,在傳輸過程中敏感數(shù)據(jù)不能用明文傳輸,使用加密協(xié)議進(jìn)行數(shù)據(jù)傳輸。
移動(dòng)終端數(shù)據(jù)安全檢測(cè)以數(shù)據(jù)的安全視角評(píng)價(jià)終端安全,既能積極指導(dǎo)生產(chǎn)企業(yè)加強(qiáng)對(duì)自身終端、系統(tǒng)、APP軟件的數(shù)據(jù)安全防護(hù),優(yōu)化產(chǎn)品;又能幫助使用移動(dòng)辦公的用戶企業(yè)了解數(shù)據(jù)在終端上可能存在的安全隱患,并根據(jù)自身實(shí)際應(yīng)用場(chǎng)景確立安全基線。隨著移動(dòng)互聯(lián)網(wǎng)應(yīng)用的飛速發(fā)展,作為數(shù)據(jù)安全防護(hù)的組成部分,移動(dòng)終端數(shù)據(jù)安全檢測(cè)技術(shù)和方法須緊跟產(chǎn)品和技術(shù)創(chuàng)新,形成科學(xué)系統(tǒng)的體系,從而促進(jìn)和推動(dòng)領(lǐng)域內(nèi)相關(guān)標(biāo)準(zhǔn)的制定和實(shí)踐。
[1]中國(guó)信息安全測(cè)評(píng)中心.2017年度國(guó)家信息安全態(tài)勢(shì)評(píng)估.時(shí)事出版社,2017.
[2]互聯(lián)網(wǎng)安全中心.2017年Android惡意軟件專題報(bào)告,2017.
[3]康亮.移動(dòng)通信終端IOT測(cè)試技術(shù)研究.工業(yè)和信息化部電信研究院,2013.
[4]李剛.瘋狂Android講義(第3版),2017.
[5]韓芳.針對(duì)2017年度數(shù)據(jù)安全的基本分析,2017.
[6]趙旭.數(shù)據(jù)加密算法分析與改進(jìn)[D].哈爾濱工業(yè)大學(xué),2012.
[7]郭霖.第一行代碼:Android(第2版),2017.
[8]孫洪濤.基于網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)信息加密方法研究[D].吉林大學(xué),2014.