抛弃时间的人,时间也抛弃他。——莎士比亚
CUPP:把“常见密码画像”做成一张精准的字典
CUPP 的全称是 Common User Passwords Profiler。它不是一把“万能钥匙”,而是一台“画像机”:根据用户的公开信息与生活习惯,把最可能被用作密码的词汇组合出来,生成一个专用的字典,用于合法的渗透测试或取证调查中的密码强度评估与字典测试。
- 仓库地址:Mebus/cupp
- 项目描述:Common User Passwords Profiler
- 语言与环境:Python 3
- 许可证:GPL-3.0
官方 README 的出发点很朴素但很现实:很多弱口令并不是依靠暴力破解,而是靠“人”的规律。例如生日、昵称、宠物名、常见词 God、love、money、password 等。CUPP 的目标,就是将这类线索系统化,半自动生成“最像用户本人”的字典,帮助在合规场景里评估风险与修复薄弱口令。
能做什么
-
交互式画像
用一轮问题收集用户信息,自动组合出“符合个人习惯”的词表。 -
基于已有字典的再画像
对已有字典或 WyD.pl 的输出进行再加工,做“二次混合”和扩展。 -
下载大型词表
从仓库拉取超大词表,用于更全面的字典测试。 -
从 Alecto 数据库解析
直接解析默认用户名与密码的集合。Alecto 整合并净化了 Phenoelit 与 CIRT 的数据库。
这些都是 README 中明确列出的功能。使用前请确保你的场景合法合规,目标系统已授权进行测试。
快速开始
CUPP 依赖 Python 3,建议在干净的环境里运行。
1 | |
常用选项一览:
1 | |
使用示例
1. 交互式画像
当你在合法授权的测试中需要生成“针对某人的字典”:
1 | |
这会进入一个简单的问答流程。根据被测对象的信息,CUPP 会自动生成包含生日、昵称、宠物名、喜好等组合的词表,并保存到本地。将该词表用于字典测试,可更快识别出“人性化的弱口令”。
2. 基于已有字典再画像
如果你手里已经有一个通用词表或 WyD.pl 的输出,可以让 CUPP 为它“加一层画像”,提升针对性:
1 | |
CUPP 会将该字典与画像逻辑结合,输出更贴近“用户习惯”的组合。
3. 下载大型词表
需要大覆盖面的字典时,直接调用:
1 | |
CUPP 会从仓库下载巨型词表,适用于需要广覆盖测试的场景。
4. 从 Alecto DB 解析默认口令
解析默认用户名与密码集合(来自 Alecto 数据库,对 Phenoelit 与 CIRT 数据做了净化与合并):
1 | |
这在测试网络设备、默认配置服务时尤其有用。
配置文件
CUPP 使用 cupp.cfg 作为配置文件。你可以在其中调整生成策略,如是否添加年份、数字后缀、常见替换(例如 a→@,s→$ 等),以及输出文件的路径。具体字段的说明见仓库内的 cupp.cfg 注释。
一段完整的小流程
下面是一个在授权渗透测试里评估弱口令的最小流程示例,展示 CUPP 如何融入字典测试工作:
1 | |
注意:上例仅为“流程示意”,实际测试务必遵守法律法规与授权范围,选择合适的安全评估工具与方法。
适用场景
-
合法的渗透测试与红队演练
为特定目标生成高命中率的词表,加速弱口令识别,缩短测试时间。 -
取证与事件响应
在合法程序下,对涉事账户进行密码画像与字典测试,帮助还原攻击路径。 -
安全基线治理与审计
结合默认口令解析,排查设备与服务是否仍使用默认密码,推动安全加固。
合规与伦理
CUPP 的 README 明确了使用场景:合法的渗透测试与取证调查。它不鼓励、也不支持任何未经授权的系统访问。请记住:
- 仅在获得授权的系统与范围内使用
- 测试结果用于修复与加固,不用于破坏性行为
- 遵守所在国家与地区的法律法规及行业规范
许可证与致谢
- 许可证:GPL-3.0
- 项目维护:Mebus 以及贡献者们
- 历史来源:项目从 remote-exploit.org 导入,鼓励社区持续开发与维护
完整信息请查看仓库 README 与 LICENSE。
小结
CUPP 的价值不在于“更凶猛”,而在于“更贴近人的习惯”。当密码问题的根源是人性化的规律时,精准的画像字典往往是最有效的测试手段之一。把它用在对的地方、以对的方式,就能让弱口令更快暴露,从而更快被修复。
- 仓库:Mebus/cupp
- 快速帮助:
python3 cupp.py -h - 交互画像:
python3 cupp.py -i - 再画像:
python3 cupp.py -w wordlist.txt - 下载词表:
python3 cupp.py -l - Alecto 解析:
python3 cupp.py -a
你的密码策略,值得一张“更像你”的画像字典,当然也值得一次真正的加固。