crack-hashcat crack-hashcat

高级密码恢复和哈希破解工具,支持多种算法和攻击模式。用于:(1) 执行授权的密码审计和安全评估,(2) 在取证调查中恢复被捕获哈希的密码,(3) 测试密码策略强度和复杂性,(4) 验证加密实现,(5) 对密码哈希函数进行安全研究,(6) 在渗透测试报告中展示密码弱点。

渗透测试 0 次安装 0 次浏览 更新于 3/1/2026

Hashcat密码恢复

概览

Hashcat是世界上最快的密码恢复工具,支持超过300种哈希算法和多种攻击模式。这项技能涵盖了授权的密码审计、取证密码恢复和安全研究应用。 重要:密码破解只能在您被授权破解的哈希上执行。未经授权的密码破解是非法的。始终确保适当的授权和法律合规。

快速开始

基本密码破解:

# 确定哈希类型
hashcat --example-hashes | grep -i md5

# 对MD5哈希进行字典攻击
hashcat -m 0 -a 0 hashes.txt wordlist.txt

# 显示破解的密码
hashcat -m 0 hashes.txt --show

# 基准系统性能
hashcat -b

核心工作流程

密码破解工作流程

进度: [ ] 1. 验证密码破解的授权 [ ] 2. 确定哈希算法类型 [ ] 3. 准备哈希文件和词表 [ ] 4. 选择适当的攻击模式 [ ] 5. 执行破解操作 [ ] 6. 分析破解的密码 [ ] 7. 记录密码政策弱点 [ ] 8. 安全删除哈希文件和结果 系统地完成每个步骤。检查已完成的项目。

1. 授权验证

关键:在任何密码破解之前:

  • 确认数据所有者的书面授权
  • 验证破解捕获的哈希的法律权利
  • 了解数据处理和保留要求
  • 记录取证案例的保管链
  • 确保破解密码的安全存储

2. 哈希识别

确定哈希算法:

# 显示所有支持的哈希类型
hashcat --example-hashes

# 常见哈希类型
hashcat --example-hashes | grep -i "MD5"
hashcat --example-hashes | grep -i "SHA"
hashcat --example-hashes | grep -i "NTLM"

# 使用hash-identifier(单独的工具)
hash-identifier
# 提示时粘贴哈希

# Hashcat模式数字(常见)
# 0 = MD5
# 100 = SHA1
# 1000 = NTLM
# 1400 = SHA256
# 1800 = sha512crypt
# 3200 = bcrypt
# 5600 = NetNTLMv2
# 13100 = Kerberos 5 TGS-REP

3. 哈希文件准备

准备哈希文件:

# 简单的哈希文件(每行一个哈希)
echo "5f4dcc3b5aa765d61d8327deb882cf99" > hashes.txt

# 带用户名的哈希(username:hash格式)
cat > hashes.txt <<EOF
admin:5f4dcc3b5aa765d61d8327deb882cf99
user1:098f6bcd4621d373cade4e832627b4f6
EOF

# 带盐的哈希(hash:salt格式,适用于某些算法)
echo "hash:salt" > hashes.txt

# 从/etc/shadow(Linux)
sudo cat /etc/shadow | grep -v "^#" | grep -v ":\*:" | grep -v ":!:" > shadow_hashes.txt

# 从NTDS.dit(Active Directory)
secretsdump.py -ntds ntds.dit -system SYSTEM -hashes lmhash:nthash LOCAL > ad_hashes.txt

4. 攻击模式

选择合适的攻击模式: 字典攻击(模式0)

# 基本字典攻击
hashcat -m 0 -a 0 hashes.txt rockyou.txt

# 多个词表
hashcat -m 0 -a 0 hashes.txt wordlist1.txt wordlist2.txt

# 带规则
hashcat -m 0 -a 0 hashes.txt rockyou.txt -r rules/best64.rule

组合攻击(模式1)

# 从两个词表中组合单词
hashcat -m 0 -a 1 hashes.txt wordlist1.txt wordlist2.txt

暴力破解攻击(模式3)

# 所有小写字母,8个字符
hashcat -m 0 -a 3 hashes.txt ?l?l?l?l?l?l?l?l

# 混合大小写和数字,6个字符
hashcat -m 0 -a 3 hashes.txt ?1?1?1?1?1?1 -1 ?l?u?d

# 自定义字符集
hashcat -m 0 -a 3 hashes.txt ?1?1?1?1?1?1?1?1 -1 abc123

掩码攻击(模式3带模式)

# 密码格式:大写字母+6个小写字母+2位数字
hashcat -m 0 -a 3 hashes.txt ?u?l?l?l?l?l?l?d?d

# 年份模式:单词+4位数字(2019-2024)
hashcat -m 0 -a 3 hashes.txt password?d?d?d?d

