安全矩阵

 找回密码
 立即注册
搜索
查看: 1977|回复: 0

哈希密码爆破工具hashcat

[复制链接]

46

主题

165

帖子

731

积分

高级会员

Rank: 4

积分
731
发表于 2021-4-20 22:23:39 | 显示全部楼层 |阅读模式
前言
hashcat是世界上最快,最先进的密码恢复实用程序,为300多种高度优化的哈希算法提供了五种独特的攻击模式。hashcat支持Linux,Windows和macOS平台,且支持使用CPU,GPU和其他硬件加速器计算,并具有分布式密码破解的功能。
参数
经典字典破解用法
  1. hashcat testHashfile --hash-type 0 --attack-mode 0 passDic.txt
  2. -m,--hash-type选择哈希类型,
  3. 1000为windows nt hash,1800是sha512 Linux加密,不指定-m默认为0即md5。
  4. -a,--attack-mode选择模式
  5. 0 = Straight (字典破解)
  6. 1 = Combination (组合破解)
  7. 2 = Toggle-Case (大小写转换)
  8. 3 = Brute-force(掩码暴力破解)
  9. 4 = Permutation(序列破解)
  10. 5 = Table-Lookup(查表破解)
  11. 6 = Hybrid dict + mask 字典加掩码破解
  12. 7 = Hybrid mask + dict 掩码+字典破解
  13. 8 = Prince(王子破解)
  14. -b, --benchmark   测试计算机破解速度和显示硬件相关信息
  15. -h,--help   帮助,可查看hashcat各参数的用法和可供破解的哈希类型编号
  16. --quiet    静默模式, 抑制输出
  17. -n, --threads=NUM    线程数
  18. -o,  --outfile=FILE    定义哈希文件恢复输出文件
  19. --outfile-format=NUM    定义哈希文件输出格式,见下面的参考资料
  20. --outfile-autohex-disable    禁止使用十六进制输出明文
  21. --hex-salt    salt值是用十六进制给出的
  22. --hex-charset    设定字符集是十六进制给出
  23. --runtime=NUM    运行数秒(NUM值)后的中止会话
  24. --status    启用状态屏幕的自动更新
  25. --status-timer=NUM    状态屏幕更新秒值
  26. --status-automat    以机器可读的格式显示状态视图
  27. --session   后跟会话名称,主要用于中止任务后的恢复破解。


  28. 内置的字符集:
  29. ?l = abcdefghijklmnopqrstuvwxyz 代表小写字母
  30. ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ 代表大写字母
  31. ?d = 0123456789 代表数字
  32. ?s = !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~  代表特殊字符
  33. ?a = ?l?u?d?s 大小写数字及特殊字符的组合
  34. ?b = 0x00 - 0xff
复制代码
使用实例
本文使用最常用的两种加密:linux系统密码(sha512)和windows系统密码(NT
HASH)做实例,并使用最常用的两种攻击方式进行演示。
字典破解linux系统密码
查看linux hash的方式是打开/etc/shadow直接查看,/etc/shadow文件中每一行代表一个用户以及其密码hash以及密码配置信息,以如下格式分布。
  1. root:$6$t3lLj7DjLuEnQHCy$w.xIeZPxn61ew.17w09qMXkg.E4aXOM7IMjHJ7PRRiH7XSMaCdHI1Hc0pLyMqRZcafSZtz.UEOb3nmYxyFxKm.:18443:0:99999:7:::

  2. 用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段
复制代码
其他字段都较好理解,其中加密密码和最后一次修改时间需要解释一下:
加密密码中如果第一个字符为!或者*的话,说明这是一个不能登录的账户,其他情况格式为$id$salt$encrypted
根据id可以判断加密方式,第二个$到第三个$之间的字段为salt,第三个$之后的字段为密码hash。
常见的情况
  1. id为1时,采用md5算法加密
  2. id为5时,采用SHA256算法加密
  3. id为6时,采用SHA512算法加密
复制代码
最后一次修改时间是从1970-01-01开始计算的,每天加1,所以会显示为这样一个数字,我们可使用如下命令计算修改时间
  1. root@kali:~# date -d "1970-01-01 18443 days"
  2. 2020年 06月 30日 星期二 00:00:00 CST
复制代码
了解了linux系统密码保存的情况,就可以提取出来使用hashcat破解,我们需要提取第二个冒号到第三个冒号之间的字段保存到一个文件root.txt中
  1. $6$t3lLj7DjLuEnQHCy$w.xIeZPxn61ew.17w09qMXkg.E4aXOM7IMjHJ7PRRiH7XSMaCdHI1Hc0pLyMqRZcafSZtz.UEOb3nmYxyFxKm.
复制代码
然后使用准备好的字典top100.txt破解,将破解结果保存在result.txt中
  1. hashcat -m 1800 -a 0 -o result.txt root.txt top100.txt --force
复制代码
掩码破解windows用户密码
查看windows hash的工具非常多,为了省事我直接使用前面文章介绍过的工具LaZagne 就不重复介绍新工具了 http://next.uuzdaisuki.com/2019/ ... %E4%BD%BF%E7%94%A8/
提取到windows hash如下
  1. test:1005:aad3b435b51404eeaad3b435b51404ee:f9e37e83b83c47a93c2f09f66408631b:::

  2. 用户名称:RID:LM-HASH值:NT-HASH值
复制代码
我们需要提取后方的NT-HASH用来破解,即f9e37e83b83c47a93c2f09f66408631b存入test.txt,由于我设置的是三位字母三位数字的密码,使用如下掩码进行爆破
  1. hashcat -m 1000 -a 3 -o result4.txt test.txt ?l?l?l?d?d?d --force
复制代码
可以很快得到结果

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-9-21 05:40 , Processed in 0.013428 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表