Xcode 非官方版本惡意代碼污染事件(XcodeGhost)
Xcode 非官方版本惡意代碼污染事件(XcodeGhost )的分析與綜述安天實(shí)驗(yàn)室 ,Xcode 非官方版本惡意代碼污染事件(XcodeGhost )的分析與綜述安天實(shí)
Xcode 非官方版本惡意代碼污染事件(XcodeGhost )的分析與綜述
安天實(shí)驗(yàn)室
Xcode 非官方版本惡意代碼污染事件(XcodeGhost )
的分析與綜述
安天實(shí)驗(yàn)室
首次發(fā)布時(shí)間:2015年09月20日22時(shí)00分
本版本更新時(shí)間:2015年09月23日17時(shí)40分
,摘要
Xcode 是由蘋果公司發(fā)布的運(yùn)行在操作系統(tǒng)Mac OS X上的集成開發(fā)工具(IDE ),是開發(fā)OS X 和 iOS 應(yīng)用程序的最主流工具。
2015年9月14日起,一例Xcode 非官方版本惡意代碼污染事件逐步被關(guān)注,并成為社會(huì)熱點(diǎn)事件。多數(shù)分析者將這一事件稱為“XcodeGhost ”。攻擊者通過(guò)對(duì)Xcode 進(jìn)行篡改,加入惡意模塊,并進(jìn)行各種傳播活動(dòng),使大量開發(fā)者使用被污染過(guò)的版本,建立開發(fā)環(huán)境。經(jīng)過(guò)被污染過(guò)的Xcode 版本編譯出的App 程序,將被植入惡意邏輯,其中包括向攻擊者注冊(cè)的域名回傳若干信息,并可能導(dǎo)致彈窗攻擊和被遠(yuǎn)程控制的風(fēng)險(xiǎn)。
本事件由騰訊相關(guān)安全團(tuán)隊(duì)發(fā)現(xiàn),并上報(bào)國(guó)家互聯(lián)網(wǎng)應(yīng)急中心,國(guó)家互聯(lián)網(wǎng)應(yīng)急中心發(fā)出了公開預(yù)警,此后PaolAlto Network、360、盤古、阿里、i 春秋等安全廠商和團(tuán)隊(duì)機(jī)構(gòu),對(duì)事件進(jìn)行了大量跟進(jìn)分析、處理解讀。目前,已有分析團(tuán)隊(duì)發(fā)現(xiàn)著名的游戲開發(fā)工具Unity 3D也被同一作者進(jìn)行了地下供應(yīng)鏈污染,因此會(huì)影響更多的操作系統(tǒng)平臺(tái)。截止到本版本報(bào)告發(fā)布,尚未發(fā)現(xiàn)“XcodeGhost ”對(duì)其他開發(fā)環(huán)境的影響,但安天分析小組基于JA V A 代碼和Native 代碼的開發(fā)特點(diǎn),同樣發(fā)出了相關(guān)風(fēng)險(xiǎn)預(yù)警。
截止到2015年9月20日,各方已經(jīng)累計(jì)發(fā)現(xiàn)當(dāng)前已確認(rèn)共692種(如按版本號(hào)計(jì)算為858個(gè))App 曾受到污染,受影響的廠商中包括了微信、滴滴、網(wǎng)易云音樂(lè)等著名應(yīng)用。
從確定性的行為來(lái)看,盡管有些人認(rèn)為這一惡意代碼竊取的信息“價(jià)值有限”,但從其感染面積、感染數(shù)量和可能帶來(lái)的衍生風(fēng)險(xiǎn)來(lái)看,其可能是移動(dòng)安全史上最為嚴(yán)重的惡意代碼感染事件,目前來(lái)看唯有此前臭名昭著的Carrier IQ能與之比肩。但與Carrier IQ具有強(qiáng)力的“官方”推廣方不同,這次事件是采用了非官方供應(yīng)鏈(工具鏈)污染的方式,其反應(yīng)出了我國(guó)互聯(lián)網(wǎng)廠商研發(fā)“野蠻生長(zhǎng)”,安全意識(shí)低下的現(xiàn)狀。長(zhǎng)期以來(lái),業(yè)界從供應(yīng)鏈角度對(duì)安全的全景審視并不足夠,但供應(yīng)鏈上的各個(gè)環(huán)節(jié),都有可能影響到最終產(chǎn)品和最終使用場(chǎng)景的安全性。在這個(gè)維度上,開發(fā)工具、固件、外設(shè)等“非核心環(huán)節(jié)”的安全風(fēng)險(xiǎn),并不低于操作系統(tǒng),而利用其攻擊的難度可能更低。因此僅關(guān)注供應(yīng)鏈的基礎(chǔ)和核心環(huán)節(jié)是不夠的,而同時(shí),我們必須高度面對(duì)現(xiàn)實(shí),深刻分析長(zhǎng)期困擾我國(guó)信息系統(tǒng)安全的地下供應(yīng)鏈問(wèn)題,并進(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 攻擊者情況猜測(cè) ............................................................................................................................................... 16 開發(fā)環(huán)節(jié)的安全問(wèn)題分析................................................................................................................................ 17
3.3.1 Mac&iOS app簽名方式 ............................................................................................................................... 17
3.3.2 Mac 上官方簽名工具codesign 驗(yàn)證App 方式 ........................................................................................... 17
3.3.3 官方推薦Xcode 驗(yàn)證工具spclt ................................................................................................................... 19
4 Android 風(fēng)險(xiǎn)預(yù)警 . .................................................................................................................................................... 20
4.1
4.2
4.3
5 預(yù)警背景 ........................................................................................................................................................... 20 JA VA 代碼開發(fā)生產(chǎn)環(huán)境的風(fēng)險(xiǎn) ..................................................................................................................... 22 Native 代碼開發(fā)生產(chǎn)環(huán)境的風(fēng)險(xiǎn) .................................................................................................................... 23 全景的安全視野才能減少盲點(diǎn) ................................................................................................................................ 23
外一篇:我們的檢討 ........................................................................................................................................................ 25
附錄一:參考資料 ............................................................................................................................................................ 26
附錄二:事件時(shí)間鏈與相關(guān)鏈接..................................................................................................................................... 26 附錄三:受影響的App 應(yīng)用 .............................................................................................................. 錯(cuò)誤! 未定義書簽。
附錄四:報(bào)告版本演進(jìn) .................................................................................................................................................... 31
附錄五:關(guān)于安天 ............................................................................................................................................................ 32
,Xcode 非官方版本惡意代碼污染事件(XcodeGhost )的分析與綜述
1 背景
Xcode 是由蘋果公司開發(fā)的運(yùn)行在操作系統(tǒng)Mac OS X上的集成開發(fā)工具(IDE ),是開發(fā)OS X 和 iOS 應(yīng)用程序的最快捷的方式,其具有統(tǒng)一的用戶界面設(shè)計(jì),同時(shí)編碼、測(cè)試、調(diào)試都在一個(gè)簡(jiǎn)單的窗口內(nèi)完成。[1]
自2015年9月14日起,一例Xcode 非官方供應(yīng)鏈污染事件在國(guó)家互聯(lián)網(wǎng)應(yīng)急中心發(fā)布預(yù)警后,被廣泛關(guān)注,多數(shù)分析者將這一事件稱之為“XcodeGhost ”。攻擊者通過(guò)對(duì)Xcode 進(jìn)行篡改,加入惡意模塊,進(jìn)行各種傳播活動(dòng),使大量開發(fā)者獲取到相關(guān)上述版本,建立開發(fā)環(huán)境,此時(shí)經(jīng)過(guò)被污染過(guò)的Xcode 版本編譯出的App 程序,將被植入惡意邏輯,其中包括向攻擊者注冊(cè)的域名回傳若干信息,并可能導(dǎo)致彈窗攻擊和被遠(yuǎn)程控制的風(fēng)險(xiǎn)。
截止到2015年9月20日,各方已經(jīng)累計(jì)發(fā)現(xiàn)共692種(如按版本號(hào)計(jì)算為858個(gè))App 確認(rèn)受到感染。同時(shí),有分析團(tuán)隊(duì)認(rèn)為,相同的攻擊者或團(tuán)隊(duì)可能已經(jīng)對(duì)安卓開發(fā)平臺(tái)采用同樣的思路進(jìn)行了攻擊嘗試。從其感染面積、感染數(shù)量和可能帶來(lái)的衍生風(fēng)險(xiǎn)來(lái)看,其可能是移動(dòng)安全史上最為嚴(yán)重的惡意代碼感染事件之一,從影響范圍上來(lái)看能與之比肩的僅有此前臭名昭著的Carrier IQ[2]。
目前,Unity 3D也被發(fā)現(xiàn)由同一作者采取攻擊Xcode 手法類似的思路進(jìn)行了地下供應(yīng)鏈污染。
鑒于此事態(tài)的嚴(yán)重性,安天安全研究與應(yīng)急處理中心(Antiy CERT)與安天移動(dòng)安全公司(A VL Team)組成聯(lián)合分析小組,結(jié)合自身分析進(jìn)展與兄弟安全團(tuán)隊(duì)的分析成果,形成此報(bào)告。
2 作用機(jī)理與影響
安天根據(jù)Xcode 非官方供應(yīng)鏈污染事件的相關(guān)信息形成了圖2-1,其整體污染路徑為官方Xcode 被攻擊者植入惡意代碼后,由攻擊者上傳到百度云網(wǎng)盤等網(wǎng)絡(luò)位置,再通過(guò)論壇傳播等方式廣播下載地址,導(dǎo)致被App 開發(fā)者獲取,同時(shí)對(duì)于攻擊者是否利用下載工具通過(guò)下載重定向方式擴(kuò)大散布,也有較多猜測(cè)。有多個(gè)互聯(lián)網(wǎng)公司采用被污染過(guò)的Xcode 開發(fā)編譯出了被污染的App ,并將其提交至蘋果App Store,且通過(guò)了蘋果的安全審核,在用戶獲取相關(guān)App 進(jìn)行安裝后,相關(guān)應(yīng)用會(huì)被感染并回傳信息至攻擊者指定域名。 ?安天版權(quán)所有,歡迎無(wú)損轉(zhuǎn)載 第1頁(yè)
Xcode 非官方版本惡意代碼污染事件(XcodeGhost )的分析與綜述
圖 2-1 Xcode 非官方供應(yīng)鏈污染事件示意圖
2.1 作用機(jī)理
2.1.1 樣本信息
● 文件名:CoreService
● 位于Xcode 位置:(iOS 、iOS 模擬器、MacOSX 三個(gè)平臺(tái))
./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):庫(kù)文件(iOS 、iOS 模擬器、MacOSX
三個(gè)平臺(tái))
?安天版權(quán)所有,歡迎無(wú)損轉(zhuǎn)載 第2頁(yè)
Xcode 非官方版本惡意代碼污染事件(XcodeGhost )的分析與綜述
表 2-1樣本信息
?安天版權(quán)所有,歡迎無(wú)損轉(zhuǎn)載 第3頁(yè)
Xcode 非官方版本惡意代碼污染事件(XcodeGhost )的分析與綜述
2.1.2 感染方式
2.1.2.1 攻擊機(jī)理
這次攻擊本質(zhì)上是通過(guò)攻擊Xcode 間接攻擊了自動(dòng)化構(gòu)建和編譯環(huán)境,目前開發(fā)者不論是使用Xcode Server 還是基于第三方工具或自研發(fā)工具都需要基于Xcode 。而這次如此大面積的國(guó)內(nèi)產(chǎn)品中招,則只能反映大量產(chǎn)品研發(fā)團(tuán)隊(duì)在產(chǎn)品開發(fā)和構(gòu)建環(huán)境的維護(hù)以及安全意識(shí)上都呈現(xiàn)出比較大的問(wèn)題。
圖 2-2基于Xcode 的開發(fā)流程(第三方圖片)[4]
1. 惡意插件植入Xcode 方式
也許出于對(duì)Xcode 穩(wěn)定性和植入方便性的考慮,惡意代碼實(shí)際并沒(méi)有對(duì)Xcode 工具進(jìn)行太多修改,主要是添加了如下文件:
● 針對(duì) 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
● 針對(duì) iOS 模擬器
? Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/Library/Fram
eworks/CoreServices.framework/CoreService
?安天版權(quán)所有,歡迎無(wú)損轉(zhuǎn)載 第4頁(yè)
Xcode 非官方版本惡意代碼污染事件(XcodeGhost )的分析與綜述
? Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/Library/Priva
teFrameworks/IDEBundleInjection.framework
● 針對(duì) 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 項(xiàng)目部分;
● 惡意代碼植入機(jī)理:通過(guò)修改Xcode 配置文件,導(dǎo)致編譯Linking 時(shí)程序強(qiáng)制加載惡意庫(kù)文件; ● 修改的配置文件:
Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/Ld.xcspec
● 添加的語(yǔ)句:“-force_load $(PLATFORM_DEVELOPER_SDK_DIR)/Library/Frameworks/CoreService
s.framework/CoreService”
圖 2-3受感染Xcode 與官方版本配置文件對(duì)比
2.1.2.2 惡意代碼運(yùn)行時(shí)間
● 惡意代碼植入位置:UIWindow (didFinishLaunchingWithOptions);
● 惡意代碼啟動(dòng)時(shí)間:App 啟動(dòng)后,開啟準(zhǔn)備展示第一個(gè)頁(yè)面時(shí)惡意代碼已經(jīng)執(zhí)行了;
● iOS 應(yīng)用啟動(dòng)流程:從代碼執(zhí)行流程來(lái)看,圖2-4中每一步都可以作為惡意代碼植入點(diǎn),且其框架
基本都是由模板自動(dòng)生成,而UIWindow 為iOS App啟動(dòng)后展示頁(yè)面時(shí)執(zhí)行。
?安天版權(quán)所有,歡迎無(wú)損轉(zhuǎn)載 第5頁(yè)
Xcode 非官方版本惡意代碼污染事件(XcodeGhost )的分析與綜述
圖 2-4 iOS應(yīng)用啟動(dòng)流程(第三方圖片)[5]
● UIWindow 生成方式:
通常通過(guò)模板建立工程時(shí),Xcode 會(huì)自動(dòng)生成一個(gè)Window ,然后讓它變成keyWindow 并顯示出來(lái);由于是模板自動(dòng)生成,所以很多時(shí)候開發(fā)人員都容易忽略這個(gè)UIWindow 對(duì)象,這也是此次Xcode 被植入惡意代碼位置的原因之一。
● 惡意代碼啟動(dòng)時(shí)機(jī)分析:
惡意代碼植入于UIWindow (didFinishLaunchingWithOptions)中,其入口點(diǎn)為: __UIWindow_didFinishLaunchingWithOptions__makeKeyAndVisible_;UIWindow 是作為包含了其他所有View 的一個(gè)容器,每一個(gè)程序里面都會(huì)有一個(gè)UIWindow ;而didFinishLaunchingWithOptions 里面的代碼會(huì)在UIWindow 啟動(dòng)時(shí)執(zhí)行,即被感染App 在啟動(dòng)時(shí)的開始準(zhǔn)備展示界面就已經(jīng)在執(zhí)行被植入的惡意代碼了。
圖 2-5惡意插件植入的代碼入口點(diǎn)
?安天版權(quán)所有,歡迎無(wú)損轉(zhuǎn)載 第6頁(yè)