微信多平台低版本漏洞之MMTLS绕过PC也能抢红包

2019-01-29 126331人围观 ,发现 4 个不明物体 漏洞终端安全

*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

*本文原创作者:C位金龟儿子,本文属于FreeBuf原创奖励计划,未经过许可禁止转载

前言 

说是漏洞有点夸大奇谈但是确实能绕过一定的限制来造成漏洞的效果。在游戏领域这个现象属实是属于BUG,身为某非知名IM公司开发人员在完善自身产品的同时也要像那些大厂(鹅厂)来学习,于是有了本文的研究。本文章仅供学习参考切用于非法用途,本文章参考资料源码均来源与网络如有侵权涉密请告知删除。

高能预警

①所有平台版本微信无一幸免均存在MMTLS绕过(重放攻击 so easy)

②均存在低版本使用高版本功能从而绕过一些限制

③跨版本功能操作 eg:PC微信,MAC微信,均可以实现抢红包附近人等其他操作

④更多漏洞有待你的挖掘…

起因

刚从游戏行业转到了IM行业 两者也是有相通的地方,刚好也正在负责这块,整体通讯协议的设计。在迭代自身产品的时后端日志发现了些奇奇怪怪的东西,个人认为通讯协议设计原则在扩充原有的功能(或游戏里的技能)在通讯协议上应该是向下兼容的,也就是说用户更新到最新客户端可以正常使用(废话不能使用更新干什么),还没有更新的用户也应该能正常使用。这就出现了跨版本的客户端,新版本可以使用新的功能和老的功能,老的版本可以使用老的功能,可是由于某种疏忽,在功能上的路由,消息的路由,中间件不正确的过滤,就可以造成老的版本可以使用新的功能,这种情况是我们设计者往往不愿意发生的,不然迭代产品做什么,直接堆功能岂不是很方便。

从公司的IM日志总结出以下问题:

①在迭代产品的时候是否只是改个版本号而已?大跨度版本更新没有及时封锁低端版本

②是否做了全局的版本更新校验

③路由器或中间件是否过滤不严格

④上述①②③会导致那些安全隐患

⑤如何防范改进

本文将从正向学习和逆向分析来了解如何MMTLS绕过以及各个功能嫁接。

正向学习

从入开发这一行以来,一直就有关注那些前沿技术类网站腾讯Bugly干活分享、InfoQ、SF、CSDN等等。一直有看微信相关的文章,从架构到迸发到开源,真的学到了很多东西。

微信高并发资金交易系统设计方案——百亿红包背后的技术支撑;

微信红包后台系统可用性设计实践;

微信技术专栏丨八篇来自微信技术团队的深度干货;

基于TLS1.3的微信安全通信协议mmtls介绍。

这里就不一一列举就不再总结大大佬们的干货了 文末参考资料和源码会给出相应的传送门。

逆向学习

对一个正向开发的小白来说很少听到逆向这2个字 多数是如何保护好自身的资源自身的协议,算法之类的。为了探索逆向这方面的内容还别说我可是真下了不少功夫,好在大佬们的分享精神,你们开车,我刚上车还不算晚哈哈。搜遍全网上上下下有关微信协议这方面的资料和微信逆向相关的文章。通过搜索 出现最多的关键词是 IPAD微信协议 PCHOOK Android微信协议, 我们将逐一进行发掘和探索。一不小心通过QQ群搜索就差点就进了黑车..现在越发感觉QQ群比淘宝还万能了。image.png

一、整理微信所有版本

通过访问官网可以整理出这些微信的版本,其实版本越多约不好管理越容易出现不对称的BUG:

image.png

几年前还在看QQ浏览器内置微信网页版  这里先记录一下 QQ浏览器微信 还有一个WEB网页微信 这算是微信全家桶了吧。

二、逐一分析

整个逆向分析的过程简直要吐血,这种蒙各种学习,什么是越挫越勇,这篇文章见证了,好歹真挖到了Bug。我们继续来,先从IPAD版本的微信搞起,一开始越狱就废了好大劲,接着就是砸壳所谓的砸壳那是因为通APPStore下载多了一层保护,去掉这一保护的过程,经过学习一番我果断从第三方商店软件里下载回来拖到IDA里分析,分析也分析不个所以然,索性抓抓包吧。通过对比最新iPad的数据包和最新PC版微信的数据包发现有不一样的地方 虽然大体数据包看上去有点像TLS但是IPAD 在登陆的一瞬间没有经过TLS而PC版本的微信是所有都经过TLS,又在网上搜到个低版本的IPAD微信 和低版本的PC微信 得出结论

1.IPAD版本的微信登陆未启用MMTLS(可能存在登陆绕过的风险)(Android 通过抓包分析和iPad情况相差不大);

2.低版本iPad微信不能登陆 低版本的PC微信却可以登陆且未启用MMLTS。

暂且先不讨论这些数据包到底是什么,我们只作初步分析。为了区分新和旧版本我采用了2中抓包软件加以区分。