# 常见模式
hashcat -m 0 -a 3 hashes.txt ?u?l?l?l?l?l?d?d?s  # 大写字母+单词+数字+特殊字符

混合攻击(模式6和7)

# 词表+掩码(追加)
hashcat -m 0 -a 6 hashes.txt wordlist.txt ?d?d?d?d

# 掩码+词表(前置)
hashcat -m 0 -a 7 hashes.txt ?d?d?d?d wordlist.txt

字符集

  • ?l = 小写字母(abcdefghijklmnopqrstuvwxyz)
  • ?u = 大写字母(ABCDEFGHIJKLMNOPQRSTUVWXYZ)
  • ?d = 数字(0123456789)
  • ?s = 特殊字符(!@#$%^&*…)
  • ?a = 所有字符(l+u+d+s)
  • ?b = 所有可打印ASCII字符

5. 性能优化

优化破解性能:

# 使用GPU加速
hashcat -m 0 -a 0 hashes.txt wordlist.txt -w 3

# 工作负载配置文件
# -w 1 = 低(桌面可用)
# -w 2 = 默认
# -w 3 = 高(专用破解)
# -w 4 = 噩梦(最大性能)

# 指定GPU设备
hashcat -m 0 -a 0 hashes.txt wordlist.txt -d 1

# 显示性能基准
hashcat -b

# 优化内核
hashcat -m 0 -a 0 hashes.txt wordlist.txt -O

# 显示预计时间
hashcat -m 0 -a 0 hashes.txt wordlist.txt --runtime=3600

6. 规则和变异

应用密码变异规则:

# 使用规则文件
hashcat -m 0 -a 0 hashes.txt wordlist.txt -r rules/best64.rule

# 多个规则文件
hashcat -m 0 -a 0 hashes.txt wordlist.txt -r rules/best64.rule -r rules/leetspeak.rule

# 常见Hashcat规则
# best64.rule - 速度/覆盖率最佳的64条规则
# dive.rule - 深度变异
# toggles1.rule - 情况切换
# generated2.rule - 复杂变异

# 自定义规则示例
# : = 无操作
# l = 全部小写
# u = 全部大写
# c = 首字母大写,其余小写
# $1 = 追加"1"
# ^2 = 预置"2"
# sa@ = 将'a'替换为'@'

7. 会话管理

管理破解会话:

# 保存会话
hashcat -m 0 -a 0 hashes.txt wordlist.txt --session=mysession

# 恢复会话
hashcat --session=mysession --restore

# 显示状态
hashcat --session=mysession --status

# 删除会话
hashcat --session=mysession --remove

# 每60秒自动检查点
hashcat -m 0 -a 0 hashes.txt wordlist.txt --session=mysession --restore-file-path=/path/to/checkpoint

8. 结果和报告

查看和导出结果:

# 显示破解的密码
hashcat -m 0 hashes.txt --show

# 仅显示用户名和密码
hashcat -m 0 hashes.txt --show --username

# 导出到文件
hashcat -m 0 hashes.txt --show > cracked.txt

# 显示破解统计信息
hashcat -m 0 hashes.txt --show --status

# 左侧(未破解的哈希)
hashcat -m 0 hashes.txt --left

安全考虑

授权和法律合规

  • 明确授权:所有密码破解都需要书面许可
  • 取证保管链:维护证据完整性
  • 数据保护:安全处理破解的密码
  • 范围限制:仅破解特别授权的哈希
  • 法律管辖区:了解适用法律(CFAA,GDPR等)

运营安全

  • 安全存储:加密哈希文件和结果
  • 离线破解:尽可能在隔离系统上执行
  • 资源管理:在破解期间监控系统资源
  • 温度:确保长时间GPU使用时的适当冷却
  • 电源:使用浪涌保护硬件安全

审计日志

记录所有密码破解活动:

  • 哈希来源和获取方法
  • 授权文件
  • 使用的哈希算法和攻击模式
  • 破解开始和结束时间戳
  • 成功率和破解时间
  • 应用的词表和规则
  • 密码复杂性分析
  • 安全删除工件

合规性

  • MITRE ATT&CK:T1110(暴力破解)
    • T1110.002(密码破解)
  • NIST SP 800-63B:数字身份指南密码
  • PCI-DSS:密码安全要求
  • ISO 27001:A.9.4 秘密认证信息管理

常见模式

模式1:Windows域密码审计

# 从NTDS.dit提取NTLM哈希
secretsdump.py -ntds ntds.dit -system SYSTEM LOCAL > ad_hashes.txt

# 破解NTLM哈希
hashcat -m 1000 -a 0 ad_hashes.txt rockyou.txt -r rules/best64.rule

# 显示破解的域管理员账户
hashcat -m 1000 ad_hashes.txt --show | grep -i "domain admins"

模式2:Linux密码审计

# 从/etc/shadow提取哈希
sudo unshadow /etc/passwd /etc/shadow > linux_hashes.txt

# 破解SHA-512 crypt哈希
hashcat -m 1800 -a 0 linux_hashes.txt rockyou.txt

# 分析密码复杂性
hashcat -m 1800 linux_hashes.txt --show | awk -F: '{print length($2), $2}'

模式3:Wi-Fi WPA2破解

# 将pcap转换为hashcat格式(使用cap2hccapx)
cap2hccapx capture.cap wpa.hccapx

# 破解WPA2握手
hashcat -m 22000 -a 0 wpa.hccapx rockyou.txt

# 对数字密码使用掩码攻击
hashcat -m 22000 -a 3 wpa.hccapx ?d?d?d?d?d?d?d?d

模式4:Web应用程序哈希破解

# 破解MD5哈希(Web应用程序数据库转储)
hashcat -m 0 -a 0 webapp_hashes.txt rockyou.txt -r rules/best64.rule

# 破解bcrypt哈希(慢但安全)
hashcat -m 3200 -a 0 bcrypt_hashes.txt wordlist.txt -w 3

# 带盐的SHA256
hashcat -m 1400 -a 0 salted_hashes.txt wordlist.txt

模式5:Kerberos TGT破解(Kerberoasting)

# 破解Kerberos 5 TGS-REP
hashcat -m 13100 -a 0 kerberos_tickets.txt rockyou.txt -r rules/best64.rule

# 专注于服务账户
hashcat -m 13100 -a 0 kerberos_tickets.txt wordlist.txt --username

集成点

密码政策分析

#!/bin/bash
# analyze_passwords.sh - 密码政策合规性检查

CRACKED_FILE="$1"

echo "密码长度分布:"
awk -F: '{print length($2)}' "$CRACKED_FILE" | sort -n | uniq -c

echo -e "
带有字典单词的密码:"
grep -f /usr/share/dict/words "$CRACKED_FILE" | wc -l

echo -e "
没有特殊字符的密码:"
grep -v "[!@#$%^&*]" "$CRACKED_FILE" | wc -l

echo -e "
常见密码模式:"
grep -E "^password|123456|qwerty" "$CRACKED_FILE" | wc -l

报告

# 生成密码审计报告
cat > audit_report.sh <<'EOF'
#!/bin/bash
TOTAL=$(wc -l < hashes.txt)
CRACKED=$(hashcat -m 1000 hashes.txt --show | wc -l)
PERCENT=$((CRACKED * 100 / TOTAL))

echo "密码审计报告"
echo "===================="
echo "总哈希数:$TOTAL"
echo "破解:$CRACKED"
echo "成功率:$PERCENT%"
echo ""
echo "建议:"
echo "- 实施至少12个字符的最小密码长度"
echo "- 要求复杂的密码(大写,小写,数字,特殊)"
echo "- 启用多因素认证"
echo "- 实施密码历史和轮换"
EOF
chmod +x audit_report.sh

故障排除

问题:破解速度慢

解决方案

# 使用优化的内核
hashcat -m 0 -a 0 hashes.txt wordlist.txt -O

# 增加工作负载
hashcat -m 0 -a 0 hashes.txt wordlist.txt -w 3

# 检查GPU利用率
hashcat -m 0 -a 0 hashes.txt wordlist.txt --status

# 验证GPU驱动程序
nvidia-smi  # 对于NVIDIA
rocm-smi    # 对于AMD

问题:内存不足

解决方案

# 减少词表大小
head -n 1000000 large_wordlist.txt > smaller_wordlist.txt

# 禁用优化
hashcat -m 0 -a 0 hashes.txt wordlist.txt(去掉-O标志)

# 分割哈希文件
split -l 1000 hashes.txt hash_chunk_

问题:哈希格式错误

解决方案

  • 验证哈希模式(-m)是否匹配哈希类型
  • 检查哈希文件格式(删除额外的空格,新行)
  • 确保带盐哈希的盐格式正确
  • 如果哈希包含用户名,使用–username标志

防御性考虑

防止密码破解: 强密码政策

  • 最小长度:12+字符
  • 复杂性要求(混合大小写,数字,特殊)
  • 禁止常见密码
  • 实施密码历史
  • 定期轮换特权账户的密码 技术控制
  • 使用强哈希算法(bcrypt,scrypt,Argon2)
  • 实施盐值和密钥扩展
  • 使用自适应哈希函数
  • 启用多因素认证
  • 实施账户锁定策略
  • 监控暴力破解尝试 哈希存储最佳实践
  • 从不存储明文密码
  • 使用强,现代的哈希算法
  • 实施每个密码的唯一盐
  • 使用适当的迭代计数(bcrypt成本,PBKDF2轮次)
  • 定期更新哈希参数

参考资料