hashcat 暴力破解详细教程(附常见案例)

1. hashcat 简介

hashcat是一个使用C语言编写的密码破解工具,支持暴力破解多种哈希算法,是世界上最快最先进的爆破工具,可以调用CPU、GPU、DSP等多种硬件设备进行密码破解。

注意,hashcat是离线爆破工具,无法破解在线密码。

截至2024年11月,hashcat最后一次更新是2022年9月,最新版本是v6.2.6。

官网地址: https://hashcat.net
开源地址:https://github.com/hashcat/hashcat
beta版本:https://hashcat.net/beta/
Kali介绍页:https://www.kali.org/tools/hashcat/

2. 安装 hashcat

2.1. Linux

2.1.1. RHEL/CentOS

1
2
3
4
5
6
wget https://hashcat.net/files/hashcat-6.2.6.7z  # 下载hashcat预编译二进制版本
yum install -y epel-release # 安装epel源
yum install p7zip # 从epel源安装p7zip
7za x hashcat-6.2.6.7z # 解压hashcat
cd hashcat-6.2.6
./hashcat.bin -V # 检查版本

如果p7zip下不动,可以尝试更换国内epel镜像源: https://www.cnblogs.com/zenghi-home/p/9965448.html

2.1.2. Debian/Ubuntu

1
2
apt install -y hashcat  # 安装hashcat
hashcat -V # 检查版本

apt 安装hashcat时还会安装将近1GB的依赖包(包括驱动在内),如果安装过于缓慢,可以尝试更换国内镜像源:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

2.1.3. Windows

下载hashcat的Windows版本,解压后在终端调用hashcat.exe即可:https://hashcat.net/files/hashcat-6.2.6.7z

alt text

2.2. 驱动

安装完hashcat后,可以使用hashcat的-I参数或者--backend-info参数查看支持的驱动:

alt text

Linux软件包仓库安装的hashcat默认会安装驱动依赖,而通过官网下载的hashcat通常需要手动安装驱动。驱动未安装时的输出如下:

alt text

2.2.1. Intel

RHEL/CentOS系的Linux下安装Intel驱动:

1
2
3
4
5
wget https://registrationcenter-download.intel.com/akdlm/irc_nas/vcp/15532/l_opencl_p_18.1.0.015.tgz  # 下载驱动包
tar -xvf l_opencl_p_18.1.0.015.tgz # 解压驱动包
cd l_opencl_p_18.1.0.015 # 进入驱动包目录
./install # 安装驱动,安装过程中会有各种确认,按照提示操作即可
./hashcat.bin -I # 驱动安装完成后无需重启,直接调用hashcat -I即可看到驱动信息

Windows下安装Intel驱动直接到Intel官网或者OEM官网搜索并下载安装即可:https://www.intel.cn/content/www/cn/zh/download-center/home.html

alt text

2.2.2. AMD

使用AMD显卡的Linux用户可以参考AMD的官方文档进行驱动安装:https://rocm.docs.amd.com/en/docs-5.0.2/deploy/linux/os-native/install.html

Windows用户可以参考AMD的官方文档进行驱动安装:https://rocm.docs.amd.com/en/docs-5.0.2/deploy/windows/install.html

alt text

2.2.3. NVIDIA

Linux用户可以参考以下文章安装NVIDIA驱动以及CUDA:

https://cloud.tencent.com/developer/article/2054869

https://cloud.tencent.com/developer/article/2063866

Windows用户可以通过NVIDIA GeForce Experience安装GPU驱动,CUDA需要到NVIDIA官网下载安装:https://developer.nvidia.cn/cuda-toolkit

alt text

3. hashcat 使用

3.1. 常用参数

3.1.1. -I, --backend-info

查看支持的GPU驱动:

alt text

3.1.2 -m, --hash-type

指定hash模式,如果不指定,hashcat会自动识别hash模式并给出推荐模式:

alt text

如上图,没有指定hash模式时,hashcat自动识别到了唯一的hash模式13000,关联的文件格式是RAR5。
有时候想查某个格式的hash模式,可以打印hashcat的帮助文档,然后使用grep命令查找,例如查找ZIP的hash模式:

alt text

