3、弱口令字典制作:常见弱口令分析、字典生成工具(Crunch、Cewl)、自定义字典策略
做弱口令扫描,字典就是子弹。子弹不行,枪法再好也白搭。
我见过不少新手,上来就拿着网上随便下的「top1000」字典去扫,结果扫了半天一个都跑不出来。为什么?因为目标根本不是那种通用弱口令能碰上的。说白了,字典的质量直接决定了你的扫描效率。
这一章,我们就来聊聊怎么造「好子弹」。
3.1 常见弱口令分析:到底哪些密码最容易被猜中?
先看看那些年我们一起用过的「弱智密码」。我整理了一份高频弱口令清单,你感受一下:
| 排名 | 密码 | 出现频率(参考) | 典型场景 |
|---|---|---|---|
| 1 | 123456 | 极高 | 测试账号、默认配置 |
| 2 | password | 极高 | 英文系统默认 |
| 3 | admin | 高 | 后台管理、路由器 |
| 4 | 12345678 | 高 | 普通用户习惯 |
| 5 | qwerty | 中 | 键盘顺序 |
| 6 | abc123 | 中 | 字母+数字组合 |
| 7 | letmein | 中 | 英文短语 |
| 8 | welcome | 中 | 欢迎页面默认 |
| 9 | monkey | 低 | 动物名 |
| 10 | dragon | 低 | 神话生物 |
这些密码有个共同特点:好记。但好记的代价就是——太好猜了。
核心规律:弱口令通常遵循「键盘顺序」「简单数字」「常见单词」「默认出厂」这四类模式。你只要抓住这四类,就能覆盖80%的弱口令场景。
我个人习惯把弱口令分成三个梯队:
- 第一梯队(必试):admin、123456、password、root、test。这些是出厂默认值,几乎每个系统都有。
- 第二梯队(常用):qwerty、abc123、letmein、welcome、passw0rd(注意数字替换)。
- 第三梯队(行业相关):cisco、hp、dell、oracle、weblogic。这些跟具体设备或软件有关。
嗯,这里要注意:千万别只依赖通用字典。我在一次内网渗透中,目标是一家制造企业,他们的PLC设备密码居然是「factory2020」。这种密码在通用字典里根本找不到,但如果你知道设备型号和出厂年份,就能轻松猜出来。
3.2 字典生成工具:Crunch 与 Cewl
手动写字典?太慢了。我们需要工具来批量生成。我常用的两个工具是 Crunch 和 Cewl,一个负责「暴力生成」,一个负责「智能爬取」。
3.2.1 Crunch:暴力生成字典的瑞士军刀
Crunch 可以根据你指定的字符集和长度,生成所有可能的组合。说白了,就是穷举。
基本用法:
crunch 6 8 abcdef123 -o dict.txt
这条命令的意思是:生成6到8位长度的密码,字符集只包含 a b c d e f 1 2 3,输出到 dict.txt。
更实用的例子:
crunch 8 8 -t admin@@@ -o admin_dict.txt
这个命令生成8位密码,固定前缀是「admin」,后面3位是数字(@代表数字)。结果就是 admin000 到 admin999。
小技巧:Crunch 支持多种占位符:@ 代表小写字母,, 代表大写字母,% 代表数字,^ 代表特殊符号。组合使用可以生成非常精准的字典。
我曾经帮一个客户做内部安全评估,他们的员工密码策略是「姓名首字母+生日」。我用 Crunch 配合公司员工名单,生成了一个只有几百条的字典,结果扫出了十几个弱口令。效率比通用字典高太多了。
3.2.2 Cewl:从网站爬出密码
Cewl 是个很有意思的工具。它能爬取指定网站的内容,然后提取出可能作为密码的单词。
基本用法:
cewl http://example.com -w cewl_dict.txt
这条命令会爬取 example.com 的所有页面,把页面中的单词提取出来,去重后写入 cewl_dict.txt。
进阶用法:
cewl http://example.com -d 3 -m 6 -w cewl_dict.txt
参数说明:-d 3 表示爬取深度为3层,-m 6 表示只提取长度大于等于6的单词。
注意:Cewl 爬取的是公开信息,但如果你没有授权,请不要对目标网站进行爬取。这属于信息收集阶段,必须合法合规。
为什么 Cewl 有效?因为很多人喜欢用公司名、产品名、项目代号做密码。你想想看,一个叫「星云」的项目,密码很可能就是「xingyun123」或「nebula2023」。Cewl 能帮你把这些关键词都捞出来。
3.3 自定义字典策略:让字典更「聪明」
工具只是手段,策略才是核心。我总结了一套自定义字典的「三步法」:
- 收集基础信息:目标公司的名称、域名、员工姓名、产品线、成立年份、重要事件。
- 应用变换规则:对基础信息进行大小写、数字替换、特殊符号拼接。
- 合并去重:将生成的字典与通用弱口令字典合并,去除重复项。
举个例子,假设目标公司叫「蓝海科技」,域名是 lanhai.com:
- 基础词:lanhai、blueocean、lanhaikeji、lhkj
- 变换后:Lanhai123、blueocean@2023、Lhkj#2024、lanhai_admin
- 合并通用:加上 admin、123456、password 等
这样生成的字典,既覆盖了通用弱口令,又针对了目标特点。
核心原则:字典不是越大越好,而是越「准」越好。100万条垃圾字典不如1000条精准字典。
我习惯用 Python 写一个简单的字典生成脚本,把规则固化下来:
# 自定义字典生成器示例
base_words = ["lanhai", "blueocean", "lhkj", "admin"]
suffixes = ["123", "2023", "2024", "@", "#"]
result = []
for word in base_words:
for suffix in suffixes:
result.append(word + suffix)
result.append(word.capitalize() + suffix)
result.append(word.upper() + suffix)
# 去重并写入文件
unique_dict = list(set(result))
with open("custom_dict.txt", "w") as f:
for pwd in unique_dict:
f.write(pwd + "\n")
这个脚本虽然简单,但能覆盖大部分常见变换。你可以根据实际情况扩展规则,比如加入年份范围、特殊符号列表等。
3.4 本章知识体系:字典制作全流程
为了让你更直观地理解整个字典制作的流程,我画了一张图:
这张图把整个字典制作的流程串起来了。从分析常见弱口令开始,到使用工具生成,再到自定义策略优化,最后输出高质量字典。每一步都不可或缺。
实战建议:刚开始做字典时,别追求「大而全」。先从一个小的、精准的字典开始,验证扫描效果,再逐步扩展。我个人的经验是:先做1000条左右的字典,扫一轮,根据结果再调整。