02
2016
01

试用RainbowCrack生成彩虹表

    最近比较迷恋Windows密码破解和还原,之前用过Saminside,这个工具用来跑LM Hash还是比较快的,在一台不算差劲的机器上,差不多一天就可以破解大部分LM Hash。而彩虹表破解(查表破解)的方式速度更快,我手头有一个64GB LM彩虹表,基本上只需要几分钟时间,就可以把密码明文跑出来。但是现在都知道NTLM修正了LM的弱点,所以VISTA、Win7、Win8、Win10之类的系统都不能直接通过LM Hash来还原密码明文。而目前针对NTLM的彩虹表又特别巨大,仅仅9位的字母数字混合密码,彩虹表就有690GB大,仅仅9位这还不包括特殊字符。如果要包括全部ASCII字符的话,15密码估计翻个十来倍大小应该没问题。几十个TB就用来准备彩虹表,对任何一般意义上的破解者来说都是无法想象的代价。RainbowCrack哈希表下载:http://project-rainbowcrack.com/

    尽管如此还是尝试着想自己生成一份彩虹表看看。在RainbowCrack网站下载了最新的RainbowCrack 1.6.1版本,这个工具还是很不错的,除了用来跑彩虹表,还可以自己生成彩虹表。并且其跑表速度还可以用显卡GPU加速,有好显卡的机器会跑的非常快。

    RainbowCrack网站上已经有了一部分彩虹表下载,不过都是测试用的,规则很简单,最复杂的NTLM哈希就是刚才说过的9位字母数字混合表,690GB那个。说实话还是有点小。我是准备自己生成着看,所以特别关注了一下里面附带的rtgen.exe工具。

    悲剧的是,虽然国内也有人之前简单介绍过这个彩虹表生成工具:http://www.phpfans.net/article/htmls/200904/MjcxMTQ1.html,但介绍的实在太简单了,而且当时作者使用的是老版本的rtgen.exe,并且是针对生成MD5做的示例,命令参数不一样,各参数又没有新版本的对应介绍,基本上只能瞎琢磨了。

    rtgen.exe 1.6.1版本命令行格式如下:

    rtgen hash_algorithm charset plaintext_len_min plaintext_len_max table_index chain_len chain_num part_index

    大致翻译:

    rtgen 哈希类型 字符范围 最小位数 最大位数 表索引 链长度 链数量 索引块

    哈希类型:LM,HTLM,MD5,SHA1,SHA256,几种常见HASH

    字符范围charset.txt文件内有示例:

【数字】numeric            = [0123456789]

【字母】alpha              = [ABCDEFGHIJKLMNOPQRSTUVWXYZ]

【字母+数字】alpha-numeric      = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]

【小写字母】loweralpha         = [abcdefghijklmnopqrstuvwxyz]

【小写字母+数字】loweralpha-numeric = [abcdefghijklmnopqrstuvwxyz0123456789]

【小写+大写字母】mixalpha           = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]

【小写+大写+数字】mixalpha-numeric   = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]

【ASCII字符范围32-95(涵盖绝大部分字符)】ascii-32-95                  = [ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~]

【ASCII字符32-65-123-4(不含小写字母)】ascii-32-65-123-4            = [ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`{|}~]

【字母+数字+符号+空格】alpha-numeric-symbol32-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]


    最小位数最大位数也有示例:

hash algorithms implemented in alglib0.dll:

    lm, plaintext_len limit: 0 - 7

    ntlm, plaintext_len limit: 0 - 15

    md5, plaintext_len limit: 0 - 15

    sha1, plaintext_len limit: 0 - 20

    sha256, plaintext_len limit: 0 - 20


    关键是以下三个参数没搞明白:    table_index表索引,chain_len chain_num链长度,part_index块数量

    这个参数该怎么确定?完全没有头绪。。。

    目前在单位的一个15T存储上开始了第一波测试:

F:\rainbowcrack>rtgen ntlm ascii-32-95 1 15 1000 1000000 10000000 0

rainbow table ntlm_ascii-32-95#1-15_1000_1000000x10000000_0.rt parameters

hash algorithm:         ntlm

hash length:            16

charset:                 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW

XYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

charset in hex:         20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32

 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4

d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67

68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e

charset length:         95

plaintext length range: 1 - 15

reduce offset:          0x03e80000

plaintext total:        2994780131194708735


sequential starting point begin from 0 (0x0000000000000000)

generating...


    还不知道这要运行多久才能结束,也不知道15TB的存储够不够用……

    等我这边生成的有结果了我来更新吧。不知道有没有朋友已经测试生成过……能给我指点一下。

« 上一篇下一篇 »

评论列表:

1.彩虹表  2018/2/23 20:51:06 回复该留言
想要反查md5,因为明文位数比较长,网上没有现成的可以查询,想要自己生成彩虹表,存储太过巨大,不知道你那生成的表成功没,交流一下经验
.lain  2018/3/6 8:35:06 回复该留言
cmd5可以查大部分md5哈希,我想生成的是ntlm。那个表才大呢。。
Windows 7 x64 Edition系统Windows 7 x64 Edition  Google Chrome 49.0.2623.87浏览器Google Chrome 49.0.2623.87
Android 6.0.1系统Android 6.0.1  Mobile Google Chrome 62.0.3202.97浏览器Mobile Google Chrome 62.0.3202.97
2.tomone  2018/10/10 1:47:14 回复该留言
大牛的ntlm 哈希生成完没?多大 用了多久?
Mac OS X 10.13.6系统Mac OS X 10.13.6  Safari浏览器Safari

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。