返回首页

Hashcat+John the Ripper:密码审计工具完全指南

+John the Ripper:密码审计工具完全指南

从零搭建企业级密码审计环境,用开源工具替代L0phtCrack,覆盖GPU加速破解、规则攻击、字典生成全流程。

一、为什么做密码审计?

弱密码是企业安全的头号杀手。Verizon DBIR报告显示超过80%的数据泄露涉及弱密码或凭证被盗。密码审计是红蓝对抗中的核心环节:

  • 蓝队视角:定期审计AD密码策略有效性,发现弱密码账户
  • 红队视角:对获取的哈希进行离线破解,提升权限

商业工具L0phtCrack起步价**$599/年**,功能上已被开源工具全面超越。本文将搭建基于Hashcat + John the Ripper的完整密码审计流水线。

二、工具定价对比

工具 定价 核心特性 推荐指数
L0phtCrack $599/年起 、AD集成 ★★★☆☆
Hashcat Pro 无Pro版,开源免费 GPU加速、算法最多 ★★★★★
John the Ripper 开源免费(社区版) 智能模式、历史悠久 ★★★★★
CeWL 免费 自定义字典生成 ★★★★☆
Hydra 免费 在线密码爆破 ★★★★☆

结论:L0phtCrack的唯一优势是Windows GUI易用性,但在破解速度、算法支持、灵活性上完全被Hashcat碾压。

三、工具安装(完整步骤)

3.1 Hashcat 安装

# Ubuntu/Debian
sudo  
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驱动(示例)
sudo apt install -y nvidia-driver-535 nvidia--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 密码
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在线密码爆破

# 爆破
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" @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集群 多格式混合破解

十、最佳实践建议

  1. 字典为王:投入80%精力在字典质量和规则编写上,而非暴力破解
  2. 规则叠加:OneRuleToRuleThemAll是起点,根据目标密码策略定制规则
  3. GPU是关键:一块RTX 4090的NTLM破解速度约300GH/s,是CPU的100倍+
  4. 增量破解:先规则后掩码,先常见后暴力
  5. 合规操作:密码审计必须有书面授权,哈希文件妥善保管

总结

Hashcat + John the Ripper + CeWL + Hydra的组合已经全面超越L0phtCrack等商业方案。Hashcat的GPU加速能力和350+哈希格式支持使其成为密码审计的绝对首选,John the Ripper的智能模式和动态格式则是有力补充。这套开源工具栈完全可以支撑企业级密码审计需求,无需为商业工具付费。

常见问题

一、为什么做密码审计?

>一、为什么做密码审计?弱密码是企业安全的头号杀手。Verizon DBIR报告显示超过80%的数据泄露涉及弱密码或凭证被盗。密码审计是红蓝对抗中的核心环节: 蓝队视角:定期审计AD密码策略有效性,发现弱密码账户 红队视角:对获取的哈希进行离线破解,提升权限 商业工具L0phtCrack起步价**$599/年**,功能上已被开源工具全面超越。本文将搭建基于Hashcat + John the Ripper的完整密码审计流水线。

评论