Hashcat

Hashcat

简介

Hashcat 自称是世界上最快的密码恢复工具。它在2015年之前拥有专有代码库,但现在作为免费软件发布。适用于 Linux,OS X 和 Windows 的版本可以使用基于 CPU 或基于 GPU 的变体。支持 hashcat 的散列算法有 Microsoft LM hash,MD4,MD5,SHA 系列,Unix 加密格式,MySQL 和 Cisco PIX 等。

官网

hashcat - advanced password recovery

相关工具

nccgroup/hashcrack - 解包一些散列类型,选择合理的选项并调用 hashcat,hashcat 辅助工具 brannondorsey/naive-hashcat - 包括各种字典,组合,基于规则的攻击和掩码(暴力)攻击。hashcat 傻瓜版? wavestone-cdt/wavecrack - web 版的 hashcat s3inlc/hashtopolis - 分布式 Hashcat 服务

基本使用

安装

  1. mkdir /pentest && cd $_

  2. wget https://hashcat.net/files/hashcat-6.1.1.7z

  3. 7z x hashcat-6.1.1.7z && rm -rf hashcat-6.1.1.7z

  4. cd hashcat-6.1.1 && chmod +x hashcat.bin && cp hashcat.bin hashcat

  5. ln -s /pentest/hashcat-6.1.1/hashcat /usr/sbin/hashca

  • 在使用 GPU 模式进行破解时,可以使用 -O 参数自动进行优化

  • 所有的 hash 破解结果都在 hashcat.potfile 文件中

  • 支持windows、linux、mac,都有对应版本

常见参数

  1. -a 指定要使用的破解模式,其值参考后面对参数。“-a 0”字典攻击,“-a 1” 组合攻击;“-a 3”掩码攻击。

  2. -m 指定要破解的hash类型,如果不指定类型,则默认是MD5

  3. -o 指定破解成功后的hash及所对应的明文密码的存放位置,可以用它把破解成功的hash写到指定的文件中

  4. --force 忽略破解过程中的警告信息,跑单条hash可能需要加上此选项

  5. --show 显示已经破解的hash及该hash所对应的明文

  6. --increment 启用增量破解模式,你可以利用此模式让hashcat在指定的密码长度范围内执行破解过程

  7. --increment-min 密码最小长度,后面直接等于一个整数即可,配置increment模式一起使用

  8. --increment-max 密码最大长度,同上

  9. --outfile-format 指定破解结果的输出格式id,默认是3

  10. --username 忽略hash文件中的指定的用户名,在破解linux系统用户密码hash可能会用到

  11. --remove 删除已被破解成功的hash

  12. -r 使用自定义破解规则

攻击模式

  1. 0 | Straight(字段破解)

  2. 1 | Combination(组合破解)

  3. 3 | Brute-force(掩码暴力破解)

  4. 6 | Hybrid Wordlist + Mask(字典+掩码破解)

  5. 7 | Hybrid Mask + Wordlist(掩码+字典破解)

输出格式

  1. 1 = hash[:salt]

  2. 2 = plain

  3. 3 = hash[:salt]:plain

  4. 4 = hex_plain

  5. 5 = hash[:salt]:hex_plain

  6. 6 = plain:hex_plain

  7. 7 = hash[:salt]:plain:hex_plain

  8. 8 = crackpos

  9. 9 = hash[:salt]:crackpos

  10. 10 = plain:crackpos

  11. 11 = hash[:salt]:plain:crackpos

  12. 12 = hex_plain:crackpos

  13. 13 = hash[:salt]:hex_plain:crackpos

  14. 14 = plain:hex_plain:crackpos

  15. 15 = hash[:salt]:plain:hex_plain:crackpos

常见 Hash id 对照表

hashcat --help

  1. 900 | MD4 | Raw Hash

  2. 0 | MD5 | Raw Hash

  3. 5100 | Half MD5 | Raw Hash

  4. 100 | SHA1 | Raw Hash

  5. 1300 | SHA2-224 | Raw Hash

  6. 1400 | SHA2-256 | Raw Hash

  7. 10800 | SHA2-384 | Raw Hash

  8. 1700 | SHA2-512 | Raw Hash

  9. 17300 | SHA3-224 | Raw Hash

  10. 17400 | SHA3-256 | Raw Hash

  11. 17500 | SHA3-384 | Raw Hash

  12. 17600 | SHA3-512 | Raw Hash

  13. 17700 | Keccak-224 | Raw Hash

  14. 17800 | Keccak-256 | Raw Hash

  15. 17900 | Keccak-384 | Raw Hash

  16. 18000 | Keccak-512 | Raw Hash

  17. 600 | BLAKE2b-512 | Raw Hash

  18. 10100 | SipHash | Raw Hash

  19. 6000 | RIPEMD-160 | Raw Hash

  20. 6100 | Whirlpool | Raw Hash

  21. 6900 | GOST R 34.11-94 | Raw Hash

  22. 11700 | GOST R 34.11-2012 (Streebog) 256-bit, big-endian | Raw Hash

  23. 11800 | GOST R 34.11-2012 (Streebog) 512-bit, big-endian | Raw Hash

  24. 10 | md5($pass.$salt) | Raw Hash, Salted and/or Iterated

  25. 20 | md5($salt.$pass) | Raw Hash, Salted and/or Iterated

  26. 30 | md5(utf16le($pass).$salt) | Raw Hash, Salted and/or Iterated

  27. 40 | md5($salt.utf16le($pass)) | Raw Hash, Salted and/or Iterated

  28. 3800 | md5($salt.$pass.$salt) | Raw Hash, Salted and/or Iterated

  29. 3710 | md5($salt.md5($pass)) | Raw Hash, Salted and/or Iterated

  30. 4010 | md5($salt.md5($salt.$pass)) | Raw Hash, Salted and/or Iterated

  31. 4110 | md5($salt.md5($pass.$salt)) | Raw Hash, Salted and/or Iterated

  32. 2600 | md5(md5($pass)) | Raw Hash, Salted and/or Iterated

  33. 3910 | md5(md5($pass).md5($salt)) | Raw Hash, Salted and/or Iterated

  34. 4300 | md5(strtoupper(md5($pass))) | Raw Hash, Salted and/or Iterated

  35. 4400 | md5(sha1($pass)) | Raw Hash, Salted and/or Iterated

  36. 110 | sha1($pass.$salt) | Raw Hash, Salted and/or Iterated

  37. 120 | sha1($salt.$pass) | Raw Hash, Salted and/or Iterated

  38. 130 | sha1(utf16le($pass).$salt) | Raw Hash, Salted and/or Iterated

掩码设置

常见的掩码字符集

  1. l | abcdefghijklmnopqrstuvwxyz 纯小写字母

  2. u | ABCDEFGHIJKLMNOPQRSTUVWXYZ 纯大写字母

  3. d | 0123456789 纯数字

  4. h | 0123456789abcdef 常见小写子目录和数字

  5. H | 0123456789ABCDEF 常见大写字母和数字

  6. s | !"#$%&'()*+,-./:;<=>?@[]^_`{|}~ 特殊字符

  7. a | ?l?u?d?s 键盘上所有可见的字符

  8. b | 0x00 - 0xff 可能是用来匹配像空格这种密码的

掩码案例

  1. 八位数字密码:?d?d?d?d?d?d?d?d

  2. 八位未知密码:?a?a?a?a?a?a?a?a

  3. 前四位为大写字母,后面四位为数字:?u?u?u?u?d?d?d?d

  4. 前四位为数字或者是小写字母,后四位为大写字母或者数字:?h?h?h?h?H?H?H?H

  5. 前三个字符未知,中间为admin,后三位未知:?a?a?aadmin?a?a?a

  6. 6-8位数字密码:--increment --increment-min 6 --increment-max 8 ?l?l?l?l?l?l?l?l

  7. 6-8位数字+小写字母密码:--increment --increment-min 6 --increment-max 8 ?h?h?h?h?h?h?h?h

