引言
近日,qq群内出现了大量的广告信息,不少人员当场社死。针对此次事件,腾讯官方也给了相应的回复,今天我们想和大家聊聊我们的qq是如何“被盗”的。
注:以下内容仅为个人经验分析,一切以官方后续回复为准。
事件前奏
事实上在5月25日前后,就已经有大量用户被盗号了,可以说是这次大规模盗号事件的前兆,当时还有朋友问到我这个事情:
在收到消息当天我也去自己的qq号里看了下,打开了尘封已久的皇冠贵族号,果然也收到了类似的广告,有意思的是还就是在大学的信息安全专业群里收到的黄图消息
因此实际上在本次事件前,已经爆发过小规模的盗号事件了,那么我们的qq号到底是如何“被盗”的呢?
事件分析
很多人在传这次事件是跟最近学习通数据泄漏以及所谓的0day漏洞有关,综合腾讯给的官方回复以及个人的经验分析,事实上这次事件和两者都没有太大关系,我们将在下文依次解答说明。
首先是躺枪的学习通,看到微博里有关学习通的话题又再次冲上了热搜,大家都怀疑本次盗号事件跟“某习通”被拖库有关,官方也做了相应的回复:
事实上qq登录有较严格的风控限制,无论是设备和ip只要不是用户常用的都会触发二次认证。下图是我测试的时候直接拿虚拟机下了个qq登录,同一ip出口都提示了设备异常,想直接通过撞库得到的密码来登录qq是不太现实的:
并且前文说过在5月25日前后就已经出现过广告事件了,那时候学习通数据还没有泄漏,而且从犯罪手法、规模和腾讯的官方回复上来看,这并不是大家想的通过直接登录qq的方式发送的广告消息。
要分析这次盗号事件,有个重要的概念是在本次事件中什么叫做“qq号被盗”了,以及攻击者是如何批量发送黄图消息的。
在很多人的传统意识里,qq号被盗就是密码被泄漏了,犯罪分子通过账号和密码登录了被盗的qq号,然后通过客户端发送了消息。事实上在大多数场景下被盗号只是因为clientkey被泄漏了,“盗号者”根本没有登陆过你的qq(或者说根本没办法直接登录qq主体),只是用clientkey相关的接口发送了群消息而已。
Clientkey大家可以简单理解为qq客户端的一个私有key,是qq第三方登陆的核心,几乎所有的qq应用都可以通过这个key登陆,包括qq邮箱、qq游戏、qq空间、qq音乐、qq视频、微云、财付通等等。以qq邮箱为例,我们在登录了qq客户端(windows版)的前提下抓一个三方登录的包,在包里就可以看到有关clientkey的生成过程:
这个clientkey就是登录第三方应用的核心,有了clientkey在通过某些可以发送群消息的接口,实现在群内发送消息,这也是为什么大家收到的广告消息都是群发而不是私发,事实上攻击者并未真正登录你的qq。
那么从哪些途径可以获取这个clientkey呢?这个大家就自行脑补了,早些年有些xss的方式,但后面都被官方修复了
此次事件学习通大概率不会背锅,当然不排除通过泄漏的账号撞库后用某些接口获取了大量的clientkey,这个就有待官方求证了。
另外就是0day漏洞的说法了,通过网上传的一些漏洞视频来看,这些所谓的0day漏洞实际上就是对clientkey的利用,视频里的httpkey实际上就是clientkey。
如下图所示,这个获取这个clientkey的请求实际上是本地触发的:
造成此次事件的原因猜测可能有两个,一是如前文所说某些网吧或者公共设备被人提前植入了agent,agent能够监听本地的数据请求并发送给云端。这样即便用户登录的是正常的qq第三方应用,如腾讯游戏等,那么劫持到的client也可发送给到云端,朋友圈里一些中招的案例也能印证这个事实:
clientkey的存活时间只有24h左右,这也解释了为什么这两次广告攻击集中在了5月25和6月26日前后,并且上图里提到的受害者都是在登录了腾讯游戏后半个小时内中招的,证明此次的“盗号攻击”是有一定实效性的。有疑问的点是agent程序是如何被批量植入的,猜测大概率是网吧的集中控制管理软件被人控制并注入了蠕虫,在指定时间段内下发了agent,用户在登录腾讯的应用后中招。
另一个就是官方给的解释了,通过访问了攻击者恶意构造的假的二维码实现了访问登录,当然这个登录大概率也是基于clientkey的登录而不是qq主体的登录(qq主体有登录设备和ip限制),只是不需要在客户端再安装agent了。但这种说法站不住脚的就是为何大量的用户能在短时间内访问到了假的二维码,而且为了保证不失效这个二维码还一定是要动态刷新的,这里就有待腾讯官方进一步确认了。
总之这个故事告诉我们:
1、陌生的二维码尽量不要扫描;
2、陌生的设备尽量不要登录个人账号;
3、陌生的群可以考虑加一加,免得在熟悉的群里社死。
如若转载,请注明原文地址