韓玉會
摘要:信息時代,移動智能終端被廣泛應用于處理各類重要的數(shù)據(jù)信息,與之緊密相連的各類移動安全問題也隨之出現(xiàn),例如個人隱私泄露,手機病毒泛濫,各類惡意攻擊等。該文在深入分析IOS系統(tǒng)安全機制及IOS應用安全檢測技術的基礎上應,綜合運用理論分析及實證研究等方法,提出針對IOS平臺應用的以靜態(tài)分析技術為基礎,結合動態(tài)監(jiān)測手段的綜合分析檢測方法,可有效提高IOS平臺應用安全檢測的準確度,降低報錯率。
關鍵詞:IOS系統(tǒng);應用開發(fā);安全性
1背景
信息時代,越來越多的人使用移動智能設備處理各類重要數(shù)據(jù)。當今主流的智能終端操作系統(tǒng)主要有谷歌的Android系統(tǒng)和蘋果的IOS系統(tǒng),IOS系統(tǒng)是運行在蘋果系列產(chǎn)品如iPhone和iPod Touch等終端產(chǎn)品上的移動操作系統(tǒng),它具有強大的無線網(wǎng)絡功能,支持視頻電話、GPS定位及安裝第三方開發(fā)的應用程序等功能。隨著蘋果產(chǎn)品的不斷推廣和升級,隨之而來的系統(tǒng)應用安全問題也愈顯突出。2014年9月其中包括隱私泄漏、木馬病毒、惡意程序、轟動一時的各類“竊聽門”事件等智能終端安全事件的出現(xiàn),標志著IOS平臺應用安全問題已經(jīng)日趨嚴重,用戶的個人隱私面臨嚴重的安全隱患。
2IOS系統(tǒng)安全機制分析
在研究影響IOS應用的各種安全情況之前,我們首先對IOS平臺的安全特性做一個深刻剖析,以便于后續(xù)對應用安全分析的理解。lOS系統(tǒng)自身有嚴格的安全防范機制,這些安全特性對各種運行IOS系統(tǒng)的設備基本透明,很多安全特性設置都是默認開啟和關閉,不需要用戶人為的進行各種復雜配置的設置。IOS系統(tǒng)尤其對一些關鍵的安全特性不允許用戶自行配置,以避免用戶設置錯誤或操作失誤導致這些重要的安全防護功能關閉,例如硬件設備的加密特性,就在生產(chǎn)時設定以后再不允許修改。IOS系統(tǒng)安全模型如如圖1所示,這種安全模型旨在不影響用戶基本使用的情況下保護系統(tǒng)數(shù)據(jù)的安全性。
圖1中,與底層的硬件或固件相關的安全設置都與蘋果公司的出廠設置密切相關,蘋果根證書(Apple Root Certificate)在芯片制造時就已經(jīng)植入,不可再次更改,這些安全特性都是為了防御惡意應用或病毒篡改設備的重要信息。上層操作系統(tǒng)的安全設置則是為了防御非法(未授權)使用破壞系統(tǒng)完整性,阻止攻擊行為的運行。蘋果公司把IOS系統(tǒng)的安全性作為軟件更新和維護的核心,同時,在IOS系統(tǒng)的安全性能設計上使用了大量的密碼學理論和計算機加密技術,修補系統(tǒng)漏洞,更新版本,提升系統(tǒng)功能。
IOS平臺的核心安全特性可以歸納如下幾點:
1)硬件安全一安全啟動鏈策略
IOS設備硬件啟動過程的安全性由其安全啟動鏈來保證。安全啟動鏈中所涉及的每個組件都由蘋果公司加密簽名以確保其可靠性和完整性。IOS設備開機后,蘋果公司事先寫人Boot ROM中的根數(shù)字認證密鑰就會被CPU運行,根數(shù)字認證密鑰一旦寫人芯片,就不可更改,并會的系統(tǒng)的絕對信任。這個密鑰是驗證其他底層硬件引導或加載程序(LLB)的基礎,所有啟動程序都需要通過驗證其是否已經(jīng)經(jīng)過蘋果公司的簽名,通過加載,否則拒絕。這種安全啟動鏈的驗證模式保證了每次啟動時底層代碼的安全性,確保其未被人為篡改。而且也保證了IOS系統(tǒng)只能運行在經(jīng)過驗證的、確認是合法授權的IOS硬件設備上。
2)應用安全一程序代碼強制簽名策略
IOS系統(tǒng)是一個封閉的系統(tǒng),所有的硬件設備和軟件應用都與蘋果公司相關,蘋果公司生產(chǎn)設備并開發(fā)的IOS系統(tǒng),所有運行在蘋果設備上的應用都需要經(jīng)過蘋果公司審核。為確保所有程序均已獲批準,且此文件與批準時的文件完全相同,IOS系統(tǒng)要求所有可執(zhí)行代碼均使用蘋果公司頒發(fā)的證書進行簽名。硬件設備附帶的應用程序由蘋果公司簽名。第三方應用由蘋果公司頒發(fā)證書驗證簽名。這種程序代碼強制簽名規(guī)定,是安全啟動鏈的信任關系從IOS系統(tǒng)延伸至應用程序,以防止陌生應用運行及各種代碼篡改。
3)數(shù)據(jù)安全——文件數(shù)據(jù)保護技術
IOS系統(tǒng)的文件數(shù)據(jù)保護是以硬件設備加密技術為基礎的。蘋果公司在硬件設備中植入了一些與安全相關的技術和設備,硬件的安全設置為IOS系統(tǒng)安全提供最為基礎的保護。這些硬件加密引擎是構建各類層次的應用密鑰的關鍵,由于硬件中固化的密鑰為唯一且永遠不變,利用這個密鑰進行所有后續(xù)安全設置的加密引擎,既可以保護數(shù)據(jù)安全,又可以保證加解密的效率。具體實施如下:所有IOS設備生產(chǎn)時就培植了專用的256AES加密引擎,放置在DMA中,由于DMA處于閃存與系統(tǒng)主存之間,方便高效的文件數(shù)據(jù)加解密。專屬的硬件密鑰由設備唯一ID(UID)和設備組ID組合而成,為防止篡改或繞過因此被固化在IOS設備的處理器中。并且蘋果公司規(guī)定任何軟件或固件都無法直接讀取設備的硬件密鑰,只能查看密鑰參與加密或解密之后的執(zhí)行結果。生成文件時,開發(fā)人員指定文件類別,由數(shù)據(jù)保護系統(tǒng)根據(jù)文件類別分配類密鑰,從而實現(xiàn)文件數(shù)據(jù)安全控制。
4)執(zhí)行安全一沙盒技術和地址空間布局隨機化策略
沙盒技術把IOS系統(tǒng)應用的運行限制在一個獨立、封閉的空間,這個獨立的空間叫做沙盒(sandbox)。IOS系統(tǒng)的沙盒機制主要是為了實現(xiàn)安全隔離。首先進程隔離(process isola-tion):應用程序在運行過程中禁止讀取其他進程數(shù)據(jù),也就是說,在運行過程中進程之間的通信被完全限制,以防止運行過程中的遭遇感染或攻擊的幾率。其次文件系統(tǒng)隔離(file sys-temisolation):所有應用程序都只能在自己的目錄下操作文件,這樣應用之間就不會可能產(chǎn)生攻擊行為。應用程序沙盒化后,其活動范圍被限定在一個獨立的沙盒中,對系統(tǒng)以及用戶更加安全,并且加大了惡意程序入侵系統(tǒng)的難度。
地址空間布局隨機化(Address Space Location Randomiza-tion,ASLR):是參與保護緩沖區(qū)溢出問題的一個計算機安全技術,防止攻擊者在內存中能夠可靠地跳轉到特定函數(shù)。ASLR技術可以確保應用程序啟動時隨機安排所有內存區(qū)域,其中包括隨機排列程序的關鍵數(shù)據(jù)區(qū)域,如可執(zhí)行的部分、堆、棧及共享庫的位置等。通過隨機安排這些重要數(shù)據(jù)的內存地址,有效降低了遭到各種復雜攻擊的可能性,防止黑客利用內存損壞錯誤對系統(tǒng)進行攻擊。
3IOS應用靜態(tài)分析研究
3.1應用程序的隱私泄露分析
IOS應用的隱私泄露問題已經(jīng)成為影響蘋果用戶產(chǎn)品體驗的重要因素之一。為了確定隱私泄露的源頭及可疑點,監(jiān)測工具需要從最近訪問隱私數(shù)據(jù)的函數(shù)向上,一直追溯到發(fā)送數(shù)據(jù)的第一個函數(shù)。目前,這方面的研究比較多,其中Egde等人提出的PIOS就是一個具有代表性的靜態(tài)檢測分析工具。PIOS主要通過三個步驟來完成對隱私數(shù)據(jù)泄露的檢查,第一步:重建控制流圖,追溯函數(shù)的調用過程。在控制流圖中包含許多基本塊,基本塊是根據(jù)函數(shù)跳轉關系,或者函數(shù)調用指令進行分割而得到的。第二步可達性分析。深入分析控制流圖,檢查其中是否存在一條或多條從敏感信息到可能泄露信息的網(wǎng)絡路徑。第三步數(shù)據(jù)流分析,對于每一條可能泄露隱私的路徑,再跟蹤其中的數(shù)據(jù)流向。本人使用PIOS分析了100個IOS應用程序(其中蘋果商店應用80個,Cydia資源庫應用20個),實驗結果表明:80%的IOS應用都會將一些用戶信息泄露出去,同時對比發(fā)現(xiàn),蘋果商店中的IOS應用程序的安全性較Cydia資源庫中的要差一些。
3.2應用程序的逆向分析
IOS系統(tǒng)構建的復雜、縝密的安全防范機制在防范惡意攻擊的同時,也給應用程序安全監(jiān)測的逆向工程帶來了巨大阻礙。由于絕大部分應用程序都運行在普通的蘋果設別上,運行權限均是用戶權限,而不是系統(tǒng)(root)權限,如上所述,普通用戶權限的應用程序,其可執(zhí)行代碼需要簽名認證才能被處理器執(zhí)行,由此,解密應用程序的可執(zhí)行文件是應用逆向工程的首要任務。對于IOS系統(tǒng)而言,只能通過設備越獄,利用系統(tǒng)漏洞來解鎖設備,進而獲得系統(tǒng)(root)訪問權限。其次,成功越獄提升權限后就可以修改系統(tǒng)加載策略,使所有簽名的程序運行得到許可,這樣在運行正常的通過蘋果認證的應用程序的同時,就可以裝載測試工具軟件進行逆向分析,如調試器、反匯編工具等。最后,利用安裝的調試器啟動程序,在應用程序入口設置一個斷點,一旦程序運行就會自動觸發(fā)這個斷點,轉而加載系統(tǒng)驗證簽名,解密應用程序的可執(zhí)行代碼,然后分析、研究二進制地址空間所占的內存區(qū)域,獲得解密后的應用程序代碼。應用程序的逆向分析除過解密應用技術外,還需要直接分析匯編代碼等工作。
4IOS應用動態(tài)分析研究
4.1IOS應用動態(tài)分析探索
動態(tài)分析是指使用一組技術從不同方面來監(jiān)控程序運行時的行為。通過真實設備或模擬機器實際運行應用程序執(zhí)行過程,達到對未知惡意軟件的檢測目的。由于動態(tài)分析能夠實時的跟蹤程序的運行行為,因而檢測效果較靜態(tài)分析好一些,并且具有較強的直觀性。常用的動態(tài)分析技術有:動態(tài)二進制重寫、調試機制、信息流分析法等。動態(tài)二進制重寫技術可以用來監(jiān)控由應用程序或有動態(tài)鏈接庫實現(xiàn)的函數(shù)調用關系。調試機制也可以被用來收集彼此之間的調用關系等信息,而且,具有調用機制分析功能的操作系統(tǒng)還可以提供有效的Hook機制,用于監(jiān)控系統(tǒng)調用。這些技術都可用于動態(tài)監(jiān)測IOS應用的運行行為,實現(xiàn)應用動態(tài)監(jiān)測分析。
另外一種相對獨立的監(jiān)控函數(shù)調用稱為信息流分析法。與前面幾種方法不同的是,這種分析法不特別關注程序運行過程中函數(shù)調用的情況,而是專注于輸入程序的數(shù)據(jù)的行為。例如程序可以為從網(wǎng)絡接收數(shù)據(jù)包或者從移動設備上獲取相關的信息,通過追蹤這些數(shù)據(jù)在系統(tǒng)內部的路徑,信息流分析工具會在敏感數(shù)據(jù)通過網(wǎng)絡傳輸?shù)任kU行為發(fā)生之前,提前預警,以達到動態(tài)監(jiān)控的目的。此外,還有Enck等人提出的TaintDroid系統(tǒng),用污點分析技術跟蹤數(shù)據(jù)流,從而判定應用是否存在數(shù)據(jù)泄露。
動態(tài)分析技術都是通過分析程序的實時運行情況,來推斷應用程序的安全狀態(tài),能夠比較準確的刻畫程序的執(zhí)行過程,得到相對準確的檢測結果。目前,動態(tài)分析技術遇到的主要問題是如何預設不同的輸入以測試應用程序有可能遭遇的各種不同場景,因此如何根據(jù)應用程序的不同應用環(huán)境,自動化的分析測試成為動態(tài)分析研究的重點。
4.2靜一動態(tài)分析技術比較研究
目前,針對IOS應用安全性的靜態(tài)分析技術較多,靜態(tài)分析技術相對成熟,如著名的PiOS工具等,但是靜態(tài)分析過程涵蓋了應用程序運行過程中所有可能和不可能的執(zhí)行路徑,因此,所有靜態(tài)分析技術都遇到了一個共同的問題——誤報率比較高,無法控制分析結果的正確性,要獲得更加準確的安全檢測分析數(shù)據(jù),就必須通過動態(tài)檢測分析技術來實現(xiàn)。
動態(tài)分析技術旨在設計一個系統(tǒng),用于檢測應用程序在運行過程中所有可能存在的安全隱患,分析結果的正確率較高。目前,無論是權威的專家,還是普通的IOS應用開發(fā)者,在IOS應用安全檢測的動態(tài)分析方面都做了大量工作,靜態(tài)分析與動態(tài)分析相結合的安全檢測模式也成為IOS應用安全檢測的基本研究形式。但由于IOS系統(tǒng)的封閉性——所有源代碼對外封閉,因此目前沒有一款可靠的軟件測試工具可以動態(tài)調試0bjective-c程序的環(huán)境,這也是所有IOS系統(tǒng)研究領域的遇到的一個瓶頸問題。盡管目前有很多研究人員已經(jīng)著力于開發(fā)IOS系統(tǒng)的模擬環(huán)境iEmu,但是,這方面的研究工作才剛剛啟動,IOS系統(tǒng)模擬環(huán)境的開發(fā)和研究還有很長的路要走。
5結束語
伴隨著移動智能設備的普及,加載在其上各類的應用軟件也日趨多樣化,應用軟件的安全性的受到人們的普遍關注,有關應用安全的研究也取得了很多研究成果。通過查閱相關資料及實際調查我們發(fā)現(xiàn),目前絕大多數(shù)的應用安全性研究都關注于開源的Android系統(tǒng),因為其開源人們可以看到源代碼,通過分析研究源代碼,然后再進行經(jīng)動態(tài)分析檢測,并實驗驗證結果,過程完整,結論明確,論證充分。IOS系統(tǒng)由于封閉性,應用安全研究人員也無法深入了解其全部的安全機制的設計及實現(xiàn)策略,IOS系統(tǒng)及其應用的安全機制只有蘋果公司內部人員才有可能了解,而且對外嚴格保密,一定程度上阻礙了IOS應用的安全研究。