查到多个相关模式时,建议直接拿hash值让hashcat自动识别:

alt text

自动识别出了3个ahsh模式,可以逐个模式去尝试。

常用hash模式:

hash模式 hash名称 hash示例
0 MD5 8743b52063cd84097a65d1633f5c74f5
11600 7-Zip $7z$0$19$0$salt$8$f6196259a7326e3f0000000000000000$185065650$112$98$f3bc2a88062c419a25acd40c0c2d75421cf23263f69c51b13f9b1aada41a8a09f9adeae45d67c60b56aad338f20c0dcc5eb811c7a61128ee0746f922cdb9c59096869f341c7a9cb1ac7bb7d771f546b82cf4e6f11a5ecd4b61751e4d8de66dd6e2dfb5b7d1022d2211e2d66ea1703f96
13000 RAR5 $rar5$16$74575567518807622265582327032280$15$f8b4064de34ac02ecabfe9abdf93ed6a$8$9843834ed0f7c754
17220 ZIP $pkzip2$3*1*1*0*8*24*a425*8827*d1730095cd829e245df04ebba6c52c0573d49d3bbeab6cb385b7fa8a28dcccd3098bfdd7*1*0*8*24*2a74*882a*51281ac874a60baedc375ca645888d29780e20d4076edd1e7154a99bde982152a736311f*2*0*e3*1c5*eda7a8de*0*29*8*e3*eda7*5096*1455781b59707f5151139e018bdcfeebfc89bc37e372883a7ec0670a5eafc622feb338f9b021b6601a674094898a91beac70e41e675f77702834ca6156111a1bf7361bc9f3715d77dfcdd626634c68354c6f2e5e0a7b1e1ce84a44e632d0f6e36019feeab92fb7eac9dda8df436e287aafece95d042059a1b27d533c5eab62c1c559af220dc432f2eb1a38a70f29e8f3cb5a207704274d1e305d7402180fd47e026522792f5113c52a116d5bb25b67074ffd6f4926b221555234aabddc69775335d592d5c7d22462b75de1259e8342a9ba71cb06223d13c7f51f13be2ad76352c3b8ed*$/pkzip2$
22000 WPA2 WPA*02*024022795224bffca545276c3762686f*6466b38ec3fc*225edc49b7aa*54502d4c494e4b5f484153484341545f54455354*10e3be3b005a629e89de088d6a2fdc489db83ad4764f2d186b9cde15446e972e*0103007502010a0000000000000000000148ce2ccba9c1fda130ff2fbbfb4fd3b063d1a93920b0f7df54a5cbf787b16171000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001630140100000fac040100000fac040100000fac028000*a2
1800 SHA512 $6$52450745$k5ka2p8bFuSmoVT1tzOyyuaREkkKBcCNqoDKzYiJL9RaE8yMnPgh2XzzF0NDrUhgrcLwg78xs1w5pJiypEdFX/
3000 LM 299bd128c1101fd6
1000 NTLM b4b9b02e6f09a9bd760f388b67351e2b

3.1.3. -a, --attack-mode

指定攻击模式:

序号 攻击模式
0 字典破解
1 多字典组合破解
3 掩码破解
6 字典+掩码破解
7 掩码+字典破解

3.1.4. -O, --optimized-kernel-enable

启用优化内核(会限制密码长度为32位),提高性能。不加此参数,破解过程会有提示:

alt text

alt text

3.1.5. -o, --outfile

指定爆破完成后的哈希值与明文的存储位置。

3.1.6. --show

破解完成后忘记保存破解内容,并且终端被清屏,可以使用--show参数重新显示已破解的哈希值与明文,只需在哈希值后面加上该参数即可:

alt text

3.1.7. -i, --increment

启用密码长度范围功能。

3.1.8. --increment-min

指定密码长度范围的最小值,需要与-i或者--increment参数一起使用,否则会报错:

alt text

3.1.9. --increment-max

指定密码长度范围的最大值,需要与-i或者--increment参数一起使用,否则会报错。

3.1.10 -potfile-disable

hash破解完成后,不将破解结果写入到potfile文件中,这样就能重复破解(例如测试hash碰撞)。如果已经写入了,则需要手动删除potfile文件中的对应记录。

