Hashcat作为世界上最快的密码破译软件,其破译的密码类型多,正确率高,是非常实用的密码破译工具。Hashcat可以利用GPU进行计算,GPU速度比CPU要快,这也是hashcat速度快的原因之一。
前面几篇文章中我们已经讲过了hashcat的几种攻击模式,这些攻击模式是我们利用hashcat破解密码的基础。密码破译的成功率主要取决于我们使用的字典和采取的攻击模式组合。Hashcat中的密码破译,其实是通过碰撞比较,匹配出相应的明文。所以在密码破译过程中,使用的字典就显得尤其重要。一个好的字典可以轻松破译出几十万甚至上百万密码口令。但是字典不是万能的,所以才需要结合规则模式,掩码模式等攻击模式,设计合适的密码爆破命令。一般来说,越符合人类设计口令习惯的爆破命令,破译出的口令明文越多。
之前我们介绍hashcat参数的使用,都是通过执行命令行的方式。但是,在实际工作中,haschat脚本比命令行更加高效便捷。因为实际爆破密码的过程中,很可能出现一条命令运行数小时甚至数天的情况,这个时候,我们很难时时刻刻关注爆破命令的运行情况。如果每条命令都要手动敲入,不只需要我们时刻关注命令的执行情况,还要记住之前运行过的命令。实在是太麻烦了!
密码爆破使用的脚本文件,会把许多密码爆破的命令集中到一个文件中。这样,一条命令执行结束,就会自动执行下一条命令。为我们省去很多麻烦。
如何设计爆破命令:
密码破译命令需要符合人类设计密码口令的习惯。例如,口令都有长度限制的,过长的口令很难进行记忆。
以下是几条大家设置口令时的常见思维:
1.最常用的口令长度是在6至10位,通常会包含大小写,数字和特殊符号;
2.用特定的年月日作为密码;
3.用姓+名的全拼做密码;
4.用个人身份证号作密码
以上几条都可以作为设计密码爆破的切入点,根据这些密码的特征设计爆破用的命令。

在密码破译的过程中,我们还可以根据实际情况,调整脚本内容,这也是脚本方便的地方。
常用参数:
实际进行hashcat爆破时,可以通过几个参数,对爆破命令进行优化。这些优化虽然不能增加口令破译的成功率,但可以减少意外状况对执行结果的影响。
--remove:从密码文件中移除已经破译的密码,防止后面的命令进行无意义的重复工作。
--gpu-temp-disable:进制系统读取GPU的温度和风扇速度。
--gpu-temp-abort=NUM:当GPU温度到达x时,停止计算。防止烧坏显卡。
--session:定义导出的session文件名。程序终端中断后,可以通过session文件恢复运行。
-d/--opencl-devices:指定进行密码破译的GPU。我们可以指定用服务器中的一块或几块GPU进行计算。
利用hashcat破译密码
下面我们以100万条MD5值为样本,利用hashcat进行破译。在密码破译过程中,我们依次执行hashcat的几种攻击模式,看看hashcat到底可以破译出多少条密码。
字典模式:
hashcat -a 0 -m 0 md5.hash dic --remove --potfile-disable -o out --gpu-temp-abort=97
爆破样本:100万条MD5
字典攻击用时:30分钟
破译百分比:55%
第一轮的字典模式直接破译出55万条数据,所以说,字典真的太重要了!

爆破模式
hashcat -a 3 -m 0 md5.hash --remove --potfile-disable -o out ?a?a?a?a?a?a --increment --increment-min=4 --increment-max=6 --gpu-temp-abort=97
爆破样本:45万条
爆破模式用时:10分钟
破译百分比:0.26%
通过对4-6位全字符集的遍历破译出了1165条MD5值。

规则模式
hashcat -a 0 -m 0 md5.hash --remove --potfile-disable -o out -r rules/best64.rule --gpu-temp-abort=97
第一个规则文件
样本数量:45万条
单条规则攻击用时:2小时
破译百分比:6%
仅依靠一个规则文件破译出将近3万条口令,但是明显感受到密码破译的速度下降很多。容易爆破的密码都破译的差不多了,省下的就是要依靠大量的时间一点一点的碰了。

第二个规则文件
样本数据:42万
规则模式攻击用时:已爆破1天,预计爆破10天
由于这次爆破只用了一块GPU,所以密码爆破速度很慢。这个规则文件运行完最起码也要十几天的时间,第一天已经破译出9%的口令,接近4万条。该规则运行完,估计可以破译出15%左右的口令。

前面几条命令已经破译了很大一部分密码,后面密码破译的速度就会慢慢下降,但是这并不影响hashcat继续破译密码。仅通过以上4条命令我们已经破译出超过60%的口令。
以本次试验为例,将hashcat破译脚本中的几十条命令依次执行一遍,数条命令的效果累加起来,完全可以破译出90%以上的hash值。本次使用的数据量比较小,设备也比较简陋,完成实验的时间会比较长。但是单就这种方法而言,破译数千万甚至上亿的数据,是完全合理的。这样看来,hashcat真的是一个非常高效的工具。
*本文作者:EVA。本文属丁牛网安实验室原创出品,转载请注明来自FreeBuf.COM。