Xcode 非官方版本惡意代碼污染事件(XcodeGhost)
Xcode 非官方版本惡意代碼污染事件(XcodeGhost )的分析與綜述安天實驗室 ,Xcode 非官方版本惡意代碼污染事件(XcodeGhost )的分析與綜述安天實
Xcode 非官方版本惡意代碼污染事件(XcodeGhost )的分析與綜述
安天實驗室




Xcode 非官方版本惡意代碼污染事件(XcodeGhost )
的分析與綜述
安天實驗室
首次發(fā)布時間:2015年09月20日22時00分
本版本更新時間:2015年09月23日17時40分
,摘要
Xcode 是由蘋果公司發(fā)布的運行在操作系統(tǒng)Mac OS X上的集成開發(fā)工具(IDE ),是開發(fā)OS X 和 iOS 應(yīng)用程序的最主流工具。
2015年9月14日起,一例Xcode 非官方版本惡意代碼污染事件逐步被關(guān)注,并成為社會熱點事件。多數(shù)分析者將這一事件稱為“XcodeGhost ”。攻擊者通過對Xcode 進(jìn)行篡改,加入惡意模塊,并進(jìn)行各種傳播活動,使大量開發(fā)者使用被污染過的版本,建立開發(fā)環(huán)境。經(jīng)過被污染過的Xcode 版本編譯出的App 程序,將被植入惡意邏輯,其中包括向攻擊者注冊的域名回傳若干信息,并可能導(dǎo)致彈窗攻擊和被遠(yuǎn)程控制的風(fēng)險。
本事件由騰訊相關(guān)安全團(tuán)隊發(fā)現(xiàn),并上報國家互聯(lián)網(wǎng)應(yīng)急中心,國家互聯(lián)網(wǎng)應(yīng)急中心發(fā)出了公開預(yù)警,此后PaolAlto Network、360、盤古、阿里、i 春秋等安全廠商和團(tuán)隊機(jī)構(gòu),對事件進(jìn)行了大量跟進(jìn)分析、處理解讀。目前,已有分析團(tuán)隊發(fā)現(xiàn)著名的游戲開發(fā)工具Unity 3D也被同一作者進(jìn)行了地下供應(yīng)鏈污染,因此會影響更多的操作系統(tǒng)平臺。截止到本版本報告發(fā)布,尚未發(fā)現(xiàn)“XcodeGhost ”對其他開發(fā)環(huán)境的影響,但安天分析小組基于JA V A 代碼和Native 代碼的開發(fā)特點,同樣發(fā)出了相關(guān)風(fēng)險預(yù)警。
截止到2015年9月20日,各方已經(jīng)累計發(fā)現(xiàn)當(dāng)前已確認(rèn)共692種(如按版本號計算為858個)App 曾受到污染,受影響的廠商中包括了微信、滴滴、網(wǎng)易云音樂等著名應(yīng)用。
從確定性的行為來看,盡管有些人認(rèn)為這一惡意代碼竊取的信息“價值有限”,但從其感染面積、感染數(shù)量和可能帶來的衍生風(fēng)險來看,其可能是移動安全史上最為嚴(yán)重的惡意代碼感染事件,目前來看唯有此前臭名昭著的Carrier IQ能與之比肩。但與Carrier IQ具有強(qiáng)力的“官方”推廣方不同,這次事件是采用了非官方供應(yīng)鏈(工具鏈)污染的方式,其反應(yīng)出了我國互聯(lián)網(wǎng)廠商研發(fā)“野蠻生長”,安全意識低下的現(xiàn)狀。長期以來,業(yè)界從供應(yīng)鏈角度對安全的全景審視并不足夠,但供應(yīng)鏈上的各個環(huán)節(jié),都有可能影響到最終產(chǎn)品和最終使用場景的安全性。在這個維度上,開發(fā)工具、固件、外設(shè)等“非核心環(huán)節(jié)”的安全風(fēng)險,并不低于操作系統(tǒng),而利用其攻擊的難度可能更低。因此僅關(guān)注供應(yīng)鏈的基礎(chǔ)和核心環(huán)節(jié)是不夠的,而同時,我們必須高度面對現(xiàn)實,深刻分析長期困擾我國信息系統(tǒng)安全的地下供應(yīng)鏈問題,并進(jìn)行有效地綜合治理。
,目 錄
1
2 背景 . ............................................................................................................................................................................. 1 作用機(jī)理與影響 .......................................................................................................................................................... 1
2.1 作用機(jī)理 ............................................................................................................................................................. 2
2.1.1
2.1.2
2.1.3
2.1.4
2.2
3 樣本信息 ..................................................................................................................................................... 2 感染方式 ..................................................................................................................................................... 4 危害分析 ..................................................................................................................................................... 7 中間人利用 ............................................................................................................................................... 11 影響面分析 ....................................................................................................................................................... 12 擴(kuò)散、組織分析 ........................................................................................................................................................ 13
3.1
3.2
3.3 傳播分析 ........................................................................................................................................................... 13 攻擊者情況猜測 ............................................................................................................................................... 16 開發(fā)環(huán)節(jié)的安全問題分析................................................................................................................................ 17
3.3.1 Mac&iOS app簽名方式 ............................................................................................................................... 17
3.3.2 Mac 上官方簽名工具codesign 驗證App 方式 ........................................................................................... 17
3.3.3 官方推薦Xcode 驗證工具spclt ................................................................................................................... 19
4 Android 風(fēng)險預(yù)警 . .................................................................................................................................................... 20
4.1
4.2
4.3
5 預(yù)警背景 ........................................................................................................................................................... 20 JA VA 代碼開發(fā)生產(chǎn)環(huán)境的風(fēng)險 ..................................................................................................................... 22 Native 代碼開發(fā)生產(chǎn)環(huán)境的風(fēng)險 .................................................................................................................... 23 全景的安全視野才能減少盲點 ................................................................................................................................ 23
外一篇:我們的檢討 ........................................................................................................................................................ 25
附錄一:參考資料 ............................................................................................................................................................ 26
附錄二:事件時間鏈與相關(guān)鏈接..................................................................................................................................... 26 附錄三:受影響的App 應(yīng)用 .............................................................................................................. 錯誤! 未定義書簽。
附錄四:報告版本演進(jìn) .................................................................................................................................................... 31
附錄五:關(guān)于安天 ............................................................................................................................................................ 32
,Xcode 非官方版本惡意代碼污染事件(XcodeGhost )的分析與綜述
1 背景
Xcode 是由蘋果公司開發(fā)的運行在操作系統(tǒng)Mac OS X上的集成開發(fā)工具(IDE ),是開發(fā)OS X 和 iOS 應(yīng)用程序的最快捷的方式,其具有統(tǒng)一的用戶界面設(shè)計,同時編碼、測試、調(diào)試都在一個簡單的窗口內(nèi)完成。[1]
自2015年9月14日起,一例Xcode 非官方供應(yīng)鏈污染事件在國家互聯(lián)網(wǎng)應(yīng)急中心發(fā)布預(yù)警后,被廣泛關(guān)注,多數(shù)分析者將這一事件稱之為“XcodeGhost ”。攻擊者通過對Xcode 進(jìn)行篡改,加入惡意模塊,進(jìn)行各種傳播活動,使大量開發(fā)者獲取到相關(guān)上述版本,建立開發(fā)環(huán)境,此時經(jīng)過被污染過的Xcode 版本編譯出的App 程序,將被植入惡意邏輯,其中包括向攻擊者注冊的域名回傳若干信息,并可能導(dǎo)致彈窗攻擊和被遠(yuǎn)程控制的風(fēng)險。
截止到2015年9月20日,各方已經(jīng)累計發(fā)現(xiàn)共692種(如按版本號計算為858個)App 確認(rèn)受到感染。同時,有分析團(tuán)隊認(rèn)為,相同的攻擊者或團(tuán)隊可能已經(jīng)對安卓開發(fā)平臺采用同樣的思路進(jìn)行了攻擊嘗試。從其感染面積、感染數(shù)量和可能帶來的衍生風(fēng)險來看,其可能是移動安全史上最為嚴(yán)重的惡意代碼感染事件之一,從影響范圍上來看能與之比肩的僅有此前臭名昭著的Carrier IQ[2]。
目前,Unity 3D也被發(fā)現(xiàn)由同一作者采取攻擊Xcode 手法類似的思路進(jìn)行了地下供應(yīng)鏈污染。
鑒于此事態(tài)的嚴(yán)重性,安天安全研究與應(yīng)急處理中心(Antiy CERT)與安天移動安全公司(A VL Team)組成聯(lián)合分析小組,結(jié)合自身分析進(jìn)展與兄弟安全團(tuán)隊的分析成果,形成此報告。
2 作用機(jī)理與影響
安天根據(jù)Xcode 非官方供應(yīng)鏈污染事件的相關(guān)信息形成了圖2-1,其整體污染路徑為官方Xcode 被攻擊者植入惡意代碼后,由攻擊者上傳到百度云網(wǎng)盤等網(wǎng)絡(luò)位置,再通過論壇傳播等方式廣播下載地址,導(dǎo)致被App 開發(fā)者獲取,同時對于攻擊者是否利用下載工具通過下載重定向方式擴(kuò)大散布,也有較多猜測。有多個互聯(lián)網(wǎng)公司采用被污染過的Xcode 開發(fā)編譯出了被污染的App ,并將其提交至蘋果App Store,且通過了蘋果的安全審核,在用戶獲取相關(guān)App 進(jìn)行安裝后,相關(guān)應(yīng)用會被感染并回傳信息至攻擊者指定域名。 ?安天版權(quán)所有,歡迎無損轉(zhuǎn)載 第1頁

