XCode編譯器裡有鬼 – XCodeGhost樣本分析

發表於2015-09-18

0x00 序

事情的起因是@唐巧_boy在微博上發了一條微博說到:一個朋友告訴我他們通過在非官方渠道下載的 Xcode 編譯出來的 app 被注入了第三方的程式碼,會向一個網站上傳資料,目前已知兩個知名的 App 被注入。

隨後很多留言的小夥伴們紛紛表示中招,@誰敢亂說話表示:”還是不能相信迅雷,我是把官網上的下載URL複製到迅雷裡下載的,還是中招了。我說一下:有問題的Xcode6.4.dmg的sha1是:a836d8fa0fce198e061b7b38b826178b44c053a8,官方正確的是:672e3dcb7727fc6db071e5a8528b70aa03900bb0,大家一定要校驗。”另外還有一位小夥伴表示他是在百度網盤上下載的,也中招了。

0x01 樣本分析

在@瘋狗 @longye的幫助下,@JoeyBlue_ 為我們提供了病毒樣本:CoreService庫檔案,因為用帶這個庫的Xcode編譯出的app都會中毒,所以我們給這個樣本起名為:XCodeGhost。CoreService是在”/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/Library/Frameworks/CoreServices.framework/”目錄下發現的,這個樣本的基本資訊如下:

用ida開啟,發現樣本非常簡單,只有少量函式。主要的功能就是先收集一些iPhone和app的基本資訊,包括:時間,bundle id(包名),應用名稱,系統版本,語言,國家等。如圖所示:

隨後會把這些資訊上傳到 init.icloud-analysis.com。如圖所示:

http://init.icloud-analysis.com並不是apple 的官方網站,而是病毒作者所申請的仿冒網站,用來收集資料資訊的。

目前該網站的伺服器已經關閉,用whois查詢伺服器資訊也沒有太多可以挖掘的地方。這說明病毒作者是個老手,並且非常小心,在程式碼和伺服器上都沒有留下什麼痕跡,所以不排除以後還會繼續做作案的可能。

0x02 檢測方法

為了防止app被插入惡意庫檔案,開發者除了檢測”/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs” 目錄下是否有可疑的framework檔案之外,還應該檢測一下Target->Build Setting->Search Paths->Framework Search Paths中的設定。看看是否有可疑的frameworks混雜其中:

另外因為最近iOS dylib病毒也十分氾濫,為了防止開發者中招,支付寶的小夥伴還提供了一個防止被dylib hook的小技巧:在Build Settings中找到“Other Linker Flags”在其中加上”-Wl,-sectcreate,__RESTRICT,__restrict,/dev/null”即可。

最後的建議是:以後下載XCode編譯器儘可能使用官方渠道,以免app被打包進惡意的病毒庫。如果非要用非官方渠道,一定要在下載後校驗一下雜湊值。

0x03 思考&總結

雖然XCodeGhost並沒有非常嚴重的惡意行為,但是這種病毒傳播方式在iOS上還是首次。也許這只是病毒作者試試水而已,可能隨後還會有更大的動作,請開發者務必要小心。這個病毒讓我想到了UNIX 之父 Ken Thompson 的圖靈獎演講 “Reflections of Trusting Trust”。他曾經假設可以實現了一個修改的 tcc,用它編譯 su login 能產生後門,用修改的tcc編譯“正版”的 tcc 程式碼也能夠產生有著同樣後門的 tcc。也就是不論 bootstrap (用 tcc 編譯 tcc) 多少次,不論如何檢視原始碼都無法發現後門,真是細思恐極啊。

0x04 追加更新

1 很多開發者們擔心最近下載的Xcode 7也不安全。這裡筆者沒有使用任何下載工具的情況在蘋果官網上下載了Xcode_7.dmg並計算了sha1的值。

所以如果在非App Store下載的各位開發者們可以用shasum校驗一下自己下載的Xcode 7是否是原版。

2 @FlowerCode同學通過分析流量發現病毒開發者的伺服器是搭建在Amazon EC2的雲上的。伺服器已經關閉 。

3 根據palo alto networks公司爆料,被感染的知名App Store應用為”網易雲音樂”!該app應用在AppStore上的最新版本2.8.3已經確認被感染。並且該應用的Xcode編譯版本為6.4(6E35b),也就是XcodeGhost病毒所感染的那個版本。網易雲音樂在AppStore上目前的狀態:

“網易雲音樂”逆向後的函式列表,可以找到XcodeGhost所插入的函式:

受感染的”網易雲音樂”app會把手機隱私資訊傳送到病毒作者的伺服器”init.icloud-analysis.com”上面:

4 根據熱心網友舉報,投毒者網名為”coderfun”。他在各種iOS開發者論壇或者weibo後留言引誘iOS開發者下載有毒版本的Xcode。並且中毒的版本不止Xcode 6.4,還有6.1,6.2和6.3等等。

5 根據熱心網友提醒,我們在中信銀行信用卡的應用”動卡空間”中也發現了被插入的XcodeGhost惡意程式碼,受感染的版本為3.4.4。

被插入的部分惡意程式碼如下:

相關文章