PC最新微信2.6.6:
捕获.PNG

PC低版本微信(版本跨度较大 4年前的微信):

image.png

通过上述结论我们可以有一下相关设想:

1.IPAD微信能否构造出非MMTLS登陆;

2.PC低版本能否使用IPAD的功能 如抢红包 发朋友圈等 (思路参照 如何愉快地在Mac上刷朋友圈)。

为了验证猜想我们首先需要弄懂数据包到底是怎么加密怎么解密的,好在大佬已经有分析和解码的教程了,对于非MMTLS数据打包是这样子,可以分析出低版本PC微信的版本号00 00 58 00,在看看哪里还需设备参数:

image.png

image.png

还有一个设备类型DeviceType iPad iPhone os 8.4 通过搜索又搜索到一份无壳的DLL iPad协议:

image.png

一看上去 只有DLL接口说明 调用的话 一开始有点蒙 好在没有壳 放下吧又不甘心,于是又找到了份易语言的调用例程。对于猜想验证可以通Github上的开源项目验证 但是功能还少 这个DLL功能多验证少有麻烦。搞吧。。。

image.png

没有壳 是VC10编译器编译的,这个DLL有授权验证,先过掉再说,过掉方法参照这里,不再赘述:https://bbs.pediy.com/thread-246230.htm,接着开始修改内存 定位到微信所需设备特征修改一下设备参数:

捕获.PNG

经过操作一番成功登陆使用iPad的DLL登陆PC版本的微信:image.png

可是我想抢红包怎么办,PC微信是不推送红包的,只提示收到红包请到手机上查看,我们能否通过篡改同步消息的版本来实现收发红包呢,也就是说登陆用PC登陆,同步消息用iPad的。阅读开源的源码可以定位到这里:

image.png

接下来定位到DLL的NewSync,篡改一下版本号设备类型,奇迹就发生了。DLL要控制好全局版本号和单个功能的版本号(经过构造测试 微信的后端确实在消息功能路由存在问题)。

具体的设备特征和标识还需要自己去抓去构造、验证MAC和QQ浏览器的思路差不多,都是通病,这里只给出PC版本的思路。iPad iOS和安卓的微信更新频繁能及时的屏蔽低端版本登陆,既然是微信全家桶那么多成员,往往有些疏忽也是不可避免的,3-4年不更新还不禁止低版本登陆这就有点不应该了。

正常来讲,超过5个版本号以上的产品迭代更新就属于一个大跨度版本的更新,应该及时禁止掉低端版本登陆,不然就可能像构造SQL注入一样简单来构造各个版本的登陆。经过构造绕过MMTLS登陆依旧使用原有数据包登陆,对数据包重放没有任何限制,同时也违背了MMTLS。

如何解决类似的Bug或漏洞

①协议设计者的初衷就是迭代产品更新产品而不是随意改一个版本号就完事,对于多平台多版本功能嫁接,应做好登陆全局版本标识唯一,后续消息路由器,中间件加以版本验证。如果出现了不一样,说明通讯被重放,数据包被恶意构造。

②及时更新通讯的证书,客户端版本与软件通讯证书相互绑定,在开源的代码上看到了有用到证书的部分,这里就没有进行在继续构造了,自行挖掘。

image.png

③多平台多客户端多版本集中管理,说了这几种解决方案感觉就是加强版本号验证就能搞定的事。

后续Bug挖掘漏洞挖掘 就可能存在某个低版本的功能包里,有待挖掘。

参考文章及其源码:

https://mp.weixin.qq.com/s?__biz=MzUxMzcxMzE5Ng==&mid=2247488352&idx=1&sn=4850e8e086a3c1c77a92083590dc9a1a&chksm=f951a623ce262f3586d60aa379229976ec80cc109d8116a0a6b38c8d7ebb6d637919395d322e&scene=27#wechat_redirect

https://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA==&mid=2650995437&idx=1&sn=fefff4bff3e183d656a2d242e4c0a382&chksm=bdbf02be8ac88ba8d77252cf0279d708633364589a3c14e4e08fbe49e02dcf7ecfac50f141fe&scene=27#wechat_redirect

https://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA==&mid=2650996535&idx=1&sn=95f32730f45cae1bce23ee796b0277c1&chksm=bdbf07648ac88e7289bd08ab3c0a566f4983342bc1c22799d454bef0d1641dae812f3eb84880&scene=27#wechat_redirect

https://bbs.pediy.com/thread-246230.htm

https://bbs.pediy.com/thread-228828.htm

https://bbs.pediy.com/thread-248389.htm

https://github.com/bingwin/MicroChat

https://github.com/WithHades/WeChat4iPad

http://docs.ioin.in/writeup/iosre.com/_t_mac_7014/index.html

https://www.jianshu.com/p/4d726a0b9f9e

*本文原创作者:C位金龟儿子,本文属于FreeBuf原创奖励计划,未经过许可禁止转载

这些评论亮了

发表评论

已有 4 条评论

取消
Loading...

特别推荐

推荐关注

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php