现在的位置: 首页 > 综合 > 正文

关于彩虹表的那点事

2013年08月01日 ⁄ 综合 ⁄ 共 3571字 ⁄ 字号 评论关闭

题目:关于彩虹表的那点事
作者:hackest [H.S.T.]
来源:hackest's blog

一、概述

什么是彩虹表?
彩虹表(Rainbow Tables)就是一个庞大的、针对各种可能的字母组合预先计算好的哈希值的集合,不一定是针对MD5算法的,各种算法的都有,有了它可以快速的破解各类密码。越是复杂的密码,需要的彩虹表就越大,现在主流的彩虹表都是100G以上。嗯,最近似乎对彩虹表关注的人越来越多了,装备彩虹表的hacker在将来也会越来越多。不过很多人似乎对彩虹表并不是十分的了解。不过可以肯定的是,有不少人对彩虹表存在一定的误解,甚至有人以为有了彩虹表就能破解所有的不可逆向的算法的密码明文。事实上是不是这样呢?本文将从如何获得彩虹表,如何使用彩虹表破解密码等入手详细介绍一下彩虹表在密码破解领域的应用意义。

二、如何获得彩虹表

1、RainbowCrack生成

RainbowCrack是一个使用内存时间交换技术(Time-Memory Trade-Off Technique)加速口令破解过程的口令破解器,这个工具可以在地址http://project-rainbowcrack.com/下载。RainbowCrack使用了彩虹表,也就是一张预先计算好的明文和散列值的对照表。通过预先花费时间创建这样的彩虹表,能够在以后破解口令时节约大量的时间。详细的我就不说了,可以参考这里

2、Cain生成

在Cain的安装目录的Winrtgen文件夹下有一个名为Winrtgen.exe的程序,运行后如图1。
点击在新窗口中浏览此图片
点击“Add Table”,如图2。
点击在新窗口中浏览此图片
“Hash”下面可选项就是你能够生成的彩虹表种类了,记住彩虹表也是分类别的。曾经有人拿MD5的彩虹表去跑Windows的LM Hash,然后问我为什么连这么简单的组合都破解不了……MD5的彩虹表只能拿来破解MD5 Hash,牛头不搭马嘴的乱用,自然是功亏一篑,白白浪费时间不说,还闹笑话。“Min
Len”最小位,也就是密码明文长度的最低位。“Max Len”最大位,也就是密码明文长度的最高位。比如你模糊的确定你手里的Hash的密码长度位数大概是5至7位,那么,最小位就是5,最高位就是7。Chain Len、Chain Count、N of tables是控制所生成表破解成功率的,软件下面会显示当前选项的破解成功率,当然是越接近100%越有用了,要不生成些破不了几个也没多大意义。表分割得越细,成功率就越高,生成的表体积也越大,所需时间也越长。“Charset”是字符集,也就是密码明文里所包含的字符,下拉可见有多个选项。设置好后点两下“OK”就会开始生成,这样生成结束后的表每张为610.35MB。


3、直接下载

除了上述两种生成工具之外,可能还会有些变种,在此不再一一描述。为什么要说下载的呢?可以自己生成为什么还要下载呢?嗯,其实原因就是下载比生成很得多,我做过测试,4核4GB内存的机器,生成2GB彩虹表,需要花费7天时间,而7天按1MB的带宽(160K/S左右)几乎可以下载30GB左右(我带宽比较有限,有时候还会无法连接,每天只能下4GB左右)。效果是明显要超过生成,当然了,你要是有超级计算机群生成的话,也不妨自己生成。对于广大网络安全爱好者来说,还是直接下载来得靠谱!

哪里有得下载呢?

