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