6 月 26 号晚上,大量 QQ 被盗的新闻一度冲上微博热搜。很多人反映自己的 QQ 不受控制地发送大量违规图片。

6 月 27 号早上,腾讯 QQ 官方下场发了公告。

公告总结来说就是“用户扫了钓鱼二维码,和腾讯无关”。

到底和腾讯有关吗?我们来分析分析。

扫码登录

先看 QQ 扫描登录的流程,大致分为三个阶段:

  1. 二维码展示阶段

  2. 扫码阶段

  3. 登录确认阶段

先简单过一下登录流程:

  1. 用户打开电脑 QQ。

  2. 电脑 QQ 显示一个二维码。

  3. 用户拿起手机扫码。

  4. 电脑 QQ 显示“扫码成功,请用 QQ 手机版确认”。

  5. 手机 QQ 显示“您正在一台新设备登录 QQ”,让用户选择请选择登录还是拒绝。

  6. 用户选择登录,电脑 QQ 登录成功,整个流程结束。

根据用户的行为画出整个时序图:

这套扫码登录的流程在业界被广泛地使用,也足以证明其合理性。

过程一共有四个参与者,分别是:用户手机电脑腾讯 QQ 服务器

黑客无法伪造用户、手机、和腾讯 QQ 服务器这三个参与者,但是可以在电脑端上动手脚,这次的盗号事件,正是如此。

到底是怎么攻击的呢?我们往下看。

黑客如何盗号

根据我了解到的一些信息,我大胆猜测一下盗号的过程:

网吧里面的 WeGame 被黑客注入了,然后黑客用手表 QQ 的登录二维码伪装成 WeGame 的登录二维码,劫持了用户的授权信息,黑客利用授权信息和腾讯服务器交互,批量发送图片。

按照我的推论,还原一下犯罪现场:

首先,黑客入侵一个大的网吧管理服务商,在 WeGame 这个软件上面注入一层钓鱼入口。

然后这个服务商下的网吧下载了这个被注入的 WeGame。

用户去网吧上网,打开 WeGame 的时候同时也打开了钓鱼入口。

这个钓鱼入口输入账号密码显示登录错误。

于是,用户只能扫码登录,用户一扫描,看到的却是登录手表 QQ。

用户感到疑惑,但是也没有想太多,点了确定登录。

授权成功,黑客拿到授权信息。

整个过程黑客并没有直接盗取到你的账号密码,只是通过“钓鱼”拿到了你的授权信息。

而腾讯的服务器,只认授权信息不认人,只要授权信息是对的,不管谁去请求,腾讯都会放行。

就这样,黑客得到了服务器的信任,让你的账号批量发送图片。

回答

按照上面的推论,会有几个问题:

1、为什么没有把被盗号的人挤下线。

上面提到了,黑客拿到的是手表 QQ 的授权信息,手表QQ 和手机 QQ 以及电脑 QQ 都不冲突。

也就是说,即使你手机 QQ 在线,黑客也能发送消息,甚至你一边撤回,黑客还能一边继续发图片。

2、类似大量盗号事件是不是第一次?

不是。早在五月份就有类似的案例,但看起来腾讯并没有重视。

3、为什么 QQ 经常被盗,但是微信没有这种情况?

QQ 诞生于 1999 年,属于远古时代的产物,历史遗留问题比较多。

微信诞生于 2011 年,跳过了 QQ 踩过的一些坑,权限把控得也更严格。

虽然功能上微信没有 QQ 强大,但安全方面一直做得比 QQ 要好。毕竟_安全_是微信和支付宝这种带有金融属性的软件的根基,安全做不好是玩不下去的。

4、为什么没有扫过任何码 QQ 也被盗了?为什么三百年没用过的 QQ 也被盗了?为什么有些去世的人的 QQ 也被盗了?

如果真的有这种情况,那我也没法解释,只能让腾讯来解释了。

一些其他看法

