【内网学习笔记】20、Hashcat 的使用
brew install hashcat
- 介绍 Hashcat 是一款用于破解密码的工具,号称是世界上最快、最高级的密码破解工具。它支持破解 LM 哈希、MD5、SHA 等系列密码,并且可在 Linux、Mac、Windows 平台上运行。您可以在以下地址找到该工具的项目地址。
apt install hashcat
tar zxvf hashcat-6.2.4.7z
cd hashcat-6.2.4
chmod +x hashcat.bin
./hashcat.bin
- 安装Mac:Mac 用户可以直接使用 brew 进行安装。
-r 使用自定义破解规则
-o 指定破解成功后的 hash 及所对应的明文密码的存放位置
-m 指定要破解的 hash 类型,如果不指定类型,则默认是 MD5
-a 指定要使用的破解模式,其值参考后面对参数。“-a 0” 字典攻击,“-a 1” 组合攻击;“-a 3” 掩码攻击
-D 指定 opencl 的设备类型
--show 显示已经破解的 hash 及该 hash 所对应的明文
--force 忽略破解过程中的警告信息,跑单条 hash 可能需要加上此选项
--remove 删除已被破解成功的 hash
--username 忽略 hash 文件中的指定的用户名,在破解 linux 系统用户密码 hash 可能会用到
--increment 启用增量破解模式,你可以利用此模式让 hashcat 在指定的密码长度范围内执行破解过程
--increment-min 密码最小长度,后面直接等于一个整数即可,配置 increment 模式一起使用
--increment-max 密码最大长度,同上
--outfile-format 指定破解结果的输出格式 id ,默认是 3
--self-test-disable 关闭启动自检
0 | Straight (字段破解)
1 | Combination (组合破解)
3 | Brute-force (掩码暴力破解)
6 | Hybrid Wordlist + Mask(字典+掩码破解)
7 | Hybrid Mask + Wordlist(掩码+字典破解)
1 | CPU
2 | GPU
3 | FPGA, DSP, Co-Processor
l | abcdefghijklmnopqrstuvwxyz 纯小写字母
u | ABCDEFGHIJKLMNOPQRSTUVWXYZ 纯大写字母
d | 0123456789 纯数字
h | 0123456789abcdef 十六进制小写字母和数字
H | 0123456789ABCDEF 十六进制大写字母和数字
s | !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 特殊字符
a | ?l?u?d?s 键盘上所有可见的字符
b | 0x00 - 0xff 匹配密码空格
Linux:对于 Debain 的 Linux(如 Kali、Ubuntu),您可以直接使用 apt 进行安装,或者从官方网站下载最新版本的压缩包进行安装。这里以版本号为 6.2.4 为例。
八位数字密码:?d?d?d?d?d?d?d?d
八位未知密码:?a?a?a?a?a?a?a?a
前四位为大写字母,后面四位为数字:?u?u?u?u?d?d?d?d
前四位为数字或者是小写字母,后四位为大写字母或者数字:?h?h?h?h?H?H?H?H
前三个字符未知,中间为admin,后三位未知:?a?a?aadmin?a?a?a
6-8位数字密码:--increment --increment-min 6 --increment-max 8 ?d?d?d?d?d?d?d?d
6-8位数字+小写字母密码:--increment --increment-min 6 --increment-max 8 ?h?h?h?h?h?h?h?h
--custom-charset1 [chars]等价于 -1
--custom-charset2 [chars]等价于 -2
--custom-charset3 [chars]等价于 -3
--custom-charset4 [chars]等价于 -4
hashcat -a 3 --force d54d1702ad0f8326224b817c796763c9 ?d?d?d?d?d?d?d?d
掩码设置举例:自定义掩码规则中,可以使用 ?1、?2、?3、?4 来表示不同的字符位置。请注意,由于 Hash 模式与 ID 的对照表过长,这里不做展示,您可以直接运行 hashcat -h 命令查看。
- 示例MD5:假设密码为 8 位数字。
hashcat -a 3 --force 4575621b0d88c303998e63fc74d165b0 -1 ?l?d ?1?1?1?1
hashcat -a 3 --force 8fb5a3e7338ce951971d69be27fc5210 -1 ?u?d ?1?1?1?1 --increment --increment-min 1 --increment-max 4
hashcat -a 3 -1 123456abcdf!@+- 8b78ba5089b11326290bc15cf0b9a07d ?1?1?1?1?1
hashcat -a 3 -1 123456abcdf\!\@+- 8b78ba5089b11326290bc15cf0b9a07d ?1?1?1?1?1
hashcat -a 3 19b9a36f0cab6d89cd4d3c21b2aa15be --increment --increment-min 1 --increment-max 8 ?a?a?a?a?a?a?a?a
密码为 4 位小写字母+数字。
hashcat -a 0 e10adc3949ba59abbe56e057f20f883e password.txt
hashcat -a 0 hash.txt password.txt
hashcat -a 1 77b3e6926e7295494dd3be91c6934899 pwd1.txt pwd2.txt
admin
test
root
密码为 1-4 位大写字母+数字。
使用特定字符集(123456abcdf!@+-)进行破解。请注意,在终端中,某些字符可能会被识别为特殊字符,因此需要进行转义。如果不确定目标密码的构成情况,可以直接使用 ?a 表示使用所有字符进行破解。
使用字典破解、字典批量破解和字典组合破解。经测试,字典组合破解不仅仅是简单地合并两个字典的内容形成一个新字典,而是将字典1的内容与字典2的内容进行组合。例如,pwd1.txt 字典为:
@2021
123
admin@2021
admin123
test@2021
test123
root@2021
root123
hashcat -a 6 e120ea280aa50693d5568d0071456460 pwd1.txt ?l?l?l
hashcat -a 3 -m 300 --force 6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 ?d?d?d?d?d?d
hashcat -a 3 -m 1800 --force '$6$mxuA5cdy$XZRk0CvnPFqOgVopqiPEFAFK72SogKVwwwp7gWaUOb7b6tVwfCpcSUsCEk64ktLLYmzyew/xd0O0hPG/yrm2X.' ?l?l?l?l
pwd2.txt 字典为:
那么组合后的字典就是这样的:
字典+掩码破解与上述方法类似,只不过将 pwd2.txt 替换为掩码。
Mysql4.1/5:可以使用 select authentication_string from mysql.user; 命令查看当前数据库中的密码哈希值。
sha512crypt $6$, SHA512 (Unix):为了避免系统误识别到特殊字符,这里为哈希值加了单引号。
可通过 cat /etc/shadow 获取哈希值,或者直接使用 --username 参数。
NTLM、NT Hash、LM Hash、NetNTLM Hash、MSSQL (2005):相关密码哈希值的获取方法请参考文档。
WordPress 密码 hash:具体加密脚本在 ./wp-includes/class-phpass.php 的 HashPassword 函数中。
Discuz 用户密码 hash:其密码加密方式为 md5(md5($pass).$salt)。
RAR 压缩密码:首先获取 rar 文件的 hash 值,可以使用 rar2john 工具将 rar 文件中的 hash 提取出来。
rar2john 下载地址:
hashcat -a 3 -m 13000 --force '$rar5$16$b06f5f2d4c973d6235e1a88b8d5dd594$15$a520dddcc53dd4e3930b8489b013f273$8$733969e5bda903e4' ?d?d?d?d?d?d
hashcat -a 3 -m 12500 --force '$RAR3$*0*5ba3dd697a8706fa*919ad1d7a1c42bae4a8d462c8537c9cb' ?d?d?d?d
# 获取 zip 文件 hash
zip2john.exe 1.zip
hashcat 支持 RAR3-hp 和 RAR5。对于 RAR5,示例如下:
对于 RAR3-hp,RAR3-hp 哈希头为 $RAR3$0,而不是 $RAR3$1,中间的数值是0(-hp)而不是1(-p),-p 尚未得到支持,只支持 -hp。
ZIP 压缩密码:与 rar 破解过程类似,需要先提取 zip 文件的哈希值,可以使用 zip2john 进行获取。
zip2john.exe 在上述下载的 rar2john.exe 的同级目录下。
ZIP 的加密算法使用的是 AES256。
Office 密码:与 rar 和 zip 破解过程类似,需要先提取 office 文件的哈希值,可以使用 office2john.py 进行获取。
office2john.py 在上述下载的 rar2john.exe 和 zip2john.exe 的同级目录下。
测试中发现 Python 会出现告警信息,但这不会影响程序的执行。此处的哈希头为 2013,因此使用 9600 破解模式。如果是 2010,则需要使用 9500 破解模式;如果是 2007,则使用 9400 破解模式。
WIFI 密码:要破解 WIFI 密码,首先需要抓取 WIFI 的握手包。为了得到握手包,可以将设备强制踢下线,然后设备会自动重新连接 WIFI,此时就可以抓取握手包。
抓取 WIFI 握手包的步骤如下:
- 将网卡处于监听状态:
airodump-ng wlan0mon
wlan0 是网卡名称,一般为 wlan0,如果不是,请根据实际情况进行修改。可以通过 iwconfig 命令查看网卡名称。如果使用 iwconfig 命令后网卡名称变为 wlan0mon,说明网卡已经处于监听模式。
- 扫描可用 WIFI:
airodump-ng -c (上一步扫描的 CH ) --bssid (想要破解 WIFI 的 bssid ) -w (握手文件存放目录) wlan0mon
airodump-ng -c 1 --bssid 5E:C1:1B:A2:37:F1 -w ./ wlan0mon
aireplay-ng -0 0 -a (要破解的 wifi 的 bssid ) -c (强制踢下的设备的 MAC 地址) wlan0mon
aireplay-ng -0 0 -a 5E:C1:1B:A2:37:F1 -c 38:26:2C:13:D3:33 wlan0mon
- 获取 WIFI 的握