HashCat使用浅记
前言
HashCat支持对多种hash散列算法等和密码进行破解。本文主要记录了HashCat的入门级使用。
电脑配置如下:
名称 | 型号/规格 |
---|---|
CPU | Intel i9-9980HK |
RAM | 32GB |
GPU | Nvidia GeForce RTX 3060 Ti (OpenCL 3.0 CUDA 12.2.138) |
OS | Windows 11 |
环境配置
在系统中配置HashCat十分简单,对于Windows来说,在HashCat网站下载HashCat的二进制文件即可,建议将这些文件拷贝到一个较短的目录,例如C:\hashcat
。
在Windows上,直接将C:\hashcat
添加到系统环境变量可能无法直接调用hashcat,会收到类似:
PS C:\Users\> hashcat -I
hashcat (v6.2.6) starting in backend information mode
./OpenCL/: No such file or directory
的问题,因此最好从hashcat的目录使用hashcat命令。
对于Nvidia显卡,需要下载CUDA (9.0 or later)和440.64版本以上的GPU驱动程序。
基础使用
新版本的hashcat默认使用GPU进行攻击(attack),但建议加上-D 2选项,该选项指定hashcat使用二号设备(GPU)。
对于更多命令的使用方法,请执行hashcat -help
进行查看。
这是一个例子:
hashcat -a 3 -m 0 5ace0b2afd7e22aa7533421def0e7f9c -O -D 2 ?u?u?u?d?d?d?d?d
在这条命令中,-a 3
指定hashcat的攻击模式(attack mode)为3,在hashcat中,-a 0
代表字典攻击,-a 1
代表组合攻击;-a 3
代表掩码攻击。
-m 0
则指定了Hash-Mode的类型,在hashcat中,0
代表Hash类型是MD5,受限于篇幅,所有的哈希类型对照表可以从Generic hash types查询。-a
和-m
是hashcat中必不可少的两个参数-o
指定破解成功后的hash及所对应的明文密码的存放位置,可以用它把破解成功的hash写到指定的文件中。
?u?u?u?d?d?d?d?d
则是hashcat中的Built-in charsets,用它可以帮助hashcat更快地攻击,这一部分是可选的,但如果去掉这一部分再执行上文的例子,攻击时间将变长很多。
## Built-in charsets
?l = abcdefghijklmnopqrstuvwxyz
?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
?d = 0123456789
?h = 0123456789abcdef
?H = 0123456789ABCDEF
?s = «space»!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
?a = ?l?u?d?s
?b = 0x00 - 0xff
hashcat攻击成功完成后,-O
会将解密出的hash保存在profile内,在这串命令后添加--show
即可输出结果
PS C:\hashcat> hashcat -a 3 -m 0 5ace0b2afd7e22aa7533421def0e7f9c -O -D 2 ?u?u?u?d?d?d?d?d --show
5ace0b2afd7e22aa7533421def0e7f9c:ABC12345
其他
在执行hashcat攻击命令时,可能会输出以下日志:
CUDA API (CUDA 12.2)
====================
* Device #1: NVIDIA GeForce RTX 3060 Ti, 7142/8191 MB, 38MCU
OpenCL API (OpenCL 3.0 CUDA 12.2.138) - Platform #1 [NVIDIA Corporation]
========================================================================
* Device #2: NVIDIA GeForce RTX 3060 Ti, skipped
在这种情况下,hashcat实际上已经使用Device #1,因此它跳过了Device #2,无需担心。