上面是我根据网上的信息推测处理的,网络上还有其他的观点。

比较主流的是“学习通信息撞库”和“js 劫取授权信息”。

学习通撞库

这种说法的核心是:学习通泄漏了用户的信息,然后有些用户学习通的密码和 QQ 密码设置的是一样,间接导致用户 QQ 密码泄漏。

我个人觉得这种可能性很低。

为什么呢?

第一,腾讯和学习通这种体量的 APP 肯定会对用户密码脱敏加密处理,并不能直接撞库攻击。

第二,就算破解了加密方式,拿到了用户的密码,也很难直接登录用户的 QQ。因为在登录的时候,会触发新设备登录验证,如果拿不到用户的登录验证码,是没有办法登录成功的。

JS 取授权信息

根据酷安大佬@JiuXia2025 的说法,此次大量 QQ 被盗是因为用户点了某个链接,然后被 js 劫取了浏览器里面的 Cookie,黑客从中拿到了能控制 QQ 账号的 key,从而批量发送图片。

图片来自于why技术

对于大佬的实力,我不怀疑。

对于大佬的观点,我保持一个怀疑的态度。

第一,我不相信这么多年过去了,腾讯还没有对 js 攻击做防护。

第二,我不认为在 QQ 里面点开一个链接,QQ 会给浏览器授权具备“发送消息”的权限。如果没有“发送消息”的权限,就算浏览器的授权信息算被 js 劫取也没有任何意义。

总结

总结一下我的观点就是:

一个有钱人家里钱太多了总是被偷,于是这个有钱人花重金打造了世界上最牛的门,开门需要经过二十四道机关和五次密码确认,最后还需要验证指纹和人脸。

即使这样,这个有钱人的钱还是被偷了。

为什么还会被偷呢?

记者采访了这个有钱人。

这个有钱人只说了一句话:一切责任尽在用户。

写在最后

吃瓜归吃瓜,还是要搞技术的,我预估扫码登录的流程会成为近期热门面试题。

为什么呢?

第一,可以验证候选人对技术有没有敏锐的捕捉力。

第二,可以很好地延伸到其他技术点。比如:

  1. Redis 过期时间怎么设置?项目中有用到过吗?

  2. Token、Cookie、Session 三者有什么区别?

  3. 为什么要轮询二维码状态?用 Http 长连接不行吗?用 Websocket 不行吗?

  4. 还有哪些常见的攻击手段?应对措施分别是什么?

  5. 了解 OAuth2.0 和 JWT 吗?

你看,这一套组合拳下来是不是行云流水、一气呵成?

所以啊,还是得继续学啊!

毕竟,宇宙的尽头是卷王,你不学习他称王。

以上所有推论仅代表个人观点,属于个人猜想,素材全部来自于网上。

一切以官方公告为准,不信谣不传谣。

参考资料

  • https://www.apereo.org/projects/cas
  • https://juejin.cn/post/6844904111398191117
  • https://mp.weixin.qq.com/s/kSzFnjPgflVdpKESvsfToA

