写点什么

浅析爆库和社工库扫描

  • 2011-12-30
  • 本文字数:2016 字

    阅读完需:约 7 分钟

背景

最近有关国内外互联网企业的密码安全问题受到了严峻的挑战和社区的广泛关注。腾讯安全团队的技术专家介绍了有关暴库和社工库扫描的内容。

常见密码存储方式对于用户来讲,用户密码信息显然是非常重要的,我们当然有必要了解社区管理者是如果保存我们的机密信息的。目前网站中主流存放用户名和密码的方式有三种:

  1. 明文存放。这种网站的用户数据特别危险,网站被黑客拿下,用户数据直接那走。
  2. 可逆加密存放。你的密码会被加密一次存放在网站的数据库中,可逆加密也是非常危险的。
  3. 不可逆加密。密码通过 MD5 等不可逆加密算法加密后存放在网站数据库中,比上述 2 种密码加密方式安全。(如果 md5 加密后的密码泄漏,明文密码仍有通过查找表的方式反查出来的可能)

从目前的情况看,有些网站过去是采用明文的方式存储密码的,那么对于一个账户信息未泄漏的网站,我们如何判断一个网站是采用什么样的密码存储方式呢?

一个很简单的方法,你通过密码找回功能操作,如果让你重设密码的,基本上是不可逆加密的,直接给你密码的,都是明文或可逆加密的,这种都非常危险。

攻击手法

下面我们了解一下,黑客针对后台数据库的入侵手法:

爆库

爆库,在黑客的圈子叫做“拖库”,是指将网站的数据库被黑客下载到本地。按照安全技术圈的说法,国内有点影响力的网站,2/3 都被爆过库(未证实),不要认为大的网站安全万无一失,防爆库是安全架构里非常重要的一点。

防爆库不仅仅是防止别人拿到你的库,还要做到让别人拿去也没用。

密码明文存储的,一定是死路,可逆加密的,只要黑客用点心,基本也不安全;不可逆的,类似 md5 加密(Md5 加密方式虽然被我国专家证明可逆,但是逆向的成本很高,基本无人使用)应该很多人认为比较安全,但是遇到碰撞也很无奈。类似于 cmd5.com 这样的碰撞库,其规模已经非常巨大,常规的密码的破解几率大于 95%,至少,我常用的密码,我断定都在碰撞库里,原因很简单,不在碰撞库里的密码,就我的记忆力是没戏了。从下图是从一个 md5 加密过的库中随机挑了一个加密后的密码,可以看出,md5 单次加密是很容易破解的。

Md5 加密的库

Md5.com 上查询结果

那么如何规避这样的行为呢?

一般的做法是两次 md5 或多次 md5 等加密保存方法,这种方法很好的避免了加密后的密码在类似 cmd5.com 这样庞大的碰撞库中出现。但是如果黑客拿到的数据库够大时,比如 1 千万的用户数据。有心的黑客会发现加密逻辑,再用一天跑一个几千万乃至过亿常用密码的碰撞库,专门来对付你的数据库,对于黑客来说不是什么难事。只要字典够好,破解率可以在 60% 以上。

Discuz 就在使用一种低成本的安全密码保护策略,他们使用随机 salt 二次加密。这种方法会使黑客破解密码的成本大大提高。黑客如果像破解这样的密码,需要为每一个用户(对应的随机 salt)建立一个碰撞库,时间成本很高。对于大量用户的破解,黑客一般是选择放弃,投入产出比太低;但是对与单个明确目标的话,他们还是会乐于尝试的。

不过得明确一点,爆库不等于密码泄漏。因为被爆库后,密码未必会被黑客破解。爆库 + 不正确的加密方式才叫密码泄露。

社工库

在现在爆库泛滥的年代,加之密码破解率很高,社工库扫描也红火起来。简单来说,你可能会在很多网站使用同样的邮箱和密码,社工库扫描就是利用这点,知道你一个账户后,就可以得到其他更有价值的帐号。哪怕密码不相同,这个密码作为暴力破解中的关键字,也能大大提高破解率。

有些网站泄露的密码经过测试,可以使用一个账户成功登陆其他网站,并且提示:“支付密码和登录密码一致,请更改…….” 这就是社工库的威力所在!

