Hashcat+John the Ripper:密码审计工具完全指南
从零搭建企业级密码审计环境,用开源工具替代L0phtCrack,覆盖GPU加速破解、规则攻击、字典生成全流程。
一、为什么做密码审计?
弱密码是企业安全的头号杀手。Verizon DBIR报告显示超过80%的数据泄露涉及弱密码或凭证被盗。密码审计是红蓝对抗中的核心环节:
- 蓝队视角:定期审计AD密码策略有效性,发现弱密码账户
- 红队视角:对获取的哈希进行离线破解,提升权限
商业工具L0phtCrack起步价**$599/年**,功能上已被开源工具全面超越。本文将搭建基于Hashcat + John the Ripper的完整密码审计流水线。
二、工具定价对比
| 工具 | 定价 | 核心特性 | 推荐指数 |
|---|---|---|---|
| L0phtCrack | $599/年起 | Windows GUI、AD集成 | ★★★☆☆ |
| Hashcat Pro | 无Pro版,开源免费 | GPU加速、算法最多 | ★★★★★ |
| John the Ripper | 开源免费(社区版) | 智能模式、历史悠久 | ★★★★★ |
| CeWL | 免费 | 自定义字典生成 | ★★★★☆ |
| Hydra | 免费 | 在线密码爆破 | ★★★★☆ |
结论:L0phtCrack的唯一优势是Windows GUI易用性,但在破解速度、算法支持、灵活性上完全被Hashcat碾压。
三、工具安装(完整步骤)
3.1 Hashcat 安装
# Ubuntu/Debian
sudo apt update
sudo apt install -y hashcat
# 从源码编译(获取最新版本,推荐)
sudo apt install -y git build-essential
git clone https://github.com/hashcat/hashcat.git
cd hashcat
make
sudo make install
# 安装GPU驱动(NVIDIA示例)
sudo apt install -y nvidia-driver-535 nvidia-cuda-toolkit
# 验证GPU
nvidia-smi
hashcat -I # 列出可用设备
# 验证安装
hashcat --version
# 输出: v6.2.6 或更高
3.2 John the Ripper 安装
# 社区增强版(推荐,支持更多格式)
git clone https://github.com/openwall/john.git
cd john/src
./configure && make -s clean && make -sj4
# 测试
cd ../run
./john --test
# 添加到PATH
export PATH=$PATH:$(pwd)
echo 'export PATH=$PATH:'$(pwd) >> ~/.bashrc
3.3 CeWL 字典生成工具
sudo apt install -y cewl
# 或
gem install cewl
# 验证
cewl --help
3.4 Hydra 在线爆破工具
sudo apt install -y hydra
# 或从源码
git clone https://github.com/vanhauser-thc/thc-hydra.git
cd thc-hydra
./configure && make && sudo make install
hydra -h # 验证
四、Hashcat 实战教程
4.1 核心概念
Hashcat的关键参数:
-m:哈希类型(如-m 1000= NTLM,-m 3200= bcrypt)-a:攻击模式(0字典、3掩码、6混合、7混合)-r:规则文件-o:输出文件
4.2 常见哈希类型速查
| 哈希类型 | Hashcat模式 | John格式 | 场景 |
|---|---|---|---|
| NTLM | -m 1000 | nt | Windows NT哈希 |
| NTLMv2 | -m 5600 | netntlmv2 | AD网络认证 |
| bcrypt | -m 3200 | bcrypt | Linux密码 |
| MD5 | -m 0 | raw-md5 | 通用 |
| SHA-256 | -m 1400 | raw-sha256 | 通用 |
| Kerberoast (TGS) | -m 13100 | krb5tgs | AD票据 |
| AS-REP Roast | -m 18200 | krb5asrep | AD无预认证 |
4.3 字典攻击
# 基础字典攻击
hashcat -m 1000 ntlm_hashes.txt /usr/share/wordlists/rockyou.txt
# 字典 + 规则(极大提升命中率)
hashcat -m 1000 ntlm_hashes.txt /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule
# 多规则叠加
hashcat -m 1000 ntlm_hashes.txt /usr/share/wordlists/rockyou.txt \
-r /usr/share/hashcat/rules/toggles1.rule \
-r /usr/share/hashcat/rules/best64.rule
4.4 掩码攻击(暴力破解)
# 8位小写字母+数字
hashcat -m 1000 ntlm_hashes.txt -a 3 ?a?a?a?a?a?a?a?a
# 已知前缀 + 未知后缀
hashcat -m 1000 ntlm_hashes.txt -a 3 'Company?u?l?l?l?d?d'
# 常用掩码字符集:
# ?l = abcdefghijklmnopqrstuvwxyz
# ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
# ?d = 0123456789
# ?s = special chars
# ?a = ?l?u?d?s (全部)
4.5 掩码+字典混合攻击
# 字典 + 掩码后缀(如 Password123, Welcome2025)
hashcat -m 1000 ntlm_hashes.txt -a 6 /usr/share/wordlists/rockyou.txt ?d?d?d?d
# 掩码前缀 + 字典
hashcat -m 1000 ntlm_hashes.txt -a 7 ?d?d?d /usr/share/wordlists/rockyou.txt
4.6 规则攻击进阶
# 使用OneRuleToRuleThemAll(社区最佳通用规则)
wget https://github.com/NotSoSecure/password_cracking_rules/raw/master/OneRuleToRuleThemAll.rule
hashcat -m 1000 ntlm_hashes.txt rockyou.txt -r OneRuleToRuleThemAll.rule
# 自定义规则文件 example.rule:
# : # 不修改(原样尝试)
# c # 首字母大写
# $1 # 末尾追加字符'1'
# $! # 末尾追加字符'!'
# c $1 $2 $3 # 首字母大写 + 末尾追加123
hashcat -m 1000 ntlm_hashes.txt rockyou.txt -r custom.rule
4.7 Kerberoast票据破解
# 用Rubeus或impacket获取TGS票据后
# 将票据导出为hashcat格式,然后:
hashcat -m 13100 tgs_hashes.txt rockyou.txt -r best64.rule
# AS-REP Roast
hashcat -m 18200 asrep_hashes.txt rockyou.txt
4.8 性能优化
# 指定GPU工作负载(-n 线程数, -u 循环数)
hashcat -m 1000 hashes.txt rockyou.txt -w 3 # 最大性能模式
# 断点续跑
hashcat --session=mycrack -m 1000 hashes.txt rockyou.txt
# 恢复:
hashcat --session=mycrack --restore
# 输出已破解的哈希
hashcat -m 1000 hashes.txt rockyou.txt --show
五、John the Ripper 实战
5.1 基础用法
# 字典模式
./john --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
# 自动检测格式
./john hashes.txt
# 指定格式
./john --format=nt hashes.txt
./john --format=bcrypt hashes.txt
# 显示已破解密码
./john --show hashes.txt
./john --show --format=nt hashes.txt
5.2 John的智能模式(Incremental)
# John的增量模式比纯暴力更智能,基于字符频率统计
./john --incremental hashes.txt
# 限制字符集
./john --incremental=digits hashes.txt # 仅数字
5.3 John规则攻击
# 使用默认规则
./john --wordlist=rockyou.txt --rules hashes.txt
# 使用Jumbo版特定规则
./john --wordlist=rockyou.txt --rules=jumbo hashes.txt
5.4 John的杀手锏:动态格式
# John支持自定义哈希格式(Dynamic Mode)
# 例如破解自定义的 salted MD5: md5($p.$s)
./john --format='dynamic=md5($p.$s)' --wordlist=rockyou.txt custom_hashes.txt
六、CeWL自定义字典生成
# 从目标网站抓取关键词生成字典
cewl https://target-company.com -d 2 -m 5 -w company_dict.txt
# -d 2 = 抓取深度2层
# -m 5 = 最小单词长度5
# -w 输出文件
# 带认证的页面
cewl https://intranet.target.com -u admin -p password -d 3 -w internal_dict.txt
# 合并字典
cat company_dict.txt /usr/share/wordlists/rockyou.txt | sort -u > combined.txt
七、Hydra在线密码爆破
# SSH爆破
hydra -l admin -P rockyou.txt ssh://192.168.1.100
# RDP爆破
hydra -l administrator -P rockyou.txt rdp://192.168.1.100
# Web表单爆破
hydra -l admin -P rockyou.txt 192.168.1.100 http-post-form \
"/login:username=^USER^&password=^PASS^:Invalid credentials"
# 并发控制(避免锁定账户)
hydra -l admin -P passwords.txt -t 4 -f ssh://192.168.1.100
# -t 4 = 4线程
# -f = 找到第一个密码即停止
八、企业密码审计流水线
8.1 完整流程
# 1. 从AD导出哈希(需要域管理员权限)
secretsdump.py DOMAIN/admin:password@dc01 > ad_hashes.txt
# 2. 分类哈希
grep ':500:' ad_hashes.txt > admin_hashes.txt # 管理员账户
grep -v ':500:' ad_hashes.txt > user_hashes.txt # 普通用户
# 3. 字典准备
cewl https://company.com -d 2 -m 5 -w company.txt
cat company.txt /usr/share/wordlists/rockyou.txt | sort -u > dict.txt
# 4. 规则攻击(先用规则快速扫一遍)
hashcat -m 1000 admin_hashes.txt dict.txt -r best64.rule --show >> cracked.txt
hashcat -m 1000 user_hashes.txt dict.txt -r best64.rule --show >> cracked.txt
# 5. 掩码攻击(针对未破解的)
hashcat -m 1000 admin_hashes.txt -a 3 ?u?l?l?l?l?d?d?d --show >> cracked.txt
# 6. 生成报告
echo "=== 密码审计报告 ==="
echo "总哈希数: $(wc -l < user_hashes.txt)"
echo "已破解数: $(wc -l < cracked.txt)"
echo "破解率: $(python3 -c "print(f'{`wc -l < cracked.txt`/`wc -l < user_hashes.txt`*100:.1f}%')")"
8.2 持续监控脚本
#!/bin/bash
# crontab: 0 2 * * 1 /opt/audit/weekly_audit.sh
DATE=$(date +%Y%m%d)
WORK_DIR="/opt/audit/$DATE"
mkdir -p $WORK_DIR
# 导出新哈希
secretsdump.py DOMAIN/auditor:$PASS@dc01 > $WORK_DIR/hashes.txt
# 执行审计
hashcat -m 1000 $WORK_DIR/hashes.txt /opt/audit/master_dict.txt \
-r /opt/audit/OneRuleToRuleThemAll.rule \
--potfile-path=/opt/audit/hashcat.potfile \
-o $WORK_DIR/cracked.txt
# 对比上次结果,发现新弱密码
comm -13 /opt/audit/last_cracked.txt $WORK_DIR/cracked.txt > $WORK_DIR/new_weak.txt
# 发送告警
if [ -s $WORK_DIR/new_weak.txt ]; then
mail -s "[告警] 发现新弱密码 - $DATE" security@company.com < $WORK_DIR/new_weak.txt
fi
cp $WORK_DIR/cracked.txt /opt/audit/last_cracked.txt
九、功能对比总结
| 能力维度 | L0phtCrack | Hashcat | John the Ripper |
|---|---|---|---|
| 价格 | $599/年起 | 免费 | 免费 |
| GPU加速 | 有限支持 | 极强(多GPU) | 有限 |
| 哈希格式 | ~30种 | 350+种 | 400+种(Jumbo) |
| 攻击模式 | 字典+暴力 | 字典/掩码/规则/混合 | 字典/增量/规则 |
| 规则引擎 | 基础 | 极强(自定义规则) | 强 |
| 跨平台 | Windows为主 | 全平台 | 全平台 |
| 社区活跃度 | 低 | 极高 | 极高 |
| 自动化集成 | 差 | 优秀(命令行) | 优秀(命令行) |
| AD集成 | 好 | 需配合脚本 | 需配合脚本 |
| 适合场景 | Windows小团队 | 大规模GPU集群 | 多格式混合破解 |
十、最佳实践建议
- 字典为王:投入80%精力在字典质量和规则编写上,而非暴力破解
- 规则叠加:OneRuleToRuleThemAll是起点,根据目标密码策略定制规则
- GPU是关键:一块RTX 4090的NTLM破解速度约300GH/s,是CPU的100倍+
- 增量破解:先规则后掩码,先常见后暴力
- 合规操作:密码审计必须有书面授权,哈希文件妥善保管
总结
Hashcat + John the Ripper + CeWL + Hydra的组合已经全面超越L0phtCrack等商业方案。Hashcat的GPU加速能力和350+哈希格式支持使其成为密码审计的绝对首选,John the Ripper的智能模式和动态格式则是有力补充。这套开源工具栈完全可以支撑企业级密码审计需求,无需为商业工具付费。
评论