前言
hashcat是世界上最快,最先进的密码恢复实用程序,为300多种高度优化的哈希算法提供了五种独特的攻击模式。hashcat支持Linux,Windows和macOS平台,且支持使用CPU,GPU和其他硬件加速器计算,并具有分布式密码破解的功能。 参数经典字典破解用法 - hashcat testHashfile --hash-type 0 --attack-mode 0 passDic.txt
- -m,--hash-type选择哈希类型,
- 1000为windows nt hash,1800是sha512 Linux加密,不指定-m默认为0即md5。
- -a,--attack-mode选择模式
- 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(王子破解)
- -b, --benchmark 测试计算机破解速度和显示硬件相关信息
- -h,--help 帮助,可查看hashcat各参数的用法和可供破解的哈希类型编号
- --quiet 静默模式, 抑制输出
- -n, --threads=NUM 线程数
- -o, --outfile=FILE 定义哈希文件恢复输出文件
- --outfile-format=NUM 定义哈希文件输出格式,见下面的参考资料
- --outfile-autohex-disable 禁止使用十六进制输出明文
- --hex-salt salt值是用十六进制给出的
- --hex-charset 设定字符集是十六进制给出
- --runtime=NUM 运行数秒(NUM值)后的中止会话
- --status 启用状态屏幕的自动更新
- --status-timer=NUM 状态屏幕更新秒值
- --status-automat 以机器可读的格式显示状态视图
- --session 后跟会话名称,主要用于中止任务后的恢复破解。
- 内置的字符集:
- ?l = abcdefghijklmnopqrstuvwxyz 代表小写字母
- ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ 代表大写字母
- ?d = 0123456789 代表数字
- ?s = !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 代表特殊字符
- ?a = ?l?u?d?s 大小写数字及特殊字符的组合
- ?b = 0x00 - 0xff
复制代码 使用实例本文使用最常用的两种加密:linux系统密码(sha512)和windows系统密码(NT
HASH)做实例,并使用最常用的两种攻击方式进行演示。 字典破解linux系统密码查看linux hash的方式是打开/etc/shadow直接查看,/etc/shadow文件中每一行代表一个用户以及其密码hash以及密码配置信息,以如下格式分布。 - root:$6$t3lLj7DjLuEnQHCy$w.xIeZPxn61ew.17w09qMXkg.E4aXOM7IMjHJ7PRRiH7XSMaCdHI1Hc0pLyMqRZcafSZtz.UEOb3nmYxyFxKm.:18443:0:99999:7:::
- 用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段
复制代码其他字段都较好理解,其中加密密码和最后一次修改时间需要解释一下: 加密密码中如果第一个字符为!或者*的话,说明这是一个不能登录的账户,其他情况格式为$id$salt$encrypted 根据id可以判断加密方式,第二个$到第三个$之间的字段为salt,第三个$之后的字段为密码hash。 常见的情况 - id为1时,采用md5算法加密
- id为5时,采用SHA256算法加密
- id为6时,采用SHA512算法加密
复制代码最后一次修改时间是从1970-01-01开始计算的,每天加1,所以会显示为这样一个数字,我们可使用如下命令计算修改时间 - root@kali:~# date -d "1970-01-01 18443 days"
- 2020年 06月 30日 星期二 00:00:00 CST
复制代码了解了linux系统密码保存的情况,就可以提取出来使用hashcat破解,我们需要提取第二个冒号到第三个冒号之间的字段保存到一个文件root.txt中 - $6$t3lLj7DjLuEnQHCy$w.xIeZPxn61ew.17w09qMXkg.E4aXOM7IMjHJ7PRRiH7XSMaCdHI1Hc0pLyMqRZcafSZtz.UEOb3nmYxyFxKm.
复制代码然后使用准备好的字典top100.txt破解,将破解结果保存在result.txt中 - hashcat -m 1800 -a 0 -o result.txt root.txt top100.txt --force
复制代码 掩码破解windows用户密码提取到windows hash如下 - test:1005:aad3b435b51404eeaad3b435b51404ee:f9e37e83b83c47a93c2f09f66408631b:::
- 用户名称:RID:LM-HASH值:NT-HASH值
复制代码我们需要提取后方的NT-HASH用来破解,即f9e37e83b83c47a93c2f09f66408631b存入test.txt,由于我设置的是三位字母三位数字的密码,使用如下掩码进行爆破 - hashcat -m 1000 -a 3 -o result4.txt test.txt ?l?l?l?d?d?d --force
复制代码可以很快得到结果
|