賀宇軒,孟 魁,劉功申,徐 林
(1.上海交通大學電子信息與電氣工程學院,上海200240;2.公安部第三研究所信息網絡安全公安部重點實驗室,上海200240)
自2007年美國蘋果公司推出了iPhone系統手機和iOS操作系統,以及Google公司推出Android移動操作系統之后,移動設備的智能化程度越來越高。根據文獻[1],越來越多的互聯網應用移植到了移動設備之上,尤其在社交、即時通信、新聞等方面,移動設備在人們日常使用電子產品過程中,所占時間的比重越來越大。文獻[2]指出,相對于傳統PC,移動設備存儲更多、更重要的個人隱私信息,如通訊錄、通話記錄、短信等,因此移動設備的安全性將成為未來操作系統安全的重要研究課題。
文中首先介紹了iOS系統的安全架構,分析其安全防護措施,以及在iOS系統越獄之后對系統安全的影響。之后詳細分析介紹了iOS系統下各項敏感數據的獲取手段,然后討論了iOS程序植入方法,指出越獄后的iOS系統存在的安全隱患。最后針對這些安全隱患,提出解決方案,以增強越獄后的iOS系統安全性和穩定性。
由于蘋果公司對iOS系統采取閉源而不公開的策略,使得安全人員很難深入研究其安全機制。一些研究人員通過系統越獄、逆向分析等方法,得到iOS系統的基本安全機制、安全模型和一些數據保護機制的細節[3]。研究人員在相關文獻[4-7]中分析了iOS系統所采用的一些安全模型和數據保護機制,歸納起來主要有系統可信引導、代碼簽名、沙盒機制、數據加密和地址空間布局隨機化等[8]。
(1)系統可信引導
系統可信引導(Trusted Bboot)是Cediric Halbronn與Jean Sigwald在黑客大會HITB 2010提出的概念,描述的是iOS設計的可信的啟動過程[5]。系統首先引導安全只讀內存(Secure ROM),其中嵌入了根證書用以檢查下一步所加載組件的RSA簽名。在隨后的每個啟動步驟中,系統都會檢驗下一步驟所需要加載組件的RSA簽名,這就構成了iOS整個系統的信任鏈,這一信任鏈確保了系統啟動過程中的所有組件都沒有被修改和破壞。
(2)代碼簽名
可信引導機制保證了系統加載過程中各個階段數據的完整性,而代碼簽名機制保證了iOS系統中運行的應用程序的完整性。蘋果公司限制應用程序的來源,只允許用戶從App Store下載、安裝應用程序,代碼簽名機制只允許經過蘋果公司簽名的應用程序進入用戶系統,而未授權的第三方應用程序,則被拒絕安裝。
開發者購買蘋果公司頒發的證書后,使用證書對開發完成的應用程序進行簽名,然后提交到App Store,再由蘋果公司進行審核,審核通過后,蘋果使用其私鑰對應用程序進行簽名,再發布至 App Store。用戶從App Store下載安裝程序時,iOS系統使用相應的程序對簽名進行證書校驗。代碼簽名機制使得安裝至iOS系統中的所有程序,都是經過審核和安全驗證的,保證沒有惡意程序進入。這樣嚴格的審核機制,也大大減少了iOS系統上的惡意軟件數量,相比開放而自由的Android系統,由單一的App Store下載入口安裝的應用程序更加安全可靠[9]。
(3)沙盒機制
iOS沙盒的實質是一個基于TrustedBSD策略框架的一個內核擴展模塊。這一訪問控制系統,可以針對每個進程制定單獨的配置文件,用于限制如文件打開、socket訪問等,達到分離應用程序運行空間的目的[10]。從App Store上下載的應用程序,每個都運行在單獨的沙盒中,既保證應用程序數據和內容不被其他程序所訪問修改,也阻止了應用程序對系統數據的訪問[11]。
(4)數據加密
為了保護蘋果設備中的數據安全,iOS系統及設備引入了數據加密機制來保護文件和數據安全。該機制確保了不同程度的敏感數據由不同強度的加密機制所保護。這一套機制包括硬件加密和軟件加密,保證數據在關機時的鏡像拷貝不被破解,以及設備鎖定時的數據安全。
(5)地址空間布局隨機化
地址空間布局隨機化(ASLR,Address Space Layout Randomization)通過隨機地分配內存數據區域,達到保護內存數據的目的。ASLR通常隨機化分配應用程序堆空間、棧空間、共享庫映射等,增加攻擊者預測目的地址的難度,防止攻擊者直接定位攻擊代碼位置,達到阻止緩沖區溢出攻擊的目的[12]。
ASLR是桌面和服務器操作系統中常見的安全機制,據研究表明,ASLR可有效降低緩沖區溢出攻擊的成功率,如今 Linux、FreeBSD、Windows等主流操作系統都已經采用ASLR技術。
盡管蘋果公司為iOS系統提供了如此之多的安全防護措施,讓iOS系統成為一個簡便易用,且安全性、穩定性較好的系統,但在另一方面,部分用戶對iOS系統有更加個性化的使用需求,或需要從第三方安裝應用程序等,因此iOS越獄成為部分用戶的選擇。
iOS系統越獄后,用戶可以通過Cydia安裝系統相關的軟件和程序庫,也可以安裝未經代碼簽名的應用程序。Cydia是一個基于deb的包管理系統,可以識別軟件依賴樹,從而安裝各項系統相關的軟件。在Cydia中,可以添加“源”,來增加可以下載的軟件列表。大量的越獄開發者都有自己的源,形成一套iOS越獄軟件體系。然而普通用戶往往不具備對Cydia源安全性的鑒別能力,對于他們需要的軟件,往往不假思索便會安裝。
與從App Store或IPA格式安裝包安裝的應用程序不同,由Cydia安裝的deb包軟件,都是運行于root權限之下,繞過了iOS系統的沙盒系統,可以說對于由Cydia安裝的程序而言,iOS設備上的文件系統,是完全暴露的,這就造成了巨大的安全隱患。
因此iOS系統在越獄之后,便給了惡意程序植入的渠道,同時非沙盒機制的程序運行,也讓惡意程序可以常駐后臺,并且訪問所有的系統敏感數據。而文中的遠程控制程序,就是在系統越獄后環境中運行的。
(1)手機基本信息
手機的基本信息可以使用Cocoa Foundation Kit中的UIDevice類獲取,可以獲取的信息有:手機型號、系統版本、本機手機號碼、電池電量、充電狀態。
對于手機所使用的移動運營商、信號強度信息,可以使用CoreTelephoney庫中的私有API獲取。這些私有API可以使用 class-dump工具[13],導出各Foundation庫中的函數調用接口,并生成.h文件。如獲取手機信息強度,便使用了CTGetSignalStrength這一導出函數。
(2)隱私數據庫文件
手機通訊錄、通話記錄、短信記錄是手機中最核心、最敏感的數據。iOS系統只允許一般應用程序讀取通訊錄,且需要得到用戶的授權。但從root權限程序的角度來看,這些數據保存在各個獨立的SQLite文件中,只要通過SQLite庫打開文件,即可讀取其中的所有內容。敏感數據存放路徑如表1所示。

