王宇曉 陳鑫愛 章曙光
1(中國信息通信研究院 北京 100191)2(北京城市學院 北京 100083)
隨著移動互聯網的迅速發展,移動應用成為人們社交、生活的重要組成部分。Android操作系統和iOS操作系統成為當前兩大主流操作系統,占據巨大的市場份額。2018年Android操作系統占據全球移動系統市場份額的83%,而iOS操作系統占據15%。Android操作系統因其開源性導致應用安全漏洞、用戶隱私竊取等問題層出不窮,甚至針對Android系統的應用軟件惡意行為曾出現爆發式增長[1]。而iOS系統不同于Android開放的系統環境,在很長時間里,系統及應用軟件安全問題未大規模增長和爆發,用戶傾向于相信iOS應用安全性更高。但實際上,iOS應用軟件開發過程中經常存在因功能而忽視安全的現象[2]。另一方面,iOS系統安全漏洞一直是業內從業人員的重點關注對象,iOS安全研究基本都集成在對系統的安全漏洞的挖掘,iOS應用軟件安全則被相對忽視。iOS應用經常存在程序包可被篡改、不安全數據傳輸、敏感數據任意存儲等問題。
Arxan在《第5次應用安全年度現狀安全報告》中明確提及:雖然iOS操作系統通常被認為相比Android更安全,但在研究中,iOS App卻比Android平臺有著更多漏洞[3]。iOS應用在運行過程中需向用戶詢問申請訪問隱私如照片、通訊錄、定位等,用戶同意之后,應用訪問、上傳用戶隱私內容均可在用戶無感知的情況下發生。訪問或上傳用戶隱私是否符合用戶意向,是否存在超出用戶意志行為,都應根據應用軟件實際動態行為判斷。
目前很多基于iOS的應用安全檢測工具和方案大多是離線型,幾乎沒有對iOS應用實時檢測的工具。因此本文基于iOS應用安全機制,構建iOS應用軟件動態行為監測系統,從系統底層對應用軟件動態行為實時監測并輸出,包括調用系統撥打電話、調用短信、網絡數據傳輸等多方面,以達到可實時獲取并分析應用軟件惡意行為的目的。
iOS操作系統從硬件和固件到應用軟件,設計一套安全保護機制,如安全啟動鏈、Apple根證書、程序代碼簽名、文件數據保護、沙盒技術等,以保護系統和應用的安全性[4]。盡管存在詳細的安全機制,但仍存在可被利用的安全問題。
iOS操作系統通過App Store作為唯一渠道,提供應用軟件下載、安裝和使用。當開發者將應用軟件上傳至App Store時,App Store會對應用軟件進行證書簽名處理,App Store使用Apple官方維護的私鑰對App進行簽名。當用戶下載、安裝應用時,iOS系統會使用公鑰驗證此App是否來自官方。數字簽名證書對可執行文件編碼進行改變以達到保護的目的。因而,業內破解iOS應用時首先需要對App Store來源的應用軟件殼進行破解才可獲取真實可執行文件,此種行為通常被稱為“砸殼”,常見脫殼工具有Clutch[5]、dumpdecrypted[6]等。國內一些iOS第三方應用商店如PP助手、愛思助手等提供砸殼后的應用程序。同時蘋果公司提供企業開發者證書和內測版開發者證書,可通過這兩種證書對應用軟件簽名,簽名的應用無法提交到App Store,但是可作為內部測試使用,安裝到iOS操作系統后只需信任應用描述文件即可使用。目前國內蒲公英分發平臺提供企業簽名服務。企業開發者證書和內測開發者證書的存在和使用為在非越獄設備上監測應用動態行為提供可能性。
iOS系統“越獄”一直是業內安全研究人員的重點研究內容,其利用iOS設備硬件和軟件漏洞,突破iOS系統限制。原始iOS系統的Root權限對特定私有進程外的其他進程不開放,使用Root權限運行的進程則可任意讀取設備的文件系統,越獄后,用戶可對系統進行編輯或是運行不被蘋果公司所驗證的軟件[7]。越獄后的設備,用戶可根據自己的需求,定制化更改系統。在越獄設備上對應用軟件進行動態行為具備更高的便捷性,但仍存在實際問題。iOS系統通常會對可被利用的漏洞在新更新的版本上進行修補,因而可被越獄的設備系統版本相對固定,迭代較慢。針對越獄設備的應用行為監測系統則無法在最新的iOS系統版本上使用,存在一定的局限性。
Frida[8]是一款基于Python和JavaScript的Hook調試框架。允許將JavaScript的部分代碼或者自定義庫注入Windows、Macos、Linux、iOS、Android以及QNX的原生應用中,同時能完全訪問系統的內存和功能。根據實際測試經驗,Frida框架可提供Hook系統API并修改返回值、嗅探網絡數據、提取應用軟件類和類方法信息。Frida作為一款跨平臺的框架,安全測試優勢在于此框架可為非越獄設備上使用的應用軟件插入FridaGadget.dylib,展開基于非越獄設備的應用監測。現有幾種基于Frida框架的安全分析工具,如Needle[9]和AppMon[10],可以為應用軟件提供安全評估。
正常模式下,應用軟件調用系統API行為指令直接發送到iOS系統層面。iOS應用動態行為監測系統在應用和iOS系統中間層添加監測模塊,監測模塊監控行為、記錄行為及發生時間等具體信息后返回服務器端,如圖1所示。

