GPU破解神器Hashcat使用简介
0x00 背景
目前GPU的速度越来越快,使用GPU超强的运算速度进行暴力密码破解也大大提高了成功率,曾经看到老外用26块显卡组成的分布式破解神器让我羡慕不已。要说目前最好的GPU破解HASH的软件,非HashCat莫属了。下面我就为大家具体介绍一下HashCat系列软件。
0x01 所需硬件及系统平台
HashCat系列软件在硬件上支持使用CPU、NVIDIA GPU、ATI GPU来进行密码破解。在操作系统上支持Windows、Linux平台,并且需要安装官方指定版本的显卡驱动程序,如果驱动程序版本不对,可能导致程序无法运行。
如果要搭建多GPU破解平台的话,最好是使用Linux系统来运行HashCat系列软件,因为在windows下,系统最多只能识别4张显卡。并且,Linux下的VisualCL技术(关于如何搭建VisualCL环境,请参考官方文档),可以轻松的将几台机器连接起来,进行分布式破解作业。
在破解速度上,ATI GPU破解速度最快,使用单张HD7970破解MD5可达到9000M/s的速度,其次为NVIDIA显卡,同等级显卡GTX690破解速度大约为ATI显卡的三分之一,速度最慢的是使用CPU进行破解。
0x02 HashCat软件简介
HashCat主要分为三个版本:Hashcat、oclHashcat-plus、oclHashcat-lite。这三个版本的主要区别是:HashCat只支持CPU破解。oclHashcat-plus支持使用GPU破解多个HASH,并且支持的算法高达77种。oclHashcat-lite只支持使用GPU对单个HASH进行破解,支持的HASH种类仅有32种,但是对算法进行了优化,可以达到GPU破解的最高速度。如果只有单个密文进行破解的话,推荐使用oclHashcat-lite。
目前最新的软件版本为HashCat v0.46、oclHashcat-plus v0.15、oclHashcat-lite v0.15。但是经过一段时间的测试,发现有时候版本越高,速度越慢。所以推荐在使用没有问题的情况下,无需升级到最新版本。根据测试,oclHashcat-lite v0.10的运算速度比v0.15的运算速度快20%,所以单个密文破解还是推荐使用oclHashcat-lite v0.10。
0x03 HashCat软件使用
HashCat系列软件拥有十分灵活的破解方式,可以满足绝大多数的破解需求,下面我就为大家简单介绍一下。
- 指定HASH类型
在HashCat中--hash-type ?参数可以指定要破解的HASH类型,运行hashcat主程序加上--help参数,在* Generic hash types:中可以看到各种HASH类型的代号,如图所示:
0 Straight(字典破解) 1 Combination(组合破解) 3 Brute-force(掩码暴力破解) 6 Hybrid dict + mask(混合字典+掩码) 7 Hybrid mask + dict(混合掩码+字典)
不同版本的HashCat所支持的hash类型有所不同,如果没有指定--hash-type参数,那么程序默认为MD5类型。
- 指定破解模式
在HashCat中--attack-mode ?参数可以可以指定破解模式,软件一共支持5种破解模式,分别为
oclHashcat-plus64.exe --hash-type 0 --attack-mode 0 {HASH文件} [字典1] [字典2] [字典3]…
oclHashcat-plus64.exe --hash-type 0 --attack-mode 0 d:md5.txt d:dict1.txt d:dict2.txt
oclHashcat-plus64.exe --hash-type 100 --attack-mode 3 {HASH文件} [掩码]
下面为大家介绍两个最常用的破解方式:字典破解和掩码暴力破解。
使用字典破解MD5:
如:字典破解由于受到磁盘和内存速度的影响,速度无法达到GPU的最大运算速度,基本上一个5GB的字典,对于MD5破解来说10分钟内可以跑完。
使用掩码暴力破解SHA1:
--custom-charset1 [chars] --custom-charset2 [chars] --custom-charset3 [chars] --custom-charset4 [chars]
{掩码的设置}
对于掩码,这边需要稍微做一个说明。Hashcat默认的掩码一共有9种,如图所示:
?l表示a-z,?u表示A-Z,?d表示0-9,?a表示键盘上所有的特殊字符,?s表示键盘上所有的可见字符,?h表示8bit 0xc0-0xff的十六进制,?D表示8bit的德语字符,?F表示8bit的法语字符,?R表示8bit的俄语字符。
那么有同学可能会问了,如果我要用掩码表示小写+数字怎么办呢?这就需要用到自定义字符集这个参数了。软件支持用户最多定义4组字符集,分别用
-- custom-charset1 ?l?d
--custom-charset2 abcd1234
--custom-charset1 ?l?d
来表示,在掩码中用?1、?2、?3、?4来表示。
比如说我要设置自定义字符集1为小写+数字,那么就加上
如果要设置自定义字符集2为abcd1234,那么就加上
如果要破解8位的小写+数字,那么需要设置自定义字符集1为
{7321