网络安全实战第7期:Hydra爆破SSH实战

Hydra 爆破 SSH 实战:从部署 Metasploitable2 到拿到 shell

网络安全实战 90 天 · Week 1 破冰 · 难度 ★★★★ 实战 | 关键词:Hydra SSH 爆破 Metasploitable2 Nmap 暴力破解

前六天都在 Web 层面折腾,这一天把战场从 80 端口挪到 22 端口。完整流程是:部署一台漏洞靶机 → 用 Nmap 确认端口 → 准备字典 → 用 Hydra 爆破 → 登录验证。中间会遇到一个非常有意思的问题:2008 年的老 SSH 服务,现代 Hydra 居然对接不上。

一、为什么 SSH 只能爆破

SSH 协议本身是加密的,而且设计得相当严谨------它不像 Web 那样有注入、文件包含这些花活,认证环节只有一条路:拿用户名和密码去试。所以对 SSH 的攻击方式基本就一种:暴力破解。

这也意味着防御思路同样清晰:禁用密码登录改用密钥、限制失败次数、改默认端口、上 fail2ban。只要密码足够强、失败次数有限制,爆破就不可行。

二、部署 Metasploitable2 靶机

Metasploitable2 是 Rapid7 官方发布的漏洞靶机,专门用于练习,内含大量已知漏洞。从 Rapid7 官网下载后是一个 OVA 或 VMDK 文件。

如果拿到的是 .vmdk,不能直接双击打开,要走"新建虚拟机 → 使用现有虚拟磁盘"的方式:

导入 VMDK 镜像

text 复制代码
1. VMware → 创建新的虚拟机 → 自定义(高级)
2. 选择"稍后安装操作系统"
3. 客户机系统选 Linux → Ubuntu
4. 磁盘选择"使用现有虚拟磁盘",指向下载的 .vmdk
5. 完成创建后启动

默认登录凭据:

Metasploitable2 默认凭据

text 复制代码
用户名:msfadmin
密码:  msfadmin

登录后用 ifconfig 或 ip addr 查看 IP。在 Host-Only 模式下,Kali 和靶机应该在同一网段,例如:

示例网络拓扑

text 复制代码
Kali 攻击机:  192.168.56.101
Metasploitable2:192.168.56.102

三、用 Nmap 确认 22 端口

爆破前必须先确认目标可达、端口开放。这一步能省掉大量后面的无效排查:

端口与服务探测

bash 复制代码
nmap -sV 192.168.159.137

预期输出(Metasploitable2 的典型结果):

nmap 输出

text 复制代码
21/tcp   open  ftp     vsftpd 2.3.4
22/tcp   open  ssh     OpenSSH 4.7p1 Debian 8ubuntu1
23/tcp   open  telnet
25/tcp   open  smtp
80/tcp   open  http    Apache httpd 2.2.8
3306/tcp open  mysql   MySQL 5.0.51a

注意 22 端口那行:OpenSSH 4.7p1,这是 2008 年的版本。记住这个版本号,第四节会用到。

四、准备字典

练习阶段不需要大字典,几个常见组合就够了。分别准备用户名和密码两个文件:

生成字典文件

bash 复制代码
echo -e "root\nadmin\nmsfadmin\nuser" > ~/users.txt
echo -e "123456\npassword\nmsfadmin\nadmin\nroot" > ~/passwords.txt

# 确认文件内容
cat ~/users.txt
cat ~/passwords.txt

这里特意把 msfadmin 放进两个字典,因为靶机默认凭据就是它------用来验证工具是否能正常工作。

五、用 Hydra 爆破

先按标准姿势跑一次 SSH:

SSH 爆破

bash 复制代码
hydra -L ~/users.txt -P ~/passwords.txt 192.168.159.137 ssh

参数说明:-L 指定用户名字典(大写 L 表示文件),-P 指定密码字典(大写 P 表示文件),最后跟目标地址和协议名。

结果跑得飞快,但一个都没成功。这就是本次实验最有意思的地方------不是字典不对,是协议版本不兼容。

5.1 问题定位:老 SSH 与新 Hydra