最新版的linux hashcat的potfile为文件的路径是~/.local/share/hashcat/hashcat.potfile,不是~/.hashcat/hashcat.potfile
Windows的potfile文件的路径和hashcat主程序在同一目录下。

alt text

3.1.11. -d, --opencl-device-types

hashcat -I显示有多个OpenCL设备时,可以使用此参数指定使用哪个设备进行破解。默认会使用所有设备。

3.1.12. --force

有时候会遇到报错导致破解失败,可以使用此参数强制继续破解。

例如有时候会提示硬件不支持某哈希模式而退出破解,此时可以使用--force参数跳过报错强制继续破解:

alt text

alt text

3.1.13. --self-test-disable

禁用启动时的设备自检功能。加速进入破解过程。一般是测试时使用。

3.1.14 -h, --help

此参数会打印一份超级长的帮助文档。通常结合grep命令来搜索哈希模式。

3.1.15 -v, --version

查看hashcat版本:

alt text

截至2024年11月,hashcat最后一次更新是2022年9月,最新版本是v6.2.6。

beta版本下载地址:https://hashcat.net/beta/

3.2. 掩码破解(-a 3)

3.2.1. 掩码占位符

占位符 含义
?l 小写字母(lowercase): a-z
?u 大写字母(uppercase): A-Z
?d 数字(digits): 0-9
?h 小写格式十六进制字符(hexadecimal): 0-9, a-f
?H 大写格式十六进制字符(hexadecimal): 0-9, A-F
?s 符号(symbols): ! “ # $ % & ‘ ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` {
?a 所有字符(ascii): 0-9, a-z, A-Z, ! “ # $ % & ‘ ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` {
?b 二进制字符(binary): 0, 1

3.2.2. 掩码示例

掩码 含义
?d?d?d?d?d?d?d?d?d?d 10位纯数字
?u?u?u?u?u?u?u?u?u?u 10位纯大写字母
?d?d?d?d?d?l?l?l?l?l 5位数字 + 5位小写字母
?l?u?d?d?d?d 第一位是小写字母,第2位是大写字母,第3-6位是数字
mkbk?a?a?a 前4位确定是mkbk,后面3位是任意字符

3.2.3. 自定义掩码

自定义掩码 自定义该掩码的字符集
?1 ?l, ?d
?2 a, b, c, d
?3 e, f, g, h
?4 i, j, k, l

比如想用?1来表示m, k, b, k,这4个字符,那么可以使用-1参数来指定字符,并在后面作为占位符来使用:

1
hashcat -m 0 -a 3 e9894d0cc46fa28e370ce7d94f0a72d5 -1 mkbk ?1?1?1?1?a?a?a -O

alt text

3.3. 字典破解(-a 0)

推荐字典:https://github.com/wwl012345/PasswordDic

使用-a参数指定攻击模式为0,然后直接指定字典文件即可:

1
hashcat -a 0 200ceb26807d6bf99fd6f4f0d1ca54d4 dict/rockyou-top15000.txt -O -o result.txt

alt text

可以看到耗时了11秒,遍历了了15000个密码,成功恢复出了哈希值,但是并没有显示出明文,原因是-o参数将哈希值与明文的对应关系存储到了result.txt文件中,因此可以直接查看该文件,或者将-o参数替换为--show参数来查看明文:

1
2
cat result.txt
hashcat -a 0 -m 0 200ceb26807d6bf99fd6f4f0d1ca54d4 dict/rockyou-top15000.txt -O --show

alt text

3.4. 多字典组合破解(-a 1)

hashcat最多支持将2个字典文件中的单词进行组合破解,使用-a 1参数并指定2个字典文件即可。

组合方式:Hashcat 从 dict1.txt 中选择一个单词作为前缀(Left Side),从 dict2.txt 中选择一个单词作为后缀(Right Side),然后将它们拼接在一起。

例如,假设,dict1.txt 包含:

1
2
hello
world

dict2.txt 包含:

1
2
123
456

Hashcat 将生成以下组合:

1
2
3
4
hello123
hello456
world123
world456

爆破案例:

1
hashcat -m 0 -a 1 34cf9968d4b20578f61c9b26d102fb59 dict/1.txt dict/2.txt -O

