<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            原文地址:http://drops.wooyun.org/mobile/15406

            [email protected]

            0x00 序


            微信作為手機上的第一大應用,有著上億的用戶。并且很多人都不只擁有一個微信帳號,有的微信賬號是用于商業的,有的是用于私人的。可惜的是官方版的微信并不支持多開的功能,并且頻繁更換微信賬號也是一件非常麻煩的事,于是大家紛紛在尋找能夠在手機上登陸多個微信賬號的方法,相對于iOS,Android上早就有了很成熟的產品,比如360 OS的微信雙開和LBE的雙開大師就可以滿足很多用戶多開的需求。但是在iOS上,因為蘋果的安全機制,并沒有任何知名的IT廠商推出微信多開的產品,反而是各種小公司的微信雙開產品滿天飛。但使用這些產品真的安全嗎?今天我們就來看看這些產品的真面目。

            0x01 ”倍推微信分身”初探


            這次要分析的產品名字叫”倍推微信分身”,可以實現非越獄iOS上的微信多開。這個app的安裝是通過itms-services,也就是企業證書的安裝模式進行安裝的。服務器是架在59os.com。可以看到除了微信分身以外,還有很多別的破解應用提供下載:

            app安裝完后的圖標和微信的一模一樣,只是名字變成了“倍推微信分身”:

            下載完倍推微信分身,并登陸后,可以看到首頁與原版微信并沒有太大的變化,只是左上角多了一個VIP的標志:

            我們知道,根據蘋果的系統機制,一臺iOS設備上不允許存在多個Bundle ID一樣的app。因此,我們猜測這個微信分身app是修改過Bundle ID的。于是我們查看一下Info.plist,果然Bundle ID已經做了修改:

            但是研究過iOS上微信分身的人一定知道,微信app在啟動以及發送消息的時候會對Bundle ID做校驗的,如果不是” com.tencent.xin”就會報錯并退出。那么”倍推微信分身”是怎么做到的呢?經過分析,原來”倍推微信分身”是通過hook的手段,在app啟動的時候對BundleID做了動態修改。至于怎么進行非越獄iOS上的hook可以參考我之前寫的兩篇文章:

            iOS冰與火之歌番外篇 - 在非越獄手機上進行App Hook

            iOS冰與火之歌番外篇 - App Hook答疑以及iOS 9砸殼

            于是我們對”倍推微信分身”的binary進行分析,發現這個binary在啟動的時候會load一個偽裝成一個png文件的第三方的dylib – wanpu.png:

            用file指令可以看到這個偽png文件其實是一個包含了armv7和arm64的dylib:

            我們看到這個偽圖片就像是一個寄生蟲一樣存在于微信app的體內,特別像dota里的Naix(俗稱小狗)的終極技能 - 寄生,因此我們把這個高危樣本稱之為ImgNaix。

            0x02 wanpu.png分析


            用ida打開wanpu.png,可以看到這個dylib分別對BundleID,openURL和NewMainFrameViewController進行了hook:

            BundleID不用說,是為了讓app在運行的時候改回”com.tencent.xin”。

            NewMainFrameViewController的hook函數就是在微信主頁上顯示VIP的圖片,以及傳輸一些非常隱私的用戶數據(ssid, mac, imei等)到開發者自己的服務器上:

            OpenURL這個hook就很有意思了,這個函數本身是用來處理調用微信的URL Schemes的。看過我之前寫過的《iOS URL Scheme 劫持》的文章的人一定知道這個”倍推微信分身”是有能力進行URL Scheme劫持的,如果在Info.plist里進行了聲明,手機上所有使用的URL Schemes的應用都有可能被hijack。

            除了這些hook以外,我們在竟然在”倍推微信分身”的逆向代碼里,發現了Alipay的SDK!一個沒想到,在”倍推微信分身”的幫助下,支付寶和微信支付終于走到了一起:

            因為捆綁了支付寶的SDK,”倍推微信分身”可以調用支付寶的快捷支付功能:

            通過網絡抓包分析,我們可以看到”倍推微信分身”會發送一些服務收費的數據到手機上:

            經分析,”倍推微信分身”之所以加入支付寶sdk是為了對這個微信多開app進行收費。因為天下沒有免費的午餐,軟件開發者之所以制作騰訊的盜版軟件”倍推微信分身”就是為了能夠獲取到一定的收入,所以才會接入支付SDK的。

            0x03 高危接口分析


            需要注意的是,”倍推微信分身”打開的url數據都是服務端可控的,并且沒有進行加密,黑客可以使用MITM (Man-in-the-middle attack) 隨意修改推送的內容,進行釣魚攻擊等操作。比如我通過DNS劫持就能夠隨意修改推送給用戶的數據,以及誘導用戶去下載我自己設定的企業app,簡直和XcodeGhost一模一樣(具體細節可以參考我之前發表的《你以為服務器關了這事就結束了? - XcodeGhost截胡攻擊和服務端的復現,以及UnityGhost預警》)。

            這里我們進行DNS劫持并修改了推送的內容,同時我們把URL替換成了另一個企業應用的下載plist:

            enter image description here

            可以看到我們在啟動”倍推微信分身”的時候彈出了更新對話框,還無法取消:

            enter image description here

            點擊后,”倍推微信分身”下載了我們替換后的企業應用,一個偽裝成微信的假 app:

            enter image description here

            除此之外,在分析的過程中,我們還發現”倍推微信分身”app 還存在非常多的高危接口,并 且可以利用第三方服務器的控制進行遠程調用:

            (1). “倍推微信分身”app利用動態加載的方式調用了很多私有API。比如app使用了MobileCoreServices里的[LSApplicationWorkspace allInstalledApplications]來獲取手機上安裝的應用:

            比如app使用了SpringBoardServices的SBSLaunchApplicationWithIdentifier。這個API 可以在不需要url scheme的情況下調起目標app:

            比如app加載了和應用安裝有關的私有Framework MobileInstallation以及預留了通過URL Scheme安裝企業app的接口:

            (2). “倍推微信分身”app預留了一整套文件操作的高危接口,可以直接對微信app內的所有文件進行操作,這些文件包括好友列表,聊天記錄,聊天圖片等隱私信息。

            要知道在iOS上,聊天記錄等信息都是完全沒有加密的保存在MM.sqlite文件里的:

            0x04 總結


            雖然我們在樣本分析的過程中除了獲取用戶隱私外,暫時沒有捕獲到惡意攻擊的行為,但這個”倍推微信分身”預留了大量高危的接口(私有API,URL Scheme Hijack,文件操作接口等),并且破解者是可以隨便修改客戶端的內容,因此不要說推送任意廣告和收費信息了,連竊取微信賬號密碼的可能性都有,簡直就像一顆定時炸彈裝在了手機上。這樣的微信雙開你還敢用嗎?

            從這個樣本中,我們已經看到在非越獄iOS上的攻防技術已經變的非常成熟了, 無論是病毒(XcodeGhost)還是破解軟件(ImgNaix)都利用了很多蘋果安全機制的弱點,并且隨著研究iOS安全的人越來越多,會有更多的漏洞會被發現 (e.g., 利用XPC漏洞過App沙盒 http://drops.wooyun.org/papers/14170)。此外,iOS上的app不像Android,簡直一點防護措施都沒有,當遇到黑客攻擊的時候幾乎會瞬間淪陷。正如同我在MDCC 2015開發者大會上所講的,XcodeGhost只是一個開始而已,隨后會有越來越多的危機會出現在iOS上,請大家做好暴風雨來臨前的準備吧!

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线