hashcat号称是目前世界上最快的password crack tool

hashcat仓库:https://github.com/hashcat/hashcat

关于hashcat的使用,官方的wiki提供了详细的教程:

https://hashcat.net/wiki/

https://www.unix-ninja.com/p/A_guide_to_password_cracking_with_Hashcat

下面对我个人的使用需求做一个记录

0.须知

Hashcat 是一个命令行界面(CLI)应用程序。

Hashcat(标准的基于CPU的破解软件)

oclHashcat(基于GPU加速的破解软件)

攻击模式 (A) 和哈希模式(M) ,标准攻击模式(模式0),模式0为字典攻击

进入hashcat解压后的目录中,可以查看帮助以确定hashcat是否正确地运行

1
hashcat.exe --help

这将显示很多信息,包含所有可使用的参数

或者你可以在hashcat_wiki查看该工具用法

已破解的哈希值默认存储在hashcat.potfile这个文件中

怎么算破解完成?
status 为Cracked
status 为Exhausted 已经跑完字典,但是没找到原密码

1
tatus [p]ause ypass [c]heckpoint [f]inish [q]uit =>

出现此提示,输入s可以查看进度

严禁用与非法破解

1.用例

(1).我有一串md5加密过的需要破解

在目录下创建两个文件

hash.txt存放 破解的密码

cracked.txt 存放待破解的哈希值

e10adc3949ba59abbe56e057f20f883e123456的 MD5)为例

