Hydra-SSH 破解安全防范
目录
字典优化 (最重要的步骤)
Hydra 参数调优
隐匿性与规避检测
推荐命令
Hydra(九头蛇)是网络安全领域一款非常强大的在线暴力破解工具,由著名的THC(The Hacker's Choice)组织开发。它支持对各种网络服务协议(如SSH、FTP、HTTP、RDP等)进行认证信息的爆破攻击,常被安全人员用于授权下的渗透测试和系统弱口令检测。
字典优化 (最重要的步骤)
一个糟糕的字典会让最强大的工具变得低效。优化字典是提升成功率最关键的一步。
原则:质量 > 数量。一个针对目标精心准备的 100 条密码字典,远胜一个 10GB 的通用弱口令列表。
信息收集:
- 从目标网站、社交媒体、GitHub 等地方收集目标组织、员工、项目相关的关键词。工具如 CeWL 可以爬取网站生成相关字典。
- 如果知道用户名(如
admin
),优先将其加入密码字典。
应用密码策略:
- 如果目标系统有密码策略(如“必须包含大小写字母和数字”),利用工具(如 RSMangler、CUPP) 基于收集的关键词生成符合规则的密码。
- 常见变形:
Password2024!
,p@ssw0rd
,Company123
,Welcome09
。
排序:
- 将最可能成功的密码(如收集到的关键词、常见弱口令
123456
)放在字典最前面。这样一旦成功就能用-f
参数立即停止,节省大量时间。
-L users.txt
是一个文本文件,包含要尝试的用户名列表,每行一个用户名
admin
root
test
user
administrator
sshuser
-P passwords.txt
指定一个包含多个密码的字典文件
123456
password
admin
qwerty
letmein
P@ssw0rd
Hydra 参数调优
这是对 SSH 服务最直接的优化。
# 高度优化的推荐命令
hydra -L users.txt -P optimized_pass.txt ssh://目标IP -s 22 -t 4 -w 10 -f -e ns -o results.txt -vV
-t <线程数>
(关键!)
- 不要盲目提高线程数! SSH 协议协商开销大,且目标服务器通常有连接数限制。
- 推荐范围:4 - 8。过高的线程数 (
-t 64
) 会导致:
-
-
- 触发防御:迅速被
fail2ban
、denyhosts
等安全工具封禁 IP。 - 连接被拒:SSH 守护进程 (
sshd
) 达到最大连接数,拒绝新连接。 - 性能下降:大量超时和重传,反而降低整体效率。
- 触发防御:迅速被
-
- 策略:从
-t 4
开始,如果网络和环境非常稳定,可以谨慎地增加到-t 8
。
-w <超时时间>
- 设置每次尝试的等待超时时间(秒)。SSH 登录过程比 HTTP 慢。
- 默认值可能太短,导致连接在完成前就被 Hydra 判定为失败。
- 建议设置为
10
(-w 10
),为网络延迟和服务器响应留出足够时间,减少误报。
-f
和 -e ns
组合
-e ns
:先尝试空密码(n
)和密码等于用户名(s
)的情况。这是一个低成本、高回报的策略,很多运维会疏忽。-f
:一旦-e ns
成功,或字典中靠前的密码成功,立即停止,避免不必要的尝试和日志记录。-s <端口号>
-
- 如果 SSH 服务运行在标准端口 22,可省略。但如果运行在非标准端口(如
2222
),必须使用-s 2222
来指定,否则 Hydra 会去连接默认的 22 端口导致失败。
- 如果 SSH 服务运行在标准端口 22,可省略。但如果运行在非标准端口(如
隐匿性与规避检测
如果你的测试是授权测试,但仍希望模拟真实攻击者或避免触发警报,可以这样做:
降低频率:
- 使用
-t 2
或-t 1
单线程/低线程。速度极慢,但极其隐蔽,很难触发基于频率的告警。 - 增加
-w 15
甚至更高的超时时间,进一步降低请求速率。
使用代理或 Tor 网络 (高级):
- 通过代理池轮询 IP,避免源IP被封。
- 设置环境变量让 Hydra 使用 SOCKS 代理(例如 Tor):
export HYDRA_PROXY=socks5://127.0.0.1:9050
hydra -L users.txt -P passes.txt ssh://目标IP ...
暂停与随机延时:
- Hydra 本身不支持随机延时,但你可以用外部脚本控制。
- 在两次 Hydra 任务之间手动暂停(如休息几个小时),或者使用
sleep
命令在脚本中插入固定延时,避免持续轰炸。
推荐命令
场景一:标准授权测试(平衡速度与稳定性)
sudo hydra -L users.txt -P passwords.txt ssh://192.168.1.100 -t 4 -w 10 -e ns -f -vV -o A.txt
-o A.txt
作用:将成功的结果输出到指定文件
-L -P 文件的地址(当前目录中使用)
场景二:高隐匿性测试(避免触发警报)
hydra -L users.txt -P passwords.txt ssh://192.168.1.100 -t 1 -w 30 -e ns -f -vV -o A.txt
# 或者使用代理
export HYDRA_PROXY=socks5://127.0.0.1:9050
hydra ... (同上,省略其他参数)