HPC应用&密码破解工具hashcat详细安装使用教程

目录

hashcat简介

源代码编译安装

运行示例

性能测试


hashcat简介

hashcat号称是世界上最快的密码破解工具。此前曾有过hashcat-lagacy(仅支持CPU)、cudahashcat以及oclhashcat,本文所述的hashcat是现在已经作为开源软件在github上公开的由OpenCL实现的hashcat,当前最新版本为v6.1.1。支持多种操作系统(Linux, Windows 和 macOS),多种OpenCL运行时库(AMD, Apple, Intel, Nvidia, POCL, ROCM)以及多种计算设备(GPU、CPU、APU)。支持多种破解方法以及超过300种hash加密算法。release版本的二进制文件以及源代码可以在hashcat - advanced password recovery 下载,也可以访问GitHub - hashcat/hashcat: World's fastest and most advanced password recovery utility下载最新的开发版本。

源代码编译安装

每个版本的hashcat对OpenCL运行时库的版本有具体的要求,最新的v6.1.1版本要求如下:

platformOpenCL runtime requirement
AMD GPUs on Linux"RadeonOpenCompute (ROCm)" Software Platform (3.1 or later)
AMD GPUs on Windows"AMD Radeon Adrenalin 2020 Edition" (20.2.2 or later)
Intel CPUs"OpenCL Runtime for Intel Core and Intel Xeon Processors" (16.1.1 or later)
NVIDIA GPUs"NVIDIA Driver" (440.64 or later) and "CUDA Toolkit" (9.0 or later)

本文在昆山系统默认的rocm 3.9.1环境下进行安装测试。软件包下载后通过如下命令解压:

tar -zxvf hashcat-6.1.1.tar.gz

然后进入hashcat-6.1.1目录,直接执行make,即可完成编译,编译全部完成后当前目录生成了hashcat可执行文件以及一些example脚本及相关文件。在计算节点直接运行example脚本,或通过调度系统提交任务,即可直接运行程序。

运行示例

hashcat支持非常多的功能,因此也有大量的命令参数可以选择,这里仅列出部分常用选项,详细的列表可以在hashcat顶层目录执行如下命令查看:

./hashcat --help

常用参数:

-a 指定要使用的破解模式,其值参考后面对参数。“-a 0”字典攻击,“-a 1”
组合攻击;“-a 3”掩码攻击。

-m 指定要破解的hash类型,如果不指定类型,则默认是MD5

-o
指定破解成功后的hash及所对应的明文密码的存放位置,可以用它把破解成功的hash写到指定的文件中

--force 忽略破解过程中的警告信息,跑单条hash可能需要加上此选项

--show 显示已经破解的hash及该hash所对应的明文

--increment
启用增量破解模式,可以利用此模式让hashcat在指定的密码长度范围内执行破解过程

--increment-min 密码最小长度,后面直接等于一个整数即可,配置increment模式一起使用

--increment-max 密码最大长度,同上

--outfile-format 指定破解结果的输出格式id,默认是3

--username 忽略hash文件中的指定的用户名,在破解linux系统用户密码hash可能会用到

--remove 删除已被破解成功的hash

-r 使用自定义破解规则

破解模式:

0 | Straight(字段破解)

1 | Combination(组合破解)

3 | Brute-force(掩码暴力破解)

6 | Hybrid Wordlist + Mask(字典+掩码破解)

7 | Hybrid Mask + Wordlist(掩码+字典破解)

输出格式:

1 = hash[:salt]

2 = plain

3 = hash[:salt]:plain

4 = hex_plain

5 = hash[:salt]:hex_plain

6 = plain:hex_plain

7 = hash[:salt]:plain:hex_plain

8 = crackpos

9 = hash[:salt]:crackpos

10 = plain:crackpos

11 = hash[:salt]:plain:crackpos

12 = hex_plain:crackpos

13 = hash[:salt]:hex_plain:crackpos

14 = plain:hex_plain:crackpos

15 = hash[:salt]:plain:hex_plain:crackpos

hash类型(部分):

900 | MD4

0 | MD5

100 | SHA1

1300 | SHA2-224

1400 | SHA2-256

10800 | SHA2-384

1700 | SHA2-512

17300 | SHA3-224

17400 | SHA3-256

17500 | SHA3-384

17600 | SHA3-512

6000 | RIPEMD-160

600 | BLAKE2b-512

掩码设置:

