你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 關於非越獄iOS上微信分身高危插件ImgNaix的分析

關於非越獄iOS上微信分身高危插件ImgNaix的分析

編輯:IOS開發綜合

序言

微信作為手機上的第一大應用,有著上億的用戶。並且很多人都不只擁有一個微信帳號,有的微信賬號是用於商業的,有的是用於私人的。可惜的是官方版的微信並不支持多開的功能,並且頻繁更換微信賬號也是一件非常麻煩的事,於是大家紛紛在尋找能夠在手機上登陸多個微信賬號的方法,相對於iOS,Android上早就有了很成熟的產品,比如360 OS的微信雙開和LBE的雙開大師就可以滿足很多用戶多開的需求。

但是在iOS上,因為蘋果的安全機制,並沒有任何知名的IT廠商推出微信多開的產品,反而是各種小公司的微信雙開產品滿天飛。但使用這些產品真的安全嗎?今天我們就來看看這些產品的真面目。

 

一、 “倍推微信分身”初探

這次要分析的產品名字叫”倍推微信分身”,可以實現非越獄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冰與火之歌番外篇 - 在非越獄手機上進行AppHook】

http://drops.wooyun.org/papers/12803

 

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

http://drops.wooyun.org/papers/13824

 

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

\

 

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

\

 

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

\

 

二、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的。

 

三、高危接口分析

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

 

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

\

 

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

\

 

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

\

 

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

 

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

\

 

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

\

 

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

\

 

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

\

 

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

\

 

總結

雖然我們在樣本分析的過程中除了獲取用戶隱私外,暫時沒有捕獲到惡意攻擊的行為,但這個”倍推微信分身”預留了大量高危的接口(私有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上,請大家做好暴風雨來臨前的准備吧!

 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved