【总结】关于彩虹表学习阶段性总结

摘要:
彩虹表是一种破解哈希算法和跨平台密码破解器的技术。主要可以破解MD5、HASH等密码。更重要的是,彩虹表不是针对某个哈希算法漏洞的攻击,而是类似的暴力攻击,对任何哈希算法都有效。最著名的彩虹桌是彩虹桌,这在安全界经常被提及。通过提前花时间创建这样的彩虹表,您可以在将来破解密码时节省大量时间。

PS:这玩意偶前几天用了一下,确实强悍无比,在这个表面前,md5、sha1等公开的加密算法不堪一击啊。听说以后md5、sha1这类加密算法都要被淘汰了,sha256要大行其道了。

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

一、彩虹表原理

先讲述一些基本概念:

Tables

可以说长期进行密码学研究的人很少有不知道这个的。在很多年前,国外的黑客们就发现单纯地通过导入字典,采用和目标同等算法破解,其速度其实是非常 缓慢的,就效率而言根本不能满足实战需要。之后通过大量的尝试和总结,黑客们发现如果能够实现直接建立出一个数据文件,里面事先记录了采用和目标采用同样 算法计算后生成的Hash散列数值,在需要破解的时候直接调用这样的文件进行比对,破解效率就可以大幅度地,甚至成百近千近万倍地提高,这样事先构造的 Hash散列数据文件在安全界被称之为Table表(文件)。

Rainbow Tables

最出名的Tables是Rainbow Tables,即安全界中常提及的彩虹表。彩虹表就是一个庞大的、针对各种可能的字母组合预先计算好的哈希值的集合,不一定是针对MD5算法的,各种算法的都有,有了它可以快速的破解各类密码。越 是复杂的密码,需要的彩虹表就越大,现在主流的彩虹表都是100G以上,目前主要的算法有LM, NTLM, MD5, SHA1, MYSQLSHA1, HALFLMCHALL, NTLMCHALL, ORACLE-SYSTEM, MD5-HALF。

原理

(在网上也找了一些,大部分都是直译过来的,看得人不知所云,这里以后再补上吧。)

二、获得彩虹表

彩虹表可以使用RainbowCrack或Cain来生成,也可以到网上下载,国外有大牛共享出来的。表分割得越细,成功率就越高,生成的表体积也越大,所需时间也越长。但下载比生成快得多,有人做过测试,4核4GB内存的机器,生成2GB彩虹表,需要花 费7天时间,而7天按2MB的带宽(256K/S左右)几乎可以下载48GB左右,效率明显要超过生成。当然,你要是有超级计算机群生成的话,也不妨自己 生成。对于广大网络安全爱好者来说,还是直接下载来得靠谱!

RainbowCrack生成

RainbowCrack 是一个使用内存时间交换技术(Time-Memory Trade-Off Technique)加速口令破解过程的口令破解器。RainbowCrack使用了彩虹表,也就是一张预先计算好的明文和散列值的对照表。通过预先花费 时间创建这样的彩虹表,能够在以后破解口令时节约大量的时间。
软件下载地址:http://www.project-rainbowcrack.com ,这也是官方的下载地址,网站上有具体的使用方法(http://www.project-rainbowcrack.com/crack.htm),这里就不再赘述。

Cain生成

