开启QQ登录保护仍被盗号——QQ安全机制全面分析[通俗易懂]

开启QQ登录保护仍被盗号——QQ安全机制全面分析[通俗易懂]1、前言周围总是有些同学QQ被盗号,攻击者盗取账号后会继续去欺骗列表里的好友,形成链式反应。危害比较大。腾讯QQ安全中心提供了登录保护机制,如图:  这是腾讯为QQ添加第二层保护,在开启登录保护后,盗号者偷走密码的情况下QQ仍然安全。即使你的账号密码不小心泄露了,盗号者仍旧无法登录你的QQ。  但是,有位同学在开启QQ登录保护的情况下依然被盗号者登录成功了。QQ登录保护的安全机制:当我们开启了“登录保护”,盗号者登录QQ输入正确的密码,即使更换IP骗过了安全检测系统,会发现仍然需要

大家好,又见面了,我是你们的朋友全栈君。

1、前言

周围总是有些同学QQ被盗号,攻击者盗取账号后会继续去欺骗列表里的好友,形成链式反应。危害比较大。


开启QQ登录保护仍被盗号——QQ安全机制全面分析[通俗易懂]

腾讯QQ安全中心提供了登录保护机制,如图:


开启QQ登录保护仍被盗号——QQ安全机制全面分析[通俗易懂]
  这是腾讯为QQ添加第二层保护,在开启登录保护后,盗号者偷走密码的情况下QQ仍然安全。即使你的账号密码不小心泄露了,盗号者仍旧无法登录你的QQ。

  但是,有位同学在开启QQ登录保护的情况下依然被盗号者登录成功了。


开启QQ登录保护仍被盗号——QQ安全机制全面分析[通俗易懂]
QQ登录保护的安全机制:

当我们开启了“登录保护”,盗号者登录QQ输入正确的密码,即使更换IP骗过了安全检测系统,会发现仍然需要验证密保手机短信里的数字验证码才能真正登录成功,由于手机随时带在我们的身边,盗号者无法偷走手机拿到短信,也就无法继续作恶了。

其原理就是,登录时,QQ会检测是否在新设备登录或者在异地登录,一旦发现在新设备(未知设备,可疑设备)或者异地登录,都会向绑定的手机发送验证码,从而阻止盗号者登录QQ。

2、绕过安全检测

  被盗号的同学表示并未收到短信验证码,当时我就在想:难道攻击者找到某种途径绕过了腾讯的安全检测?
  首先,绕过异地登录检测可以通过修改IP地址来实现。上一期:传送门。我们讲到,定位的3种方法,那是针对手机的,针对电脑的还有一种就是IP定位,这个只能确定大致范围,很不准确。所以盲猜也能想到是利用IP定位,这样只需要修改IP地址就可以轻松绕过。
  那么接下来只需要绕过新设备的检测就可以了,那么QQ是如何判断是否是新设备呢。


开启QQ登录保护仍被盗号——QQ安全机制全面分析[通俗易懂]
  你要是觉得QQ判断新设备有这么简单,那就太天真了。如果真有这么简单,QQ绝不会到现在还能安然无恙的运营。笔者没有做过IOS开发,所以暂且拿Android举例。

3、Android判断设备唯一性

  我们要判断是不是新设备,只需要给每个设备一个唯一的ID,当设备ID和数据库存储的常用ID不同时,就认定为新设备。
  IMEI:IMEI可以说是比较理想的设备ID,具备唯一性,恢复出厂设置不会变化(真正的设备相关),可通过手机拨号:*#06# 查询手机的IMEI码。如图:


开启QQ登录保护仍被盗号——QQ安全机制全面分析[通俗易懂]

  值得一提的是,获取IMEI需要申请”READ_PHONE_STATE” 权限,做过Android开发的想必应该知道这个权限有多麻烦了。Android 6.0以后, 这类权限要动态申请,很多用户可能会选择拒绝授权。有的APP不授权这个权限就无法使用, 这会大大降低用户对APP的好感度。
  Android 10.0以后彻底禁止第三方应用获取设备的IMEI(即使申请了 READ_PHONE_STATE 权限)。这使得用IMEI作为设备ID有些困难。
  设备序列号:在Android 7.1或更早系统(SDK<=25),可通过android.os.Build.SERIAL获得,由厂商提供。如果厂商比较规范的话,设备序列号+Build.MANUFACTURER应该能唯一标识设备。但现实是并非所有厂商都按规范来,尤其是早期的设备。
  最重要的一点是,Android 8.0及以上(SDK>=26),android.os.Build.SERIAL 总返回 “unknown”;若要获取序列号,可调用Build.getSerial() ,但是需要申请”READ_PHONE_STATE”权限。到了Android 10.0(SDK>=29)以上,则和IMEI一样,也被禁止获取了。
  MAC地址:大多Android设备都有Wi-Fi模块,因此,Wi-Fi模块的MAC地址就可以作为设备标识。基于隐私考虑,官方不建议获取MAC地址。因此,获取MAC地址也是越来越困难了,Android 6.0以后通过WifiManager()获取到的MAC地址是固定的。7.0之后读取 /sys/class/net/wlan0/address 也获取不到了。
  另外,Android 9.0及以上版本默认使用了“随机MAC地址”。


开启QQ登录保护仍被盗号——QQ安全机制全面分析[通俗易懂]
这一举措也使得MAC地址不能作为设备ID了。

  ANDROID_ID:Android ID是获取门槛最低的,不需要任何权限,64bit的取值范围,唯一性算是很好的了。但是一些举措会改变这个值,如:刷机、root、恢复出厂设置等会使得 Android ID 改变。
  在Android 8.0以后,ANDROID_ID根据应用签名和用户的不同而不同。ANDROID_ID的唯一决定于应用签名、用户和设备三者的组合。这意味着如果用户安装APP设备是8.0以下,后来卸载了,升级到8.0之后又重装了应用,Android ID会改变。
  但是QQ判断新设备的依据,可不是简单的以上几种。因为你会发现不论伪造哪一种ID(或者全部伪造),登录QQ时依然提示在未知设备登录需要验证
  由于我们不可能知道QQ的源代码,所以具体它是依据什么进行判断的我们无从得知。但是大致推测,QQ应该是采用多元记录进行拼凑设备ID。如下是某部手机的一些硬件信息:

BOARD: umi
BRAND: Xiaomi
DEVICE: umi
DISPLAY: QKQ1.191117.002 test-keys
HOST: c5-miui-ota-bd074.bj
ID: QKQ1.191117.002
MANUFACTURER: Xiaomi
MODEL: Mi 10
PRODUCT: umi
TAGS: release-keys
TYPE: user
USER: builder

  我们假设QQ是通过以上信息来计算设备ID,可以肯定的是根据所搜集的信息可以确保唯一性,同时会经过某种算法进行加固,例如hash算法的盐值(salt)。这样就算我们历尽千辛万苦知道了拼凑ID的全部信息,但是由于不知道算法结构和无法逆推盐值,依然无法伪造成原设备。
  一句话概括就是:QQ会收集很多硬件信息,然后通过某种算法,生成唯一设备ID。由于盗号者不知道QQ是依据哪些信息来生成ID的,也不知道生成ID的算法是怎样计算的,所以无法伪造成原设备ID。

总结

  那么为什么那些被盗QQ的同学没有收到短信验证呢?要知道,当盗号者获取你的账号密码后,不一定就要登录QQ,还可以登录QQ邮箱、QQ空间、腾讯旗下的游戏等。这些应用往往没有像QQ那么强的安全保护,所以往往可以登录成功。通过查看异常登录信息,也验证了我的猜想:


开启QQ登录保护仍被盗号——QQ安全机制全面分析[通俗易懂]


开启QQ登录保护仍被盗号——QQ安全机制全面分析[通俗易懂]