表1 敏感數據存放路徑Table1 Path of files storing private data
(3)地理位置信息
移動智能設備相對于傳統PC,其優勢主要體現在小型化和便攜化,可以方便地隨時隨地使用。因此在移動應用中,LBS(Location Based Service,基于位置的服務)逐漸興起,同時智能手機也充當GPS導航設備,在機載地圖的幫助下為用戶提供導航。對于移動設備獲取地理位置信息,常用的方式有3種,分別是基站定位、Wi-Fi定位和 GPS 定位[14]。
在iOS系統中,上述的3種定位方式均有使用,在不同場合使用不同的定位方式。在iOS 4.2及以前版本系統,蘋果手機會記錄所有用戶的定位歷史信息,并保存于數據庫中。GPS信息存儲路徑如表2所示。

表2 GPS信息存儲路徑Table 2 Path of GPS database
通過讀取GPS緩存數據庫,可以極小的代價獲取手機近一周的定位歷史記錄,避免了通過調用iOS API,即CoreLocation庫,來獲取當前位置時,需要用戶同意,以及在狀態欄出現定位標志等問題。在手機越獄后,即可不獲得用戶授權而獲取地理位置信息。即使用戶關閉定位功能,也可以通過Mobile Substrate(Cydia基礎庫)中提供的API,來靜默打開定位功能。
(4)后臺拍照及錄音
iPhone手機的多媒體功能一方面豐富了用戶使用體驗,另一方面增加了設備獲取環境信息的渠道,即可能遭受竊聽或偷拍。
在iOS系統中,普通應用程序即有權限打開攝像頭或麥克風,實現沒有交互的拍照或錄音。iOS系統針對這一行為,會在狀態攔中加以提示,以提醒使用者了解應用程序的行為。運行于系統后臺的命令行程序(即以root權限運行的程序)同樣可以打算攝像頭和麥克風,卻不會被系統監視以提醒用戶,即做到了完全的后臺拍照和后臺錄音,而不會被用戶所發覺。
iOS系統默認情況下沒有為應用程序提供開機啟動或者常駐后臺的功能,因此在非越獄狀態下是無法通過常規手段實現的。然而在越獄后,iOS系統為我們開放了諸多程序進入的通道,如Cydia軟件管理、開放的SSH服務器等,都成為植入程序的切入點。
在另一方面,由于越獄的設備可以修改系統配置文件,實現程序后臺運行、開機自啟動功能。而且用戶對系統層面的管理知識較缺乏,也沒有類似Windows下的啟動項管理工具,一旦程序植入,將很難被發現。
Cydia是iOS系統越獄后自動安裝的一個系統級應用,它類似于蘋果公司的App Store,提供軟件的安裝下載服務。在Cydia上的軟件大多為系統補丁、系統插件、系統軟件等運行在root權限下、并對系統進行深度定制的軟件,其主要目的是彌補iOS系統的不足或突破蘋果iOS系統對普通用戶在應用上的限制。
Cydia安裝軟件包時,會指定軟件源,即一個基于web的軟件包列表,在添加安裝源后,Cydia即可獲得該源下所有可以安裝的包。用戶通常會添加一些iPhone論壇的軟件源,如178、Weiphone等,其軟件大多為網友發布。同時用戶可以上傳自己的deb包,與網友分享軟件。將程序制作成deb軟件包,上傳到比較熱門的軟件源中,即可被用戶搜索到,或者自行制作軟件源,只要用戶添加此源,即可安裝軟件,實現程序植入[15]。
在iPhone越獄后,不少用戶會在手機安裝SSH(Secure Shell)服務器(SSHd),來對設備進行命令行操作[16]。iOS系統的 root默認密碼始終為固定的“alpine”,只要在網絡中搜索開放22號TCP端口的iOS設備,就有很大概率通過默認的root密碼進入手機。
根據文獻[17],iPhone僵尸網絡病毒 iKee.B就是利用越獄設備安裝SSHd而未修改root密碼的漏洞,進行攻擊和傳播的。該文獻中指出iKee.B通過掃描特定的移動網絡運營商IP段,來提高掃描效率。
例如可以根據APNIC的最新IP地址列表[18]及Whois信息生成的各主要ISP網段,得到國內幾大移動運營商的主要IP段,以縮小掃描范圍。
物理接觸iOS設備也是植入程序的有效手段。當iOS設備解鎖時,可以通過iTunes協議,使用USB線纜對iOS設備進行備份,將通訊錄、短信、通話記錄等內容保存在PC上,并可以使用SQLite軟件進行查看和編輯。
通過iTunes協議與iOS設備進行通信,有名為libimobiledevice的開源庫實現,以及使用此庫的實用工具iFuse[19],由此庫和工具,可以開發出復制用戶敏感數據的程序,或者向iOS設備傳送文件,將遠程控制程序的deb包復制至Cydia的自動安裝目錄/var/root/Media/Cydia/AutoInstall下,在設備重啟后,即會被自動安裝。
如今物理接觸的難度隨著計算設備小型化而降低,通過物理接觸,使用libimobiledevice庫進行通訊的設備,可以使用一種稱為樹莓派(Raspberry Pi)的單片機電腦(見圖1)。樹莓派的大小僅為一張信用卡那么大,采用主頻700 MHz的 ARM處理器,512MB內存和SD存儲卡,配備Ethernet、兩個USB接口,并可以使用電池供電。使用樹莓派作為植入設備,可大大提高物理接觸便攜性和隱蔽性。