这个还得看你需要破解什么密码,如果是要破解Windows Hash的话,建议用Ophcrack,速度相对较快,表的体积也相当较小。软件是可以免费下载的,表也有几百M可以免费用,甚至可以在线查询。在线查的这个用的是免费的几百M的表,效果一般,不过对于简单的密码来说,也足够了。有的可能不会用,在这里提一下。其实只要注意Hash的格式就可以了,比如Windows某个用户的密码为hackest,那查询的时候在"hash“旁边的框里填入“7831a0ffabee5fb3aad3b435b51404ee:d78df6e868e606e442313c5df93216f1”。再“sumbit
hash”就可以得到返回结果。偶尔也会出现只显示了若干位的情况。也可以在这里查询密码Hash串。至于其他收费的表,我以前也有发过种子。http://www.hexsafe.com/download/Ophcrack%20XP%20Special%20Tables.torrent,这个是Ophcrack XP Special Tables。一般非Vista的密码Hash,用它能破绝大部分,但在使用过程中也有发现有小部分Hash正确,但无法破解的。所以说,不要相信什么这个表全那个表不全的,记住,表没有全的!表永远没有最大,只有更大。Vista的密码Hash可以在这里下表,http://www.hexsafe.com/download/Ophcrack%20Vista%20Special%20NTHASH%20Table.torrent这是Ophcrack
Vista Special NTHASH的。官方是收费的表,不过国外共享了,也就可以免费得到了。如果这些表都跑不出来,而你又确定你的Hash没有搞错的话,那么只能找LC5出马了,LC5是一定能破的,只是时间有点久!


Free Rainbow Tables

官方网址:http://www.freerainbowtables.com/en/tables/
镜像下载:http://tbhost.eu/rt.php
提供了多种类型的彩虹表下载,LM、NTLM、MD5、SHA1等。千万别把人家法语字符的表也下了,对国人来说,几乎没什么用,不过如果你有特殊需要,那就下吧……这里提供的都是.rti格式的,有别于传统的.ri格式,.rti比.rt的多了一个目录.index文件,据说遍列速度比.rt的更快(未曾对比过,无法确定是否属实)。

还有据说是国内生成的120GB(其实是119.2GB)的彩虹表也能找到下载点,虽然不是怎么稳定……不过貌似此表不支持字符里有空格的。

三、如何使用彩虹表

关于Ophcrack的就不多说了,可以参考我博客里的另一篇文章《Windows系统密码破解全攻略》。重点说说怎么用在Free
Rainbow Tables上下回来的彩虹表破解Hash。这里以MD5的彩虹表为例,说明一下如何使用彩虹表来破解MD5密码。假设明文为hackest的一串32位MD5值为3787795aeee01c9ab7267f252c932572。要用到的工具为rcracki_mt.exe,目前最新版本为0.6.1。

把此工具及相关的dll文件复制到彩虹表所以目录,然后运行命令“F:\MD5>rcracki_mt.exe -h 3787795aeee01c9ab7267f252c932572 *.rti”就会开始破解,如图3。
点击在新窗口中浏览此图片
当遍列到此Hash所在的表的时候,就会结束任务,显示结果。按我的机器配置来算,263GB的MD5表全部遍列一次,要2小时左右。期间会非常的卡,所以一般是睡觉的时候跑,要不真受不了。至于其他表,比如LM的,要把Hash分成两段,软件才能识别。比如密码明文为hackest的LM hash是7831a0ffabee5fb3aad3b435b51404ee,你就得把这段Hash对半分成两段,也就是16位一段,分行保存到hash.txt文件里,然后“F:\LM>rcracki_mt.exe
-l hash.txt *.rti”就会开始破解。前16位存放密码明文的前7位,后16位存放密码明文的后7位,所以LM Hash最多只能存放14位长度的密码!而且LM Hash的破解结果只能是大写,因为LM Hash统一以大写存放明文,LM破解的是不分大小写的。NTLM的位数较多,所以密码长度超过14位的时候,抓取Hash的时候LM Hash会显示为一串0,或者显示为AAD3开头的一串字符,但NTLM却不受影响。要用NTLM的表破解NT Hash就应该这样:比如密码明文为hackest的NT Hash为d78df6e868e606e442313c5df93216f1,那命令格式就是F:\NTLM>rcracki_mt.exe
-h d78df6e868e606e442313c5df93216f1 *.rti”。备注:-h参数是直接破解后面跟着的Hash值,一次只能破解一个,-l参数是导入一个存放了Hash的文件进行破解,一次可以破解多个,一行填一个Hash。


但是,这个MD5的表却不支持16位的MD5 Hash,不过我认为这个软件代码只要改改,应该是可以识别的,因为32位的Hash包含了16位的Hash值,只要把32位的去前8位,后8位,剩下的就是16位的Hash了。可以让软件只对比表里的16位Hash。

抱歉!评论已关闭.