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是否正确地运行
这将显示很多信息,包含所有可使用的参数
或者你可以在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 存放待破解的哈希值
以 e10adc3949ba59abbe56e057f20f883e (123456的 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
| $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

因此-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

(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
|
使用tshark对1.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,