Xcode 非官方版本惡意代碼污染事件(XcodeGhost )的分析與綜述
圖 2-1 Xcode 非官方供應(yīng)鏈污染事件示意圖
2.1 作用機(jī)理
2.1.1 樣本信息
● 文件名:CoreService
● 位于Xcode 位置:(iOS 、iOS 模擬器、MacOSX 三個平臺)
./Developer/Platforms/iPhoneOS.platform/Developer/SDKs/Library/Frameworks/CoreServices.framework/CoreService
./Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/Library/Frameworks/CoreServices.framework/CoreService
./Developer/Platforms/MacOSX.platform/Developer/SDKs/Library/Frameworks/CoreServices.framework/CoreService
● 樣本形態(tài):庫文件(iOS 、iOS 模擬器、MacOSX

三個平臺)
?安天版權(quán)所有,歡迎無損轉(zhuǎn)載 第2頁

Xcode 非官方版本惡意代碼污染事件(XcodeGhost )的分析與綜述
表 2-1樣本信息

?安天版權(quán)所有,歡迎無損轉(zhuǎn)載 第3頁

Xcode 非官方版本惡意代碼污染事件(XcodeGhost )的分析與綜述
2.1.2 感染方式
2.1.2.1 攻擊機(jī)理
這次攻擊本質(zhì)上是通過攻擊Xcode 間接攻擊了自動化構(gòu)建和編譯環(huán)境,目前開發(fā)者不論是使用Xcode Server 還是基于第三方工具或自研發(fā)工具都需要基于Xcode 。而這次如此大面積的國內(nèi)產(chǎn)品中招,則只能反映大量產(chǎn)品研發(fā)團(tuán)隊在產(chǎn)品開發(fā)和構(gòu)建環(huán)境的維護(hù)以及安全意識上都呈現(xiàn)出比較大的問題。
圖 2-2基于Xcode 的開發(fā)流程(第三方圖片)[4]
1. 惡意插件植入Xcode 方式
也許出于對Xcode 穩(wěn)定性和植入方便性的考慮,惡意代碼實際并沒有對Xcode 工具進(jìn)行太多修改,主要是添加了如下文件:
● 針對 iOS
? Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/Library/Framework
s/CoreServices.framework/CoreService
? Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/Library/PrivateFram
eworks/IDEBundleInjection.framework
● 針對 iOS 模擬器
? Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/Library/Fram

