李網(wǎng)燦 丁 晉
中國電信股份有限公司江蘇分公司
移動互聯(lián)網(wǎng)時代,移動APP應(yīng)用安全風(fēng)險越來越值得關(guān)注。近年來,由移動APP引發(fā)的公民個人信息泄露事件時有發(fā)生,包括短信、微信、通訊錄被惡意讀取、定位信息泄露、支付信息被竊取等,造成了公民個人的隱私安全、財產(chǎn)安全、甚至人身安全受得嚴(yán)重威脅。江蘇電信通過移動APP應(yīng)用安全監(jiān)測平臺對接入的手機(jī)終端流量進(jìn)行分析,本文則詳細(xì)介紹了監(jiān)測分析方法,并提出了安全加固建議。
國家計算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心CNCERT發(fā)布的《2019年上半年我國互聯(lián)網(wǎng)網(wǎng)絡(luò)安全態(tài)勢》報告指明,我國移動APP違法違規(guī)使用公民個人信息的問題非常嚴(yán)重,為數(shù)不少的APP存在違規(guī)收集、保存、使用個人隱私信息的行為。針對以上亂象,2019年以來中共中央網(wǎng)絡(luò)安全和信息化委員辦公室等四部委也開展了治理APP專項行動。移動APP的主要風(fēng)險分析如下:
以Android操作系統(tǒng)為例,由于Android開源的特殊性,客戶端的軟件非常容易被篡改和反編譯,沒有進(jìn)行過加殼保護(hù)的APK,可以通過以下五個小工具破解,植入木馬后門,如圖1所示。
圖1 破解APK的五個小工具
(1)apktool: google提供的APK編譯工具,用于逆向APK文件;
(2)dex2jar:安卓反編譯工具,可用于將dex文件轉(zhuǎn)換成jar文件;
(3)jd-gui: Java編程語言源代碼反編譯軟件;
(4)eclipse:基于Java的可擴(kuò)展開發(fā)平臺;
(5)簽名軟件:用于給編譯后的APK進(jìn)行簽名。
通過針對App的破解和二次打包后,應(yīng)用被破解后帶來的風(fēng)險有:
(1)在APK中加入廣告SDK賺廣告費。近兩年惡意廣告數(shù)量增幅較大,用戶每安裝三個APP,其中至少有一個包含了廣告。從惡意行為來看,惡意廣告的趨利性更加明顯。通過竊取重要隱私信息、頻繁推送廣告、靜默下載安裝其他應(yīng)用、攔截短信等方式非法牟利。
(2)在APK中加入木馬后門等惡意程序,添加惡意游戲鏈接等。
(3)支付中間人攻擊,將正常鏈接修改為中間人鏈接,導(dǎo)致用戶向篡改的支付鏈接進(jìn)行付費;
(4)違規(guī)收集、保存、使用公眾隱私信息。竊密木馬會啟動監(jiān)聽短信,讀取通話記錄,屏蔽回執(zhí)短信等。
(5)讀取金融類APP交易賬號。惡意程序可能會讀取手機(jī)中安裝的購物客戶端、銀行客戶端的帳號密碼。
(6)惡意色情應(yīng)用通過色情圖片、視頻等誘騙用戶點擊“免費注冊”,安裝后會在后臺靜默運行,不斷訪問惡意色情鏈接,消耗流量和手機(jī)資源。
移動APP應(yīng)用是典型的C/S架構(gòu),除了客戶端安全風(fēng)險外,服務(wù)器端的安全風(fēng)險也不容忽視。服務(wù)器端的安全風(fēng)險除了常見的web應(yīng)用端風(fēng)險,比如SQL注入、XSS等,還有API安全問題。SQL注入等傳統(tǒng)風(fēng)險,可以通過WAF等防護(hù)手段進(jìn)行防護(hù),但暴露在互聯(lián)網(wǎng)上的API接口往往沒有任何防護(hù),需要引起重視。服務(wù)端的主要漏洞包括:(1)SQL注入漏洞;(2)中間件/server漏洞;(3)代碼/命令執(zhí)行漏洞;(4)任意文件包含/操作漏洞;(5)敏感文件備份;(6)越權(quán)操作漏洞等。
本文介紹的移動應(yīng)用分析主要通過自動化的分析平臺+人工分析及滲透測試的方式來發(fā)現(xiàn)安全漏洞和隱患。首先進(jìn)行多引擎病毒查殺,如果發(fā)現(xiàn)病毒則終止掃描,對惡意程序進(jìn)行后續(xù)處理。如果上述過程未查殺到病毒,則可以判斷沒有感染已知病毒及其變種,然后進(jìn)入更復(fù)雜的靜態(tài)和動態(tài)檢測系統(tǒng),進(jìn)行風(fēng)險分析,并給出安全、謹(jǐn)慎或可疑(惡意)等級。
對可疑的應(yīng)用必須由人工分析進(jìn)行最終確認(rèn),對于謹(jǐn)慎的應(yīng)用的處理可以由用戶策略決定。人工分析同時包括對App應(yīng)用的安全測試以及服務(wù)端的安全測試。如圖2所示。
圖2 移動應(yīng)用安全分析流程
靜態(tài)分析主要通過以下分析方式:終端能力調(diào)用安全測試、終端資源訪問安全測試、網(wǎng)絡(luò)訪問安全測試、業(yè)務(wù)相關(guān)安全測試(需要遍歷APP涉及業(yè)務(wù)接口濫用的測試)。
主要的安全分析項包含:
(1)用戶權(quán)限檢查。包括是否具備以下各項權(quán)限:發(fā)送短信、獲取本機(jī)號碼、讀取聯(lián)系人號碼、讀取通話時長及號碼、讀取短信內(nèi)容及號碼、定位地理位置、監(jiān)聽手機(jī)通話、使用話筒錄音、打開攝像頭、讀取已安裝應(yīng)用列表、打開移動網(wǎng)絡(luò)開關(guān)、打開WiFi開關(guān)、打開藍(lán)牙開關(guān)、獲取設(shè)備識別碼等權(quán)限。
(2)代碼保護(hù)機(jī)制。包括但不限于源碼混淆保護(hù)監(jiān)測、DEX文件保護(hù)監(jiān)測、資源文件保護(hù)監(jiān)測、XML文件保護(hù)檢測、二次打包保護(hù)檢測、so庫文件保護(hù)檢測。
(3)內(nèi)置廣告類型檢測。給出具體的廣告名稱,包括積分墻、互動廣告、插屏廣告、功能廣告、自定義廣告、迷你廣告等。同時進(jìn)行內(nèi)嵌支付接入檢測、內(nèi)嵌推送接入檢測、內(nèi)嵌統(tǒng)計接入檢測等。
(4)開發(fā)者敏感信息檢測、數(shù)據(jù)存儲安全檢測等。
(5)源代碼安全分析。反編譯后的源代碼按照代碼安全規(guī)范進(jìn)行分析。
為進(jìn)行動態(tài)分析,搭建了專用的沙箱作為動態(tài)檢測系統(tǒng),模擬真實的APP運行環(huán)境,實時觀測APP運行時,會如何調(diào)用手機(jī)短信、微信、通訊錄的資料,如何進(jìn)行保存,如何進(jìn)行使用,并實時記錄數(shù)據(jù)調(diào)用、數(shù)據(jù)保存、數(shù)據(jù)傳輸?shù)刃袨?。動態(tài)檢測系統(tǒng)包括黑白名單系統(tǒng)、IO監(jiān)控、存儲監(jiān)控、行為監(jiān)控、逃逸監(jiān)控等,具體點包括:(1)監(jiān)控短信、微信的發(fā)送地址、內(nèi)容以及發(fā)起進(jìn)程;(2)監(jiān)控訪問互聯(lián)網(wǎng)的URL和payload;(3)監(jiān)控APK安裝過程;(4)監(jiān)控IO讀寫事件;(5)監(jiān)控讀取短信、微信、通訊錄事件;(6)監(jiān)控上下行流量,支持突發(fā)流量告警;(7)檢查客戶端到服務(wù)器端,數(shù)據(jù)傳輸是否加密。
2.4.1 App人工分析
對于可疑文件,需要通過人工分析進(jìn)行詳細(xì)分析和確認(rèn)。人工分析的主要任務(wù)是根據(jù)靜態(tài)行為分析結(jié)果和動態(tài)分析日志,對代碼逆向分析,最終判斷是否為惡意軟件。人工分析的主要測試項如圖3所示。
圖3 APP人工分析主要測試項
2.4.2 App服務(wù)端滲透測試
移動APP服務(wù)器端屬于web應(yīng)用端,需要防范常見的web應(yīng)用漏洞,比如SQL注入、失效的身份認(rèn)證、敏感信息泄露、XXE、失效的訪問控制、XSS跨站腳本、安全配置錯誤以及不安全的反序列化等。人工滲透可以通過兩種方式來找到這些接口并通過常用的針對web應(yīng)用滲透測試的方式進(jìn)行檢測。如圖4所示。
(1)反編譯APP,通過反編譯APP并在靜態(tài)文件源碼中尋找隱藏的域名/URL,API接口等信息。
(2)通過代理抓包,利用Burp suite、Fiddler、Charles等知名滲透測試套件抓包對APP的服務(wù)端進(jìn)行漏洞檢測。針對web app和native app采用不同的方式:
1)http[s]抓包分析(web app)
2)socket通信抓包分析(native app)
圖4 APP滲透測試代理抓包示意圖
抓取的鏈接直接提交任務(wù)到多引擎web漏洞掃描器,掃描完后再進(jìn)行專門的人工滲透測試。針對web的滲透測試包括:(1)后端web滲透測試:數(shù)據(jù)傳輸加密、數(shù)據(jù)重放、數(shù)據(jù)篡改、SQL注入漏洞、XSS、Webservices鑒權(quán)等;(2)業(yè)務(wù)邏輯測試:賬戶鑒權(quán)、平行權(quán)限、密碼重置、短信驗證等。
安全開發(fā)過程中需要注意的事項包括用戶安全登錄、用戶隱私保護(hù)、文件權(quán)限保護(hù)、網(wǎng)絡(luò)通訊保護(hù)、會話標(biāo)識符保護(hù)、運行時解釋保護(hù)、最低授權(quán)策略、檢測UGC內(nèi)容、組件權(quán)限保護(hù)、通信頻率限制等。
可通過第三方APP加密平臺對APP加固保護(hù),APP安全加固主要方法有:
(1)初始階段:代碼混淆;
(2)中級階段:加密加殼(主要dex文件加殼);
(3)高級階段:代碼指令虛擬化(可執(zhí)行代碼轉(zhuǎn)換為字節(jié)碼指令系統(tǒng)的代碼)。
主要加固內(nèi)容包括了DEX文件保護(hù)(加殼)、資源文件保護(hù)(加密)、主配文件xml保護(hù)(二次簽名)、so文件保護(hù)(加殼)等防止二次打包。
開發(fā)過程中可采用安全沙箱等最新安全技術(shù)實現(xiàn)如下內(nèi)生安全:
(1)公私雙域隔離
針對運行BYOD設(shè)備上的應(yīng)用程序,隔離公私數(shù)據(jù),對公有數(shù)據(jù)進(jìn)行整體加密處理。
(2)數(shù)據(jù)落地保護(hù)
工作數(shù)據(jù)防止跨域拷貝/粘貼、防止截屏、數(shù)字水印控制等保障數(shù)據(jù)落地安全。
(3)文檔安全閱讀
系統(tǒng)內(nèi)建安全文檔閱讀器,禁止工作文檔通過第三方閱讀器打開,防止文檔泄露。
(4)雙重沙箱保護(hù)
基于Linux權(quán)限模型上虛擬應(yīng)用程序/Android For Work雙技術(shù)架構(gòu)進(jìn)行雙重保護(hù)。
在APP安全防護(hù)周期中,需要考慮在不同階段關(guān)注不同的安全防護(hù)技術(shù)與手段:包括B/S架構(gòu)移動國密瀏覽器處理、C/S架構(gòu)遠(yuǎn)程虛擬化桌面管理、靜態(tài)代碼審計、動態(tài)滲透測試、防逆向VMP加固技術(shù)、殺毒引擎與防病毒模塊、安全沙箱等技術(shù)防護(hù)、多角度APP防護(hù)SDK、APP發(fā)行渠道動態(tài)監(jiān)測和APP專項加固等。
隨著移動互聯(lián)網(wǎng)的快速發(fā)展,各種手機(jī)應(yīng)用軟件呈爆發(fā)式增長。部分手機(jī)APP過度收集、違規(guī)使用個人信息,導(dǎo)致個人隱私信息泄露。本文針對移動APP安全風(fēng)險提出了一系列監(jiān)測分析方法,并提出了安全加固建議。江蘇電信使用上述的監(jiān)測分析方法,對超過100款A(yù)PP進(jìn)行了監(jiān)測分析,將發(fā)現(xiàn)的安全風(fēng)險及時通告客戶,取得了良好效果。本文提出的方法可供移動APP開發(fā)單位、運營商以及監(jiān)管單位借鑒參考。