肖榮 陸晉軍 馬思峻
摘要:隨著移動(dòng)互聯(lián)網(wǎng)的飛速發(fā)展,移動(dòng)辦公已經(jīng)成為政府、企業(yè)提供業(yè)務(wù)和服務(wù)的最主要的方式。本文研究了一種基于分層保護(hù)技術(shù)的移動(dòng)應(yīng)用安全保護(hù)方法,實(shí)現(xiàn)對(duì)移動(dòng)應(yīng)用的多層次的保護(hù)。
Abstract: With the rapid development of mobile Internet, mobile application has become the key way for the government and enterprises to provide business and services. In the paper, a method of mobile security protection based on multi-level protection is studied and realized.
關(guān)鍵詞:移動(dòng)應(yīng)用安全;惡意軟件;Hook;ASM;移動(dòng)設(shè)備管理
Key words: mobile application security;malicious software;Hook;ASM;mobile device management
中圖分類號(hào):TP316? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文章編號(hào):1006-4311(2020)21-0176-03
0? 引言
隨著移動(dòng)互聯(lián)網(wǎng)的飛速發(fā)展,移動(dòng)辦公日漸興起,智能手機(jī)、Pad等移動(dòng)設(shè)備已經(jīng)成為企業(yè)業(yè)務(wù)承載和個(gè)人日常生活的最主要的載體。在移動(dòng)設(shè)備中,存貯了企業(yè)辦公所需的郵件、數(shù)據(jù)、通信錄、照片、視頻等重要信息。頻繁的網(wǎng)絡(luò)交互以及使用第三方移動(dòng)應(yīng)用等,使得移動(dòng)設(shè)備被入侵、被惡意應(yīng)用程序竊取信息等風(fēng)險(xiǎn)越來(lái)越大,給企業(yè)、個(gè)人的信息安全帶來(lái)巨大的安全隱患。
企業(yè)移動(dòng)辦公面臨的風(fēng)險(xiǎn)主要包括以下幾個(gè)方面:
1? 無(wú)法定位移動(dòng)應(yīng)用故障和性能問(wèn)題
企業(yè)自有移動(dòng)應(yīng)用的來(lái)源主要包括自有開(kāi)發(fā)和委托第三方開(kāi)發(fā)。移動(dòng)應(yīng)用的開(kāi)發(fā)因?yàn)榧夹g(shù)能力的差異,經(jīng)常會(huì)面臨移動(dòng)應(yīng)用的開(kāi)發(fā)的質(zhì)量問(wèn)題,造成移動(dòng)應(yīng)用的閃退、無(wú)響應(yīng)、耗電量高、流量開(kāi)銷(xiāo)大等問(wèn)題,甚至出現(xiàn)安全風(fēng)險(xiǎn)和隱患,從而導(dǎo)致用戶體驗(yàn)下降,故障、性能和安全問(wèn)題是企業(yè)自有移動(dòng)應(yīng)用面臨的主要問(wèn)題。
2? 使用第三方移動(dòng)應(yīng)用帶來(lái)信息安全問(wèn)題
移動(dòng)應(yīng)用的環(huán)境過(guò)于開(kāi)放,使得在使用第三方的移動(dòng)應(yīng)用時(shí),容易產(chǎn)生安全隱患,發(fā)生數(shù)據(jù)泄露。根據(jù)工信部發(fā)布的報(bào)告中[1],多款A(yù)PP涉嫌侵犯用戶的隱私,其中主要包括:私自啟用設(shè)備功能進(jìn)行竊聽(tīng)、非法訪問(wèn)照片和通信錄、偷傳移動(dòng)設(shè)備信息等問(wèn)題。因此,需要對(duì)第三方移動(dòng)應(yīng)用的進(jìn)行安全運(yùn)行環(huán)境,限制第三方APP非授權(quán)訪問(wèn)移動(dòng)設(shè)備的通信錄、語(yǔ)音、攝像頭等功能,防止偷取、竊聽(tīng)、篡改用戶的信息,保障移動(dòng)環(huán)境下的企業(yè)移動(dòng)辦公的安全[2]。
3? 移動(dòng)設(shè)備丟失造成數(shù)據(jù)泄密問(wèn)題
移動(dòng)性、便攜性是移動(dòng)辦公的最大優(yōu)勢(shì),但同時(shí)也使移動(dòng)設(shè)備存在丟失的風(fēng)險(xiǎn)。一旦包含敏感信息的政務(wù)、企業(yè)移動(dòng)辦公的設(shè)備丟失,則可能造成信息泄露,并可能成為被攻擊的漏洞。
因此,對(duì)政務(wù)、企業(yè)的移動(dòng)辦公的安全防護(hù),重點(diǎn)在于保障移動(dòng)應(yīng)用安全、移動(dòng)運(yùn)行環(huán)境安全和移動(dòng)設(shè)備安全。
3.1 基于Hook技術(shù)的安全運(yùn)行環(huán)境
Hook技術(shù)是一種用于監(jiān)控Windows系統(tǒng)消息的技術(shù)。Hook技術(shù)能夠在功能函數(shù)執(zhí)行前,過(guò)濾一些關(guān)鍵函數(shù)調(diào)用,使得系統(tǒng)先執(zhí)行自己的掛鉤函數(shù),從而達(dá)到監(jiān)控系統(tǒng)函數(shù)調(diào)用,改變被鉤函數(shù)功能的目的。
根據(jù)操作系統(tǒng)訪問(wèn)權(quán)限的不同,Hook技術(shù)主要分為兩種不同的類型:內(nèi)核級(jí)Hook和用戶級(jí)Hook。其中,用戶級(jí)Hook工作在操作系統(tǒng)的用戶層,主要通過(guò)動(dòng)態(tài)鏈接庫(kù)注入和導(dǎo)入地址表的方式進(jìn)行Hook,即將動(dòng)態(tài)鏈接庫(kù)注入到用戶空間進(jìn)程,修改導(dǎo)入地址表,將截取的目標(biāo)函數(shù)的地址修改為鉤子函數(shù)的地址進(jìn)而達(dá)到Hook的目的。(圖1)
基于Android平臺(tái)Hook技術(shù)的研究主要集中在用戶級(jí)Hook。根據(jù)不同運(yùn)行時(shí)體系結(jié)構(gòu),搜索目標(biāo)函數(shù)在內(nèi)存中的入口地址,通過(guò)修改目標(biāo)函數(shù)方法結(jié)構(gòu)體中函數(shù)地址值,進(jìn)行Dex Hook函數(shù)加載及函數(shù)Hook,完成運(yùn)行時(shí)Hook過(guò)程。通過(guò)Hook技術(shù)實(shí)現(xiàn)對(duì)Android終端的安全保護(hù),混合支持Android Dalvik和Android ART虛擬機(jī)[3],實(shí)現(xiàn)智能終端的安全保護(hù)。通過(guò)動(dòng)態(tài)獲取目標(biāo)函數(shù)修改目標(biāo)內(nèi)存塊的讀取權(quán)限,將該內(nèi)存塊存儲(chǔ)的目標(biāo)函數(shù)入口地址替換成自定義函數(shù)地址,當(dāng)應(yīng)用調(diào)用目標(biāo)函數(shù)時(shí),最終會(huì)執(zhí)行自定義函數(shù),自定義函數(shù)中加入了安全保護(hù)代碼,執(zhí)行結(jié)束后再跳轉(zhuǎn)到原有目標(biāo)函數(shù)入口地址,從而實(shí)現(xiàn)將應(yīng)用程序中的目標(biāo)函數(shù)入口地址改變?yōu)殂^子函數(shù)的地址達(dá)到Hook的目的。
通過(guò)Hook技術(shù),可以對(duì)需要使用的第三方應(yīng)用進(jìn)行防護(hù),對(duì)于移動(dòng)設(shè)備中重要的系統(tǒng)級(jí)調(diào)用進(jìn)行保護(hù),通過(guò)Hook對(duì)這些系統(tǒng)級(jí)調(diào)用進(jìn)行加“殼”保護(hù),使用自定義的函數(shù),來(lái)進(jìn)行授權(quán)、執(zhí)行、記錄等操作,可以禁止第三方應(yīng)用私自調(diào)用這些功能和接口,并對(duì)每一次系統(tǒng)級(jí)調(diào)用進(jìn)行記錄,從而防止第三方移動(dòng)應(yīng)用非法竊取移動(dòng)設(shè)備上的用戶數(shù)據(jù)隱私,并保留可以進(jìn)行系統(tǒng)安全審計(jì)和追溯的痕跡。
3.2 面向切面編程技術(shù)的移動(dòng)應(yīng)用監(jiān)控
基于字節(jié)碼增強(qiáng)方法,使用面向切面編程技術(shù),對(duì)已有應(yīng)用的Android源代碼進(jìn)行預(yù)編譯處理,在應(yīng)用編譯打包時(shí),實(shí)現(xiàn)在不需要源代碼的情況下,給程序動(dòng)態(tài)統(tǒng)一添加探針代碼,實(shí)現(xiàn)對(duì)已有的移動(dòng)應(yīng)用增加移動(dòng)應(yīng)用實(shí)時(shí)監(jiān)控能力,實(shí)現(xiàn)移動(dòng)應(yīng)用的業(yè)務(wù)邏輯和系統(tǒng)監(jiān)控保護(hù)服務(wù)的分離。
基于字節(jié)碼增強(qiáng)方法,通過(guò)java rewriter重寫(xiě)jar包,匹配類名和方法名注入替換類和替換方法。具體如圖2。
在被監(jiān)測(cè)的移動(dòng)應(yīng)用側(cè),在Java虛擬機(jī)中部署Agent代理,應(yīng)用程序加載入JVM時(shí),Agent使用Java字節(jié)碼操縱框架ASM修改加載入JVM的Class類,動(dòng)態(tài)插入采集應(yīng)用程序運(yùn)行時(shí)各種事件和測(cè)量值的代碼,新增代碼執(zhí)行獲取各項(xiàng)數(shù)據(jù)后發(fā)送至監(jiān)控平臺(tái)側(cè)。
通過(guò)遵循ASM方法[4],建立字節(jié)碼轉(zhuǎn)換適配器Class Visitor Factory,在Class Visitor Factory中創(chuàng)建類適配器Class Adapter,并在類適配器Class Adapter中創(chuàng)建類方法轉(zhuǎn)換工廠Method Visitor Factory,類方法轉(zhuǎn)換工廠中創(chuàng)建Method Visitor對(duì)象,Method Visitor對(duì)象實(shí)現(xiàn)on Method Enter方法,on Method Enter方法調(diào)用Invocation? Dispatcher類的invoke函數(shù)。
其中,上述java rewriter重寫(xiě)jar包,具體如下:Invoke函數(shù)負(fù)責(zé)替換Android SDK和第三方類庫(kù),使用Decorator模式按照順序替換應(yīng)用管理、Activity(頁(yè)面)、異步任務(wù)、剪貼板、USB、藍(lán)牙等安全保護(hù)相關(guān)的類,對(duì)應(yīng)的Class Visitor分別為Package Manager Class Visitor、Activity Class Visitor、Async Task Class Visitor、Clipboard Service Class Visitor、Device Manager Class Visitor、Location Manager Class Visitor,這些類使用ASM技術(shù)替換需要移動(dòng)應(yīng)用安全保護(hù)的類和方法,重寫(xiě)jar包中包含配置文件說(shuō)明原有方法和替換方法的對(duì)應(yīng)關(guān)系和替換方式,Jvm加載原有類的方法時(shí),根據(jù)方法名在配置文件進(jìn)行查找,如果發(fā)現(xiàn)有替換的方法,就替換原有方法的字節(jié)碼,替換的字節(jié)碼中包含原有代碼的執(zhí)行邏輯和新增的安全保護(hù)代碼。
通過(guò)面向切面的編程技術(shù),可以有效的監(jiān)控移動(dòng)應(yīng)用,對(duì)移動(dòng)應(yīng)用中的內(nèi)存、數(shù)據(jù)庫(kù)、線程以及特定的函數(shù)的使用情況,可以進(jìn)行感知和分析,進(jìn)而進(jìn)行調(diào)用鏈分析。在移動(dòng)應(yīng)用出現(xiàn)問(wèn)題的時(shí)候,可以進(jìn)行相應(yīng)的代碼段定位,從而實(shí)現(xiàn)移動(dòng)應(yīng)用的精確的故障診斷,可以有效的改善移動(dòng)應(yīng)用的質(zhì)量,提升移動(dòng)應(yīng)用的安全性。
3.3 移動(dòng)應(yīng)用分層安全保護(hù)框架
為了保證政務(wù)、企業(yè)移動(dòng)辦公的移動(dòng)應(yīng)用安全、移動(dòng)運(yùn)行環(huán)境安全和移動(dòng)設(shè)備安全。可以從操作系統(tǒng)內(nèi)核層、虛擬機(jī)層和應(yīng)用層提供混合保護(hù)機(jī)制。在內(nèi)核層,進(jìn)行內(nèi)核函數(shù)的交互控制;在JVM層,監(jiān)控移動(dòng)應(yīng)用的故障和性能;在應(yīng)用層,基于MDM協(xié)議,對(duì)移動(dòng)應(yīng)用進(jìn)行設(shè)備和應(yīng)用的遠(yuǎn)程管理。移動(dòng)辦公安全的混合保護(hù)框架如圖3所示。
3.3.1 基于內(nèi)核層的保護(hù)
內(nèi)核層是移動(dòng)應(yīng)用最終通過(guò)與操作系統(tǒng)內(nèi)核的交互實(shí)現(xiàn)其功能,在內(nèi)核層,通過(guò)Hook技術(shù),對(duì)重要的方法進(jìn)行重構(gòu),從而可以構(gòu)建移動(dòng)辦公安全保護(hù)殼。通過(guò)Hook技術(shù),實(shí)現(xiàn)移動(dòng)應(yīng)用與內(nèi)核層交互的調(diào)用方法保護(hù),包括文件讀取、數(shù)據(jù)加密、網(wǎng)絡(luò)控制等功能。
通過(guò)Hook技術(shù),還能在內(nèi)核層對(duì)移動(dòng)設(shè)備的各種硬件驅(qū)動(dòng)進(jìn)行管理,如錄音、攝像頭、Wifi、藍(lán)牙、USB等,從內(nèi)核層安全實(shí)時(shí)的響應(yīng)管理平臺(tái)下發(fā)的各種策略。
3.3.2 基于JVM的保護(hù)
在JVM層,通過(guò)字節(jié)碼增強(qiáng)方法,基于面向切面的編程技術(shù),未移動(dòng)應(yīng)用加載探針,可以在虛擬機(jī)層面的函數(shù)方法上進(jìn)行監(jiān)控,對(duì)移動(dòng)應(yīng)用進(jìn)行實(shí)時(shí)數(shù)據(jù)的采集,及時(shí)準(zhǔn)確發(fā)現(xiàn)移動(dòng)應(yīng)用的故障和性能,并進(jìn)行精確定位問(wèn)題代碼。
通過(guò)利用移動(dòng)應(yīng)用的監(jiān)控,對(duì)涉及的多級(jí)函數(shù)調(diào)用進(jìn)行調(diào)用鏈分析,可以及時(shí)發(fā)現(xiàn)和預(yù)警移動(dòng)應(yīng)用存在的安全和性能問(wèn)題。
3.3.3 基于應(yīng)用層的保護(hù)
在應(yīng)用層,基于MDM移動(dòng)設(shè)備管理協(xié)議,可以對(duì)在使用層面對(duì)移動(dòng)應(yīng)用進(jìn)行控制,通過(guò)移動(dòng)應(yīng)用的名單制管理,控制企業(yè)允許使用的各種應(yīng)用,未得到授權(quán)的移動(dòng)應(yīng)用在移動(dòng)設(shè)備上將被禁止運(yùn)行,對(duì)非授權(quán)的移動(dòng)應(yīng)用,企業(yè)可以進(jìn)行遠(yuǎn)程靜默刪除。
此外,在應(yīng)用層,可以遠(yuǎn)程進(jìn)行鎖屏、恢復(fù)出廠設(shè)置、更改密碼和數(shù)據(jù)擦除等,在設(shè)備丟失等情況下,保護(hù)終端設(shè)備的數(shù)據(jù)安全。
4? 結(jié)束語(yǔ)
隨著移動(dòng)互聯(lián)網(wǎng)的飛速發(fā)展,移動(dòng)辦公已經(jīng)成為政務(wù)、企業(yè)開(kāi)展業(yè)務(wù)和服務(wù)的最主要的方式。隨身攜帶的設(shè)備、無(wú)處不在的網(wǎng)絡(luò)、不同來(lái)源的應(yīng)用,使得政務(wù)、企業(yè)的關(guān)鍵業(yè)務(wù)和核心數(shù)據(jù)也必然將面臨更多的風(fēng)險(xiǎn)。通過(guò)對(duì)移動(dòng)辦公進(jìn)行分層混合保護(hù)管理,加強(qiáng)對(duì)企業(yè)自有移動(dòng)應(yīng)用的監(jiān)控、對(duì)第三方移動(dòng)應(yīng)用安全的使用限制、對(duì)設(shè)備上的數(shù)據(jù)安全有效的管理,實(shí)現(xiàn)對(duì)移動(dòng)辦公的全方位、多層次的保護(hù),具有十分重要的價(jià)值和社會(huì)效益。
參考文獻(xiàn):
[1]關(guān)于侵害用戶權(quán)益行為的APP通報(bào)(2020年第一批)[EB/OL]. 2020-05-15.http://www.miit.gov.cn/n1146290/n1146402/c7911974/content.html.
[2]徐震,張妍. 面向政務(wù)領(lǐng)域移動(dòng)辦公的安全移動(dòng)終端防護(hù)技術(shù)分析與研究[J].保密科學(xué)技術(shù),2020(3):7-11.
[3]侯留洋,羅森林,潘麗敏,張?bào)?融合多特征的Android 惡意軟件檢測(cè)方法[J].信息網(wǎng)絡(luò)安全,2020(1):67-74.
[4]程龍,李冶.應(yīng)用ASM修改JAVA字節(jié)碼[J].信息與電腦(理論版),2011(5):124-126.