alt text

3.5. 字典+掩码破解(-a 6)

此模式会将字典中的每个单词作为前缀,然后使用掩码作为后缀来破解。

假设明文为sunshine123,并且字典中包含sunshine,那么可以使用该字典与掩码?d?d?d的组合来进行破解:

1
hashcat -a 6 -m 0 1669972908967b4076b39d4626090817 dict/passwd-EN-Top10000.txt ?d?d?d -O

alt text

3.6. 掩码+字典破解(-a 7)

此模式会将掩码作为前缀,然后使用字典中的每个单词作为后缀来破解,和-a 6模式正好相反。

假设明文为need_money,并且字典中包含money,那么可以使用该字典作为前缀,掩码?u?s?u?u?u?u?s的组合来进行破解:

1
hashcat -a 6 -m 0 b4c80dd675a0d0f60d229075583d7d60 dict/passwd-EN-Top10000.txt ?l?l?l?l?s -O

4. 常见爆破案例

4.1. 破解10位纯数字MD5

首先将明文0123456789转换为转换为md5值:

1
2
3
4
5
6
7
# 使用md5sum命令(末尾的 - 表示标准输入)
printf "0123456789" | md5sum
781e5e245d69b566979b86e28d23f2c7 -

# 或者使用openssl命令
printf "0123456789" | openssl md5
MD5(stdin)= 781e5e245d69b566979b86e28d23f2c7

使用hashcat进行破解:

1
hashcat -m 0 -a 3 781e5e245d69b566979b86e28d23f2c7 ?d?d?d?d?d?d?d?d?d?d

alt text

可以看到用时4秒,尝试了3072000个组合,破解出了明文0123456789

如果后续需要查看此哈希值对应的明文,可以使用--show参数:

1
2
3
4
❯ hashcat -m 0 -a 3 781e5e245d69b566979b86e28d23f2c7 ?d?d?d?d?d?d?d?d?d?d --show
781e5e245d69b566979b86e28d23f2c7:0123456789
❯ hashcat -m 0 781e5e245d69b566979b86e28d23f2c7 --show
781e5e245d69b566979b86e28d23f2c7:0123456789

4.2. 破解未知长度未知字符模式的MD5

由于不知道明文的长度以及字符模式,因此将无法指定掩码规则,此时hashcat将默认使用?a(表示所有字符)进行暴力破解,并且是从较短的密码开始逐步增加,直到找到匹配为止(如果使用了-O参数,则默认最大长度为32位)。如果明文长度较长,那么破解时间将会非常长。

1
hashcat -m 0 -a 3 2e8e673825e962ccd6ce3ac8be404914 -O

alt text

4.3. 破解已知长度但未知字符模式的MD5

如果知道明文的长度为7位,但是不知道明文的字符模式,那么可以使用increment参数来指定密码长度范围,然后hashcat会自动使用?a进行暴力破解:

1
hashcat.bin -m 0 -a 3 9a33543ee42bb7791905ab66ed0555d9 -O --increment --increment-min 7 --increment-max 7

alt text

4.4. 破解已知字符模式但未知长度的MD5

假设已知明文的字符模式为小写字母和大写字母,但不知道明文的长度,那么可以使用自定义掩码规则组合?u?l来表示小写字母和大写字母,然后逐个增加?1的个数,直到找到匹配为止:

1
2
3
4
5
# 尝试1位长度
./hashcat.bin -m 0 -a 3 c44a471bd78cc6c2fea32b9fe028d30a -O -1 ?l?u ?1

# 尝试4位长度
./hashcat.bin -m 0 -a 3 c44a471bd78cc6c2fea32b9fe028d30a -O -1 ?l?u ?1?1?1?1

alt text

4.5. 破解无线网络的WPA2密码

首先需要使用aircrack-ng工具来抓取无线认证时的握手包,具体方法参考我以前写的博客:https://blog.lololowe.com/posts/9315/

抓到握手包后(.cap),使用hashcat官方提供的web站点将握手包转换成hashcat可识别的格式(.hc22000):https://hashcat.net/cap2hashcat/
如果握手包大于20MB,则需要使用hcxtools本地转换,具体请看此帖子:https://www.bilibili.com/opus/653718564161716231