圖1 iOS應用軟件動態行為監測系統總體設計
iOS應用動態行為監測系統設計思路是利用框架編寫腳本,對應用軟件進行Hook,記錄其調用系統API的發生時機和發生的上下文環境,以分析其是否存在超出用戶意志收集、濫用用戶隱私及數據的行為。本系統既提供在非越獄設備上使用企業開發者或內測開發重簽名的應用軟件動態行為監控,也提供越獄設備應用軟件動態行為監測。同時本系統方案提供自定義行為監測腳本配置,可由用戶自主選擇多種行為結合的監控方案以達到定制化監測的目的。
基于iOS的應用軟件動態行為監測系統總體架構如圖2所示。系統架構主要分為兩部分,分別運行于被測電腦和被測設備。總體架構中,用戶端和服務端運行于被測電腦,用戶端可配置基礎監測信息如設備是否越獄,以及配置監測行為腳本。服務端根據基礎配置信息和監測行為腳本,自動化執行對應用打補丁、重簽名打包及注入監測模塊等操作對應用行為監測。被測設備正常打開運行被測應用軟件,應用調用系統API。

圖2 iOS應用軟件動態行為監測系統總體架構
監測信息基本配置功能,因基于iOS的應用軟件動態行為監測系統面向對象包括非越獄設備和越獄設備,所以在使用系統時需根據設備不同狀態進行基本配置。
(1) 非越獄設備。在非越獄設備上監控應用軟件動態行為時,需先使用脫殼類工具如Clutch對App Store下載的ipa應用文件脫殼,或者直接使用國內第三方應用商店如PP助手等提供的ipa文件。監測系統提供應用軟件企業或內測開發者證書配置功能,利用Frida框架將監測模塊注入脫殼后的ipa文件,利用開發者證書重新打包,安裝回非越獄設備后即可監控。如圖3所示。

圖3 非越獄設備應用配置過程
(2) 越獄設備。在越獄設備上監控應用軟件動態行為時,越獄狀態下,用戶掌握對系統的控制權,可隨意根據需求更改系統。用戶只需在Cydia中安裝Frida終端設備框架,即可與監測系統進行通信。
iOS應用軟件安全形勢嚴峻,根據iOS應用軟件安全評估實踐和iOS常見安全問題,發現存在用戶隱私信息泄漏、用戶未知情況下執行惡意操作、篡改內存數據、修改系統文件內容、頻繁定位等問題。針對以上內容,應用軟件行為監控功能模塊,梳理總結相關模塊,已經實現進程間通信、網絡通信、數據存儲、加密功能、日志記錄、Key Chain訪問、Https數據監控、通訊錄讀取監控、短信發送、電話撥打、讀寫User設置監控等多個腳本模塊,腳本模塊和函數名示例見表1。用戶可在服務端配置監控腳本,可新增被監控的模塊和函數名,監控腳本覆蓋C類型和OBJC類型。

