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 自定义字典策略:让字典更「聪明」

工具只是手段,策略才是核心。我总结了一套自定义字典的「三步法」:

  1. 收集基础信息:目标公司的名称、域名、员工姓名、产品线、成立年份、重要事件。
  2. 应用变换规则:对基础信息进行大小写、数字替换、特殊符号拼接。
  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 本章知识体系:字典制作全流程

为了让你更直观地理解整个字典制作的流程,我画了一张图:

弱口令字典制作流程 弱口令字典制作全流程 常见弱口令分析 字典生成工具 自定义字典策略 键盘顺序 / 简单数字 常见单词 / 默认出厂 Crunch:暴力生成 Cewl:智能爬取 收集基础信息 应用变换规则 合并去重 最终输出:高质量弱口令字典 核心原则:字典不是越大越好,而是越「准」越好。100万条垃圾字典不如1000条精准字典。 三步法:收集基础信息 → 应用变换规则 → 合并去重

这张图把整个字典制作的流程串起来了。从分析常见弱口令开始,到使用工具生成,再到自定义策略优化,最后输出高质量字典。每一步都不可或缺。

实战建议:刚开始做字典时,别追求「大而全」。先从一个小的、精准的字典开始,验证扫描效果,再逐步扩展。我个人的经验是:先做1000条左右的字典,扫一轮,根据结果再调整。