搜索
查看: 478|回复: 1

来自微信外挂的安全风险

[复制链接]

1839

主题

2255

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11913
发表于 2018-10-23 21:06:45 | 显示全部楼层 |阅读模式
原文链接:https://xlab.tencent.com/cn/2018 ... mp;isappinstalled=0

玄武实验室联合独立安全研究员 em 发现在 Mac OS 上用户量比较大的两款微信防撤回外挂存在安全问题,装了此外挂的用户只要在浏览器里访问攻击者页面并停留一分钟左右,攻击者即可拿到该用户的好友列表,聊天记录,甚至以该用户的身份给好友发送消息,对用户的信息安全造成巨大威胁。
目前这两款外挂的用户量较大,比较热门的一款目前在 Github 上的 star 数量接近 8800,实际安装的用户数量可能更多。为了避免让众多用户暴露在安全风险中,em 在对应的 Github 仓库中提交了修复代码,其中一个已经进行修补,而另一个尚无操作。
这两个外挂出现问题的原因是相同的。下面以较为流行的 WeChatPlugin-MacOS 为例,说明此攻击发生的原理。
根据代码我们发现,WeChatPlugin-MacOS 使用了GCDWebServer在本地127.0.0.1监听了52700端口作为 web 服务器。以修复前的代码为例。在TKWebServerManager.m文件中定义了以下4个基于 HTTP 的 API。
  • /wechat-plugin/user
  • /wechat-plugin/chatlog
  • /wechat-plugin/open-session
  • /wechat-plugin/send-message
这四个 API 接口的作用分别是获取用户好友、获取聊天记录、打开与指定好友的聊天窗口、对指定好友发送任意消息。
例如,直接在浏览器里访问http://127.0.0.1:52700/wechat-plugin/user即可获取在 Mac 版微信聊天窗口页中所有的好友、群等信息。
有的同学可能会有疑问,端口监听在本地,只有自己能访问到,攻击者如何发起攻击呢?
一种常见的针对此场景的攻击方法名为 DNS Rebind。攻击者首先自己搭建一个DNS解析服务器,让自己控制的域名在发生第一次DNS解析的时候指向攻击者的服务器,以后都解析到127.0.0.1。这样当受害者访问攻击者的页面(http://attacker-domain-with-dns-rebind/exp.html)的时候,会从攻击者的服务器上拉取攻击代码,后面的对attacker-domain-with-dns-rebind域名的请求,会指向本地,即127.0.0.1。由于DNS的解析结果存在一定的缓存时间,在浏览器里大概需要1分钟的时间才会失效进行第二次解析。在发生第二次解析的时候,其指向的IP地址会变为127.0.0.1。虽然 DNS 解析指向的服务器变了,但是域名没变,浏览器仍然遵循同源策略,这样就能往本地端口发送请求并获取数据,甚至传输到其他站点了。
通过 DNS Rebind,攻击者可以拿到该用户的好友列表,聊天记录,以该用户的身份给好友发送消息。
最后感谢 m4bln 在测试过程中提供的帮助。

过段时间可能会取消签到功能了

4

主题

211

帖子

3200

积分

我是黑客

Rank: 3Rank: 3

积分
3200
发表于 2018-11-3 23:36:47 | 显示全部楼层
一分钟左右,攻击者即可拿到该用户的好友列表,聊天记录
该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | Join BUC

本版积分规则

Powered by Discuz!

© 2012-2015 Baiker Union of China.

快速回复 返回顶部 返回列表