表1 常見應用調用系統API示例
原型系統中系統用戶端和服務端使用Python語言開發,便于在搭載不同操作系統的測試電腦上移植使用。應用動態行為監測腳本根據iOS系統API進行開發實現,腳本采用JavaScript語言開發,開發人員根據新業務要求新增行為監測腳本開發,無需編譯可即時使用。
將設備接入基于iOS的應用軟件動態行為監測系統后,完成基本配置和腳本配置。測試人員對應用軟件操作分為正常使用應用軟件和靜置應用軟件,系統監控應用軟件行為并輸出調用時間、調用函數、調用模塊和具體細節。測試人員可根據測試需求和測試場景,分析測試結果。
原型系統中,對一款外賣類應用軟件進行監測。測試場景包括正常運行使用場景和靜置場景。監測系統安裝環境為Windows 7,被測手機設備為iPhone 6S,系統版本為10.1.1。測試結果如下:
(1) 正常場景。正常使用場景下,應用軟件在正常使用過程中,讀取通訊錄、網絡連接通信等調用系統API行為都是在用戶業務場景觸發后發生,不存在用戶未知情況下執行竊取用戶隱私的惡意行為。
(2) 靜置場景。靜置場景下,應用程序靜置1小時,前臺無任何操作。行為監控輸出結果顯示,應用程序多次調用UserDefaults模塊查詢用戶偏好設置,其中包括GPS定位數據。同時網絡傳輸數據行為顯示,1小時內應用每隔10分鐘向固定服務器發送定位信息。在靜置狀態下,固定時間和頻次傳輸定位信息的行為疑似應用程序在主動收集用戶位置遷徙信息,存在用戶信息泄漏風險。
因iOS操作系統閉源和封閉的特性,用戶對于iOS操作系統的安全性認可度較高,普遍認為iOS應用軟件安全性高。但從現實角度來看,搭載于iOS操作系統的應用軟件安全性并不比Android應用軟件安全性高。隨著互聯網的飛速發展,安全和用戶隱私保護已經成為用戶在使用移動智能設備過程中的迫切訴求。本文介紹的基于iOS的應用軟件動態行為監控系統可實時對iOS設備上的應用軟件動態行為進行監測,覆蓋范圍包括非越獄設備和越獄設備。應用軟件實時動態行為分析是應用安全性分析的重要組成部分。應用軟件實時動態行為監控可避免應用軟件開發者在用戶未知情況下,隨意訪問、竊取用戶隱私信息,給用戶帶來經濟和財產的損失。但本系統中,對非越獄設備上應用軟件監控,需對源自App Store的應用軟件執行脫殼、注入監控模塊、重打包、重簽名等一系列操作。隨著操作系統本身安全性增強以及開發者安全開發意識的提高,應用程序可采用多種手段進行加固,脫殼難度也會隨之增高。因此,本系統對非越獄設備監測部分,可能會隨著應用安全性的提高而產生局限性和適配性的問題。針對越獄設備監測應用部分,無需對應用軟件進行改動,只需保證將一臺越獄設備接入系統即可。越獄設備的操作系統版本必然低于當前最新穩定運行版本,可能存在高版本的安全功能向下不適用的問題。因此iOS應用軟件動態行為監測仍然留有研究改進空間。應用軟件安全監測技術的進步是移動應用產業良性發展的重要保障,對促進應用軟件安全監測平臺的發展具有重要意義。