22 - SSH

💡 学习提示: 本文档介绍 22 - SSH 的渗透测试方法,适合信息安全初学者和从业人员参考。

⚠️ 法律声明: 本文档仅供学习和授权测试使用。未经授权的系统测试可能违反法律法规。


22 - SSH 服务

基本信息

SSH (Secure Shell) 是一种网络协议,用于在不安全的网络上安全地远程访问计算机系统。它对于维护远程访问时数据的机密性和完整性至关重要。

默认端口: 22/TCP

PORT   STATE SERVICE
22/tcp open  ssh

常见 SSH 服务器软件:

  • OpenSSH - OpenBSD 项目,预装于 BSD、Linux 和 Windows 10+
  • Dropbear - 轻量级 SSH,用于嵌入式设备和 OpenWrt
  • PuTTY - Windows 常用 SSH 客户端
  • CopSSH - Windows 版 OpenSSH

常见 SSH 库:

  • libssh - 跨平台 C 库,被 KDE 和 GitHub 使用
  • wolfSSH - 嵌入式环境专用
  • Apache MINA SSHD - Java 实现
  • paramiko - Python SSH 库

信息收集

横幅抓取 (Banner Grabbing)

nc -vn <IP> 22

自动化审计

# ssh-audit 工具
python3 ssh-audit.py <IP>

# 功能:
# - 识别 SSH 版本、设备类型、操作系统
# - 分析密钥交换、加密、MAC 算法
# - 检测弱算法和不安全配置
# - 提供安全建议

获取服务器公钥

ssh-keyscan -t rsa <IP> -p 22

弱加密算法检测

# 使用 Nmap 扫描
nmap --script ssh2-enum-algos -p 22 <IP>
nmap --script ssh-hostkey -p 22 <IP>

常见攻击

1. 暴力破解

# Hydra 爆破
hydra -l root -P /usr/share/wordlists/rockyou.txt ssh://<IP>

# 多用户爆破
hydra -L users.txt -P passwords.txt ssh://<IP>

# Medusa 爆破
medusa -h <IP> -U users.txt -P passwords.txt -M ssh

2. SSH 密钥认证绕过

# 检查是否存在未授权访问
ssh -i ~/.ssh/id_rsa user@<IP>

3. 已知漏洞利用

# 检查 SSH 版本
nmap -sV -p 22 <IP>

# 使用 Metasploit
use auxiliary/scanner/ssh/ssh_version
set RHOSTS <IP>
run

搜索引擎语法

FOFA

# FOFA 搜索语法
port="22" && protocol="ssh"
port="22" && service="ssh"
app="OpenSSH"
app="Dropbear"

Shodan

# Shodan 搜索语法
port:22 ssh
port:22 product:OpenSSH
port:22 product:Dropbear

ZoomEye

# ZoomEye 搜索语法
port:22 service:ssh
app:"OpenSSH"
app:"Dropbear"

防御建议

  • ✅ 禁用密码认证,使用密钥认证
  • ✅ 禁用 root 登录
  • ✅ 修改默认端口(非常规端口)
  • ✅ 使用强密码策略
  • ✅ 配置失败登录限制 (fail2ban)
  • ✅ 定期更新 SSH 服务器
  • ✅ 禁用 SSHv1,仅使用 SSHv2
  • ✅ 使用强加密算法

📖 参考资料