如果 SSH 客户端仅使用公钥登录(或已经登录)受感染的 SSH 服务器,那么 SSH 客户端是否也面临风险?

如果 SSH 客户端仅使用公钥登录(或已经登录)受感染的 SSH 服务器,那么 SSH 客户端是否也面临风险?

是否存在可以控制服务器的攻击者可以访问客户端并发起操作的情况?我知道攻击者可以在服务器上植入木马,希望 SSH 客户端背后的用户将其引入(手动或通过运行脚本),但是否还有其他攻击媒介?

我特别感兴趣的是不需要密码、只使用公钥认证的场景,可能连接两端的用户凭据都相同。

答案1

普通 SSH 客户端通常对服务器上的任何内容都是安全的,至少只要没有发现安全漏洞即可。但以下 SSH 功能将带来安全问题:

  1. 远程端口转发(带有-R)。远程系统上的人员/恶意软件将获得本地端口的访问权限。
  2. 隧道设备转发(带有-w)。远程系统上的人员/恶意软件将能够通过隧道发送流量。
  3. 身份验证代理连接转发-A)。远程系统上的个人/恶意软件将能够使用您的 ssh-agent 密钥环与您拥有密钥的其他 SSH 服务器进行身份验证。
  4. X11 转发-X-Y)。正如其他人所指出的,X11 协议在设计时考虑到了受信任的客户端。恶意软件可能会读取其他窗口的内容、发送按键或只是显示一个要求输入密码的窗口。

另一件需要考虑的事情是您使用的终端仿真器。最有可能的是 GUI 终端,例如konsoleGNOME 的终端。如果它存在漏洞,那么受感染服务器上的程序也可以利用它(例如,远程服务器可以发送导致缓冲区溢出的字符序列,并允许攻击者在您的客户端计算机上执行代码)。

我从未听说过蠕虫或自动攻击软件使用这些攻击媒介,但如果是针对性攻击,这些(尤其是代理转发)可能会用来对付你。

答案2

我相信只有使用 X 转发的理论攻击才能做到这一点。

X 本质上需要完全信任所有客户端(应用程序),并且可以使用不可见的窗口从客户端上抓取数据。

此外,如果您启用代理转发到该主机,攻击者可以将其与受感染主机上已有的任何“已知主机”文件结合使用,以潜在地扩大其影响范围。

答案3

本质上,这不会构成任何安全威胁(除非您使用受感染的机器),除非您还使用 X 转发(X 窗口不是沙盒)。

但是,如果有人通过您所连接的服务器的操作利用您的 SSH 客户端中的某些错误,您可能会受到某种程度的威胁。例如,攻击可能会利用密钥协商过程中的缓冲区溢出等。

这种事情纯粹是理论上的。虽然这样的事情确实有可能存在,但我从未听说过。

答案4

我不确定您的问题到底是什么,所以如果这不是您想要的答案,请随时更新。

如果您询问使用公钥登录受感染的服务器是否会损害客户端上的私钥,那么答案是否定的:私钥始终留在您的机器上,仅用于签署您发送到服务器的身份验证令牌。

但这并不意味着它没有后果:一旦你登录到受感染的机器,你在此会话期间所做的一切都可能受到感染。例如,如果你使用存储在该服务器上的私钥访问另一台服务器,该密钥可能会受到感染。事实上,如果你在 SSH 会话中执行任何其他类型的登录,那么使用的凭据可能会受到感染。

相关内容