如果我们想设置字符集为:abcd123456!@-+,就需要用到自定义字符集,hashcat支持用户最多定义4组字符集

  1. --custom-charset1 [chars]等价于 -1

  2. --custom-charset2 [chars]等价于 -2

  3. --custom-charset3 [chars]等价于 -3

  4. --custom-charset4 [chars]等价于 -4 在掩码中用?1、?2、?3、?4来表示。

  5. --custom-charset1 abcd123456!@-+。 然后就可以用"?1"去表示这个字符集了

  6. --custom-charset2 ?l?d 这里和?2就等价于?h

  7. -1 ?d?l?u ?1就表示数字+小写字母+大写字母

  8. -3 abcdef -4 123456 那么?3?3?3?3?4?4?4?4就表示为前四位可能是“abcdef”,后四位可能是“123456”

例子

性能测试

hashcat -b --force

查看爆破案例

hashcat --example-hashes | less

爆破drupal7的密码hash

  1. echo"$S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR" > source.txt

  2. echo"$S$DWGrxef6.D0cwB5Ts.GlnLw15chRRWH2s1R3QBwC0EkvBQ/9TCGg" >> source.txt

  3. hashcat -m 7900 -a 0 source.txt pass01.txt

  4. -m 指定要破解的 hash 类型,如果不指定类型,则默认是 MD5

  5. -a 指定要使用的破解模式,其值参考后面对参数。“-a 0”字典攻击,“-a 1” 组合攻击;“-a 3”掩码攻击。

  6. source.txt 你要爆破的 hash 列表

  7. pass01.txt 你的密码表

爆破NTLM-hash

  1. hashcat -m 1000 hash.txt pass1.txt

  2. MODE: 1000

  3. TYPE: NTLM

  4. b4b9b02e6f09a9bd760f388b67351e2b

更多实验

阿里云按量-抢占式实例-NVIDIA T4-跑 Hashcat

注意点

  • 抢占式实例一次只能买1小时,切记1小时

  • 实例创建完后需要装对应的 NVIDIA 驱动

  • -f 测试的跑分速度很完美,但实际跑的时候速度是达不到的

优点

  • 相对便宜,实际用起来一小时不到2元,感觉像在用 vultr

  • 性能强

过程

  • 付费模式选择 抢占式实例

  • 实例类型选择 异构计算 GPU/FPGA/NPU

  • 分类选择 GPU 计算型

CPU和内存可以不用考虑,主要是选个好的 GPU,这里可以看到有 NVIDIA T4 和 NVIDIA P4 两种选择

这里选择 T4 便宜一点

镜像选择 Alibaba Cloud Linux 这个兼容 centos,用起来没啥问题

下一步网络选择

建议使用按固定带宽收费,你跑 hashcat 其实用不了多少流量, 带宽峰值 直接拉到 100M

创建完实例后,SSH连接,这里略

安装 hashcat,如果嫌速度慢,可以自己通过 lrzsz 的方式传上去

  1. mkdir /pentest && cd $_

  2. wget https://hashcat.net/files/hashcat-6.1.1.7z

  3. 7z x hashcat-6.1.1.7z && rm -rf hashcat-6.1.1.7z

  4. cd hashcat-6.1.1 && chmod +x hashcat.bin && cp hashcat.bin hashcat

  5. ln -s /pentest/hashcat-6.1.1/hashcat /usr/sbin/hashcat

安装显卡驱动

去 NVDIA driver search page 查看支持显卡的驱动最新版本及下载,下载之后是 .run 后缀

安装时一路回车即可,装完之后输入 nvidia-smi

  1. wget https://cn.download.nvidia.com/tesla/450.80.02/NVIDIA-Linux-x86_64-450.80.02.run

  2. sh NVIDIA-Linux-x86_64-450.80.02.run -no-x-check -no-nouveau-check -no-opengl-files

  3. nvidia-smi

然后就可以跑 hashcat 了

  1. hashcat -b --force

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值