口令库离线审计通过比对已知弱口令哈希或明文特征识别高危账户,不触碰生产环境、不依赖网络、不暴露原始密码;重点审计管理员账户、应用服务账户及批量规律性账号,使用本地构建的轻量可信口令库与哈希工具离线比对,输出【立即重置】【策略违规】【算法过时】【共享凭证】四类可操作清单,并闭环验证修复效果。

口令库离线审计不是靠“猜密码”,而是通过比对已知弱口令哈希或明文特征,快速定位系统中配置不合规的账号。核心在于:不触碰生产环境、不依赖网络、不暴露原始密码,却能精准识别风险账户。
明确审计目标:哪些账号要查?
重点关注三类高危账户:
- 所有具备管理员权限的系统账户(如 Linux 的 root、Windows 的 Administrator)
- 应用层服务账户(数据库用户、中间件后台账号、CTFd 平台的 admin 用户)
- 长期未修改、命名规律性强的批量账号(如 test01~test50、user2024 等)
准备离线口令库与工具链
不推荐使用网上泛滥的“万能字典”,应组合构建轻量、可信、可溯源的本地库:
- 基础弱口令集:包含 admin/123456、password、qwe123 等高频默认口令(来自 NIST SP 800-63B 和公开 breached password 统计)
- 企业定制词表:加入公司名、年份、部门缩写(如 “Fin2024”、“HR-2026”),避免被内部人员滥用
- 哈希比对工具:用 hashcat -m 1800(SHA-512 crypt)或 john --format=sha512crypt 对影子文件(/etc/shadow)离线爆破;Windows NTDS.dit 需先用 secretsdump.py 提取哈希后,用 john --format=NT
提取并脱敏账号凭证数据
关键原则:只导出哈希,绝不导出明文密码或完整影子文件到非可信终端。
- Linux 系统:运行 sudo awk -F: '$2 !~ /^\*|!$/ {print $1 ":" $2}' /etc/shadow > hashes.txt,过滤掉禁用账户和空密码项
- Windows 域环境:在域控上用 secretsdump.py -just-dc-ntds domain.local/admin@dc01 -outputfile ntds,仅保留 NT hash 行
- 应用数据库:若审计 CTFd 或 Confluence 用户表,导出 users.password_hash 字段(非 password 字段),确认其为 bcrypt/scrypt/Argon2 格式再比对
执行比对并生成修复清单
比对结果不是“是否破解”,而是“是否落入已知风险模式”。输出应直接对应可操作项:
- 命中基础弱口令哈希 → 标记为【立即重置】,关联账户名与最后登录时间
- 命中企业词表组合 → 标记为【策略违规】,触发口令复杂度策略检查(如 PAM 中 minlen=12, dcredit=-1 等是否生效)
- 无匹配但哈希强度过低(如 MD5/DES)→ 标记为【算法过时】,需推动应用升级密码存储方案
- 同一哈希复用于多个账户 → 标记为【共享凭证】,属严重权限蔓延风险
闭环修复与验证要点
修复不是改完密码就结束,必须验证机制是否真正生效:
- Linux:改密后执行 chage -l username 确认密码过期策略、最小长度已强制
- CTFd:检查 CTFd/forms/config.py 中 password_min_length = 12 是否启用,且登录接口调用的是 verify_password 而非直连数据库
- Windows:组策略中启用“密码必须符合复杂性要求”,并通过 gpresult /h report.html 确认策略已下发
- 所有系统:在修复后重新跑一次哈希比对,确认原风险项消失,且无新增低强度哈希出现











