工具:hashcat
要准备好字典
字典合并及排序
$第一个和第二个之间是加密形式 第二个和第三个直接是编码值
1 MD5
2 blowfish
5 SHA-256
6 SHA-512
cat*.dic>file.txt
Linux下使用
sort -u file.txt>password.lst
1.使用的参数
即:hashcat [选项] 破解的哈希值或hash文件、hccapx文件 [字典|掩码|目录] …
Hccapxfile对应无线包,其对应破解哈希类型为“-m 2500 = WPA/WPA2”。
–help查看帮助
2.选项
(1)基础选项
-m, —hash-type=NUM 哈希类别,其NUM值参考其帮助信息下面的哈希类别值,其值为数字。如果不指定m值则默认指md5,例如-m 1800是sha512 Linux加密。
-a, --attack-mode=NUM 攻击模式,其值参考后面对参数。“-a 0”字典攻击,“-a 1” 组合攻击;“-a 3”掩码攻击。
-V, —version 版本信息
-h, --help 帮助信息。
--quiet 安静的模式, 抑制输出
(2)基准测试
-b, --benchmark 测试计算机破解速度和显示硬件相关信息
(3)杂项
--hex-salt salt值是用十六进制给出的
--hex-charset 设定字符集是十六进制给出
--runtime=NUM 运行数秒(NUM值)后的中止会话
--status 启用状态屏幕的自动更新
--status-timer=NUM 状态屏幕更新秒值
--status-automat 以机器可读的格式显示状态视图
--session 后跟会话名称,主要用于中止任务后的恢复破解。
(4)文件
-o, --outfile=FILE 定义哈希文件恢复输出文件
--outfile-format=NUM 定义哈希文件输出格式,见下面的参考资料
--outfile-autohex-disable 禁止使用十六进制输出明文
-p, --separator=CHAR 为哈希列表/输出文件定义分隔符字符
--show 仅仅显示已经破解的密码
--left 仅仅显示未破解的密码
--username 忽略hash表中的用户名,对linux文件直接进行破解,不需要进行整理。
--remove 移除破解成功的hash,当hash是从文本中读取时有用,避免自己手工移除已经破解的hash
--stdout 控制台模式
--potfile-disable 不写入pot文件
--debug-mode=NUM 定义调试模式(仅通过使用规则进行混合),参见下面的参考资料
--debug-file=FILE 调试规则的输出文件(请参阅调试模式)
-e, --salt-file=FILE 定义加盐文件列表
--logfile-disable 禁止logfile
(4) 资源
-c, --segment-size=NUM 字典文件缓存大小(M)
-n, --threads=NUM 线程数
-s, --words-skip=NUM 跳过单词数
-l, --words-limit=NUM 限制单词数(分布式)
(5)规则
-r, --rules-file=FILE 使用规则文件: -r 1.rule,
-g, --generate-rules=NUM 随机生成规则
--generate-rules-func-min= 每个随机规则最小值
--generate-rules-func-max=每个随机规则最大值
--generate-rules-seed=NUM 强制RNG种子数
(6)自定义字符集
-1, --custom-charset1=CS 用户定义的字符集
-2, --custom-charset2=CS 例如:
-3, --custom-charset3=CS --custom-charset1=?dabcdef : 设置?1 为0123456789abcdef
-4, --custom-charset4=CS -2mycharset.hcchr : 设置 ?2 包含在mycharset.hcchr
文件
(7)攻击模式
*大小写转换攻击:
--toggle-min=NUM 在字典中字母的最小值
--toggle-max=NUM 在字典中字母的最大值
*** 使用掩码攻击模式:**
--increment 使用增强模式
--increment-min=NUM 增强模式开始值
--increment-max=NUM 增强模式结束值
*** 排列攻击模式**
--perm-min=NUM 过滤比NUM数小的单词
--perm-max=NUM 过滤比NUM数大的单词
*** 查找表攻击模式:**
-t, --table-file=FILE 表文件
--table-min=NUM 在字典中的最小字符值
--table-max=NUM 在字典中的最大字符值
*** 打印攻击模式:**
--pw-min=NUM 如果长度大于NUM,则打印候选字符
--pw-max=NUM 如果长度小于NUM,则打印候选字符
--elem-cnt-min=NUM 每个链的最小元素数
--elem-cnt-max=NUM 每个链的最大元素数
--wl-dist-len 从字典表中计算输出长度分布
--wl-max=NUM 从字典文件中加载NUM个单词,设置0禁止加载。
--case-permute 在字典中对每一个单词进行反转
(8)参考
输出文件格式:
1 = hash[:salt]
2 = plain 明文
3 = hash[:salt]:plain
4 = hex_plain
5 = hash[:salt]:hex_plain
6 = plain:hex_plain
7 = hash[:salt]:plain:hex_plain
8 = crackpos
9 = hash[:salt]:crackpos
10 = plain:crackpos
11 = hash[:salt]:plain:crackpos
12 = hex_plain:crackpos
13 = hash[:salt]:hex_plain:crackpos
14 = plain:hex_plain:crackpos
15 = hash[:salt]:plain:hex_plain:crackpos
* 调试模式输出文件 (for hybrid mode only, by using rules):
1 = save finding rule
2 = save original word
3 = save original word and finding rule
4 = save original word, finding rule andmodified plain
*** 内置的字符集:**
?l = abcdefghijklmnopqrstuvwxyz 代表小写字母
?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ 代表大写字母
?d = 0123456789 代表数字
?s = !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 代表特殊字符
?a = ?l?u?d?s 大小写数字及特殊字符的组合
?b = 0x00 - 0xff
*攻击模式
0 = Straight (字典破解)
1 = Combination (组合破解)
2 = Toggle-Case (大小写转换)
3 = Brute-force(掩码暴力破解)
4 = Permutation(序列破解)
5 = Table-Lookup(查表破解)
6 = Hybrid dict + mask 字典加掩码破解
7 = Hybrid mask + dict 掩码+字典破解
8 = Prince(王子破解)
3.破解原则:先易后难
(1)利用收集的公开字典进行破解
(2)使用1-8位数字进行破解。
(3)使用1-8位小写字母进行破解
(4)使用1-8位大写字母进行破解
(5)使用1-8位混合大小写+数字+特殊字符进行破解
3.1破解规则
(1)字典攻击
-a 0 password.lst
(2)1到8为数字掩码攻击
-a 3 --increment --increment-min 1--increment-max 8 ?d?d?d?d?d?d?d?d –O
?d代表数字,可以换成小写字母?l,大写字母?u,特殊字符?s,大小写字母+特殊字符?a,–O表示最优化破解模式,可以加该参数,也可以不加该参数。
(3)8为数字攻击
-a 3 ?d?d?d?d?d?d?d?d
同理可以根据位数设置为字母大写、小写、特殊字符等模式。
(4)自定义字符
现在纯数字或者纯字母的密码是比较少见的,根据密码专家对泄漏密码的分析,90%的个人密码是字母和数字的组合,可以是自定义字符了来进行暴力破解,Hashcat支持4个自定义字符集,分别是 -1 -2 -3 -4。定义时只需要这样-2 ?l?d ,然后就可以在后面指定?2,?2表示小写字母和数字。这时候要破解一个8位混合的小写字母加数字:
Hashcat.exe -a 3 --force -2 ?l?d hassh值或者hash文件 ?2?2?2?2?2?2?2?2
例如破解dz小写字母+数字混合8位密码破解:
Hashcat -m 2611 -a 3 -2 ?l?d dz.hash ?2?2?2?2?2?2?2?2
(5)字典+掩码暴力破解
Hashcat还支持一种字典加暴力的破解方法,就是在字典前后再加上暴力的字符序列,比如在字典后面加上3为数字,这种密码是很常见的。使用第六种攻击模式:
a-6 (Hybrid dict + mask)
如果是在字典前面加则使用第7中攻击模式也即( a-7 = Hybridmask + dict),下面对字典文件加数字123进行破解:
H.exe -a 6 ffe1cb31eb084cd7a8dd1228c23617c8 password.lst ?d?d?d
假如ffe1cb31eb084cd7a8dd1228c23617c8的密码为password123,则只要password.lst包含123即可。
(6)掩码+字典暴力破解
H.exe -a 7 ffe1cb31eb084cd7a8dd1228c23617c8 password.lst ?d?d?d
假如ffe1cb31eb084cd7a8dd1228c23617c8的密码为123password,则只要password.lst包含password即可。
(7)大小写转换攻击,对password.lst中的单词进行大小写转换攻击
H.exe-a 2 ffe1cb31eb084cd7a8dd1228c23617c8 password.lst
4.获取并整理密码hashes值
4.2linux哈希值整理
cat /etc/shadow>myshadow.txt
对myshadow.txt进行整理仅仅保留加密部分
也可保留用户名部分 如果带用户名,则在破解是需要加–username参数。
4.3其它哈希值整理
一般来说一类密码哈希值单独保存为一个文件,有的密码带salt,因此需要完整的哈希值,例如discuz!论坛的密码值为:
ffe1cb31eb084cd7a8dd1228c23617c8:f56463
前段值类似md5加密,后段值为salt,如果没有salt值,其破解结果就相差甚远了。
5.破解hash值
5.1针对不同加密类型进行破解
(1)**linux sha512crypt
6
6
6, SHA512 (Unix)**加密方式:
hashcat -m 1800 sha512linux.txt p.txt
(2)**linux sha256crypt 5 5 5, SHA256 (Unix)**加密方式:
hashcat -m 7400 sha256linux.txt p.txt
(3)**linux下md5crypt, MD5 (Unix), Cisco-IOS 1 1 1 (MD5)**加密方式:
hashcat -m 500 linuxmd5.txt p.txt
(4)linux下bcrypt 2 ∗ 2* 2∗, Blowfish加密方式:
hashcat -m 3200 linuxmd5.txt p.txt
注意:在破解过程中成功则会直接输出,s可看破解状态,p暂停,s继续破解,q退出破解。
5.破解总结及技巧
5.1 GPU破解模式使用自动优化
在使用GPU模式进行破解时,可以使用-O参数自动进行优化
5.2 暴力破解一条md5值
(1)9位数字破解
Hashcat64.exe-a 3 --force d98d28ca88f9966cb3aaefebbfc8196f ?d?d?d?d?d?d?d?d?d
单独破解一条md5值需要加force参数
(2)9位字母破解
Hashcat64.exe-a 3 --force d98d28ca88f9966cb3aaefebbfc8196f ?l?l?l?l?l?l?l?l?l
5.3 破解带盐discuz密码
(1)数字破解
7位数字,7秒时间破解完成任务。
Hashcat64.exe-a 3 --force -m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463 ?d?d?d?d?d?d?d
8位数字破解,9秒时间破解完成任务。:
Hashcat64.exe-a 3 --force -m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463 ?d?d?d?d?d?d?d?d
9位数字破解,9秒时间破解完成任务。
Hashcat64.exe-a 3 --force -m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463 ?d?d?d?d?d?d?d?d?d
5.4 字母破解
(1)6位小写字母
Hashcat64.exe-a 3 --force -m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463 ?l?l?l?l?l?l
(2)7位小写字母
Hashcat64.exe-a 3 --force -m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463 ?l?l?l?l?l?l?l
(3)8位小写字母
Hashcat64.exe-a 3 --force -m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463 ?l?l?l?l?l?l?l?l
9分钟左右完成破解任务
(4)9位小写字母
Hashcat64.exe-a 3 --force -m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463 ?l?l?l?l?l?l?l?l?l-O
5.5 字母加数字
Hashcat64.exe-a 3 --force -m 2611 -2 ?d?l ffe1cb31eb084cd7a8dd1228c23617c8:f56463?2?2?2?2?2?2?2
(3)7位大写字母
Hashcat64.exe-a 3 –force –m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463 ?u?u?u?u?u?u?u
(4)6到8位数字破解
Hashcat64.exe-a 3 –force –m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463--increment --increment-min 6 --increment-max 8 ?l?l?l?l?l?ll?l
5.6 使用自定义破解
(1)使用数字加字母混合6位进行破解
Hashcat64.exe-a 3 --force -m 2611 -2 ?d?l ffe1cb31eb084cd7a8dd1228c23617c8:f56463?2?2?2?2?2?2 -O
(2)使用数字加字母混合7位进行破解,破解时间4分16秒
Hashcat64.exe-a 3 --force -m 2611 -2 ?d?l ffe1cb31eb084cd7a8dd1228c23617c8:f56463?2?2?2?2?2?2?2 –O
(3)使用数字加字母混合8位进行破解
Hashcat64.exe-a 3 --force -m 2611 -2 ?d?l ffe1cb31eb084cd7a8dd1228c23617c8:f56463?2?2?2?2?2?2?2?2 -O
5.7 字典破解模式
Hashcat64.exe-a 0 --force -m 2611 ffe1cb31eb084cd7a8dd1228c23617c8:f56463 password.lst
使用字典文件夹下的字典进行破解:
Hashcat32.exe-m 300 mysqlhashes.txt –remove -o mysql-cracked.txt ..\dictionaries\*
5.8 会话保存及恢复破解
(1)使用mask文件规则来破解密码
hashcat-m 2611 -a 3 --session mydz dz.hash masks/rockyou-7-2592000.hcmask
(2)恢复会话
hashcat--session mydz --restore
5.9 掩码破解
mask规则文件位于masks下,例如D:\PentestBox\hashcat-4.1.0\masks,执行破解设置为:
masks/8char-1l-1u-1d-1s-compliant.hcmask
masks/8char-1l-1u-1d-1s-noncompliant.hcmask
masks/rockyou-1-60.hcmask
masks/rockyou-2-1800.hcmask
masks/rockyou-3-3600.hcmask
masks/rockyou-4-43200.hcmask
masks/rockyou-5-86400.hcmask
masks/rockyou-6-864000.hcmask
masks/rockyou-7-2592000.hcmask
5.10 运用规则文件进行破解
Hashcat -m 300 mysqlhashes.txt–remove -o mysql-cracked.txt ..\dictionaries\* -r rules\best64.rule
hashcat -m 2611 -a 0 dz.hashpassword.lst -r rules\best64.rule -O