0.介绍
Hashcat 软件是一款非常强大的、开源的、号称世界上最快的密码破解软件,配合强大的字典,可以破译超过百分之九十的密码。Hashcat 目前支持各类公开算法高达240+类,市面上公开的密码加密算法基本都支持,有 Microsoft LM 哈希、MD4、MD5、SHA 系列,Unix 加密格式,MySQL 和 Cisco PIX 等!是安全测试中经常用到的密码解密神器之一。
作为新手,可以使用 Hashcat 工具 CPU 模式破解,电脑机型高端可以使用 GPU 破解。内存的大小也影响工具破解的成功率。
1.Hashcat 安装
建议从官网下载最新版本的 Hashcat 压缩包:hashcat - advanced password recovery,kali下可以直接使用
解压目录如下:
该目录下的文件:
|
在该文件夹下打开终端,执行命令:.\hashcat -h
搞定,安装成功,为方便使用,可以配置该文件夹目录到系统环境变量 path 中,就可以在Windows 任何目录下执行 hashcat 命令了。 |
直接在kali linux下使用更方便,不用在任何的文件下都可以执行,命令:hashcat -h
2.辨别哈希数值的类型
当我们拿到一个哈希数值的时候,想要进行爆破还原,我们首先要知道它是什么类型,这时候,我们可以借助另外一个工具: hash 类型识别工具 HashIdentifier。可以使用 HashIdentifier 识别数据的 hash 算法类型,HashIdentifier 是 python 开发的工具,需要有 python3 的基础环境,下载压缩包,解压就可以使用。
两种执行方法:打开文件夹,执行python脚本
打开文件夹,双击start.bat运行
输入hash数值进行判断,比如本题的:84765e9e8a19cec7e392843954a66eece4da3ad7,显示出来是sha-1
3.举例使用方法
3.1MD5、sha1 密文解密
3.1.1字典模式破解
我这里用的字典是kali下面自带的,路径是 usr/share/wordlists/rockyou.txt
我是从根目录当中进到这个文件夹找到这个文件的,要注意我们如果使用字典进行爆破的话,需要在有字典的路径下进行执行命令,在windows下可以直接将字典复制粘贴到hashcat的文件夹下
比如我们要爆破password12345678901的md5数值
先在kali下执行获取password12345678901的md5数值
Python |
得到md5数值是:365d38c60c4e98ca5ca6dbc02d396e53 -
而后执行命令进行爆破:
Python |
-m 0: 哈希类型的选项。在这种情况下,0代表MD5。这里的值会根据你尝试破解的哈希类型而变化。例如,-m 1000 会用于NTLM哈希。
-a 0: 这是攻击模式。在这种情况下,0代表“直接”模式,即字典攻击
rockyou.txt: 这个文件包含你要尝试破解的哈希值。它应该是一个文本文件,每行一个哈希值,也就是我们要用的字典。
--force: 这个选项会强制Hashcat启动,即使它检测到你的系统可能无法正确运行它。一般来说,只有在你知道自己在做什么的情况下才建议使用这个选项,因为它可能导致错误的结果,甚至损坏你的硬件。
可以看到:cb28e00ef51374b841fb5c189b2b91c9:password123456
得到了结果,参数的使用后面再做介绍,先举例子,当我们已经得到结果后,我们可以直接进行查看,就是在上面命令的基础上添加上--show就可以了
注意win11的系统执行的时候,需要在前面加上.\才能执行
Python |
而这个命令就是将结果输出到文件result.txt这个文件中保存起来
3.1.2掩码模式破解sha1
如:
压缩包的密码为手机号码 已知信息为:189XXXXXXXX,下方为它的哈希值,请你解开压缩包,并且分析出flag。 84765e9e8a19cec7e392843954a66eece4da3ad7 |
可以知道这个是sha1哈希数值
Python |
可以看到结果:84765e9e8a19cec7e392843954a66eece4da3ad7:18961811234
sha1对应的数值是100,根据下面的对照表,八位数字密码使用:?d?d?d?d?d?d?d?d
字符集含义:
掩码的使用格式:
|
为了优化爆破进度,可以使用下面命令进行操作
Python |
当然这个是爆破MD5的,这里对命令进行介绍
|
|
3.1.3.hashcat常见参数介绍
这里对一些常见的hash对应的数字进行介绍
1.Hash 类型对照表(-m 参数)
可以通过 hashcat --help 查看。
当然,这个不需要记忆,我们只需要执行hashcat -h就可以看到
2.Hashcat 全部参数的中文介绍
点击图片可查看完整电子表格
3.Hashcat 的攻击模式(-a 参数)
使用的格式为:-a 后跟对应的数字编号
0 | Straight(字段破解) 1 | Combination(将字典中密码进行组合,例:1,2 -> 11 22 12 21) 3 | Brute-force(掩码暴力破解) 6 | Hybrid Wordlist + Mask(字典+掩码破解) 7 | Hybrid Mask + Wordlist(掩码+字典破解) 9 | Association(关联破解) |
4.输出格式(–outfile-format 参数)
1 | hash[:salt] 2 | plain 3 | hex_plain 4 | crack_pos 5 | timestamp absolute 6 | timestamp relative |
5. 内置掩码字符集
l | abcdefghijklmnopqrstuvwxyz [a-z] u | ABCDEFGHIJKLMNOPQRSTUVWXYZ [A-Z] d | 0123456789 [0-9] h | 0123456789abcdef [0-9a-f] H | 0123456789ABCDEF [0-9A-F] s | !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ a | ?l?u?d?s b | 0x00 - 0xff |
3.1.4 使用字典+掩码进行破解
Python |
3.1.5.使用掩码+字典进行破解
Python |
3.1.6批量字典破解
Python |
提前准备加密文件,破解后的结果文件如下:
3.1.6RAR 文件解密
1.通过 John The Ripper 获取文件的密文值,把要获取密文的 rar 文件拷贝到 john-1.9.0-jumbo-1-win64 的 run 目录下。
一款免费、开源的暴力密码破解器,它有多平台版本,支持目前大多数的加密算法,如 DES、MD4、MD5 等。该软件破解密码方式简单而粗暴,理论上只要时间上面允许,该软件可以破译绝大多数用户密码。John the Ripper 免费的开源软件,支持目前大多数的加密算法,如 DES、MD4、MD5 等。它支持多种不同类型的系统架构,包括 Unix、Linux、Windows、DOS 模式、BeOS 和 OpenVMS,主要目的是破解不够牢固的 Unix/Linux 系统密码。
下载地址:John the Ripper password cracker
Python |
- 通过 Hashcat 获取明文密码
Python |
破解成功会在目录下生成 password.txt 文件。
3.1.7SHA512 密文解密
Python |
首先使用HashIdentifier工具识别该密文的类型:
- 识别到的 hash 类型为 sha512 crypt
- 对应 hashcat 的类型编号为 1800
再使用 Hashcat 使用字典破解模式进行破解,提前准备字典文件:
Python |
如果破解时间太长,我们可以按 s 键查看破解进度,p 键暂停,r 键继续破解,q 键退出破解。
3.1.8Windows 密码解密
Windows 系统通常使用两种方法对用户的明文密码进行加密处理,分别是:
- LM Hash :对应 hashcat 中的类型编号为 3000
- ntlm hash:对应 hashcat 中的类型编号为 1000
LM Hash 是一种 Windows 系统身份认证协议,在 Windows 7 或 Windows 2008 之前的系统使用,之后的系统默认禁用了 LM Hash 协议认证,使用 ntlm hash 的方式。
对 Windows 密码进行破解建议使用高版本的 hashcat 软件,4.1.0及以下的版本会因各种问题提前终止破解而导致破解失败,本案例建议使用最新的 hashcat-6.2.6 版本。
- root 字符串对应的 LM Hash 密文为:d480ea9533c500d4aad3b435b51404ee
Python |
- root 字符串对应的 ntlm hash 密文为:329153f560eb329c0e1deea55e88a1e9
Python |
3.1.9-MySql 密码解密
Python |
3.1.10-Office 密码解密
获取 Office 的 hash 值:python office2john.py 11.docx
Python |
破解密码:
Python |