微信雙開是定時炸彈?關於非越獄iOS上微信分身高危插件ImgNaix的分析

序言

微信做爲手機上的第一大應用,有着上億的用戶。而且不少人都不僅擁有一個微信賬號,有的微信帳號是用於商業的,有的是用於私人的。惋惜的是官方版的微信並不支持多開的功能,而且頻繁更換微信帳號也是一件很是麻煩的事,因而你們紛紛在尋找可以在手機上登錄多個微信帳號的方法,相對於iOS,Android上早就有了很成熟的產品,好比360 OS的微信雙開和LBE的雙開大師就能夠知足不少用戶多開的需求。sql

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

1、 「倍推微信分身」初探

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

app安裝完後的圖標和微信的如出一轍,只是名字變成了「倍推微信分身」:
圖片描述微信

下載完倍推微信分身,並登錄後,能夠看到首頁與原版微信並無太大的變化,只是左上角多了一個VIP的標誌:
圖片描述網絡

咱們知道,根據蘋果的系統機制,一臺iOS設備上不容許存在多個Bundle ID同樣的app。所以,咱們猜想這個微信分身app是修改過Bundle ID的。因而咱們查看一下Info.plist,果真Bundle ID已經作了修改:
圖片描述app

可是研究過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:
圖片描述url

用file指令能夠看到這個僞png文件實際上是一個包含了armv7和arm64的dylib:
圖片描述

咱們看到這個僞圖片就像是一個寄生蟲同樣存在於微信app的體內,特別像dota裏的Naix(俗稱小狗)的終極技能 - 寄生,所以咱們把這個高危樣本稱之爲ImgNaix。
圖片描述

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

3、高危接口分析

須要注意的是,」倍推微信分身」打開的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上,請你們作好暴風雨來臨前的準備吧!

做者:蒸米@阿里移動安全,更多安全技術文章,請查看阿里聚安全博客

相關文章
相關標籤/搜索