l | abcdefghijklmnopqrstuvwxyz 纯小写字母

u | ABCDEFGHIJKLMNOPQRSTUVWXYZ 纯大写字母

d | 0123456789 纯数字

h | 0123456789abcdef 常见小写字母和数字

H | 0123456789ABCDEF 常见大写字母和数字

s | !"\#\$%&'()\*+,-./:;\<=\>?@[\\]\^_\`{|}\~ 特殊字符

a | ?l?u?d?s 键盘上所有可见的字符

b | 0x00 - 0xff 可能是用来匹配像空格这种密码的

掩码设置示例:

八位数字密码:?d?d?d?d?d?d?d?d

八位未知密码:?a?a?a?a?a?a?a?a

前四位为大写字母,后面四位为数字:?u?u?u?u?d?d?d?d

前四位为数字或者是小写字母,后四位为大写字母或者数字:?h?h?h?h?H?H?H?H

前三个字符未知,中间为admin,后三位未知:?a?a?aadmin?a?a?a

6-8位数字密码:--increment --increment-min 6 --increment-max 8 ?l?l?l?l?l?l?l?l

6-8位数字+小写字母密码:--increment --increment-min 6 --increment-max 8 ?h?h?h?h?h?h?h?h

hashcat还支持用户自定义最多4组字符集:

--custom-charset1 [chars]等价于 -1

--custom-charset2 [chars]等价于 -2

--custom-charset3 [chars]等价于 -3

--custom-charset4 [chars]等价于 -4

在掩码中用?1、?2、?3、?4来表示

例如--custom-charsset1 ?u?d,那么在设置掩码时,?1就代表该位是一个大写字母或数字。

使用如下命令生成一个MD5的hash串:

echo -n aci92Q | md5sum

aci92Q是随意输入的字符串,也就是我们的密码,通过md5sum工具得到如下字符串:

35e0ab25e7485a30a389aa760bd1f0a3

然后在hashcat顶层目录,执行如下命令尝试破解该密码:

./hashcat -a 3 -m 0 35e0ab25e7485a30a389aa760bd1f0a3 ?a?a?a?a?a?a?a?a
--increment -O

其中 -a 3表示采用掩码暴力破解方式,-m 0表示hash类型为md5,?a?a?a?a?a?a?a?a表示密码最多有8位,每一位都可能是键盘上的任何字符。如果这里设置的位数少于密码的实际位数,将无法得到正确的破解结果。--increement 表示密码可能的位数不确定,不是一个固定的数,-O表示采用优化的核函数。

经过一段时间的运行,得到如下结果,表示密码已被破解:

可见得到的结果aci92Q就是最初设定的密码,Status给出了本次破解尝试的状态。hashcat自动使用一个节点的全部4张GPU卡进行破解尝试,Speed分别给出了每张卡的速度以及总速度。

性能测试

hashcat自带内置benchmark选项,可以方便地以单条hash的暴力破解模式进行性能测试:

./hashcat -m 0 -b

由于P100节点驱动版本较低,无法安装最新的v6.1.1版本,所以安装了次新的v5.1.0版本,并与昆山节点进行对比,结果如下:

platformdevicespeed MH/s
NVIDIATesla P100-SXM2-16GB, 4070/16280 MB allocatable, 56MCU27235.5
NVIDIATesla P100-SXM2-16GB, 4070/16280 MB allocatable, 56MCU28238.1
NVIDIATesla P100-SXM2-16GB, 4070/16280 MB allocatable, 56MCU28249.7
NVIDIATesla P100-SXM2-16GB, 4070/16280 MB allocatable, 56MCU28247.8
DCUgfx906+sram-ecc, 16256/16368 MB (13912 MB allocatable), 64MCU19696.6
DCUgfx906+sram-ecc, 16256/16368 MB (13912 MB allocatable), 64MCU19566.2
DCUgfx906+sram-ecc, 16256/16368 MB (13912 MB allocatable), 64MCU19397.7
DCUgfx906+sram-ecc, 16256/16368 MB (13912 MB allocatable), 64MCU20191.8

可见DCU与P100大约有30%的性能差距。

hashcat本身不支持多节点运行,如需多节点运行,需要使用第三方工具,例如:

Hashtopolis: GitHub - hashtopolis/server: Hashtopolis - distributed password cracking with Hashcat

Disthc: GitHub - unix-ninja/disthc: disthc

本文没有尝试上述工具。

  • 18
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术瘾君子1573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值