从扫码登录的原理分析QQ大量被盗事件相关推荐

  1. 深入理解微信二维码扫码登录的原理

    文章目录 1.二维码应用场景及安全问题 2.二维码登录的本质 3.二维码验证机制的原理解析 4.深入理解二维码在登录的交互过程 5.总结感悟 1.二维码应用场景及安全问题 二维码使用广泛,生活处处都有 ...

  2. 微信扫码登录实现原理

    二维码这把利刃,产品应该用到极致 微信扫码登录实现原理 转载于:https://www.cnblogs.com/gym333/p/7699885.html

  3. IM的扫码登录功能如何实现?一文搞懂主流的扫码登录技术原理

    本文引用了3位作者"精品唯居"."  Yangfan2016"." MrYun"的部分文章内容,一并感谢. 1.引言 扫码登录这个功能,最早 ...

  4. 淘宝和微信的扫码登录实现原理

    目录 基本技术原理 扫码登录功能到底是什么样的? 扫码登录功能的完整技术逻辑 1)网页端与服务器的配合逻辑: 2)手机端与服务器的配合逻辑: 3)登录成功时的逻辑: 4)详细的技术原理总结如下图所示: ...

  5. 聊聊二维码扫码登录的原理

    点击上方 "大数据肌肉猿"关注, 星标一起成长 后台回复[加群],进入高质量学习交流群 2021年大数据肌肉猿公众号奖励制度 原文:https://juejin.cn/post/6 ...

  6. 二维码扫码登录的原理你了解吗?

    在日常生活中,二维码出现在很多场景,比如超市支付.系统登录.应用下载等等.了解二维码的原理,可以为技术人员在技术选型时提供新的思路.对于非技术人员呢,除了解惑,还可以引导他更好地辨别生活中遇到的各种二 ...

  7. 一文搞懂主流的扫码登录技术原理(附源码)

    点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐] 1.引言 扫码登录这个功能,最早应该是微信的PC端开始搞,虽然有点反人类的功能(不扫码也没别的方式登录),但不得不说还是很酷的. 下面这张 ...

  8. 面试官:“聊聊二维码扫码登录的原理”。

    开发者(KaiFaX) 面向全栈工程师的开发者 专注于前端.Java/Python/Go/PHP的技术社区 原文:https://juejin.cn/post/6940976355097985032 ...

  9. 搞清楚二维码扫码登录的原理

    本文授权转载自:大古同学,https://juejin.cn/post/6940976355097985032 在日常生活中,二维码出现在很多场景,比如超市支付.系统登录.应用下载等等.了解二维码的原 ...

  10. 扫码登录的原理和实现

    扫码登录 1 概述 在日常 Web 端产品的使用中,一般都会支持扫码登录,这种方式操作简单,相对传统的手机号登录等方式速度更快.安全性更高,还可以增加自家产品的粘合度. 2 登录原理 扫码登录本质是解 ...

最新文章

  1. java 短链跳转原理_给你代码:短链接生成原理
  2. hdu 1800 (map)
  3. java学习(48):带参带返回
  4. [案例分析] 打造值得信任的个人品牌究竟靠什么?
  5. org.springframework.web.client.ResourceAccessException: I/O error on POST request for ************
  6. python学习机器学习_机器学习Python技巧,令人毛骨悚然的Linux命令,Thelio,Podman等
  7. python codefirst_Python code.co_consts方法代码示例
  8. 马来西亚国家银行暂无发行央行数字货币计划
  9. ActiveMQ 认证
  10. python 变量只用一次_Python变量72般变化,只需掌握4点,就可万变不离其宗
  11. 使用mysql innodb 使用5.7的json类型遇到的坑和解决办法
  12. 拓端tecdat|sas文本挖掘案例:如何使用SAS计算Word Mover的距离
  13. python选择结构练习(六)
  14. 计算机开机没有d盘,电脑每次开机总是自检D盘的解决办法
  15. HC32F460 SPI DMA 驱动 TFT显示屏
  16. Android 8.0 Activity启动流程分析
  17. 电脑死机怎么办?超级简单的方法
  18. A53开发板命令操作wifi-wap主要命令
  19. 哈工大关系抽取模型CasRel代码解读
  20. java操作excel的工具

热门文章

  1. z3求解器(SMT)解各类方程各种逻辑题非常简单直观
  2. 计算机图形学入门(十四)-光线追踪(加速包围盒体)
  3. 马云鼓动年轻人2015创业是存私心的?
  4. Cannot determine archive format of /tmp/pip-req-build-
  5. 爱思服务器shsh文件类型,爱思服务器查询shsh失败
  6. Java程序-自制班级随机选人程序
  7. 【京东】会员激励体系,会员体系结构分析
  8. Facebook频繁封号,如何解封?
  9. anime.js的学习小结
  10. cdr转换成html格式,cdr生成对象