用途
本技能用于对 SSH 服务开展全面的安全评估,涵盖枚举、凭据攻击、漏洞利用、隧道技术与后渗透活动,提供测试 SSH 服务安全性的完整方法论。
前置条件
所需工具:带 SSH 脚本的 Nmap、用于暴力破解的 Hydra 或 Medusa、用于配置分析的 ssh-audit、Metasploit Framework、带 Paramiko 库的 Python。
所需知识:SSH 协议基础、公钥/私钥认证、端口转发概念、Linux 命令行熟练度。
输出与交付物
SSH 枚举报告(版本、算法、配置)、凭据评估(弱密码、默认凭据)、漏洞评估(已知 CVE、错误配置)、隧道文档(端口转发配置)。
核心工作流
阶段 1:SSH 服务发现
使用 Nmap 识别目标网络上的 SSH 服务,例如快速扫描 22 端口、扫描常见备用端口(2222、22222、2200)、全端口扫描以及服务版本检测。
阶段 2:SSH 枚举
收集 SSH 服务详细信息,包括使用 nc 或 telnet 抓取 banner、使用 Nmap 脚本获取主机密钥、枚举支持的算法、检查认证方法。
阶段 3:SSH 配置审计
使用 ssh-audit 识别弱配置,包括弱密钥交换算法(diffie-hellman-group1-sha1)、弱加密算法(arcfour、3des-cbc)、弱 MAC(hmac-md5、hmac-sha1-96)、已弃用的协议版本。
阶段 4:凭据攻击
使用 Hydra 或 Medusa 进行暴力破解,支持单用户名/密码列表、用户名列表/单密码、双列表、指定端口、速率限制规避、详细输出、首次成功即退出等模式。也可进行密码喷洒,用常见密码测试多个用户。
阶段 5:基于密钥的认证测试
测试弱密钥或暴露的密钥,包括使用找到的私钥尝试登录、显式指定密钥、强制密码认证、尝试常见密钥名。检查常见私钥位置及 Web 可访问的密钥。
阶段 6:漏洞利用
搜索已知漏洞,如 CVE-2018-15473(用户名枚举)、CVE-2016-0777(漫游漏洞)、CVE-2016-0778(缓冲区溢出)。使用 Metasploit 进行版本扫描和用户名枚举。
阶段 7:SSH 隧道与端口转发
本地端口转发(-L)用于访问远程服务;远程端口转发(-R)用于将本地服务暴露到远程网络;动态端口转发(-D)创建 SOCKS 代理用于网络跳板;ProxyJump(-J)用于链式跳转多个 SSH 服务器。
阶段 8:后渗透
获取 SSH 访问后的活动,包括检查 sudo 权限、查找 SSH 密钥、检查 SSH 目录、添加持久化密钥、提取 SSH 配置、查找其他用户、从历史记录中查找凭据。
阶段 9:使用 Paramiko 的自定义 SSH 脚本
提供基于 Python 的 SSH 自动化示例,包括连接尝试、命令执行、暴力破解函数。
阶段 10:Metasploit SSH 模块
使用 Metasploit 进行综合 SSH 测试,包括版本扫描、登录暴力破解、密钥登录、用户名枚举、后渗透会话。
快速参考
SSH 枚举命令:nc 抓 banner、ssh-audit 配置审计、nmap --script ssh*、searchsploit openssh。
暴力破解选项:Hydra、Medusa、Ncrack、Metasploit。
端口转发类型:本地(-L)、远程(-R)、动态(-D)。
常见 SSH 端口:22(默认)、2222(常见备用)、22222(另一备用)、830(NETCONF over SSH)。
约束与限制
法律考量:始终获取书面授权;暴力破解可能违反服务条款;记录所有测试活动。
技术限制:速率限制可能阻止攻击;Fail2ban 或类似工具可能封禁 IP;基于密钥的认证会阻止密码攻击;双因素认证增加复杂性。
规避技术:使用慢速暴力破解(-t 1 -w 5);跨 IP 分散攻击;谨慎使用基于时序的枚举;遵守锁定阈值。
故障排除
连接被拒绝:验证 SSH 是否运行、检查防火墙、确认端口、从不同 IP 测试。
认证失败:验证用户名、检查密码策略、密钥权限(600)、authorized_keys 格式。
隧道不工作:检查 sshd_config 中的 GatewayPorts/AllowTcpForwarding、验证防火墙、使用 ssh -v。