<pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
    <pre id="vvttv"></pre>

      <p id="vvttv"></p>

          <p id="vvttv"></p>

                <p id="vvttv"></p>

                <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                  <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                    <p id="vvttv"></p>

                    原文地址:http://drops.wooyun.org/papers/8973

                    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 文件,編譯程序,然后反匯編,結果如下:

                    可以看到代碼被注入到應用中。

                      <pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
                      <pre id="vvttv"></pre>

                        <p id="vvttv"></p>

                            <p id="vvttv"></p>

                                  <p id="vvttv"></p>

                                  <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                                    <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                                      <p id="vvttv"></p>

                                      这里只有精品视频