360 Nirvan Team
本文是 360 Nirvan Team 團隊針對 XcodeGhost 的第二篇分析文章。
我們還原了惡意iOS應用與C2服務器的通信協議,從而可以實際測試受感染的iOS應用可以有哪些惡意行為,具體行為見下文。
最后,我們分析了攻擊的發起點:Xcode,分析了其存在的弱點,及利用過程,并驗證了該攻擊方法。
惡意程序將其與服務器通信的數據做了加密,如下圖所示:
密鑰的計算方法:
通過分析,密鑰為:stringWi,生成密鑰的方式比較有迷惑性。
方法是:首先檢測用戶手機上是否安裝了目標應用,如果目標應用沒有安裝,則安裝相應應用,其中目標應用由C2服務器控制。
我們逆向了惡意代碼與C2服務器的通信協議,搭建了一個測試的C2服務器。然后通過C2服務器可以控制客戶端安裝第三方應用(演示應用為測試應用,不代表惡意軟件推廣該應用),見視頻,
視頻鏈接:http://v.youku.com/v_show/id_XMTMzOTk0NDc2MA==.html
這是第一個針對 XcodeGhost 能力的視頻演示。
相關代碼如下:
Xcode 中存在一個配置文件,該配置文件可以用來控制編譯器的鏈接行為,在受感染的 Xcode 中,該文件被修改,從而在鏈接階段使程序鏈接含有惡意代碼的對象文件,實現向正常iOS應用中注入惡意代碼的目的。
被修改的文件內容如下:
從上圖可以看到,程序會鏈接惡意對象文件 CoreService。
從鏈接過程的 Log 中可以看到其是如何影響鏈接過程的:
注:實際上可以讓 CoreService 從文件系統中消失,且在鏈接Log中沒有任何額外信息。
通過在配置文件中添加的鏈接選項,在工程的編譯設置中無法看到,這就增加隱蔽性:
首先 CoreService 的文件類型為:Object,即對象文件。
查看 CoreService 中的符號,可以看到:
導入的符號有:
首先編寫一個 ObjC 的類,測試如下圖:
制作出對象文件 ProteasInjector.o,然后用這個文件替換掉 CoreService 文件,編譯程序,然后反匯編,結果如下:
可以看到代碼被注入到應用中。