windows下hashcat利用GPU显卡性能破解密码
由于一般密码破解工具的破解速度实在是太慢,而且支持的密码破解协议也不多,暴力破解的话,有的密码1年时间也破不出来,用字典跑的话必须要明文密码在字典里才行,而且密码字典太大的话,也很浪费时间,跑不出来也是很常见的事情,下面推荐一款世界上破解密码速度最快的工具,hashcat,hashcat github地址,选择最新版的下载即可。
hashcat支持多种计算核心:
GPU
CPU
APU
DSP
FPGA
Coprocessor
GPU的驱动要求
AMD GPUs on Linux require “RadeonOpenCompute (ROCm)” Software Platform (1.6.180 or later)
AMD GPUs on Windows require “AMD Radeon Software Crimson Edition” (15.12 or later)
Intel CPUs require “OpenCL Runtime for Intel Core and Intel Xeon Processors” (16.1.1 or later)
Intel GPUs on Linux require “OpenCL 2.0 GPU Driver Package for Linux” (2.0 or later)
Intel GPUs on Windows require “OpenCL Driver for Intel Iris and Intel HD Graphics”
NVIDIA GPUs require “NVIDIA Driver” (367.x or later)
第一步:下载官方NVIDA驱动程序
到NVIDA官网下载与自己电脑显卡型号相对应的显卡驱动程序如图所示,然后根据提示一步步安装即可。
安装完成后,重启电脑即可。
(NAVIDA的显卡只需要安装官方驱动即可,已经内含HASHCAT破解密码所需的GPU运算工具。记得使用上图官方下载的显卡驱动,不要使用windows自带的显卡驱动。)
第二步:测试hashcat是否能利用gpu运算速度来破解密码
命令:
1 | hashcat64.exe -b |
基准测试hashcat破解各种密码散列的速度。
1 | hashcat64.exe -I |
检查设置如果已正确安装了GPU能够看到它并会列出其属性和使用的驱动程序信息。
破解examples:
第三步:hashcat详细命令及使用
普通
1 | -m, —hash-type=NUM 哈希类别,其NUM值参考其帮助信息下面的哈希类别值,其值为数字。如果不指定m值则默认指md5,例如-m 1800是sha512 Linux加密。 |
基准测试
1 | -b, –benchmark 测试计算机破解速度和显示硬件相关信息 |
杂项
1 | –hex-salt salt值是用十六进制给出的 |
文件
1 | -o, –outfile=FILE 定义哈希文件恢复输出文件 |
资源
1 | -c, –segment-size=NUM 字典文件缓存大小(M) |
规则
1 | -r, –rules-file=FILE 使用规则文件: -r 1.rule, |
自定义字符集
1 | -1, –custom-charset1=CS 用户定义的字符集 |
攻击模式
1 | –toggle-min=NUM 在字典中字母的最小值 |
参考
1 | 1 = hash[:salt] |
调试模式输出文件 (for hybrid mode only, by using rules):
1 | 1 = save finding rule |
内置的字符集:
1 | ?l = abcdefghijklmnopqrstuvwxyz 代表小写字母 |
攻击模式
1 | 0 = Straight (字典破解) |
哈希类型
有关哈希具体值示例可以参考网址
1 | 0 = MD5 |
第四步:hashcat破解密码规则示例
(1)字典攻击
1 | -a 0 password.lst |
(2)1到8为数字掩码攻击
1 | -a 3 --increment --increment-min 1--increment-max 8 ?d?d?d?d?d?d?d?d –O |
?d代表数字,可以换成小写字母?l,大写字母?u,特殊字符?s,大小写字母+特殊字符?a,–O表示最优化破解模式,可以加该参数,也可以不加该参数。
(3)8为数字攻击
1 | -a 3 ?d?d?d?d?d?d?d?d |
同理可以根据位数设置为字母大写、小写、特殊字符等模式。
(4)自定义字符
现在纯数字或者纯字母的密码是比较少见的,根据密码专家对泄漏密码的分析,90%的个人密码是字母和数字的组合,可以是自定义字符了来进行暴力破解,Hashcat支持4个自定义字符集,分别是 -1 -2 -3 -4。定义时只需要这样-2 ?l?d ,然后就可以在后面指定?2,?2表示小写字母和数字。这时候要破解一个8位混合的小写字母加数字:
1 | Hashcat.exe -a 3 –force -2 ?l?d hassh值或者hash文件 ?2?2?2?2?2?2?2?2 |
例如破解dz小写字母+数字混合8位密码破解:
1 | Hashcat -m 2611 -a 3 -2 ?l?d dz.hash ?2?2?2?2?2?2?2?2 |
(5)字典+掩码暴力破解
Hashcat还支持一种字典加暴力的破解方法,就是在字典前后再加上暴力的字符序列,比如在字典后面加上3为数字,这种密码是很常见的。使用第六种攻击模式:
1 | a-6 (Hybrid dict + mask) |
如果是在字典前面加则使用第7中攻击模式也即( a-7 = Hybridmask + dict),下面对字典文件加数字123进行破解:
1 | H.exe -a 6 ffe1cb31eb084cd7a8dd1228c23617c8 password.lst ?d?d?d |
假如ffe1cb31eb084cd7a8dd1228c23617c8的密码为password123,则只要password.lst包含123即可
(6)掩码+字典暴力破解
1 | H.exe -a 7 ffe1cb31eb084cd7a8dd1228c23617c8 password.lst ?d?d?d |
假如ffe1cb31eb084cd7a8dd1228c23617c8的密码为123password,则只要password.lst包含password即可。
(7)大小写转换攻击,对password.lst中的单词进行大小写转换攻击
1 | H.exe-a 2 ffe1cb31eb084cd7a8dd1228c23617c8 password.lst |
EXAMPLES
(1)8位数字破解
1 | Hashcat64-m 9700 hash -a 3 ?d?d?d?d?d?d?d?d -w 3 –O |
(2)1-8位数字破解
1 | Hashcat-m 9700 hash -a 3 --increment --increment-min 1--increment-max 8 ?d?d?d?d?d?d?d?d |
(3)1到8位小写字母破解
1 | Hashcat-m 9700 hash -a 3 --increment --increment-min 1--increment-max 8 ?l?l?l?l?l?l?l?l |
(4)8位小写字母破解
1 | Hashcat-m 9700 hash -a 3 ?l?l?l?l?l?l?l?l -w 3 –O |
(5)1-8位大写字母破解
1 | Hashcat-m 9700 hash -a 3 --increment --increment-min 1--increment-max 8 ?u?u?u?u?u?u?u?u |
(6)8位大写字母破解
1 | Hashcat-m 9700 hash -a 3 ?u?u?u?u?u?u?u?u -w 3 –O |
(7)5位小写+ 大写+数字+特殊字符破解
1 | Hashcat-m 9700 hash -a 3 ?b?b?b?b?b -w 3 |
(8)使用字典进行破解
使用password.lst字典进行暴力破解,-w 3参数是指定电力消耗
1 | Hashcat -m 9700 -a 0 -w 3 hash password.lst |
在执行破解成功后,hashcat会自动终止破解,并显示破解状态为Cracked,Recvoered中也会显示是否破解成功.
破解known_hosts中的IP地址
经过研究发现known_hosts中会对连接的IP地址进行HMAC SHA1加密,可以通过hexhosts攻击进行转换,然后通过hashcat进行暴力破解,其密码类型为160(HMAC-SHA1 (key = $salt))。
(1)计算HMAC SHA1值
1 | gitclone https://github.com/persona5/hexhosts.git |
获取known_hosts的HMAC SHA1加密值:
注意:known_hosts值一定要正确,可以将known_hosts文件复制到hexhosts文件目录。
(2)组合攻击暴力破解
1 | hashcat-a 1 -m 160 known_hosts.hash ips_left.txt ips_right.txt --hex-salt |
组合攻击是将ips_left.txt和ips_right.txt进行组合,形成完整的IP地址进行暴力破解。
ips_left.txt和ips_right.txt文件可以用以下代码进行生成:
1 | ip-gen.sh: |
(3)使用掩码进行攻击
1 | hashcat -a 3 -m 160 known_hosts.hash ipv4.hcmask--hex-salt |
ipv4.hcmask文件内容可在此站下载。
破解md5加密的IP地址
在CDN等网络或者配置中往往会对IP地址进行MD5加密,由于其位数3×4+3(xxx.xxx.xxx.xxx)=17位,通过正常的密码破解其时间耗费非常长,但通过分析其IP地址的规律,发现其地址XXX均为数字,因此可以通过hashcat的组合和掩码进行攻击。
1 | hashcat-a 1 –m 0 ip.md5.txt ips_left.txt ips_right.txt |
另外在F5的cookie中会对其IP地址进行加密,可以参考的破解代码如下:
1 | import struct |
破解技巧总结
在使用GPU模式进行破解时,可以使用-O参数自动进行优化
暴力破解一条md5值
(1)9位数字破解
1 | Hashcat64.exe-a 3 --force d98d28ca88f9966cb3aaefebbfc8196f ?d?d?d?d?d?d?d?d?d |
单独破解一条md5值需要加force参数
(2)9位字母破解
1 | Hashcat64.exe-a 3 --force d98d28ca88f9966cb3aaefebbfc8196f ?l?l?l?l?l?l?l?l?l |
破解带盐discuz密码
(1)数字破解
7位数字,7秒时间破解完成任务。
1 | Hashcat64.exe-a 3 --force -m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463 ?d?d?d?d?d?d?d |
8位数字破解,9秒时间破解完成任务。:
1 | Hashcat64.exe-a 3 --force -m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463 ?d?d?d?d?d?d?d?d |
9位数字破解,9秒时间破解完成任务。
1 | Hashcat64.exe-a 3 --force -m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463 ?d?d?d?d?d?d?d?d?d |
字母破解
(1)6位小写字母
1 | Hashcat64.exe-a 3 --force -m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463 ?l?l?l?l?l?l |
(2)7位小写字母
1 | Hashcat64.exe-a 3 --force -m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463 ?l?l?l?l?l?l?l |
(3)8位小写字母
1 | Hashcat64.exe-a 3 --force -m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463 ?l?l?l?l?l?l?l?l 9分钟左右完成破解任务 |
(4)9位小写字母
1 | Hashcat64.exe-a 3 --force -m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463 ?l?l?l?l?l?l?l?l?l -O |
字母加数字
1 | Hashcat64.exe-a 3 --force -m 2611 -2 ?d?l ffe1cb31eb084cd7a8dd1228c23617c8:f56463?2?2?2?2?2?2?2 |
(3)7位大写字母
1 | Hashcat64.exe-a 3 –force –m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463 ?u?u?u?u?u?u?u |
(4)6到8位数字破解
1 | Hashcat64.exe-a 3 –force –m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463--increment --increment-min 6 --increment-max 8 ?l?l?l?l?l?l?l?l |
自定义破解
(1)使用数字加字母混合6位进行破解
1 | Hashcat64.exe-a 3 --force -m 2611 -2 ?d?l ffe1cb31eb084cd7a8dd1228c23617c8:f56463?2?2?2?2?2?2 -O |
(2)使用数字加字母混合7位进行破解,破解时间4分16秒
1 | Hashcat64.exe-a 3 --force -m 2611 -2 ?d?l ffe1cb31eb084cd7a8dd1228c23617c8:f56463?2?2?2?2?2?2?2 –O |
(3)使用数字加字母混合8位进行破解
1 | Hashcat64.exe-a 3 --force -m 2611 -2 ?d?l ffe1cb31eb084cd7a8dd1228c23617c8:f56463?2?2?2?2?2?2?2?2 -O |
字典破解模式
1 | Hashcat64.exe-a 0 --force -m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463 password.lst |
使用字典文件夹下的字典进行破解:
1 | Hashcat32.exe-m 300 mysqlhashes.txt –remove -o mysql-cracked.txt ..\dictionaries\* |
会话保存及恢复破解
(1)使用mask文件规则来破解密码
1 | hashcat-m 2611 -a 3 --session mydz dz.hash masks/rockyou-7-2592000.hcmask |
(2)恢复会话
1 | hashcat--session mydz --restore |
掩码破解
mask规则文件位于masks下,例如D:\PentestBox\hashcat-4.1.0\masks,执行破解设置为:
1 | masks/8char-1l-1u-1d-1s-compliant.hcmask |
运用规则文件进行破解
1 | Hashcat -m 300 mysqlhashes.txt–remove -o mysql-cracked.txt ..\dictionaries\* -r rules\best64.rule |
hashcat参数优化
考虑到hashcat的破解速度以及资源的分配,我们可以对一些参数进行配置
1.Workload tuning 负载调优。
该参数支持的值有1,8,40,80,160
1 | --gpu-accel 160 可以让GPU发挥最大性能。 |
2.Gpu loops 负载微调
该参数支持的值的范围是8-1024(有些算法只支持到1000)。
1 | --gpu-loops 1024 可以让GPU发挥最大性能。 |
3.Segment size 字典缓存大小
该参数是设置内存缓存的大小,作用是将字典放入内存缓存以加快字典破解速度,默认为32MB,可以根据自身内存情况进行设置,当然是越大越块了。
1 | --segment-size 512 可以提高大字典破解的速度。 |
LAST:密码设置建议
使用更长的字符串使用更大的字符集字母、数字、符号
不要使用任何可能与你有关的字符作为密码或密码的一部分使用