在hash.txt中放入需要破解的哈希值(e10adc3949ba59abbe56e057f20f883e

运行hashcat

1
hashcat.exe -m0 -a3 -o cracked.txt hash.txt

得到的结果存放在cracked.txt内容如下

1
e10adc3949ba59abbe56e057f20f883e:123456

(2).我需要破解一个压缩包

hashcat并不能直接对压缩包密码进行破解,需要配合另一个工具使用:john(开膛手杰克),目的是提取压缩密码hash,然后对hash本身进行破解

john: windows环境下使用该链接来下载适用于windows64位的john-1.9.0

使用john-1.9.0-jumbo-1-win64\run目录下的zip2john.exe工具获取加密zip的哈希值

例如,获取flag.zip的哈希值

1
zip2john.exe flag.zip

image-20241101174206490

冒号后面**$包裹的**即为该加密压缩包的哈希值

1
$pkzip2$1*1*2*0*21*13*696b59b0*0*26*8*21*696b*8cbd*dd4bda6101e35564ec081dbcfd076001661b2a2244dced2600fc4ed9c3a2991355*$/pkzip2$

-m 参数说明hash mod,具体需要使用哪个hash mod,见HashcatWiki- [ Hash modes ] -部分,比如-m 13600表示设置为WinZip模式

对于我演示中的这个文件,显示为pkzip,我们在wiki使用ctrl+f搜索pkzip

image-20241101174853739

因此-m使用上述参数17200

-a参数表示攻击类型,wiki文档如下,3是暴力破解,即穷举法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
- [ Attack Modes ] -

# | Mode
===+======
0 | Straight
1 | Combination
3 | Brute-force
6 | Hybrid Wordlist + Mask
7 | Hybrid Mask + Wordlist
9 | Association
///////////////////////////////////////////////////////
Brute-Force attack (-a 3)
暴力攻击(-a 3)
Combinator attack (-a 1)
组合器攻击(-a 1)
Dictionary attack (-a 0)
字典攻击(-a 0)
Hybrid attack (-a 6, -a 7)
混合攻击(-a 6、-a 7)
Mask attack (-a 3)
掩码攻击(-a 3)
Rule-based attack (-r option to -a 0)
基于规则的攻击(-r 选项改为 -a 0)
Toggle-Case attack (only supported by using rule files)
Toggle-Case 攻击(仅使用规则文件支持)
Association attack (a -9)
联合攻击(a -9)

--show参数表示破解后再终端显示

1
hashcat.exe -a 3 -m 17200 $pkzip2$1*1*2*0*21*13*696b59b0*0*26*8*21*696b*8cbd*dd4bda6101e35564ec081dbcfd076001661b2a2244dced2600fc4ed9c3a2991355*$/pkzip2$

运行后破解成功,回显

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$pkzip2$1*1*2*0*21*13*696b59b0*0*26*8*21*696b*8cbd*dd4bda6101e35564ec081dbcfd076001661b2a2244dced2600fc4ed9c3a2991355*$/pkzip2$:114514

Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 17200 (PKZIP (Compressed))
Hash.Target......: $pkzip2$1*1*2*0*21*13*696b59b0*0*26*8*21*696b*8cbd*...kzip2$
Time.Started.....: Fri Nov 01 18:10:12 2024 (10 secs)
Time.Estimated...: Fri Nov 01 18:10:22 2024 (0 secs)
Kernel.Feature...: Pure Kernel
Guess.Mask.......: ?1?2?2?2?2?2 [6]
Guess.Charset....: -1 ?l?d?u, -2 ?l?d, -3 ?l?d*!$@_, -4 Undefined
Guess.Queue......: 6/15 (40.00%)
Speed.#1.........: 53574.9 kH/s (15.14ms) @ Accel:2 Loops:512 Thr:32 Vec:1
Speed.#*.........: 53574.9 kH/s
Recovered........: 1/1 (100.00%) Digests (total), 1/1 (100.00%) Digests (new)
Progress.........: 519521280/3748902912 (13.86%)
Rejected.........: 0/519521280 (0.00%)
Restore.Point....: 232320/1679616 (13.83%)
Restore.Sub.#1...: Salt:0 Amplifier:0-512 Iteration:0-512
Candidate.Engine.: Device Generator
Candidates.#1....: sacrxa -> hs9ont
Hardware.Mon.#1..: Temp: 65c Util: 98% Core:2002MHz Mem:7000MHz Bus:8

Started: Fri Nov 01 18:09:48 2024
Stopped: Fri Nov 01 18:10:23 2024

破解的值存在hashcat.potfile这个文件里面,可以看到此压缩包的密码哈希破解后为114514

image-20241101181520637

(3).在取证中的应用:构造SMB 的 hash串

例题: 强网杯2024——谍影重重5

SMB登录流量的hash串破解

SMB2的hash串结构:

1
2
3
4
5
username::domain:challenge(16个字符):ntproofstr(32个字符):blob(至少32个字符

# 例如下方就是一个标准的SMB hash串

tom::.:c1dec53240124487:ca32f9b5b48c04ccfa96f35213d63d75:010100000000000040d0731fb92adb01221434d6e24970170000000002001e004400450053004b0054004f0050002d004a0030004500450039004d00520001001e004400450053004b0054004f0050002d004a0030004500450039004d00520004001e004400450053004b0054004f0050002d004a0030004500450039004d00520003001e004400450053004b0054004f0050002d004a0030004500450039004d0052000700080040d0731fb92adb0106000400020000000800300030000000000000000100000000200000bd69d88e01f6425e6c1d7f796d55f11bd4bdcb27c845c6ebfac35b8a3acc42c20a001000000000000000000000000000000000000900260063006900660073002f003100370032002e00310036002e003100300035002e003100320039000000000000000000

使用tshark1.pcapng进行流量的特征值的提取

1
2
3
4
5
# 提取其他部分
tshark -n -r 1.pcapng -Y 'ntlmssp.messagetype = 0x00000003' -T fields -e ntlmssp.auth.username -e ntlmssp.auth.domain -e ntlmssp.ntlmv2_response.ntproofstr -e ntlmssp.auth.sesskey -e smb2.sesid

# 提取challenge部分
tshark -n -r 1.pcapng -Y 'ntlmssp.messagetype = 0x00000002' -T fields -e ntlmssp.ntlmserverchallenge

爆破

1
hashcat.exe -a 3 -m 5600 SMB2的hash串

(4).hashcat的其他实用选项

限定需要破解的密码长度范围

选项:

1
--increment --increment-min 最小位数 --increment-max 最大位数

例句:

1
hashcat.exe -a 3 -m 17200 $pkzip2$1*1*2*0*21*13*696b59b0*0*26*8*21*696b*8cbd*dd4bda6101e35564ec081dbcfd076001661b2a2244dced2600fc4ed9c3a2991355*$/pkzip2$ --increment --increment-min 8 --increment-max 18 

(5). wifi密码截获破解实验

wifite 工具,若使用虚拟机则需要无线网卡

https://www.kali.org/tools/wifite/

wsl,