HAsh密码学习笔记
相关参考文章:
https://xz.aliyun.com/t/4008
学习过程中,可以通过hashid这款工具来识别密文是通过何种方式加密的
hashid用法
用法:hashid.py [-h] [-e] [-m] [-j] [-o FILE] [--version] INPUT
识别用于加密数据的不同类型散列
位置参数:
INPUT:需要分析的输入(默认为 STDIN)
选项:
-e, --extended:列出所有可能的哈希算法,包括带有盐值的密码
-m, --mode:在输出中显示相应的 Hashcat 模式
-j, --john:在输出中显示相应的 JohnTheRipper 格式
-o FILE, --outfile FILE:将输出写入文件
-h, --help:显示帮助信息并退出
Hashcat工具
-a 指定要使用的破解模式,其值参考后面对参数。“-a 0”字典攻击,“-a 1” 组合攻击;“-a 3”掩码攻击。
-m 指定要破解的hash类型,如果不指定类型,则默认是MD5
-o 指定破解成功后的hash及所对应的明文密码的存放位置,可以用它把破解成功的hash写到指定的文件中
--force 忽略破解过程中的警告信息,跑单条hash可能需要加上此选项
--show 显示已经破解的hash及该hash所对应的明文
--increment 启用增量破解模式,你可以利用此模式让hashcat在指定的密码长度范围内执行破解过程
--increment-min 密码最小长度,后面直接等于一个整数即可,配置increment模式一起使用
--increment-max 密码最大长度,同上
--outfile-format 指定破解结果的输出格式id,默认是3
--username 忽略hash文件中的指定的用户名,在破解linux系统用户密码hash可能会用到
--remove 删除已被破解成功的hash
-r 使用自定义破解规则
攻击模式:
主要是-a参数后选择攻击的模式
# | Mode
===+======
0 | Straight(字段破解)
1 | Combination(组合破解)
3 | Brute-force(掩码暴力破解)
6 | Hybrid Wordlist + Mask(字典+掩码破解)
7 | Hybrid Mask + Wordlist(掩码+字典破解)
掩码设置
-m指定破解某种hash类型
常见的掩码字符集
l | abcdefghijklmnopqrstuvwxyz 纯小写字母
u | ABCDEFGHIJKLMNOPQRSTUVWXYZ 纯大写字母
d | 0123456789 纯数字
h | 0123456789abcdef 常见小写子目录和数字
H | 0123456789ABCDEF 常见大写字母和数字
s | !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 特殊字符
a | ?l?u?d?s 键盘上所有可见的字符
b | 0x00 - 0xff 可能是用来匹配像空格这种密码的
下面举几个简单的例子来了解一下掩码的设置
八位数字密码:?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 ?l?l?l?l?l?l?l?l
6-8位数字+小写字母密码:--increment --increment-min 6 --increment-max 8 ?h?h?h?h?h?h?h?h
如果我们想设置字符集为:abcd123456!@-+,那该怎么做呢。这就需要用到自定义字符集这个参数了,hashcat支持用户最多定义4组字符集
--custom-charset1 [chars]等价于 -1
--custom-charset2 [chars]等价于 -2
--custom-charset3 [chars]等价于 -3
--custom-charset4 [chars]等价于 -4
在掩码中用?1、?2、?3、?4来表示。
再来举几个例子:
--custom-charset1 abcd123456!@-+。然后我们就可以用"?1"去表示这个字符集了
--custom-charset2 ?l?d,这里和?2就等价于?h
-1 ?d?l?u,?1就表示数字+小写字母+大写字母
-3 abcdef -4 123456 那么?3?3?3?3?4?4?4?4就表示为前四位可能是“abcdef”,后四位可能是“123456”
自定义这里也好理解。作者写的很清楚。就是自定义不同的字符集方便进行掩码暴力破解。
总结一下破解方式和命令,跟着文章做下实验(VM上需要把内存调为单核4g不然无法运行hashcat):
一、7位小写字母,纯数字,小写字母加数字
7位小写字母:
hashcat64 -a 3 -m 0 --force 7a47c6db227df60a6d67245d7d8063f3 ?l?l?l?l?l?l?l
7a47c6db227df60a6d67245d7d8063f3:qiyoupq
1-8位数字:
hashcat -a 3 -m 0 --force 4488cec2aea535179e085367d8a17d75 --increment --increment-min 1 --increment-max 8 ?d?d?d?d?d?d?d?d
1-8位小写字母+数字破解:
hashcat -a 3 -m 0 --force ab65d749cba1656ca11dfa1cc2383102 --increment --increment-min 1 --increment-max 8 ?h?h?h?h?h?h?h?h
ab65d749cba1656ca11dfa1cc2383102:abc126
二、1-8位数字+大小写字母+可见特殊符号
hashcat -a 3 -m -1 ?d?u?l?s d37fc9ee39dd45a7717e3e3e9415f65d --increment --increment-min 1 --increment-max 8 ?1?1?1?1?1?1?1?1
或者:
hashcat -a 3 -m 0 d37fc9ee39dd45a7717e3e3e9415f65d --increment --increment-min 1 --increment-max 8 ?a?a?a?a?a?a?a?a
字典破解
-a 0是指定字典破解模式,-o是输出结果到文件中
hashcat -a 0 ede900ac1424436b55dc3c9f20cb97a8 -o result.txt
如果不知道目标密码的构成情况,可以直接使用 ?a 表示使用所有字符进行破解
hashcat -a 3 -0 19b9a36f0cab6d89cd4d3c21b2aa15be --increment --increment-min 1 --increment-max 8 ?a?a?a?a?a?a?a?a --show
使用字典破解
hashcat -a 0 e10adc3949ba59abbe56e057f20f883e password.txt
使用字典批量破解
hashcat -a 0 hash.txt password.txt
字典组合破解
hashcat -a 1 ab65d749cba1656ca11dfa1cc2383102 pwd1.txt pwd2.txt
Mysql4.1/5
hashcat -a 3 -m 300 --force 6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 ?d?d?d?d?d?d
可以使用 select authentication_string from mysql.user; 查看当前数据库中的密码哈希值。
sha512crypt 6 6 6, SHA512 (Unix)
sha512crypt 6 6 6, SHA512 (Unix) 破解,为了避免系统误识别到特殊字符,这里为哈希值加了单引号
hashcat -a 3 -m 1800 --force '$6$mxuA5cdy$XZRk0CvnPFqOgVopqiPEFAFK72SogKVwwwp7gWaUOb7b6tVwfCpcSUsCEk64ktLLYmzyew/xd0O0hPG/yrm2X.' ?l?l?l?l
可通过 cat /etc/shadow 获取哈希值
或者不删除用户名,直接使用 --username 参数
hashcat -a 3 -m 1800 --force 'qiyou:$6$QDq75ki3$jsKm7qTDHz/xBob0kF1Lp170Cgg0i5Tslf3JW/sm9k9Q916mBTyilU3PoOsbRdxV8TAmzvdgNjrCuhfg3jKMY1' ?l?l?l?l?l --username
NTLM
NT Hash
hashcat -a 3 -m 1000 209C6174DA490CAEB422F3FA5A7AE634 ?l?l?l?l?l
LM Hash
hashcat -a 3 -m 3000 F0D412BD764FFE81AAD3B435B51404EE ?l?l?l?l?l
NetNTLM Hash
hashcat -a 3 -m 5500 teams.six::::822795daaf96s0a811fs6dd7b01dscssc601635cc1339basda6:e125cddcf51337asc7 -1 ?l?u ?1?1?1?1?d?d?d?d --force
MSSQL (2005)
hashcat -a 3 -m 132 --force 0x01008c8006c224f71f6bf0036f78d863c3c4ff53f8c3c48edafb ?l?l?l?l?l?d?d?d
WordPress 密码 hash
hashcat -a 3 -m 400 --force '$P$BYEYcHEj3vDhV1lwGBv6rpxurKOEWY/' ?d?d?d?d?d?d
具体加密脚本在 ./wp-includes/class-phpass.php 的 HashPassword 函数
Discuz 用户密码 hash
hashcat -a 3 -m 2611 --force 14e1b600b1fd579f47433b88e8d85291: ?d?d?d?d?d?d
-a 3 -m 400 --force ‘ P P PBYEYcHEj3vDhV1lwGBv6rpxurKOEWY/’ ?d?d?d?d?d?d
> 具体加密脚本在 ./wp-includes/class-phpass.php 的 HashPassword 函数
Discuz 用户密码 hash
```text
hashcat -a 3 -m 2611 --force 14e1b600b1fd579f47433b88e8d85291: ?d?d?d?d?d?d
其密码加密方式 md5(md5( p a s s ) . pass). pass).salt)