序言

微信作为手机上的第一大应用,有着上亿的用户。并且很多人都不只拥有一个微信帐号,有的微信账号是用于商业的,有的是用于私人的。可惜的是官方版的微信并不支持多开的功能,并且频繁更换微信账号也是一件非常麻烦的事,于是大家纷纷在寻找能够在手机上登陆多个微信账号的方法,相对于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上,请大家做好暴风雨来临前的准备吧!

作者:蒸米@阿里移动安全,更多安全技术文章,请查看阿里聚安全博客

微信双开是定时炸弹?关于非越狱iOS上微信分身高危插件ImgNaix的分析 1相关推荐

  1. 微信双开是定时炸弹?关于非越狱iOS上微信分身高危插件ImgNaix的分析

    作者:蒸米@阿里移动安全 序言 微信作为手机上的第一大应用,有着上亿的用户.并且很多人都不只拥有一个微信帐号,有的微信账号是用于商业的,有的是用于私人的.可惜的是官方版的微信并不支持多开的功能,并且频 ...

  2. 微信双开还是微信定时炸弹?- 关于非越狱iOS上微信分身高危插件ImgNaix的分析...

    蒸米 · 2016/04/28 11:01 [email protected] 0x00 序 微信作为手机上的第一大应用,有着上亿的用户.并且很多人都不只拥有一个微信帐号,有的微信账号是用于商业的,有 ...

  3. iOS冰与火之歌番外篇 - 在非越狱手机上进行App Hook(转载)

    作者简介:郑旻(花名蒸米),阿里巴巴移动安全部门资深安全工程师,香港中文大学移动安全(Android & iOS)方向博士,曾在腾讯.百度以及硅谷的FireEye实习.在博士期间发表了多篇移动 ...

  4. iOS冰与火之歌番外篇 - 在非越狱手机上进行App Hook

    作者简介:郑旻(花名蒸米),阿里巴巴移动安全部门资深安全工程师,香港中文大学移动安全(Android & iOS)方向博士,曾在腾讯.百度以及硅谷的FireEye实习.在博士期间发表了多篇移动 ...

  5. 在非越狱手机上进行App Hook

    作者简介:郑旻(花名蒸米),阿里巴巴移动安全部门资深安全工程师,香港中文大学移动安全(Android & iOS)方向博士,曾在腾讯.百度以及硅谷的FireEye实习.在博士期间发表了多篇移动 ...

  6. 微信小程序设置swiper圆角在ios上失效解决

    今天在给轮播图添加圆角的时候,发现在安卓机上是有圆角的,但是在苹果手机上圆角却失效了,后来翻阅了文档发现这是个bug.下面是两种解决方案:第一种:-webkit-backface-visibility ...

  7. 微信团队分享:极致优化,iOS版微信编译速度3倍提升的实践总结

    1.引言 岁月真是个养猪场,这几年,人胖了,微信代码也翻了. 记得 14 年转岗来微信时,用自己笔记本编译微信工程才十来分钟.如今用公司配的 17 年款 27-inch iMac 编译要接近半小时:偶 ...

  8. iOS远程真机之非越狱iOS设备的远程控制实现原理

    通过iOS设备控制PC可能较为常见,App Store也有不少类似的应用,但是通过PC控制iOS相信大家很难在网上找到解决方案,能找到的也大部分是需要依赖越狱来实现. 安卓提供了强大的adb工具,能轻 ...

  9. IOS上微信在输入框弹出键盘后,页面不恢复,下方有留白,有弹窗弹出时页面内容感应区域错位...

    问题说明: ios中,键盘的弹起,页面会往上挪动,使输入框展示在页面中间,键盘隐藏页面会下挪恢复原状. 在微信移动端,ios页面不恢复,下方有留白. 收起键盘的瞬间,如果有弹窗弹出,此时时页面内容应区 ...

最新文章

  1. MPB:清华杨云锋组-利用GeoChip分析环境微生物功能基因群落结构
  2. R语言使用caret包对GBM模型进行参数调优实战:Model Training and Parameter Tuning
  3. 网站建设想要出类拔萃还要从基础上做创新
  4. 【笔记】基于轻量和积网络及无人机遥感图像的大豆田杂草识别
  5. poj 3256(DFS)
  6. 1-2.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之二
  7. 大型网站高并发——服务器负载均衡设计
  8. 路由器setup模式
  9. Eclipse SonarLint 插件 “SonarLint processing file 。。。 lombok/launch/PatchFixesHider“ 解决办法
  10. linux命令iconv_Linux中iconv命令的简介和使用方法
  11. 注册测绘师考试复习视频资料
  12. csdn博客文章头部自动生成目录
  13. Hadoop开发相关问题
  14. 华为RH2288 V3装centos7
  15. ews java api maven_通过 EWS JAVA API读取exchange邮件
  16. Linux面试必备基础知识(十一)——系统管理命令
  17. php求圆的周长面积,c语言实现输入圆的半径计算圆的面积_后端开发
  18. 计算机英语课外知识竞赛,高2012级英语课外阅读知识竞赛.docx
  19. CentOS7 nginx反向代理TCP端口
  20. jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

热门文章

  1. 解决 iBooks 无法显示 epub 电子书本身的 thumbnail
  2. 【RMAN】增量备份学习与实践
  3. linux禁用小企鹅输入法,小企鹅(fcitx)输入法停止开发
  4. 从Spy Mouse看App Store的推广方法
  5. iphone 推广 TA
  6. OpenEuler 22.03 安装NextCloud
  7. 有一个母羊,第2年和第4年可以生一头小母羊,在第5年死去,小母羊在它出生的第2年和第4年生小母羊,第5年死去,求第N年有多少个母羊
  8. python open报错:‘gbk‘ codec can‘t decode byte 0xbd in position xxxx: illegal multibyte sequence
  9. 委外加工(Subconctracting)流程
  10. 中国第一大手机操作系统已有过亿用户,不是华为鸿蒙