连接到随机 SSH 服务器是否安全?

信息安全 SSH
2021-08-14 18:09:39

简而言之: SSH 客户端的安全性如何?服务器可以惹他们吗?

我今天看到了这个攻壳机动队 bash 重制版有趣的是,有几部电影(黑客帝国、星球大战等)是通过 SSH 传输的。还有一些游戏依赖于您通过 SSH 连接。

但是今天我突然想到,当我们谈论 SSH 安全性时,我们真正关注的是服务器;传输安全和身份验证机制,阻止暴力攻击和随机远程攻击。客户呢?我的客户端和一样运行,它会对很多本地文件造成很大的破坏......它当然不需要root来伤害我。

SSH 服务器可以做哪些我们意想不到的事情?我的客户是否在广播关于的数据?是否有像网络浏览器这样的漏洞利用载体?

3个回答

想到2个选项:

  1. SSH 客户端中的漏洞
  2. “回击”

我运行 SSH 蜜罐,一位同事编写了一个脚本来获取攻击者用来在蜜罐上创建或更改帐户的密码,并使用它连接回攻击者的 SSH 并枚举主目录。他有10%的成功率...

这可能是一个极端情况,但它强调,一旦你连接到另一台计算机,所有的赌注都没有了。他们了解您和您的 IP,并且可以使用您提供的任何信息来对付您。

首先,很明显,如果 SSH 客户端存在错误,它可能允许服务器在那里执行代码。一个非常糟糕的错误甚至可能允许中间人利用客户端。攻击面的其余部分包括 SSH 发送从服务器接收到的数据的位置。

在您的情况下,通过 SSH 连接接收到的文本将发送到终端。终端解析转义序列——这就是它们显示颜色、移动光标等的方式。转义序列解析器中可能存在错误。此外,一些转义序列可能会请求超出影响显示的内容,例如更改终端标题、调整窗口大小或注入输入数据(例如查询光标位置或窗口标题的命令)。现代终端禁用真正危险的命令(导致注入输入的命令,可以是通过另一个转义序列设置的任意文本)。有关此主题的更多信息,请参阅“cat-ing”文件是否存在潜在的安全风险?,我怎样才能保护自己免受这种剪贴板滥用?, 和如何避免终端中的转义序列攻击?. 解决方案是验证您的终端是否允许危险序列。为了增加安全性,不要打开运行 shell 的终端,而是直接在终端中ssh运行ssh,并禁用它可能具有的任何键盘处理(EscapeChar none在 OpenSSH 客户端配置中);这样,即使恶意服务器设法注入输入,也不会有在您的机器上作为 shell 命令执行的风险。

SSH 还可以转发网络连接,让服务器可以到达终端之外的客户端。这可以绕过防火墙限制。两种常见的转发网络连接都有其自身的风险。X11 转发使服务器可以访问您的本地 X 服务器;这几乎等同于授予对服务器的 shell 访问权限,因为它允许在其他应用程序中注入输入(对于宏记录器和基于窗口管理器的输入重新映射等有用的功能,但缺乏适当的防火墙)。SSH 代理转发允许服务器使用您的私钥潜在地登录其他地方。因此,当您连接到不受信任的服务器时,请确保您没有激活任何转发。有选择地为已知服务器打开转发。

此外,如果您发送默认用户名或公钥报价,则会暴露隐私。

只是对@schroeder 答案的补充。

SSH 会话通常不是离线的,而是从终端应用程序启动的。通常,终端应用程序不期望随机字节,并且在接收控制字符时可能会出现奇怪的行为。大多数人用它们来控制自己的外表。从未研究过,但终端应用程序中可能存在漏洞。无论如何,如果用户经常在终端窗口中进行剪切和粘贴,那么简单地让终端编写一些具有相同前景色和背景色的行可能会导致有趣的结果。