eworks/CoreServices.framework/CoreService
?安天版權(quán)所有,歡迎無損轉(zhuǎn)載 第4頁

Xcode 非官方版本惡意代碼污染事件(XcodeGhost )的分析與綜述
? Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/Library/Priva
teFrameworks/IDEBundleInjection.framework
● 針對 Mac OS X
? Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/Library/Frameworks
/CoreServices.framework/CoreService
? Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/Library/PrivateFram
eworks/IDEBundleInjection.framework
以及修改了配置文件:
● Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/P
lug-ins/CoreBuildTasks.xcplugin/Contents/Resources/Ld.xcspec
2. 惡意插件植入App 方式
● 被攻擊的開發(fā)環(huán)節(jié):編譯App 項目部分;
● 惡意代碼植入機(jī)理:通過修改Xcode 配置文件,導(dǎo)致編譯Linking 時程序強(qiáng)制加載惡意庫文件; ● 修改的配置文件:
Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/Ld.xcspec
● 添加的語句:“-force_load $(PLATFORM_DEVELOPER_SDK_DIR)/Library/Frameworks/CoreService
s.framework/CoreService”
圖 2-3受感染Xcode 與官方版本配置文件對比
2.1.2.2 惡意代碼運行時間
● 惡意代碼植入位置:UIWindow (didFinishLaunchingWithOptions);
● 惡意代碼啟動時間:App 啟動后,開啟準(zhǔn)備展示第一個頁面時惡意代碼已經(jīng)執(zhí)行了;
● iOS 應(yīng)用啟動流程:從代碼執(zhí)行流程來看,圖2-4中每一步都可以作為惡意代碼植入點,且其框架
基本都是由模板自動生成,而UIWindow 為iOS App啟動后展示頁面時執(zhí)行。


?安天版權(quán)所有,歡迎無損轉(zhuǎn)載 第5頁

Xcode 非官方版本惡意代碼污染事件(XcodeGhost )的分析與綜述
圖 2-4 iOS應(yīng)用啟動流程(第三方圖片)[5]
● UIWindow 生成方式:
通常通過模板建立工程時,Xcode 會自動生成一個Window ,然后讓它變成keyWindow 并顯示出來;由于是模板自動生成,所以很多時候開發(fā)人員都容易忽略這個UIWindow 對象,這也是此次Xcode 被植入惡意代碼位置的原因之一。
● 惡意代碼啟動時機(jī)分析:
惡意代碼植入于UIWindow (didFinishLaunchingWithOptions)中,其入口點為: __UIWindow_didFinishLaunchingWithOptions__makeKeyAndVisible_;UIWindow 是作為包含了其他所有View 的一個容器,每一個程序里面都會有一個UIWindow ;而didFinishLaunchingWithOptions 里面的代碼會在UIWindow 啟動時執(zhí)行,即被感染App 在啟動時的開始準(zhǔn)備展示界面就已經(jīng)在執(zhí)行被植入的惡意代碼了。
圖 2-5惡意插件植入的代碼入口點


?安天版權(quán)所有,歡迎無損轉(zhuǎn)載 第6頁
