二、参考资源
为了提高文章的SEO效果,我重新构建了以下参考资源部分的内容:
大家可以先参考以下链接来了解相关信息:
- Hashcat
- PRINCEprocessor
- Hashcat Utility
- List of Possible Dictionaries
Purple Rain的典型用法如下:
shuf dict.txt | pp64.bin –pw-min=8 | hashcat -a 0 -m #type -w 4 -O hashes.txt -g 300000
三、随机生成
关于PRINCE(PRobability INfinite Chained Elements)攻击技术以及随机规则生成方面的内容,可以在网上找到两篇非常好的文章,这也是Purple Rain的灵感来源。我强烈推荐阅读Matt Weir发表的有关PRINCE工作原理及具体功能的文章。同时,我也推荐阅读@evilmog写的有关“raking”(随机密码候选词生成)技术的相关文章。在阅读完这些文章后,你可以搭建自己的环境,并在hashcat中使用随机生成的规则来破解哈希。简而言之,PRINCE可以根据输入的字典集,随机组合生成输入词链(阅读此处了解更多细节)。配合hashcat的-g参数(随机规则生成选项),你可以进一步增强PRINCE候选密码的输出结果。
四、字典选择
你可以为Purple Rain提供两种类型的字典:专用字典(Targeted wordlist)或通用字典(General Purpose wordlist)。如果你手上没有任何字典,你可以使用比较优秀的“通用型”字典,如rockyou.txt字典。对于PRINCE而言,我并不推荐使用非常大的字典(比如大小超过500MB的字典)。你可以直接使用最常用的1000万个密码集(只有3.8MB),也可以参考weakpass.com,根据实际需要选择合适的词典。最后,将字典输入PRINCEprocessor之前,你可以先使用shuf这条命令洗一下牌。通过这种随机化过程,可以保证每次发起Purple Rain攻击时,PRINCEprocessor会创建不同的词链。你可以运行如下命令,多试几次,比较输出结果有何不同:
pp64.bin –pw-min=8 < dict.txt | head -20
shuf dict.txt | pp64.bin –pw-min=8 | head -20
五、规则数
选择规则时,我建议先从Hashcat自带的dive.rule开始。这个规则可以将已知密码的衍生密码与PRINCEprocessor随机生成的候选密码组合在一起,并且由于dive.rule会按概率大小进行排序,因此你可能会早点拿到结果。复杂一点的话,我会选择使用Hashcat的随机规则生成功能,最少使用50,000条随机规则,你可以根据情况扩充到1,000,000条规则。如果你不想使用太多的规则,我建议每次运行时使用300,000条规则(在命令行中加入-g 300000参数)。需要注意的是,生成的随机规则集越大,Hashcat启动的时间也会越长,因为Hashcat每次运行时都需要动态生成这些规则。此外,PRINCEprocessor自己也带有princegenerated和princeoptimized这两个规则集,你也可以选择试一下这两个规则集。
六、命令解析
现在来看一下Purple Rain攻击中用到的一些命令。
基本用法:
shuf dict.txt | pp64.bin –pw-min=8 | hashcat -a 0 -m #type -w 4 -O hashes.txt -g 300000
具体字段含义如下:
- shuf:将字典输入PRINCEprocessor之前,先随机处理一下。
- dict.txt:专用型或通用型字典,根据实际情况选择。
- pp64.bin:Hashcat提供的PRINCEprocessor工具。
- –pw-min=8:要求PRINCE生成长度至少为8个字符的密码。
- hashcat -a 0:以Straight模式启动Hashcat,获取stdin的输入数据。
- -m #type:指定哈希模式的编号,比如-m 1000对应的是NTLM。
- -w 4:指定Hashcat采用最高的工作负载来运行。
- hashes.txt:包含待破解哈希的输入文件。
- -g 300000:指定Hashcat生成300,000条随机规则。
两点建议:
1、再次执行相同任务前,我建议将运行时间限制在1小时到24小时之间。
2、可以收集行之有效的那些随机规则,参数为–debug-mode=1 –debug-file=success_purplerain.rules。
高级用法
如果你想随机使用dict/目录下的字典,你可以使用如下命令:
ls dict/ | sort -R | shuf ‘dict/’ tail -1
| pp64.bin –pw-min=8 | hashcat -a 0 -m #type -w 4 -O hashes.txt -g 300000
你可以将上面的tail -1命令替换成自己所需的命令。
你也可以随机组合使用多个字典,以增加输入数据的多样性,命令如下:
cat dict1.txt dict2.txt | shuf | pp64.bin –pw-min=8 | hashcat -a 0 -m #type -w 4 -O hashes.txt -g 300000
高级选项
在PRINCEprocessor中,我们可以使用–elem-cnt-min以及–elem-cnt-max选项,增加输入字典的单词/元素的链接数。
在Hashcat随机规则生成中,我们可以使用–generate-rules-func-min以及–generate-rules-func-max选项,增加或减少每个规则的函数数量。
七、典型应用
让我们举个简单的例子,介绍如何配置Purple Rain攻击及运行环境。
1、从rockyou字典中,随机提取30,000个密码:
shuf rockyou.txt | head -30000 > test_rockyou.txt
2、使用md5算法处理test_rockyou.txt,将生成的哈希值存入文件中(需要一定时间才能完成):
while read line; do echo -n $line | md5sum; done hashes.txt
3、创建一个小型字典,以便测试刚才生成的哈希值:
hashcat -a 3 -i ?a?a?a –stdout >> test_dict.txt
4、我们也可以获取google上前20,000个英文单词(参考此处链接),加入前面那个字典中:
cat google-20k.txt >> test_dict.txt
5、先使用dive.rule规则,花1个小时执行Purple Rain攻击:
shuf test_dict.txt | pp64.bin | hashcat -a 0 -m 0 -w 4 -O hashes.txt -r dive.rule
运行过程中,你可以观察Hashcat中不断出现的各种候选密码。
6、接下来,使用随机生成的200,000条规则,花8个小时执行Purple Rain攻击:
shuf test_dict.txt | pp64.bin | hashcat -a 0 -m 0 -w 4 -O hashes.txt -g 200000
通过8小时的运行时间,你可以了解到这种方法不需要过多人工参与,可以持续、自主完成攻击过程。你会看到你根本无法想到的一些密码组合。请记住一点:不确定的输出结果是你最好的朋友。
在破解过程中,差之毫厘则失之千里,我们不能放弃丝毫的可能性。
八、总结
希望这种攻击方法对你有所帮助,并能加入你的知识储备笔记本中。对于刚接触密码破解的新手来说,这种攻击方法也非常简单方便,运行起来无需人工参与,可以取得较好的效果。你可以翻阅一下Hash Crack v2.0: Password Cracking Manual这个手册,从中你可以找到许多类似的攻击方法以及其他有用的参考资料。请记住一点:在破解过程中,随机性可以拓宽你的视野,带来新的可能性以及原先无法预测的结果。
另外,记得关注即将发布的新型破解平台:Portable Cracking Rig(如下图所示),只需1,000美元你就可以在渗透测试中用到它的强大功能。这个价格非常实惠,毕竟没有多少人能搭建价值15,000美元、使用8个GPU的破解阵列。请关注我们的Twitter@netmux,了解后续更新及相关文章。