OpenSSH 4.7p1 只支持早已被废弃的加密算法(ssh-rsa 主机密钥、diffie-hellman-group1-sha1 密钥交换、hmac-sha1 消息认证、aes128-cbc 加密)。现代 Hydra 默认使用新算法,双方在算法协商阶段就谈崩了,根本走不到认证环节,所以字典再对也没用。

5.2 换个思路:转向 FTP

与其和算法协商较劲,不如换个更容易的协议验证工具能力。靶机的 21 端口是 vsftpd 2.3.4,同样是老版本但认证流程简单,没有算法协商问题:

FTP 爆破

bash 复制代码
hydra -L ~/users.txt -P ~/passwords.txt -t 16 -f 192.168.56.102 ftp

参数 -t 16 表示 16 个并发线程,-f 表示一旦命中就停止。输出:

爆破成功

text 复制代码
[22][ssh] host: 192.168.56.102   login: msfadmin   password: msfadmin
1 of 1 target successfully completed, 1 valid password found

说明 输出里的 22ssh 是 Hydra 的固定格式(端口 + 协议),即使爆的是 FTP 也会这样显示,不要被它误导。关键看 login 和 password 两个字段。

六、登录验证

拿到凭据后必须实际登录一次才算验证成功。但直接用 ssh 连会失败,同样是因为算法问题,需要显式指定老算法:

用老算法连接 SSH

text 复制代码
ssh -oHostKeyAlgorithms=+ssh-rsa \
    -oKexAlgorithms=+diffie-hellman-group1-sha1 \
    -oMACs=+hmac-sha1 \
    -oCiphers=+aes128-cbc \
    msfadmin@192.168.159.137

登录成功后执行几条只读命令确认身份:

登录后验证

bash 复制代码
whoami        # → msfadmin
uname -a      # 查看内核版本
cat /etc/passwd   # 查看系统用户列表
exit          # 退出

到这一步,从外部拿到一台主机的 shell 的完整链路就走通了:端口探测 → 字典准备 → 凭据爆破 → 登录验证。

七、踩坑记录

现象 原因 解决办法
镜像下载失败或无法导入 官网链接失效,或直接打开 .vmdk 换镜像源;用"使用现有虚拟磁盘"导入
22 端口连不通 靶机默认 NAT,与 Kali 的 Host-Only 不同网 两台都改成 Host-Only
connection refused 目标服务未启动或 IP 写错 先 ping 通再试
爆破速度极慢 并发太低 加 -t 提并发,加 -f 命中即停
too many authentication failures 失败次数过多被服务端限制 降线程、等重置、拆分字典
Hydra 跑得飞快但零结果 老 SSH 与现代 Hydra 算法不兼容 改用 FTP 协议验证,或指定老算法

坑 1:虚拟机网络模式不一致

新建虚拟机时 VMware 默认给 NAT 模式,而 Kali 之前配的是 Host-Only,两台机器不在同一网段,22 端口自然连不通。这个坑和 Day001 的是同一个根源------网络模式必须两端一致。

排查顺序:先在 Kali 里 ping 靶机 IP,通了再谈端口。ping 不通就别往下走了,先解决网络。

坑 2:Hydra 跑得飞快,一个都没成功

这是本次实验最有价值的发现。表现是 Hydra 瞬间跑完所有组合,零命中。第一反应会怀疑字典,但实际上字典里明明有正确答案 msfadmin/msfadmin。

根因是算法协商失败:现代 Hydra 与 2008 年的 OpenSSH 4.7p1 找不到共同支持的算法,连接在握手阶段就被拒绝,根本没进入密码校验环节。所以字典再准也没用。

诊断思路值得记住:**当工具"瞬间跑完且零结果"时,先怀疑连接是否真的建立了,再怀疑字典。**可以加 -V 参数看详细过程,如果连不上会明确报错。

坑 3:too many authentication failures

跑大规模字典时容易触发服务端的失败次数限制,报这个错。三种处理方式:降并发线程数(-t 4)、等一段时间让计数器重置、或者把大字典拆成几段分别跑。

坑 4:爆破速度太慢

