目录
[CUPP 是什么?](#CUPP 是什么?)
[模式二:非交互模式 / 命令行模式](#模式二:非交互模式 / 命令行模式)
[实战案例:针对 "张三" 生成字典](#实战案例:针对 "张三" 生成字典)
CUPP 的全称是 Common User Passwords Profiler (常见用户密码分析器)。它不是一个简单的暴力生成器,而是一个基于社会工程学 和心理学的原理来生成高针对性字典的工具。
它的核心思想是:人们倾向于使用与自己密切相关的信息(如姓名、生日、宠物名、爱好等)来创建密码。 因此,如果你能收集到目标的这些信息,就能大幅提高密码破解的成功率。
CUPP 是一个极具代表性的社会工程学工具,它将人性弱点转化为技术上的攻击向量。对于渗透测试者而言,掌握 CUPP 意味着你的密码攻击从"盲目猜测"升级到了"精准推测",效率极大提升。但同时,也必须以负责任的道德观念来约束它的使用。
CUPP 是什么?
CUPP 是一个用 Python 编写的脚本,它通过交互式提问的方式,收集关于目标的个人信息,然后根据这些信息自动组合、变形,生成一个最有可能的密码列表。
与 Crunch 的区别:
- Crunch :生成全面 但庞大的字典,基于字符集和规则,是"地毯式轰炸"。
- CUPP :生成精准 且小巧的字典,基于个人信息,是"外科手术式打击"。
与 CeWL 的区别:
- CeWL :从目标网站爬取关键词生成字典。
- CUPP :根据你主动输入的目标信息生成字典。
安装CUPP
使用git克隆仓库 (推荐):
打开终端,输入以下命令:
git clone https://github.com/Mebus/cupp.git
这会将CUPP的代码下载到你当前目录下的一个名为 cupp
的文件夹中。
进入CUPP目录 :
使用 cd
命令进入刚刚下载的目录:
vb
`cd cupp`
再次运行CUPP :
现在尝试在正确的目录下运行命令:
python3 cupp.py -i
模式一:交互模式 (-i
)
这是 CUPP 最强大、最常用的功能。它会一步一步地问你关于目标的问题。
python3 cupp.py -i
# 或者,如果你用 apt 安装,可以直接输入:
cupp -i
详细交互流程与策略分析:
程序会依次提出以下问题,你了解的目标信息越多,生成的字典质量就越高:
First Name : 目标的名字(如:zhang
)
- 策略:这是最核心的信息之一,会以各种形式(全小写、首字母大写、全大写)出现在密码中。
Surname : 目标的姓氏(如:san
)
- 策略:同样核心,会与名字进行各种组合。
Nickname: 目标的昵称、外号、网名
- 策略:很多人喜欢用容易记住的昵称做密码。
Birthdate (DDMMYYYY) : 生日,格式是日日月月年年年年(如:15121995
)
- 策略 :这是极其常见 的密码成分。CUPP 会自动提取不同部分(如年
1995
、月年1295
、完整生日15121995
)。
Partner's name: 伴侣、配偶的名字
Partner's nickname: 伴侣的昵称
Partner's birthdate: 伴侣的生日
- 策略:重要他人的信息也是常见的密码来源。
Child's name: 孩子的名字
Child's nickname: 孩子的昵称
Child's birthdate: 孩子的生日
- 策略:对于有家庭的目标,孩子信息是高频密码词条。
Pet's name: 宠物名字
- 策略:经典的弱口令,必填项之一。
Company name: 公司名字
- 策略 :和工作相关的密码,例如
CompanyName2024
。
Do you want to add some key words about the victim? (y/n): 是否添加关于目标的关键词?
- 策略 :输入
y
,然后可以输入目标的爱好(如football
,coding
)、车型、偶像等任何可能相关的词。
Do you want to add special chars at the end of words? (y/n): 是否在词条末尾添加特殊字符?
- 策略 :一定要选
y
。因为很多密码策略要求包含特殊字符,这会生成如password!
,zhangsan123#
之类的变体。
Do you want to add random numbers at the end of words? (y/n): 是否在词条末尾添加随机数字?
- 策略 :一定要选
y
。这是最常见的密码习惯,如password123
,zhangsan2024
。CUPP 会添加2位到4位的数字串。
Leet mode? (i.e. leet = 1337) (y/n): 是否启用 Leet 语变换?
- 策略 :建议选
y
。它会将字母替换为形状相似的数字或符号(如a
->@
,4
;e
->3
;s
->$
,5
;o
->0
),生成如p@ssw0rd
,zh@ng$an
的密码。
执行完毕后 ,CUPP 会在当前目录下生成一个以目标名字命名的 .txt
文件(如 zhangsan.txt
),里面就是为你量身定制的字典。
模式二:非交互模式 / 命令行模式
如果你已经从其他渠道知道了目标的所有信息,可以直接通过命令行参数一次性生成字典。
python3 cupp.py -l zhang -s san -n sanzi -b 15121995 -p meimei -w football,car -o zhang_dict.txt
-l
: 名字-s
: 姓氏-n
: 昵称-b
: 生日-p
: 宠物名-w
: 关键词(用逗号分隔)-o
: 输出文件
使用 python3 cupp.py -h
查看所有可用参数。
模式三:下载现有字典 (-d
)
这是一个便捷功能,让你可以从互联网存档下载一些现成的、庞大的通用字典(如 rockyou.txt)。
python3 cupp.py -d
实战案例:针对 "张三" 生成字典
假设我们通过社交媒体收集到以下信息:
- 姓名: 张三 (Zhang San)
- 昵称: 三子 (Sanzi)
- 生日: 1995年12月15日
- 宠物: 一只叫 "旺财" (Wangcai) 的狗
- 爱好: 踢足球 (football)、开车 (car)
操作步骤:
- 运行
cupp -i
- 依次输入以上信息。
- 对"是否添加关键词"回答
y
,然后输入football, car
。 - 对"添加特殊字符"、"添加数字"、"启用Leet模式"全部回答
y
。
CUPP 生成的部分密码示例:
zhangsan
(姓名)san1995
(姓+年)sanzi1512
(昵称+日+月)wangcai!
(宠物名+特殊字符)zhang@123
(姓+Leet+数字)1512football
(生日月日+爱好)Sanzi1995#
(昵称+年+特殊字符)w@ngc@i2024
(宠物名Leet+当前年份)
可以看到,生成的字典非常精准地瞄准了目标的个人习惯。