一、暴力破解
暴力破解可分为纯粹式暴力破解和字典式暴力破解,一般暴力破解工具都会同时实现这两种暴力破解方式。
注意暴力破解不只是指解猜用户名密码,解猜压缩文件解压口令、猜解word文档读写口令、猜解系统后台管理地址等只要是猜的都属于暴力破解。
一般而言,猜解随机生成的短信验证码等适合使用纯粹式暴力破解(随机生成不受人方便记忆影响不同密码出现的概率是一样的),猜解人为设定的口令则适合使用字典式暴力破解(人为设定受人方便记忆影响不同密码出现的概率是不一样的)。
常用暴力破解工具:hydra(各种服务用户名密码联网猜解工具)、Advanced Office Password Recovery(常见文档读写猜解工具)、aircrack-ng(wifi密码猜解工具)
1.1 纯粹式暴力破解
纯粹式暴力破解是指在要输入密码时,临时按照设定的长度、选定的字符集生成用于测试的密码。
如下图选定,那么密码依次是:aaaaaaaa、aaaaaaab、aaaaaaac...如此下去直到8个空格。
如下图选定,那么密码依个数一共是:A(26+26+10+14+1,8) = A(77,8) = 848416382352000
假设一秒猜测10000次,那么需要时间:848416382352000 / (3600 * 10000 ) = 23567121.732(小时) = 981963.40 (天) = 2690.31(年)
1.2 字典式暴力破解
纯粹式暴力破解就好像是地毯式搜索,如果密码在设定的密码集内那么一定是可以找出来的。
但如前面我们已将每秒猜测次数设置为比较大的10000次,但要破解当前主流的8位密码竟然需要2600多年,这超出了可接受范围;如果要减少字符集,那么又会大大降低准确度。
从另一个角度分析,同是8位长度的密码出现的概率是不相同的,比如12345678、abcd1234、qwertyui做为密码的概率比ferghtsa做为密码的概率要高得多,可以说就比一层最常出现的密码占据了9层9的出现概率。
字典暴力破解,就是将出现频率最高的密码保存到文件中,这文件就是字典,暴破时就使用字典中的这些密码去猜解。字典式暴力破解较纯粹式暴力破解,使用了较小的命中率损失节省了较多的时间。
不同大小的字典,是选取密码不一样,比如小一点的是常见密码top100,大一点的是top1000,再大一点的是top10000就这意思。
二、彩虹表攻击
狭义上,彩虹表一般是指以“hash值:原始值”为行组成的文件,如下图所示。广义上,只要能从hash值找到对应原始如,形式怎么变都能称为彩虹表;如果要我将彩虹表写入数据库,那表字段应该:password、md5_value、sha1_value、sha256_value...
hash算法,可以是标准的md5、sha1、sha256、sha512;也可以是其他混合变种,如mysql、md5(upper($pass))、md5(md5($pass))等等。
彩虹表攻击是指,拿着获取到的hash值通过查询彩虹表找出其原始值的攻击方式。
实际操作来说,获取一个hash的原始值不一定要事先准备彩虹表,也可以像字典式攻击一样准备一个字典,攻击时再使用hash算法计算字典的hash值两相比。但计算是耗时间的本来暴力破解由于次数很多就耗很长时间,再耗同样长的时间在计算hash值上,那暴力破解更加缓慢。这也是人们说彩虹表攻击默认都是指事先准备好彩虹表的形式而不是中途计算hash值的形式的原因(不过john就是这种)。
常见的彩虹表攻击有:使用各种网站在线破解一般hash值、使用ophcrack破解windows密码、使用john破解linux密码。
三、暴力破解与彩虹表攻击的区别
暴力破解和彩虹表攻击宽泛来说都属于口令破解,但他们使用的场景完全是不一样的。
暴力破解:完全不知道密码----通过系统提供的认证接口不断认证----获取原始口令----处于进入系统前
彩虹表攻击:已知密码hash值----通过自己的工具及彩虹表不断查找----获取原始口令----处理进入系统后
参考: