服务器端 SSH 密钥泄露

信息安全 攻击 SSH 攻击预防 密钥管理
2021-08-18 22:22:35

我很想知道如果主机的服务器端 SSH 密钥被泄露会产生什么后果。

情况将是:

  • 攻击者设法读取服务器的 SSH 私钥。
  • 攻击者可以 MITM 到主机的任何连接(因为他正在控制路由器,或者 w/e)。

这是否意味着攻击者现在可以读取通过任何 SSH 连接传输的任何数据?我会说不,因为像 Diffie-Hellman 这样的密钥交换算法。那是对的吗?

我的猜测是,攻击者可以执行的最糟糕的操作是冒充服务器,导致用户登录他的系统而不是合法的系统。

3个回答

由于使用 Diffie-Hellman 密钥交换,知道服务器的私钥对被动攻击者没有帮助。如果攻击者想要学习数据,那么他必须主动。

如果攻击者知道服务器私钥,那么他就可以冒充服务器,即运行一个假服务器并让用户连接到它。对于完整的中间人攻击,攻击者必须进行双重伪装:与真实客户端对话时伪装成假服务器,与真实服务器对话时伪装成假客户端。如果服务器使用基于密码的身份验证,那么这很容易:客户端将他的密码发送到假服务器,此时攻击者知道并使用它。如果服务器期望来自客户端的基于密钥的身份验证,这将不起作用。

但是,假服务器(非 MitM)很可能可以欺骗客户端并在不完整 MitM 的情况下学习秘密。

如果客户端最初与正确的服务器建立连接,那么不,攻击者无法针对该连接执行任何操作,但如果攻击者可以让用户附加到它们,那么他们可以扮演中间人并进行只要不使用客户端证书,就可以与客户端建立连接并与服务器建立单独的连接。

但是,如果客户端也使用证书,那么攻击者就会遇到问题,因为如果没有客户端的私钥,他们将无法以真实服务器作为客户端完成身份验证。这是因为会话密钥交换需要知道客户端和服务器创建的密钥部分。如果真实服务器用客户端的私钥加密它的会话密钥部分,那么 MITM 就不可能完成会话密钥与真实服务器对话,它不能作为 MITM,只是一个替身真正的服务器。

但是,如果 MITM 能够捕获客户端第一次建立连接的时间,它可以让服务器相信它生成的密钥对实际上是客户端,然后它可以成功地 MITM 客户端密钥,但这只有在真实服务器不具备客户端公共证书的先验知识。

我的猜测是,攻击者可以执行的最糟糕的操作是冒充服务器,导致用户登录他的系统而不是合法的系统。

这实际上意味着攻击者可以读取流量,充当代理。

问题是:基于密钥的身份验证是否会对客户端产生一些积极影响

该问题的答案涵盖了一些细节