有人认为黑客这样做收效太小,没有意义,这点就搞错了。黑客并不是像我朋友那样逐一手工尝试的,而是用非常海量的数据批量扫描的,这样成本是非常低的,规模化的操作,甚至很多中招的人只是黑客意外收获,完全是没有成本的战利品。

对于社工库扫描,网站通常的做法就是验证码(防暴力破解也是这种方法)。但是简单的验证码是很容易识别的,网上流传很多验证码的识别源码。类似下面这些验证码都是可以识别的,源码和 dll 网上可以找到的。

然而 BT 的验证码却会伤害用户体验,目前黑客也有应对 BT 验证码的方法。他们会将验证码集中传回到一个集中的地方,在网上请廉价的网络打工者填写。虽然这种方法成本有所提高,但是对于收益还是很低廉的。

如何规避风险

我们能做什么来保护自己不被社工库扫描?或将损失降到最低?

推荐做法是:重要账户和普通账户分离。具体操作如下:

  1. 将帐号分类,公司帐号、有钱的帐号(支付宝等)、关系链帐号(朋友、人人等)和普通帐号。前 2 个为重要账户,关系链帐号较为重要。
  2. 每种账户至少对应一套密码,而且密码之间毫无关系。
  3. 每种账户对应的邮箱最好也能不通,因为密码找回往往依赖与注册邮箱。

展望

被泄密的网站越来越多,下一个也许就是你最常用的网站。赶紧去修改关键账户的密码吧,要不下一个受伤的可能就是你!

注:本文转自腾讯大讲堂,原文地址为 http://djt.open.qq.com/thread-623-1-1.html

2011-12-30 22:468768

评论

发布
暂无评论
发现更多内容

iOS开发:Xcode报错“Could not insert new outlet connection:Could not find any...”问题的解决方法

三掌柜

8月日更 8月

模块五作业

VE

架构实战营

开发一个分布式IM(即时通信)系统!

小傅哥

Netty DDD 小傅哥 即时通信

手撸二叉树之第二小的节点

HelloWorld杰少

数据结构与算法 8月日更

Swift 实现聚光灯动效

fuyoufang

swift 8月日更

netty系列之:内置的Frame detection

程序那些事

Java Netty 程序那些事

LeetCode题解:27. 移除元素,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

模块五作业

Testcase

架构实战营

模块五作业

河马先生

架构实战营

模块5作业

Geek_ywh40v

微博评论高性能高可用方案设计

gawaine

架构实战营

HBase 原理、Shell、API读写操作

Mike

【Flutter 专题】63 图解 Flutter 集成极光 JPush 小结

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

设计微博系统中”微博评论“的高性能高可用计算架构

木云先森

架构训练营

架构训练营模块五作业

喻高咏        

20张图带你了解JVM运行时数据区(上)

阿Q说代码

JVM 8月日更 pc寄存器 虚拟机栈 本地方法栈

四种引用类型在Springboot中的使用

4ye

Java spring 后端 springboot 8月日更

你真的了解二叉树吗?(树形结构基础篇)

有道技术团队

技术 二叉树 网易

架构实战营模块5作业

宁静志远

架构实战营

架构实战营 - 模块 5 - 微博评论的高性能高可用计算架构

雪中亮

架构实战营 #架构实战营

JavaScript 数组元素的一些操作

HoneyMoose

【LeetCode】反转字符串中的元音字母Java题解

Albert

算法 LeetCode 8月日更

架构实战营模块五作业

老猎人

架构实战营

vue入门:定制自定义指令和过滤器

小鲍侃java

8月日更

模块5 作业

SAKIN

模块五作业 - 微博评论的高性能高可用计算架构

君子意如何

「架构师训练营第 1 期」

百度助力人工智能教育创新:教育部产学合作协同育人项目申报进行中!

百度大脑

人工智能

SpringApplication启动run了啥

Rubble

8月日更

架构实战营 模块五 作业

三叔叔_拖延症晚期

老和云起小游

箭上有毒

8月日更

模块五-微博评论“的高性能高可用计算架构

柱林

浅析爆库和社工库扫描_安全_Lake_InfoQ精选文章