微信做为手机上的第一大应用,有着上亿的用户。而且不少人都不仅拥有一个微信账号,有的微信帐号是用于商业的,有的是用于私人的。惋惜的是官方版的微信并不支持多开的功能,而且频繁更换微信帐号也是一件很是麻烦的事,因而你们纷纷在寻找可以在手机上登录多个微信帐号的方法,相对于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上,请你们作好暴风雨来临前的准备吧!
做者:蒸米@阿里移动安全,更多安全技术文章,请查看阿里聚安全博客