最近有关国内外互联网企业的密码安全问题受到了严峻的挑战和社区的广泛关注。腾讯安全团队的技术专家介绍了有关暴库和社工库扫描的内容。
常见密码存储方式对于用户来讲,用户密码信息显然是非常重要的,我们当然有必要了解社区管理者是如果保存我们的机密信息的。目前网站中主流存放用户名和密码的方式有三种:
从目前的情况看,有些网站过去是采用明文的方式存储密码的,那么对于一个账户信息未泄漏的网站,我们如何判断一个网站是采用什么样的密码存储方式呢?
一个很简单的方法,你通过密码找回功能操作,如果让你重设密码的,基本上是不可逆加密的,直接给你密码的,都是明文或可逆加密的,这种都非常危险。
下面我们了解一下,黑客针对后台数据库的入侵手法:
爆库,在黑客的圈子叫做“拖库”,是指将网站的数据库被黑客下载到本地。按照安全技术圈的说法,国内有点影响力的网站,2/3都被爆过库(未证实),不要认为大的网站安全万无一失,防爆库是安全架构里非常重要的一点。
防爆库不仅仅是防止别人拿到你的库,还要做到让别人拿去也没用。
密码明文存储的,一定是死路,可逆加密的,只要黑客用点心,基本也不安全;不可逆的,类似md5 加密(Md5加密方式虽然被我国专家证明可逆,但是逆向的成本很高,基本无人使用)应该很多人认为比较安全,但是遇到碰撞也很无奈。类似于cmd5.com这样的碰撞库,其规模已经非常巨大,常规的密码的破解几率大于95%,至少,我常用的密码,我断定都在碰撞库里,原因很简单,不在碰撞库里的密码,就我的记忆力是没戏了。从下图是从一个md5加密过的库中随机挑了一个加密后的密码,可以看出,md5单次加密是很容易破解的。
Md5加密的库
Md5.com上查询结果
那么如何规避这样的行为呢?
一般的做法是两次md5或多次md5等加密保存方法,这种方法很好的避免了加密后的密码在类似cmd5.com这样庞大的碰撞库中出现。但是如果黑客拿到的数据库够大时,比如1千万的用户数据。有心的黑客会发现加密逻辑,再用一天跑一个几千万乃至过亿常用密码的碰撞库,专门来对付你的数据库,对于黑客来说不是什么难事。只要字典够好,破解率可以在60%以上。
Discuz就在使用一种低成本的安全密码保护策略,他们使用随机salt二次加密。这种方法会使黑客破解密码的成本大大提高。黑客如果像破解这样的密码,需要为每一个用户(对应的随机salt)建立一个碰撞库,时间成本很高。对于大量用户的破解,黑客一般是选择放弃,投入产出比太低;但是对与单个明确目标的话,他们还是会乐于尝试的。
不过得明确一点,爆库不等于密码泄漏。因为被爆库后,密码未必会被黑客破解。爆库+不正确的加密方式才叫密码泄露。
在现在爆库泛滥的年代,加之密码破解率很高,社工库扫描也红火起来。简单来说,你可能会在很多网站使用同样的邮箱和密码,社工库扫描就是利用这点,知道你一个账户后,就可以得到其他更有价值的帐号。哪怕密码不相同,这个密码作为暴力破解中的关键字,也能大大提高破解率。
有些网站泄露的密码经过测试,可以使用一个账户成功登陆其他网站,并且提示:“支付密码和登录密码一致,请更改…….” 这就是社工库的威力所在!
有人认为黑客这样做收效太小,没有意义,这点就搞错了。黑客并不是像我朋友那样逐一手工尝试的,而是用非常海量的数据批量扫描的,这样成本是非常低的,规模化的操作,甚至很多中招的人只是黑客意外收获,完全是没有成本的战利品。
对于社工库扫描,网站通常的做法就是验证码(防暴力破解也是这种方法)。但是简单的验证码是很容易识别的,网上流传很多验证码的识别源码。类似下面这些验证码都是可以识别的,源码和dll网上可以找到的。
然而BT的验证码却会伤害用户体验,目前黑客也有应对BT验证码的方法。他们会将验证码集中传回到一个集中的地方,在网上请廉价的网络打工者填写。虽然这种方法成本有所提高,但是对于收益还是很低廉的。
我们能做什么来保护自己不被社工库扫描?或将损失降到最低?
推荐做法是:重要账户和普通账户分离。具体操作如下:
被泄密的网站越来越多,下一个也许就是你最常用的网站。赶紧去修改关键账户的密码吧,要不下一个受伤的可能就是你!
注:本文转自腾讯大讲堂,原文地址为http://djt.open.qq.com/thread-623-1-1.html。