当您尝试连接到错误的服务器时,您的 SSH 密码是否会泄露?

当您尝试连接到错误的服务器时,您的 SSH 密码是否会泄露?

当您不小心尝试使用密码凭据连接到错误的服务器时,管理员是否可以读取并记录您使用的密码?

答案1

简单地说:是的

更多详情...

如果您连接到我的计算机,那么您不知道我是否正在运行正常的ssh服务器,或者已修改为写出正在传递的密码的服务器。

此外,我不一定需要修改sshd,但可以编写一个 PAM 模块(例如使用pam_script),它将传递您的密码。

所以,是的。 绝不将您的密码发送到不受信任的服务器。机器的所有者可以轻松地将其配置为记录所有尝试的密码。

(事实上​​,这在信息安全领域并不罕见;设置一个蜜罐服务器来记录尝试的密码)

答案2

是的。

密码是在加密连接建立后发送的,但远程服务器以明文形式获取密码。

如果您关心这一点,最好、最简单的解决方案是使用 SSH 密钥。

如果您的计算机无法接受密钥,那么一种解决方案是创建一个工具来安全地存储您的密码,然后sshpass根据您要连接的服务器始终发送正确的密码。


现在,密码以明文形式发送的原因是,它将所有处理和存储密码的决定留给了远程端,而客户端可能完全是愚蠢的。在过去十年左右的时间里,Linux 和 BSD 系统中使用了几种不同的密码散列(存储)格式(地穴(3)),这些都不需要客户端的支持。

尽管这也有部分原因是历史造成的(即一直都是这样)。有更好的质询-响应身份验证协议,甚至可以使用密码。例如建议零售价,在身份验证期间为各方提供共享秘密。它已在某些 SSH 服务器上实现,但 OpenSSH 的补丁适用于(非常)旧的版本。

答案3

为了在 Stephen Harris 的答案的基础上构建,这里是我构建的实时视图,它显示了修改后的 PAM 身份验证脚本在通过 ssh 连接到盒子(某种蜜罐)时能够捕获的内容。我使用 PAM 库 lib-storepw 的修改版本。

https://livesshattack.net

https://livesshattack.net/about

答案4

SSH是一个需要相互信任的协议。这就是 OpenSSH 客户端维护一个known_hosts 文件的原因,以实现其对首次使用的信任方案。

当您尝试登录 SSH 服务器时,无论软件由谁提供或配置为记录哪些数据,您都在参与某些身份验证过程。使用密码身份验证时,您将密码传输到该服务器。这就是为什么建议使用非对称加密(公钥、证书)的原因之一 - 公钥加密大大降低了泄露您的凭据的风险。 (尽管如果使用 ssh 代理转发或某些类似方案,这可能无法保护您免受 MitM 攻击。)

相关内容