微信做爲手機上的第一大應用,有着上億的用戶。而且不少人都不僅擁有一個微信賬號,有的微信帳號是用於商業的,有的是用於私人的。惋惜的是官方版的微信並不支持多開的功能,而且頻繁更換微信帳號也是一件很是麻煩的事,因而你們紛紛在尋找可以在手機上登錄多個微信帳號的方法,相對於iOS,Android上早就有了很成熟的產品,好比360 OS的微信雙開和LBE的雙開大師就能夠知足不少用戶多開的需求。sql
可是在iOS上,由於蘋果的安全機制,並無任何知名的IT廠商推出微信多開的產品,反而是各類小公司的微信雙開產品滿天飛。但使用這些產品真的安全嗎?今天咱們就來看看這些產品的真面目。安全
此次要分析的產品名字叫」倍推微信分身」,能夠實現非越獄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。
用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上,請你們作好暴風雨來臨前的準備吧!
做者:蒸米@阿里移動安全,更多安全技術文章,請查看阿里聚安全博客