您当前的位置: 首页 > 

梁云亮

暂无认证

  • 2浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

高效的彩虹表密码攻击法

梁云亮 发布时间:2022-01-14 17:16:05 ,浏览量:2

背景

为了保护账号安全,几乎所有网站都不会明文保存用户的密码,而是用哈希加密算法对密码进行计算,将得到的哈希串保存在数据库中。每次用户登录时会将用户提交的密码用同样的算法计算,并将结果与数据库中保存的哈希串比对以验证用户身份。

可以采用密码字典的方式对哈希密码进行“撞库”破解,这种方式对长度较短、组合简单的密码确实很有用,但是遇到复杂的密码时往往力不从心,这种情况下彩虹表破解法就很高效了。

哈希加密算法是不可逆的,也就是说无论是网站的数据库管理员还是获取了密码数据的黑客,能看到的只是一长串毫无意义的字符,不可能将它还原成真正的密码。通常的破解办法有两个,一是用穷举法组合出所有可能的密码,然后经哈希算法计算,将结果与哈希串进行比对;二是提前生成可能密码的对应哈希串的对照表,密码攻击时直接根据哈希串从对照表中查询对应的密码。

第一种方法需要大量的计算,因此破解速度非常慢,以14位字母和数字的组合密码为例,共有1.24×1025种可能,即使电脑每秒钟能进行10亿次运算,也需要4亿年才能破解;第二种方法需要海量的磁盘空间来储存数据,仍以14位字母和数字的组合密码为例,生成的密码32位哈希串的对照表将占用5.7×1014 TB的存储空间。如果增加密码长度或添加符号,需要的时间或磁盘空间将更加难以想象,显然这两种方法是难以让人满意的。

彩虹表其实是两种方法的折衷,将耗时和占用空间控制在可接受的范围内。 彩虹表(Rainbow Table)是一种破解哈希算法的技术,是一款跨平台密码破解器,主要可以破解MD5、HASH等多种密码。它的性能非常让人震惊,在一台普通PC上辅以NVidia CUDA技术,对于NTLM算法可以达到最高每秒103,820,000,000次明文尝试(超过一千亿次),对于广泛使用的MD5也接近一千亿次。更神奇的是,彩虹表技术并非针对某种哈希算法的漏洞进行攻击,而是类似暴力破解,对于任何哈希算法都有效。

彩虹表的实现原理

首先定义哈希加密函数H,Q=H(P)表示将明文密码P加密成哈希串Q;然后定义规约函数R,p=R(Q)表示将哈希串Q转换成明文p,注意p不是真正的密码P。将一个可能的密码p0交替带入H和Q两个函数进行运算,先后得到q1,p1,q2,p2,…,q(n-1),p(n-1),qn,pn。其中p是明文,q是哈希串,它们组成的链称为哈希链,n是哈希链的长度,一般大于2000。将哈希链的首尾元素p0和pn做为一个数对存入表中,中间的其它元素全部删除。

由多个数对组成的表称为彩虹表。

image.png

密码攻击就是找到哈希串Q对应的明文密码P,利用彩虹表进行密码攻击的过程如下:c1=R(Q),将c1与彩虹表中每一个pn进行比对,如果相等,则P=p(n-1),由于彩虹表中只保存了p0和pn,因此需要重新计算该哈希链得到p(n-1);如果没找到相等的pn,计算c2=R(H(c1)),将c2与彩虹表中所有pn进行比对,如果相等,则P=p(n-2),重新计算该哈希链得到p(n-2);如果没找到相等的pn,继续计算c3…以此类推。 image.png

以上是彩虹表最基本的原理。

彩虹表的关键是构造R函数,优秀的R函数要保证计算结果均匀分布,即避免出现相同的明文密码。然而想构造优秀的R函数是件非常困难的事,不同的哈希链中可能会出现大量的重复数据,严重影响了密码攻击的效率。改良后的彩虹表在哈希链的计算过程中引入不同的R函数,有效减少不同哈希链中的重复节点,进一步提高了攻击效率。如果将不同的R函数用不同的颜色表示,众多的哈希链就会像彩虹一样,从里到外呈现出颜色变化,这就是彩虹表名称的由来。 image.png

可以自己编程生成彩虹表,也可以使用RainbowCrack或Cain等软件来生成,有兴趣的读者可以自行百度。彩虹表的生成时间与字符集的大小、哈希链的长度成正比,如下图中“7位密码、全部字符集、哈希链长度为2万”的彩虹表大小为32G,本地生成大约需要332天,而从网上下载只需要2个小时左右,主流的彩虹表的大小普遍在100G以上,想要自己生成是几乎不可能的事,因此强烈建议黑客技术爱好者直接从网上下载。 image.png 上表是7位以内密码在不同字符集下构造出的彩虹表的情况。

彩虹表中哈希链的长度和个数随着字符集的增长而增长,彩虹表的大小和生成时间也随之成倍增加。7位数字组合在彩虹表面前简直就是秒破,即使最复杂的7位密码不到一个小时就能破解,如果采用普通的暴力攻击,破解时间可能需要三周。

彩虹表的防御

虽然彩虹表有着如此惊人的破解效率,但网站的安全人员仍然有办法防御彩虹表。最有效的方法就是“加盐”,即在密码的特定位置插入特定的字符串,这个特定字符串就是“盐”,加盐后的密码经过哈希加密得到的哈希串与加盐前的哈希串完全不同,黑客用彩虹表得到的密码根本就不是真正的密码。即使黑客知道了“盐”的内容、加盐的位置,还需要对H函数和R函数进行修改,彩虹表也需要重新生成,因此加盐能大大增加利用彩虹表攻击的难度。

加盐(salt)其实是改变了哈希函数H的形式。由于彩虹表在生成和破解的过程中,都反复用到了函数H,H如果发生了改变,则已有的彩虹表数据就完全无法使用,必须针对特定的H重新生成,这样就提高了破解的难度。

防御彩虹表的另一种方法是提高H函数的计算难度,例如将H定义为计算一千次MD5后的结果。由于H在算法中的重复性,当单次H函数的计算耗时增加,意味着彩虹表的生成时间会大大的增加,从而也能提高破解的成本。

下载彩虹表
  • 官方下载地址: http://ophcrack.sourceforge.net/
  • 120G彩虹表BT下载:http://www.ha97.com/code/tables.rar
彩虹表的使用

彩虹表工具很多,常用到的彩虹表工具有Ophcrack、rcracki_mt、Cain等。 Cain: http://www.onlinedown.net/soft/53494.htm freerainbowtables: http://www.freerainbowtables.com/ Ophcrack: http://ophcrack.sourceforge.net/tables.php RainbowCrack: http://project-rainbowcrack.com/table.htm RainbowCrack + LM Tables 破解SAM密码 http://www.t00ls.net/viewthread.php?tid=505 SAMInside + LM Tables 破解SAM密码完美组合 http://www.t00ls.net/viewthread.php?tid=503 最小彩虹表是最基本的字母数字表,就这样它的大小就有388MB。这是Ophcrack启动盘默认的表,很多人的收集便有了传说中的120G的彩虹表。win2003及以前的windows操作系统的密码采用的LM算法加密,而Vista、Win7、Win2008/R2采用的是NTLM,NTLM比LM安全得多。

关注
打赏
1665409997
查看更多评论
立即登录/注册

微信扫码登录

0.0411s