个人主观猜测,这次QQ大规模被盗号,可能会和学习通的用户数据泄露有直接关系。
据网上的爆料,学习通泄露的数据包含含学校/组织名,姓名,手机号,学号/工号,性别,邮箱等信息达1亿7273万条。
而且这些信息,能暴露出的内容极多,很有可能导致本次的QQ盗号事件。
基于上述的猜测,来讲讲一些主要问题的分析
一、学习通信息是怎么关联到QQ账号的?
如果学习通数据库信息里本来就有存储用户的QQ账号信息,那便可以直接用来尝试登录QQ账号。
如果没有记录,那么涉及到的概念就是“撞库”了。
撞库是指黑客通过收集互联网已泄露的用户和密码信息,生成对应的字典表,然后尝试批量登录其它网站(本问题便是指QQ)的行为,成功后便可以得到一系列可以登录的用户账号了。
撞库看起来可能和暴力穷举或者字典攻击相似,但其实所需要尝试的密码集已经被大大缩减了,而且成功率也是相当的高。
比起暴力穷举或者字典攻击,撞库之所以如此有效,是因为近三分之二的互联网用户重复使用他们的密码。
网络犯罪分子拿到一个数据库后,在几分钟或几个小时的时间内便可将被盗的帐密输入数千个网站(如QQ),从社交媒体帐户到公司专有软件等,都会受到影响。
二、盗号能成功的原因?
由上述可知,撞库攻击取决于密码的重复使用。
由于有很多人将密码重复用于多个帐户,因此仅凭一组帐密足以暴露其大部分或全部帐户。网络犯罪分子利用僵尸网络等工具在多个设备上执行多条战线攻击,只需一组帐密即可扩展攻击能力。
当攻击者成功进行撞库攻击后,也就说明他们已经利用泄露的数据库来入侵了一个安全的平台账号。只要有一次匹配成功,就成功窃取到用户的一个账号信息。
例如京东之前的账号被盗事件,其实京东的数据库并没有泄漏。黑客只不过通过其它已经泄露的数据库来实施“撞库”攻击,高效率工作的情况下,“凑巧”获取到了一些京东用户的密码。
之前12306账号密码被盗时,官方网站也是马上宣称,网上泄露的用户信息是经其他网站或渠道流出的,这是同样的道理。
三、密码学相关:黑客如何获取到用户的明文密码?
声明微博说“在这种技术手段下即使公司内部员工(包括程序员)也无法获得密码明文”,这便是我上文说的“即使是认证系统本身都无法简单地通过查表来获得用户密码”。
原文说“学习通不存储用户明文密码,采取单向加密存储,理论上用户密码不会泄露”,这便是我上面所说的“大多数数据库会储存用户密码的加密摘要”。
但是,理论上用户密码不会泄露,不代表实际上不会泄露,而且,实际上很容易便泄露。
(1)关于彩虹表
黑客在盗取到散列后的密码表时,并不能仅凭借输入散列后的用户的加密摘要来获取权限(使用加密摘要作为输入密码并不可行,因为认证系统会把加密摘要再次进行散列,产生一个与储存的加密摘要不匹配的消息摘要)。
为了获取用户的密码,黑客必须找到一个能产生相同加密摘要的密码。
哈希函数的值域是很大的,定义域稍微的改动会造成哈希值至少一半二进制位的改动,因此黑客不可能会去试图穷举整个值域来破解密码。
在得到服务器上经过哈希加密后的用户口令后,虽然不可以暴力破解,但是攻击者可以用相同的哈希函数来重复一遍加密过程,来得到用户的真是密码。
利用“彩虹表”这种{明文:密码}对应值的数据库,可以涵盖大部分的短密钥空间,如果用户密码的长度和复杂度不够高,那么破解密码明文就只是一个时间问题,而且这个时间不会很长。
道理也很简单:理论上来讲,MD5的明文M是无穷的,但实际而言,用户的可能输入字符组合相对于随机的字符组合来说非常集中,例如,集中在自己的生日,身份证,银行卡号,姓名缩写/大小写等一些信息。
换句话说,也就是用户密码的信息熵其实是很低的,所以说,密码的明文范围是很小的集合,用户很少使用无意义的排列组合来做密码,至少也是个有意义的单词如“password”。
因此,暴力破解法和字典攻击法是一种破解MD5最为直观且简单的方法,也就是遍历所有可能性尝试,或者通过包含“明文->密文”对应关系的一个大型数据库对其进行攻击。
但是,存储所有的明文密码对需要的空间过大,替代方法是使用预先计算的哈希链表,因此便提出了彩虹表,其比暴力破解使用的时间更少,空间更多;但与储存密码空间中的每一个密码及其对应的哈希值实现的查找表相比,其花费的时间更多,空间更少。
也正因如此,MD5的一些破解网站只是通过查表来确定明文而已,并不是多么强大的破解技术,只是一个正向破解密码散列值的过程。
(2)明文密码
声明微博说“在这种技术手段下即使公司内部员工(包括程序员)也无法获得密码明文”,那就是说其实是可以获得密码的哈希值的。
如果是这样的话,根据实现数据库里的彩虹表,或者之前拖库时拿到的明文密码,便可以成功攻击用户的其它平台账号了。
道理便是,根据拖学习通库拿到的密码哈希值,根据彩虹表中{明文:密码}对应值的数据库,来得到相对应的明文密码,接着用明文密码来尝试登录其它平台的账号。
理论上,服务端使用加盐的密钥派生函数,可以使得彩虹表攻击难以实现,但我估计学习通可能没有做这一步。
由于也没有源代码,所以一切都是我猜测的,仅供参考。
四、现在该如何做?
现在,立即去更改密码是最靠谱的行为,尤其是马上去修改和学习通密码设置相同的其它平台的密码。
其次就是,注册账号时要尽量提供最少的信息,能不填的个人信息尽量不填,避免交叉关联,构建你的个人完整互联网平台链。
最后,一定保证不同的个人账号设置不同密码,且密码难度不能太低,保证强度,防止一个平台失守,其余平台全部沦陷。
要知道,风起青萍之末,一个系统的攻破,往往是从一个最薄弱的节点开始。
暂无评论内容