本文只适用于自己拥有或已获得书面授权的系统、靶场与实验环境。未经许可对第三方主机进行口令猜测,可能违法,也可能造成账号锁定、服务中断或 IP 封禁。
Hydra 是一款并行化的网络登录验证工具,支持 SSH、FTP、HTTP 表单、SMB 等多种协议。它真正适合的场景,不是拿着超大字典对公网主机“盲扫”,而是在授权安全测试中验证三个问题:系统是否仍存在默认口令、弱口令策略是否有效,以及登录防护机制能否识别并阻断连续失败。
本文以 SSH 服务为例,介绍如何在 Kali Linux 中选择字典、控制请求速率、保存测试结果,并避免几个常见误区。
一、开始前先确认范围
进行测试前,至少应明确以下信息:
- 目标主机和端口是否在授权范围内;
- 允许测试的账号数量、时间窗口和最大尝试次数;
- 是否存在账号锁定、Fail2ban、MFA 或上游 WAF/IPS;
- 谁负责观察服务状态,出现异常时如何停止测试;
- 测试结果和口令文件保存在哪里、何时销毁。
下面的 192.0.2.10 属于文档示例保留地址,不能直接用于真实测试。使用时请替换为授权靶场地址。
二、安装并检查 Hydra
Kali 可以直接从软件仓库安装 Hydra:
sudo apt update
sudo apt install hydra
安装后检查版本和本机编译支持的协议:
hydra -h
hydra -U ssh
hydra -U ssh 会显示 SSH 模块的帮助信息。不同版本的选项可能有变化,正式测试前应以本机的 hydra -h 和 man hydra 为准。
三、认识 Kali 的字典目录
Kali 的常用字典入口位于:
/usr/share/wordlists/
先查看本机实际安装了哪些文件,不要假设所有路径都必然存在:
ls -lah /usr/share/wordlists/
1. rockyou.txt:大而全,但不应作为第一选择
wordlists 软件包提供经典的 rockyou.txt.gz:
sudo apt install wordlists
ls -lh /usr/share/wordlists/rockyou.txt*
如确实需要解压,可保留原压缩包:
sudo gzip -dk /usr/share/wordlists/rockyou.txt.gz
RockYou 包含一千多万条口令。对在线 SSH 服务而言,这通常意味着极长的测试时间,也更容易触发锁定和告警。因此,它更适合离线口令审计,在线验证时应优先使用经过授权范围裁剪的小字典。
2. fasttrack.txt:适合小规模基线检查
Kali 的字典目录通常提供:
/usr/share/wordlists/fasttrack.txt
它是指向 SET(Social-Engineer Toolkit)字典的符号链接,规模较小,适合先验证常见弱口令。由于该链接依赖相关软件包,使用前仍要通过 ls -l 确认。
3. SecLists:按场景选择更精细的列表
安装 SecLists:
sudo apt install seclists
例如,当前 SecLists 提供了一个非常小的 SSH 常见口令列表:
/usr/share/seclists/Passwords/Common-Credentials/top-20-common-SSH-passwords.txt
也可以在 Common-Credentials 中选择 Top 100、Top 1000 等不同规模的列表。安装版本不同,目录内容也可能不同,建议先搜索:
find /usr/share/seclists/Passwords -type f \
\( -iname '*ssh*' -o -iname '*top-1000*' \) 2>/dev/null
4. 最有效的字典往往是自己整理的
在合规审计中,最值得优先验证的通常不是泄露库中的全部口令,而是与目标环境有关的少量候选项,例如:
- 厂商或设备型号的默认口令;
- 已废弃但可能仍在使用的初始化口令;
- 组织明确禁止的季节、项目名和简单变体;
- 测试负责人提供的专用验证口令。
可以创建一个小型审计字典:
printf '%s\n' \
'Password123!' \
'ChangeMe123!' \
'Project-Test-2026' \
> audit-passwords.txt
chmod 600 audit-passwords.txt
注意:不要把真实口令提交到 Git 仓库、工单附件或聊天记录中。测试完成后,应按约定安全删除口令文件和结果文件。
四、Hydra 的核心参数
| 参数 | 作用 |
|---|---|
-l USER | 指定单个用户名 |
-L FILE | 从文件读取多个用户名 |
-p PASS | 指定单个测试口令 |
-P FILE | 从文件读取口令列表 |
-s PORT | 指定非默认端口 |
-t N | 每个目标并行连接数 |
-W N | 同一任务两次连接之间等待 N 秒 |
-c N | 全局每次登录尝试间隔 N 秒,并将任务数限制为 1 |
-f | 当前主机发现第一组有效凭据后停止 |
-o FILE | 将发现的有效凭据写入文件 |
-b FORMAT | 设置输出格式,如 text 或 json |
-v | 显示较详细的运行信息 |
-V | 显示每一次用户名与口令尝试,可能泄露敏感信息 |
-R | 从 hydra.restore 恢复中断的会话 |
一个容易混淆的细节是:-f 只表示“找到第一组有效凭据后停止”,不是“失败后停止”;使用多目标文件 -M 时,-f 针对每台主机,而 -F 才是任一主机成功后全部停止。
五、从低风险模板开始
场景 1:已知单个测试账号
hydra -l audit-user \
-P ./audit-passwords.txt \
-t 1 -W 3 -f -v \
ssh://192.0.2.10
这个模板只启用一个并发任务,并在连接之间等待 3 秒。它更适合第一次验证,也便于防守方在日志中观察测试行为。
场景 2:SSH 使用非标准端口
可以在 URL 中直接写端口:
hydra -l audit-user \
-P ./audit-passwords.txt \
-t 1 -W 3 -f -v \
ssh://192.0.2.10:2222
也可以使用 -s 2222。两种写法选一种即可,避免命令含义不清。
场景 3:使用经过批准的账号列表
假设 audit-users.txt 每行一个账号:
hydra -L ./audit-users.txt \
-P ./audit-passwords.txt \
-t 1 -c 3 -f -v \
-o hydra-result.txt \
ssh://192.0.2.10
这里使用 -c 3 将全局登录尝试间隔设为 3 秒。它会强制单任务执行,适合需要严格限制速率的测试。
如果要输出便于后续处理的 JSON:
hydra -L ./audit-users.txt \
-P ./audit-passwords.txt \
-t 1 -c 3 -f \
-b json -o hydra-result.json \
ssh://192.0.2.10
结果文件可能包含有效凭据,应设置权限并纳入敏感数据管理:
chmod 600 hydra-result.json
六、为什么不建议一上来就使用 -t 16 -V
Hydra 默认可以并行发起多个连接,但默认值不等于每个环境的推荐值。SSH 服务、堡垒机和入侵防护系统的限制各不相同,高并发可能导致:
- 账号被锁定;
- 测试源 IP 被临时封禁;
- SSH 握手失败或出现大量超时;
- 日志量突然增大,影响分析;
- 对资源紧张的嵌入式设备造成服务波动。
因此并发数应该由授权方案和容量评估决定。首次验证建议从 -t 1 开始,确认服务稳定后再逐级调整,而不是直接套用固定的“最优线程数”。
-V 会把每次尝试的用户名和口令打印到终端。调试小字典时它很直观,但终端回滚、录屏和流水线日志都可能因此留下敏感数据。日常测试优先使用 -v,只有在受控环境排障时才短暂启用 -V。
七、常见问题排查
报错:密码字典不存在
先确认软件包和实际路径:
dpkg -l hydra wordlists seclists
ls -lah /usr/share/wordlists/
不要照搬网络文章中的路径。Kali 的部分字典是符号链接,只有对应软件包安装后才可用。
报错:连接被拒绝或超时
先停止口令测试,再确认基础网络和服务状态:
nc -vz 192.0.2.10 22
ssh -vvv audit-user@192.0.2.10
常见原因包括端口错误、SSH 服务未启动、防火墙限制、只允许密钥登录,或测试源已被临时封禁。不要通过盲目提高线程数来解决连接问题。
Hydra 找到结果后仍继续运行
确认是否添加了 -f。如果使用 -M 测试多个授权目标,还要区分 -f 与 -F 的作用范围。
测试意外中断
Hydra 通常会生成 hydra.restore。确认目标、字典和授权窗口仍然有效后,可以使用:
hydra -R
恢复前不要移动或覆盖恢复文件,也不要在已超出授权时间窗口时继续执行。
八、站在防守方看测试结果
弱口令审计的价值不只是找到一组账号和口令,更重要的是确认防护链路是否有效。测试结束后,建议检查:
- SSH 是否禁止 root 直接登录;
- 是否优先使用密钥认证,并关闭不必要的密码认证;
- 是否部署 MFA、Fail2ban、速率限制或堡垒机;
- 认证失败日志能否进入 SIEM 并触发告警;
- 告警中是否包含源地址、账号、目标资产和失败次数;
- 账号锁定策略是否既能阻断攻击,又不会轻易形成拒绝服务;
- 测试发现的凭据是否已轮换,相关会话和密钥是否已失效。
一次合格的审计应该输出可复现的范围、速率、时间、日志证据和整改建议,而不只是 Hydra 终端里的一行成功结果。
九、推荐的最小实践流程
- 获得书面授权,确认账号、目标、时间和尝试上限。
- 检查目标端口与认证方式,不对已禁用密码登录的服务做无效测试。
- 从 20 条以内的定制字典和一个专用测试账号开始。
- 使用
-t 1配合-W或-c限速,并由防守方同步观察日志。 - 发现第一组有效凭据后立即停止,不扩大测试范围。
- 保存必要证据,遮盖或加密有效凭据,随后完成轮换和清理。
- 复测锁定、告警、MFA 和口令策略是否真正生效。
参考资料
本文的核心原则很简单:在线口令审计不是字典越大、线程越多越好。明确授权范围,使用小而相关的字典,控制速率,并把验证结果转化为防守改进,才是 Hydra 在安全测试中的正确用法。
License: CC BY-NC 4.0
Updated 3 hours ago
Was this article helpful? Give it a like.
0 comments


