作者:
360安全衛士
·
2015/09/20 21:13
360 Nirvan Team
本文是 360 Nirvan Team 團隊針對 XcodeGhost 的第二篇分析文章。
我們還原了惡意iOS應用與C2伺服器的通訊協議,從而可以實際測試受感染的iOS應用可以有哪些惡意行為,具體行為見下文。
最後,我們分析了攻擊的發起點:Xcode,分析了其存在的弱點,及利用過程,並驗證了該攻擊方法。
0x01 惡意行為與C2伺服器
通訊金鑰分析
惡意程式將其與伺服器通訊的資料做了加密,如下圖所示:
金鑰的計算方法:
透過分析,金鑰為:stringWi,生成金鑰的方式比較有迷惑性。
惡意行為分析
惡意行為一:做應用推廣
方法是:首先檢測使用者手機上是否安裝了目標應用,如果目標應用沒有安裝,則安裝相應應用,其中目標應用由C2伺服器控制。
我們逆向了惡意程式碼與C2伺服器的通訊協議,搭建了一個測試的C2伺服器。然後透過C2伺服器可以控制客戶端安裝第三方應用(演示應用為測試應用,不代表惡意軟體推廣該應用),見影片,
影片連結:http://v.youku.com/v_show/id_XMTMzOTk0NDc2MA==.html
這是第一個針對 XcodeGhost 能力的影片演示。
惡意行為二:偽造內購頁面
相關程式碼如下:
惡意行為三:透過遠端控制,在使用者手機上彈提示
0x02 Xcode 的弱點及利用
Xcode 的利用過程描述
Xcode 中存在一個配置檔案,該配置檔案可以用來控制編譯器的連結行為,在受感染的 Xcode 中,該檔案被修改,從而在連結階段使程式連結含有惡意程式碼的物件檔案,實現向正常iOS應用中注入惡意程式碼的目的。
被修改的檔案內容如下:
從上圖可以看到,程式會連結惡意物件檔案 CoreService。
從連結過程的 Log 中可以看到其是如何影響連結過程的:
注:實際上可以讓 CoreService 從檔案系統中消失,且在連結Log中沒有任何額外資訊。
透過在配置檔案中新增的連結選項,在工程的編譯設定中無法看到,這就增加隱蔽性:
對惡意程式碼 CoreService 的分析
首先 CoreService 的檔案型別為:Object,即物件檔案。
檢視 CoreService 中的符號,可以看到:
匯入的符號有:
驗證概念
首先編寫一個 ObjC 的類,測試如下圖:
製作出物件檔案 ProteasInjector.o,然後用這個檔案替換掉 CoreService 檔案,編譯程式,然後反彙編,結果如下:
可以看到程式碼被注入到應用中。
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!