得到.hc22000文件后,使用hashcat进行破解:

1
hashcat -m 22000 -a 0 ~/903031_1731148635.hc22000 dict/passwd-CN-Top10000.txt  # 字典破解

alt text

4.6. 破解压缩包密码

4.6.1. RAR

首先使用WinRAR打包一个压缩包,并设置一个密码:

alt text

接着需要使用John the Ripper来提取压缩包的hash值,下面分别给出Windows和Linux下提取rar压缩包hash值的方法。

注意:也可以使用该网站在线提取:https://hashes.com/zh/johntheripper/rar2john

4.6.1.1 Windows下提取rar压缩包hash值并爆破

直接下载 John the Ripper 的预编译二进制版本:https://www.openwall.com/john/k/john-1.9.0-jumbo-1-win64.7z

解压缩后,进入run目录,执行以下命令获取hash值:

1
rar2john.exe <rar文件>

alt text

复制hash值(不要复制冒号以及前面的压缩包路径),接着执行以下命令搜索rar格式的hash模式:

1
hashcat.exe -h | findstr.exe RAR

alt text

13000 表示rar5的hash模式,和上面的hash值对应。也可以直接将hash值作为唯一参数传递给hashcat,然后hashcat会自动识别出hash模式:

alt text

接着使用hashcat的-m 13000参数指定hash模式并进行破解:

1
hashcat.exe -m 13000 -a 3 $rar5$16$3a8ee78dece562ff5872b81a39a3e519$15$053c164b49eb214f7a1457b8066c88c9$8$20957738b54470fd ?d?d?d?d?d?d?d?d

alt text

4.6.1.2 Linux下提取rar压缩包hash值并爆破

编译安装John the Ripper:

1
2
3
4
5
6
7
apt install git libssl-dev -y  # Debian/Ubuntu 安装依赖
yum install -y openssl openssl-devel # RHEL/CentOS 安装依赖
git clone git@github.com:openwall/john.git # 克隆源码
cd john/src
./configure && make # 编译
cd ../run
./john --test # 测试jtr是否可用

接着使用下面的命令提取rar压缩包的hash值以及获取hash模式:

1
2
./rar2john <rar文件>
hashcat -h | grep RAR

alt text

最后使用hashcat进行破解:

1
hashcat -m 13000 -a 3 '$rar5$16$3a8ee78dece562ff5872b81a39a3e519$15$053c164b49eb214f7a1457b8066c88c9$8$20957738b54470fd' '?d?d?d?d?d?d?d?d'

注意:rar的hash值需要用单引号括起来(Windows系统不要加单引号),否则会报错,如果使用的shell是zsh,则还需将掩码值括起来。

alt text

得到明文密码:88888888

4.6.2. ZIP

流程和rar类似,都是拿到加密压缩包后使用John the Ripper提取hash值,然后使用hashcat进行破解。

  1. 提取hash值

alt text

注意:提取出来的hash值要去掉首尾的文件路径(包括冒号)。例如1.zip :

1
1.zip/1.txt:$pkzip2$1*1*2*0*1a*c*594c07d2*0*23*8*1a*594c*7609*a0d026cb2bce016e791db4a9eddceb69a5b6895e457899a0b936*$/pkzip2$:1.txt:1.zip::E:\user\lololowe\Desktop\1.zip

去除文件路径后:

1
$pkzip2$1*1*2*0*1a*c*594c07d2*0*23*8*1a*594c*7609*a0d026cb2bce016e791db4a9eddceb69a5b6895e457899a0b936*$/pkzip2$
  1. 获取hash模式

直接将hash值作为唯一参数传递给hashcat,然后hashcat会自动识别出hash模式:

1
hashcat '$pkzip2$1*1*2*0*1a*c*594c07d2*0*23*8*1a*594c*7609*a0d026cb2bce016e791db4a9eddceb69a5b6895e457899a0b936*$/pkzip2$'

alt text

识别出3个哈希模式,可以依次尝试每种hash模式。

  1. 破解