cain也是一个强大的工具,网上很容易就可以找到下载地址,具体使用方法参见我的另一篇博文(http://www.cnblogs.com/phpCHAIN/p/3515115.html)。

网上下载

下载链接:①http://freerainbowtables.mirror.garr.it/mirrors/freerainbowtables/

http://freerainbowtables.mirror.garr.it/mirrors/freerainbowtables/RTI2/md5/

这2个地址都是官方的,第①个很早以前出来的,第②个是后来出来的。

三、彩虹表格式

下载到的彩虹表一般格式是(hash_algorithm)_(plain_charset)#(plain_len_min)-(plain_len_max)_(rainbow_table_index)_(rainbow_chain_length)X(rainbow_chain_count)_(file_title_suffix)-(bench).rt

如:lm_alpha#1-7_0_2100x8000000_yeetrack.rt

其中,hash_algorithm:指定密码的加密算法,包括lm, md5, sha1,mysqlsha1等,其中lm是windows密码的加密算法。

plain_charset指定密码的字符集一般有大写字母、小写字母、数字和特殊字符。详细参数信息如下:

numeric = [0123456789]

alpha =[ABCDEFGHIJKLMNOPQRSTUVWXYZ]
alpha-numeric =[ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]

loweralpha =[abcdefghijklmnopqrstuvwxyz]
loweralpha-numeric =[abcdefghijklmnopqrstuvwxyz0123456789]

mixalpha =[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]
mixalpha-numeric =[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]

ascii-32-95 = [ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~]
ascii-32-65-123-4 = [ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`{|}~]
alpha-numeric-symbol32-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|:;”‘<>,.?/ ]

plain_len_min 指定密码的最小长度。

plain_len_max指定密码的最大长度。

rainbow_table_index指定彩虹表的索引。

rainbow_chain_length指定彩虹链的长度。

rainbow_chain_count指定要生成彩虹链的个数。

file_title_suffix指定生成的彩虹表文件名的注释。

bench 用户性能测试。

再说说下载的彩虹表的后缀,分2种。一种是由.bin .index .start这3个文件类型组成,这是用来破解lm加密算法的,可以用ophcrack软件;还有一种是以.rt或.rtc结尾的,可以用rainbowcrack软件。后来由.rt发展出来.rti和.rti2,这2中是用rcracki.exe来跑的,rainbowcrack是不支持这2中格式的。有别于传统的.rt格式,.rti比.rt的多了一个目录.index文件,据说遍列速度比.rt的更快(未曾对比过,无法确定是否属实),而rti2就是在rti后来发展出来的。

四、彩虹表的使用

彩虹表工具很多,常用到的彩虹表工具有Ophcrack、rainbowcrack、rcracki_mt、Cain等。

Ophcrack

下载地址:http://ophcrack.sourceforge.net/tables.php

特点:不支持md5破解,最常用的,界面友好,与众不同,压缩储存,有自己独特的彩虹表结构,还有Live CD。

支持的HASH类型:LM,NTLM

扩展名:.bin .index .start

RainbowCrack

下载地址:http://project-rainbowcrack.com/table.htm

特点:通用的,一般的破解软件如saminside都支持,命令行界面,黑客的最爱,支持CUDA。

支持HASH类型:LM, NTLM, MD5, SHA1, MYSQLSHA1, HALFLMCHALL, NTLMCHALL

扩展名:rt

Rcracki_mt

下载地址:http://sourceforge.net/projects/rcracki/

特点:只支持MD5 32位加密的,不支持16位的。

支持HASH类型:LM, NTLM, MD5, SHA1, MYSQLSHA1, HALFLMCHALL, NTLMCHALL

扩展名:rti, rti2

Cain

下载地址:http://www.onlinedown.net/soft/53494.htm

具体使用方法参见我的另一篇博文(http://www.cnblogs.com/phpCHAIN/p/3515115.html)。

彩虹表的使用方法很简单,这里就只以rcracki_mt破解md5为例了。

进入到rcracki_mt.exe安装目录,破解单个md5,格式:rcracki_mt.exe -h f96b697d7cb7938d525a2f31aaf161d0 D:/rt/*.rti
破解多个md5,格式:rcracki_mt.exe -lhash_list_file.txt D:/rt/*.rti
其中D:/rt是存放彩虹表的路径,hash_list_file.txt是存放md5值的文件,一行填一个hash

下面是具体例子

D:/test>rcracki_mt.exe -h f96b697d7cb7938d525a2f31aaf161d0 *.rti  
Using 1 threads for pre-calculation and falsealarm checking...  
Found 4rainbowtable files...  
 
md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_0_10000x63130363_distrrtgen[p][i]_0.rti:  
reading index... 57605680 bytes read, disk access time: 0.84s  
reading table... 505042904 bytes read, disk access time: 8.34s  
verifying the file... ok  
searching for 1hash...  
cryptanalysis time: 32.02s  
 
md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_1_10000x63248067_distrrtgen[p][i]_0.rti:  
reading index... 57605581 bytes read, disk access time: 0.98s  
reading table... 505984536 bytes read, disk access time: 7.53s  
verifying the file... ok  
searching for 1hash...  
cryptanalysis time: 31.97s  
 
md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_2_10000x63196772_distrrtgen[p][i]_0.rti:  
reading index... 57605581 bytes read, disk access time: 0.94s  
reading table... 505574176 bytes read, disk access time: 8.13s  
verifying the file... ok  
searching for 1hash...  
cryptanalysis time: 32.14s  
 
md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_3_10000x63223300_distrrtgen[p][i]_0.rti:  
reading index... 57605614 bytes read, disk access time: 0.86s  
reading table... 505786400 bytes read, disk access time: 8.25s  
verifying the file... ok  
searching for 1hash...  
cryptanalysis time: 31.88s  
 
statistics  
-------------------------------------------------------plaintext found:          0 of 1 (0.00%)  
total disk access time:   35.88s  
total cryptanalysis time: 128.00s  
total chain walk step:    199940004total false alarm:        25587total chain walk step due to false alarm: 94671091
result  
-------------------------------------------------------f96b697d7cb7938d525a2f31aaf161d0        <notfound>      hex:<notfound>  

总结到这里就告一段落了,也不知道讲没讲清楚,不清楚的@世人皆醒我独醉,大家互相探讨。

免责声明:文章转载自《【总结】关于彩虹表学习阶段性总结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇c/c++ 结构体传参问题UVa 674 Coin Change【记忆化搜索】下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

searchguard-7的安装和配置

elasticsearch在暴露了一个node的ip和端口后就可以对整个集群进行各种操作,删索引,改数据等。在重要的项目应用中,需要防范这一点。 目前常见的安全防范方式有, X-Pack Elasticsearch Security,收费License Search Guard,免费开源 一、安装:      请打开Search Guard后,...

vueRouter中scrollBehavior实现滚动固定位置

使用前端路由,当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样。 vue-router 能做到,而且更好,它让你可以自定义路由切换时页面如何滚动。 注意: 这个功能只在 HTML5 history 模式下可用。 当创建一个 Router 实例,你可以提供一个 scrollBehavior 方法: const rout...

六.HashMap HashTable HashSet区别剖析总结

 HashMap、HashSet、HashTable之间的区别是Java程序员的一个常见面试题目,在此仅以此博客记录,并深入源代码进行分析: 在分析之前,先将其区别列于下面: 1、HashSet底层采用的是HashMap进行实现的,但是没有key-value,只有HashMap的key set的视图,HashSet不容许重复的对象 Hashtable是基...

字符串hash

写给萌新的字符串hash算法,语言不严谨就算了,当然也欢迎dalao指点QAQ (hash)是一种映射,在信息学中可以用于将一些不方便作为下标储存的结构当作一个数来存起来,方便(O)(1)的查找,可能不太好用,但是思维极其重要 字符串hash 模板:求两个字符串之间是否存在包含关系 KMP模板题a 例如(bc)和(cbca)这两个串,(bc)在(cbca...

Java 权限框架 Shiro 实战一:理论基础

Apache Shiro 官网地址:http://shiro.apache.org/ Apache Shiro is a powerful and easy-to-use Java security framework that performs authentication, authorization, cryptography, and sessio...

Linux-c glib库hash表GHashTable介绍

  百度云glib  链接:https://pan.baidu.com/s/1W9qdlMKWRKIFykenTVuWNQ 密码:ol6y hash表是一种提供key-value访问的数据结构,通过指定的key值可以快速的访问到与它相关联的value值。hash表的一种典型用法就是字典,通过单词的首字母能够快速的找到单词。关于hash表的详细介绍请查阅数据...