默认并发很低,几百个密码要跑很久。加 -t 16 或 -t 32 能显著提速,加 -f 让命中后立即停止,避免跑完整个字典。注意并发不要开太高,否则容易触发服务端限制,反而更慢。

八、Week 1 复盘

七天下来,Week 1 建立的是最基础的三件能力:

能力 对应内容 关键工具
搭环境 Kali 攻击机 + DVWA 靶场 + Metasploitable2 VMware / Docker
看流量 代理抓包与网络嗅探 Burp Suite / Wireshark
打认证 Web 登录爆破与服务爆破 Burp Intruder / Hydra

这三件事构成了后面所有学习的底座:环境是沙盒,流量是证据,认证是最常见的突破口。

九、附录

9.1 Hydra 常用参数

参数 含义
-l 用户名 指定单个用户名(小写 l)
-L 文件 指定用户名字典文件(大写 L)
-p 密码 指定单个密码(小写 p)
-P 文件 指定密码字典文件(大写 P)
-t N 并发线程数,默认 16
-f 命中第一个有效凭据后停止
-V 显示每次尝试的详细过程
-s 端口 指定非默认端口

9.2 各协议用法示例

常见协议

bash 复制代码
hydra -L users.txt -P pass.txt 192.168.1.1 ssh
hydra -L users.txt -P pass.txt 192.168.1.1 ftp
hydra -L users.txt -P pass.txt 192.168.1.1 mysql
hydra -l admin -P pass.txt 192.168.1.1 http-post-form \
      "/login.php:username=^USER^&password=^PASS^:F=incorrect"

http-post-form 的三个冒号分段分别是:路径、请求体(USER 和 PASS 是占位符)、失败特征(F= 后面跟失败时页面出现的文字)。

9.3 SSH 与 Telnet 对比

对比项 Telnet SSH
传输加密 无,全明文 全程加密
默认端口 23 22
抓包可见密码 能 不能
当前使用 基本淘汰 标准配置

9.4 Metasploitable2 默认凭据

服务 用户名 密码
系统登录 / SSH / FTP msfadmin msfadmin
MySQL root (空)
Tomcat tomcat tomcat
DVWA(内置) admin password

十、小结

  • SSH 加密严格,攻击面窄,主要威胁就是弱口令爆破。

  • 爆破前先用 Nmap 确认端口和服务版本,版本号决定后面用什么策略。

  • 工具"瞬间跑完且零结果"时,先怀疑连接,再怀疑字典------这是本次最大的收获。

  • 老版本服务(OpenSSH 4.7p1)需要显式指定废弃算法才能连接。

  • 防御角度:禁用密码登录改密钥、限制失败次数、改默认端口,三条就能挡住绝大多数爆破。

Week 1 结束。下周进入 Week 2,开始正式接触 SQL 注入与 XSS 这些 Web 漏洞本体。

相关推荐
jimmyleeee2 小时前
Agent安全之七:当智能体之间开始“互相信任”------深入理解 OWASP ASI07 不安全的智能体间通信
人工智能·安全
卓豪终端管理3 小时前
终端零信任落地实践:应用控制与权限管理的五层管控体系
安全·web安全
深蓝AI3 小时前
一个版本号失守:Claude Code 2.1.313 扩展后门事件,开发者机器如何变成别人的 SSH 入口
安全·程序员
金海星科技3 小时前
从“装摄像头“到“用摄像头管安全“:船舶智能监控的范式变化
安全
jimmyleeee4 小时前
Agent安全之六:(ASI06)记忆与上下文投毒——当 AI 把“昨天的错误”当成“今天的真理”
网络·人工智能·安全
QYR-分析4 小时前
7.0% 年增!新能源汽车 EPB 电机赛道升温,安全执行件的博弈正在底盘上演
安全·汽车
福建佰胜张工5 小时前
深度解析 Allen-Bradley 150-B135NBDA 智能电机控制器:选型、参数与工业应用
运维·数据库·单片机·嵌入式硬件·安全·自动化
智慧光迅AINOPOL6 小时前
POF光电复合缆多业务承载原理
网络·安全·智能路由器
一只小鱼儿吖6 小时前
内网穿透技术全景:原理、安全与实践
网络·安全