彩虹表破解hash密码
彩虹表是一个非常庞大的、针对各种可能的字母、数字等字符组合预先计算好的hash的集合,用来破解各种hash加密的密码。网上有很多彩虹表可供我们下载,当然也可以自己生成,rainbowcrack就是这样的工具。
RainbowCrack是利用内存时间交换技术加速口令破解过程,官方地址http://project-rainbowcrack.com/#download下载。RainbowCrack使用了彩虹表,通过预先花费时间创建这样的彩虹表,能够在以后破解口令时节约大量的时间。RainbowCrack包括下面三个程序
rtgen.exe……彩虹表生成工具,生成口令、散列值对照表。
rtsort.exe……排序彩虹表,为rcrack.exe提供输入。
rcrack.exe……使用排好序的彩虹表进行口令破解。
首先使用彩虹表生成器(rtgen.exe)生成自己的彩虹表。其命令行格式为:
rtgen hash_algorithm \
plain_charset plain_len_min plain_len_max \
rainbow_table_index \
rainbow_chain_length rainbow_chain_count \
file_title_suffix
rtgen hash_algorithm \
plain_charset plain_len_min plain_len_max \
rainbow_table_index \
-bench www.2cto.com
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!@#$%^&*()-_+=~`[]{}|\:;”‘<>,.?/ ]
oracle-alpha-numeric-symbol3 = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#$_]
plain_len_min 指定密码的最小长度。
plain_len_max指定密码的最大长度。
rainbow_table_index指定彩虹表的索引。
rainbow_chain_length指定彩虹链的长度。
rainbow_chain_count指定要生成彩虹链的个数。
file_title_suffix指定生成的彩虹表文件名的注释。
-bench 用户性能测试。
下面是使用彩虹表生成器的几个命令行示例:
rtgen lm alpha 1 7 0 100 16 test
rtgen md5 byte 4 4 0 100 16 test
rtgen sha1 numeric 1 10 0 100 16 test
rtgen lm alpha 1 7 0 -bench
建议使用默认值来创建自己的彩虹表。如下面的例子创建一个128M的大写字母md5加密的彩虹表,密码最短1位,最长7位。
C:yeetrac>rtgen md5 alpha 1 7 0 2100 8000000 yeetrack
hash routine: lm
hash length: 8
plain charset: ABCDEFGHIJKLMNOPQRSTUVWXYZ
plain charset in hex: 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a
plain length range: 1 – 7
plain charset name: alpha
plain space total: 8353082582
rainbow table index: 0
reduce offset: 0
generating…
done.
创建比较大的彩虹表可能要花费很久的时间,几小时甚至几天,跟硬件有关。在生成了彩虹表之后,我们会在当前目录下找到一个名称为lm_alpha#1-7_0_2100x8000000_yeetrack.rt的文件,其中yeetrack是我们在命令中输入的文件名注释。
接下来的工作是使用彩虹表排序程序(rtsort.exe)进行排序,目的是加快彩虹表的查找速度。这个命令的语法很简单,格式为:
rtsort rainbow_table_pathname
其中rainbow_table_pathname是要排序彩虹表的文件名。例如,排序前面创建的彩虹表,可以使用下面的命令:
C:\yeetrack>rtsort lm_alpha#1-7_0_2100x8000000_all.rt
这个命令需要执行几分钟的时间。
最后,使用彩虹表破解程序(rcrack.exe)破解散列值。破解md5命令很简单,如下面的破解结果:
C:\yeetrack\rainbowcrack-1.5-win64>rcrack.exe md5_alpha#1
0x8000000_0.rt -h 8A9A33314944325F77B68F754029EEDB
2549403648 bytes memory available
1 x 128000000 bytes memory allocated for table buffer
33600 bytes memory allocated for chain traverse
disk: md5_alpha#1-7_0_2100x8000000_0.rt: 128000000 bytes read
searching for 1 hash…
disk: finished reading all files
plaintext of 8a9a33314944325f77b68f754029eedb is ZCXVB
statistics
——————————————————-
plaintext found: 1 of 1
total time: 0.42 s
time of chain traverse: 0.26 s
time of alarm check: 0.14 s
time of wait: 0.00 s
time of other operation: 0.02 s
time of disk read: 0.08 s
hash & reduce calculation of chain traverse: 2202900
hash & reduce calculation of alarm check: 1449527
number of alarm: 2066
speed of chain traverse: 8.28 million/s
speed of alarm check: 10.21 million/s
result
——————————————————-
8a9a33314944325f77b68f754029eedb ZCXVB hex:5a43585642
成功破解出明文密码。彩虹表越大破解的概率就越高,如今比较流行的彩虹表大小为120G。如果想破解windows密码,就需要生成lm彩虹表,命令:rtgen lm alpha 1 7 0 2100 8000000 yeetrack,其他步骤一样,不过windows的密码hash一般保存在c:/windows/system32/config/sam中,需要从中获取hash,工具有pwdump,lc4,lc5等。
下一篇: github上传项目示例