1
hashcat '$pkzip2$1*1*2*0*1a*c*594c07d2*0*23*8*1a*594c*7609*a0d026cb2bce016e791db4a9eddceb69a5b6895e457899a0b936*$/pkzip2$' -a 3 -m 17220 -O

alt text

得到明文密码:123456

4.6.3. 7-zip

  1. 提取hash值

john the ripper的7zip提取工具是7z2john.pl脚本,需要搭配Perl解释器运行,并且还不一定能正常提取:

alt text

建议使用在线网站提取7z的hash值:https://hashes.com/en/johntheripper/7z2john

alt text

  1. 获取hash模式
1
hashcat '$7z$2$19$0$$16$f1ac8b88d28393a8ec6b55eda4c9f6a1$1498154962$16$16$6b60d3f0d467c15c7a3371b75733bc89$12$00'

alt text

最后一句话的意思是:这个hash模式存在hash碰撞漏洞(1个hash值对应多个密码),可以使用--keep-guessing参数在破解出第一个密码后继续破解下一个。

  1. 破解
1
hashcat '$7z$2$19$0$$16$f1ac8b88d28393a8ec6b55eda4c9f6a1$1498154962$16$16$6b60d3f0d467c15c7a3371b75733bc89$12$00' -m 11600 -a 3 -O

alt text

得到明文密码:55sme

4.7. MySQL 密码破解

  1. 获取root用户密码的hash值:
1
SELECT user, Host, authentication_string FROM mysql.user WHERE `User` = 'root';

alt text

注意:不要复制最前面的*符号。

  1. 获取hash模式

直接将hash值作为唯一参数传递给hashcat,然后hashcat会自动识别出hash模式:

1
hashcat 81F5E21E35407D884A6CD4A731AEBFB6AF209E1B

alt text

使用推荐300攻击模式(MySQL4.1/MySQL5)进行掩码破解:

1
hashcat 81F5E21E35407D884A6CD4A731AEBFB6AF209E1B -m 300 -a 3 -O

alt text

得到明文密码:root

4.8. KeePass密码管理器破解

KeePass是一个开源的密码管理器,它可以将所有密码保存在一个加密数据库文件中,该数据库文件是 KDBX 格式:

alt text

可以用 keepass2john 提取hash值:

alt text

也可尝试使用 https://hashes.com/zh/johntheripper/keepass2john 提取hash值。

将hash值(记得去掉最前面的Database:标志)作为唯一参数传递给hashcat,然后hashcat会自动识别出攻击模式:

alt text

然后使用hashcat进行破解:

1
hashcat '$keepass$*2*600000*0*ff332ebf333c88d87a9592307e297d4cac49184a359dc9b655d5d8490c404640*4878daf470d66264c3b3b085cb1d0495f8d2f20459193c1cbe17722d7e61ba9d*2a021d8a51c7955ea1d06409bd8822ed*ecdd6dd88837ede059f6fe7b758975ef4ab4193261beac50b641f5fdac250093*6bfdc8f6ae7313cadb0d2ac2adecbf4eab703ac3eb7fefe4e6a9b838e7b92464' -m 13400 -a 3 -O

alt text

得到明文密码:mkbk

4.9. Windows 密码破解

推荐阅读,windows密码的抓取和利用:https://saucer-man.com/information_security/443.html

4.9.1. LM

对于早期的系统如Windows XP、Windows Server 2003来说,系统默认使用LM进行加密。
LM 的空密码hash值为: AAD3B435B51404EEAAD3B435B51404EE

使用Mimikatz提取凭证(Windows Server 2008 R2):

1
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit

alt text

得到LM hash值为: af01df70036ebacfaad3b435b51404ee

LM Hash由32位16进制字符组成,前16位是用户密码的前7个字符(或更少)经LM算法处理后转换成的hash,后16位是用户密码的后7个字符(或更少)经LM算法处理后转换成的hash,如果用户密码只有7个字符,则后16位的hash固定为aad3b435b51404ee。LM限制用户密码最长为14个字符。

得到的这个hash值后16位是aad3b435b51404ee,说明密码长度等于或小于7个字符,可以直接对这个16位的hash进行暴力破解。

首先获取攻击模式:

1
hashcat af01df70036ebacf

alt text

爆破:

1
hashcat -m 3000 af01df70036ebacf -a 3 -O '?a?a?a?d?d?d?s'

alt text

得到明文密码:Abc123!

注意:LM算法不区分密码大小写。

4.9.2. NTLM

从Windows Vista和Windows Server 2008开始,默认情况下只存储NTLM Hash。因此提取到的hash值是空密码hash: aad3b435b51404eeaad3b435b51404ee
NTLM 的空密码hash为: 31D6CFE0D16AE931B73C59D7E0C089C0

凭据提取方法同上(下图是Win10提取结果):

alt text

获取攻击模式:

alt text

1
hashcat -m 1000 -a 3 32ed87bdb5fdc5e9cba88547376818d4 -O

alt text

4.10. Linux 密码破解

/etc/shadow 文件中提取密码hash值:

1
tail /etc/shadow -n 1

alt text

linux的shadow文件中每一行的第二个字段保存了加密后的密码,这个字段的格式为 $type$salt$encrypted,其中type是提示符,salt是随机生成的字符串,encrypted是明文密码和salt通过crypt函数加密后的结果。type用来标识采用了哪种加密方式,这样的标识符有以下几种:

  • 1 代表采用了MD5加密方式
  • 2 Blowfish,是最早的版本,有一些缺陷,不推荐使用
  • 2a Blowfish,是修复了一些缺陷后的版本,但仍然有一些问题,不推荐使用
  • 2b Blowfish,是修复了2a中的问题后的版本,是安全、常用的版本
  • 2y Blowfish,Eksblowfish版本
  • y 是Yescrypt加密方式的前缀,是Blowfish加密方式的一个变种,提供了更高的安全性和性能,hashcat暂不支持这种算法。
  • 5 代表采用了SHA256加密方式
  • 6 代表采用了SHA512加密方式

获取攻击模式:

1
hashcat '$1$PIdhJQ1b$6yidVdMl8VlsnVfiWsRu..'

alt text

爆破:

1
hashcat '$1$PIdhJQ1b$6yidVdMl8VlsnVfiWsRu..' -m 500 -a 3 -O 

得到明文密码:test

alt text

4.11. PDF密码破解

首先使用WPS加密PDF文件:

alt text

接着使用 John the Ripper 的 pdf2john.pl 提取hash值:

1
perl pdf2john.pl <文件路径>

alt text

或者也可以使用此网页提取:https://www.onlinehashcrack.com/tools-pdf-hash-extractor.php

alt text

获取攻击模式:

1
hashcat '$pdf$4*4*128*-3904*0*16*f7b5882fa6583b73085398d2bf3e2eca*32*be6b1917664ce051136456751db1ad106681bfa2d6c40fd1996d4290804ea411*32*b33e83218acdc4e2d4bab4752bc67bf583707812d6700f8901d1012931595d58'

alt text

暴力破解:

1
hashcat '$pdf$4*4*128*-3904*0*16*f7b5882fa6583b73085398d2bf3e2eca*32*be6b1917664ce051136456751db1ad106681bfa2d6c40fd1996d4290804ea411*32*b33e83218acdc4e2d4bab4752bc67bf583707812d6700f8901d1012931595d58' -m 10500 -a 3 -O '?d?d?d?d?d?d?d?d?d'

alt text

得到明文密码:789456123

4.12. 破解进度保存及恢复

使用session参数指定进度保存文件的名称:

1
hashcat 02cc5e493ad4e7cfacb34b7d5f335356 -m 0 -a 3 -O --session myhash

使用--restore参数来恢复进度(无需指定hash值):

1
hashcat --session myhash --restore

进度文件在 ~/.local/share/hashcat/sessions/ 目录下。

5. 个人密码使用建议

https://blog.lololowe.com/posts/5a68/

  1. 密码应至少包含12个字符(理想情况下是16个字符或更多);
  2. 密码应包含字母(大写和小写)、数字和特殊字符 4 种组合;
  3. 每个账户都必须有一个独特的密码(防止被撞库);
  4. 密码不应包含任何个人信息,如生日或地址,因为身份盗窃和数据泄露可能会泄露这些信息。
  5. 密码不应包含任何连续的字母或数字(例如:ABCD,1234,666888 等等)。

6. 参考