圖1 樹莓派電腦Fig.1 Raspberry Pi
對于iOS系統的惡意程序,往往具有修改系統設置、復制可疑文件、存在網絡通信、產生系統日志待特點,根據其特點,可以針對性地查找惡意程序的蹤跡,從而達到檢測與清除惡意程序的目的。
(1)系統啟動項檢查
在iOS系統中,系統服務的自啟動均通過launchctl服務進行注冊。在命令行中輸入launchctl list,即可得到所有啟動項信息列表,如圖2所示。

圖2 查看啟動項列表Fig.2 List of launch demons
在列表中標識了正在運行的進程的PID和label,其中label為唯一標識,具體的配置文件保存在/System/Library/LaunchDaemons/下,以 label命名的.plist文件。
iOS系統中注冊的自啟動應用程序較為固定,通過比對相同系統的啟動項列表,可以排查出可疑啟動項,進而分析其行為。
(2)網絡流量分析
惡意程序在上傳數據和獲取通信命令時,會通過網絡進行通信,通過在iOS設備上運行TCPDUMP程序,或者在設備網關處截取流量,采集通信數據。可以通過黑白名單的方式過濾正常流量,再對其余流量進行分析。
對網絡流量的分析可分為兩種,一種為內容分析,如對網絡通信明文進行查看和分析,這種方式僅對明文通信的數據有效。另一種為時間和空間的分析,通過查看網絡活動的周期性,以及手機操作情況的相關性,進行分析。如在手機接聽或撥打電話、收發短信時,畫出的操作頻率圖,與網絡流量圖進行比對,如果出現相關性,則可認定惡意程序記錄并發送了用戶個人信息。
(3)系統日志分析
蘋果iOS系統與Mac系統一樣,有統一的系統日志記錄和查看接口。在iOS開發中,常用NSLog()方法進行輸出調試。如果惡意程序在開發過程中使用了NSLog,則其輸出會被記錄在系統日志中,可以通過Xcode的設備管理器查看和保存日志。
通過對日志內容進行分析,可以采集所有運行的進程的輸出。一旦惡意程序使用了NSLog,相比可能會加密的網絡通信,其輸出的系統日志往往是明文而且可讀的,這便為分析惡意程序留下了線索。
俗話說“防范于未然”,惡意程序在植入后,往往做很多隱蔽性手段以防止檢測。但提高安全意識,可以很大程度上防止惡意程序的入侵。對于iOS系統,其漏洞與入侵渠道極少,而安全措施很多,只要根據iOS惡意程序可能植入的渠道,進行針對性的加固,。
首先應該修改SSH密碼,將root賬戶的默認密碼設置成較為復雜的密碼,同時修改/etc/ssh/sshd_config文件,把SSHd的監聽端口修改非22端口,防止被掃描或被攻擊者猜解弱密碼。
設置復雜的鎖屏密碼。iOS系統的鎖屏密碼不僅保護系統不被其他人直接使用,同時也阻止了iTunes備份,只有在設備解鎖的情況下,手機上的信息才會被備份。另外四位純數字的簡單密碼,可以在數分鐘之內被破解,只有設置復雜密碼(即字母數字組合)才能夠保證設備安全。
對于越獄后安裝的應用程序,雖然沒有了代碼簽名機制,通過IPA軟件包安裝的程序仍然運行在iOS沙盒之下。但通過Cydia安裝的程序,則會運行于root權限之下。對于這種安裝方式,請盡量使用Cydia原有源,或者聲譽較好的源,不要隨意安裝軟件包或插件。必須的時候可以下載其deb軟件包,解包后對其進行分析,一方面可以分析control部分的安裝腳本,另一方面可以使用IDA pro等軟件對二進制代碼進行反匯編,以分析軟件行為。
對于某些iOS系統版本可能出現的重大漏洞,如 iOS 4.3.3 的 PDF 漏洞[20],可以在越獄之后,在Cydia上下載補丁以修補漏洞。當然保持iOS系統為最新版本,也是增強其安全性的手段。
iOS越獄為用戶提供了更靈活更開放的系統定制方案,然而卻增加了安全隱患。在使用越獄設備時,更應該提高安全意識,不可完全信任第三方軟件,在安裝軟件時對其進行必要的審查與分析,以保持系統穩定和個人隱私安全。
由于iOS系統在越獄后完全喪失安全防范的縱深,安全可靠的iOS系統打開一道缺口,讓惡意軟件有可乘之機。相關文獻[3,4,8]也分析了不同情景下隱私數據遭受的威脅,但未提出可能的防范手段。此外,越獄后的iOS系統急需一套補充的權限管理機制,或研發相關安全管理軟件:以保證用戶的最機密資料不被隨意讀取,為敞開的系統添加一道鎖。
[1]Ito M.Mobile Phones,Japanese Youth,and the Replacement of Social Contact[M].London:Springer,2005:131-148.
[2]HALPERT B.Mobile Device Security[C]//Proceedings of the 1st Annual Conference on Information Security Curriculum Development.Kuala Lumpur,Malaysia:ACM,2004:99-101.
[3]李柏嵐,谷大武,李卷孺,等.iOS備份機制中隱私威脅問題的分析[J].通信技術,2012,45(02):25-28.LI B L,GU D W,LI J R,et al.Analysis on Privacy Threats in iOS Backup Mechanism[J].Communications Technology:2012,45(02):25-28.
[4]PANDYA V R.IPhone Security Analysis[D].San Jose:San Jose State University,2008.
[5]HALBRONN C,SIGWALD J.iPhone Security Model&Vulnerabilities[EB/OL].Kuala Lumpur,Malaysia:HITB SecConf,2010(2010-10-17)[2013-09-25].https://esec - lab.sogeti.com/dotclear/public/publications/10 -hitbkl-iphone.pdf
[6]BéDRUNE J B,SIGWALD J.IPhone Data Protection in Depth[R].France Sogeti:ESEC,2010.
[7]GEOHOT.Jailbreak[EB/OL].(2014-01-05)[2014- 01 - 12].http://theiphonewiki.com/wiki/index.php?title=Jailbreak.
[8]陳佳霖,王軼駿,薛質.iOS系統數據安全研究[J].信息安全與通信保密,2012(08):100-103.CHENJ L,WANG Y J,XUE Z.Study on iOS Data Security[J].China Information Security:2012(08):100-103.
[9]FELT A P,FINIFTER M,CHINE,et al.A Survey of Mobile Malware in the Wild[C]//Proceedings of the 1st ACM Workshop on Security and Privacy in Smartphones and Mobile Devices.Malaysia:ACM,2011:3-14.
[10]WATSON R,MORRISON W,VANCE C,et al.The Trusted BSD MAC Framework:Extensible Kernel Access Control for Free BSD 5.0[C]//Proc.2003 USENIX Annual Technical Conference.San Antonio,Texas:FREENIX Track,2003:285 -296.
[11]BLAZAKIS D.The Apple Sandbox[R].USA:Blackhat,2011.
[12]MILLER C.Mobile Attacks and Defense[J].Security& Privacy,2011,9(04):68 -70.
[13]NYGARD S.Class-dump[EB/OL].(2013-11-16)[2013-12-13].http://stevenygard.com/projects/class- dump/.
[14]張帥,范榮雙,梁勇,等.基于手機定位方法的研究與精度分析[J].全球定位系統:2011,36(02):45-48.ZHANG S,FAN R S,LIANG Y.Phone-based Location Method and Accuracy Analysis[J].GNSS WORLD OF CHINA:2011,36(02):45-48.
[15]HARALANOVA C.Jailbreak Me,Possess Me:Mobile Hacking Practices[EB/OL].(2012-10-05)[2013-12 -10].http://wi.mobilities.ca/jailbreak - me -possess-me-mobile-hacking-practices/.
[16]YLONEN T,LONVICK C.The Secure Shell(SSH)Protocol Architecture, RFC4251 [S]. [s.l.]:[s.n.],2006.
[17]PORRAS P,SAIDI H,YEGNESWARAN V.An Analysis of the iKee.b iphone Botnet[M].Berlin Heidelberg:Springer,2010:141 -152.
[18]阿里核心系統團隊.Apanic IP地址段的獲取與整理方法介紹[EB/OL].(2011-04-05)[2014-01-22].http://csrd.aliapp.com/?p=908.CoreSystem Team of Alibaba.Introduce of Crawling and Analyzing Apanic IP Addresses.[EB/OL].(2011 -04 -05)[2014 - 01 - 22].http://csrd.aliapp.com/?p=908.
[19]RENARD M.Practical iOS AppsHacking[EB/OL].(2012-10-19)[2013-12-16].http://ensiwiki.ensimag.fr/images/4/40/GreHack-2012-paper-Mathieu_Renard_ - _Practical_iOS_Apps_hacking.pdf
[20]ESSER S.Exploiting the iOS Kernel[R].USA:Blackhat,2011.