要知道,QQ是不允许多设备登录的,例如当有另一台手机登录时,我们手上的手机QQ就会被挤下线。不过可以在不同的客户端登录,例如可以同时电脑QQ和手机QQ在线。但在不登录QQ的情况下,比如上图的登录QQ邮箱,手机端是不会被挤下线,也不会提示电脑登录。 如下图:


开启QQ登录保护仍被盗号——QQ安全机制全面分析[通俗易懂]

  可以看到,盗号者并不会直接登录QQ(主要是他也登不了,上文已经分析了),而是登录一些与QQ相关的业务。
  不过还是有办法的,邮箱登录保护也开启,开启后,仅能使用电脑网页和手机客户端登录邮箱,其他方式将无法使用。邮箱二级密码依然保持有效,设置了邮箱二级密码的用户登录邮箱依然需要输入二级密码。QQ邮箱网页版需用QQ安全中心扫描二维码登录:
在这里插入图片描述
当盗号者尝试登录QQ邮箱时,会出现以下信息:
在这里插入图片描述

  当我们把所有的登录保护全部开启后,就算密码不小心泄露了也不用担心。盗号者登录时需要短信验证码,这样就不怕被盗号了。当然如果盗号者不但获取了你的账号密码,还把你的手机也偷了,那就真的无能为力了。


关注
极客随想,获取更多干货!



在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150655.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • VIF,共线相关性理解「建议收藏」

    VIF,共线相关性理解「建议收藏」多重共线性是指在变量空间中,存在自变量可以近似地等于其他自变量的线性组合如果将所有自变量用于线性回归或逻辑回归的建模,将导致模型系数不能准确表达自变量对Y的影响。比如:如果X1和X2近似相等,则模型Y=X1+X2可能被拟合成Y=3X1-X2,原来X2与Y正向相关被错误拟合成负相关,导致模型没法在业务上得到解释。在评分卡建模中,可能将很多相关性很高的变量加入到建模自变量中,最终得到的模型如果用变量系数去解释自变量与目标变量的关系是不合适的。相关矩阵是指由样本…

  • postman 中post方式提交数据

    postman 中post方式提交数据

  • Java枚举详解

    Java枚举详解枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。枚举在曰常生活中很常见,例如一个人的性别只能是“男”或者“女”,一周的星期只能是7天中的一个等。类似这种当一个变量有几种固定可能的取值时,就可以将它定义为枚举类型。在JDK1.5之前没有枚举类型,那时候一般用接口常量来替代。而使用Java枚举类型enum可以更贴近地表示这种常量。声明枚举声明枚举时必须使用enu…

  • 草根程序员转型做项目管理走过的点点滴滴之_华为裁员感想

    草根程序员转型做项目管理走过的点点滴滴之_华为裁员感想自己一直假想还停留在29岁那个黄金年龄,仿佛明天就要30岁(老话里而立的年纪),因此总感觉要拼命的工作,拼命的学习好让明天立的更稳固一些。缘起百度了一把华为裁员的相关报道,又看了几篇别人写的华为裁员的理解已经对中国it行业的痛批文章,把我一下子拉回了现实,85年出生在农村的自己到现在恰好也是三十二几岁的阶段,发现也没啥立不立的,还是那个拼命三郎的状态,顿时有些迷惑与感伤。

  • CDN技术详解及实现原理「建议收藏」

    CDN技术详解及实现原理「建议收藏」CDN技术详解一本好的入门书是带你进入陌生领域的明灯,《CDN技术详解》绝对是带你进入CDN行业的那盏最亮的明灯。因此,虽然只是纯粹的重点抄录,我也要把《CDN技术详解》的精华放上网。公诸同好。第

  • ORM学员管理系统单表查询示例

    前期准备工作首先创建好一个项目一:必须使用MySQL创建一个库因为ORM只能对表和数据进行处理,所以库必须自己创建二:进行相关的配置一:二:三:四:五:三创建表必须注意一下俩点

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号