为什么远程桌面连接会损害我的电脑?

信息安全 远程桌面
2021-09-03 23:04:25

当我尝试连接到远程桌面时,会出现一条消息,上面写着“确保您信任这台 PC,连接到不受信任的计算机可能会损害您的 PC”。为什么它会伤害我的电脑?我可以理解,如果我正在共享本地资源或类似的东西,但如果我只是连接到远程桌面,那会对我的计算机造成什么损害?不是沙盒吗?远程桌面将如何访问我的 PC?

3个回答

这是一个很好的问题!首先声明我没有资格给出完整的答案,因为到目前为止我在避免不受信任的环境中的RDP安全问题方面做得相当不错。我确实同时使用 RDP 客户端和服务器,但只在受信任的主机上使用。也就是说,我确实有一些想法,为什么我们会看到这样的警告;

假设大多数安全风险将通过运行RDP 服务器(微软称之为远程桌面服务)来承担是相当合理的,并且过去有一些相当臭名昭著的利用,例如对pass-对非加密连接的哈希中间人攻击。例如,我们可能还记得禁用远程协助和删除防火墙中的相关端口例外,这是我们在安装 Windows XP 时所做的第一件事。但是使用RDP 客户端(或微软术语中的远程桌面连接)所涉及的风险似乎并不那么明显。

有关使用的术语以及 RDP 客户端和 RDP 服务器之间的区别的更深入解释,请参阅我的答案末尾的更新。但为了让事情更清楚,这是 OP 在问题中谈论的警告对话框:

此远程连接可能会损害您的本地或远程计算机。 在连接之前,请确保您信任远程计算机。

虽然我无法找到有关最近通过使用更新的 RDP 协议客户端(尤其是那些使用TLS 的客户端)利用远程桌面连接的自我传播漏洞(即病毒、木马或蠕虫)的文档,但仍有连接到不受信任的 RDP 服务器涉及的一些风险:

  • 用户活动跟踪和键盘记录:本质上,不受信任的 RDP 服务器可以记录您在服务器上的所有活动,包括您浏览到的网站、您下载的文件、您访问和正在更改的文档、您输入的密码以通过 RDP 服务器访问远程服务,基本上跟踪您的完整用户会话。

  • 通过远程托管文件感染客户端:您从托管 RDP 会话的服务器下载的任何文件都可能被篡改或感染恶意软件。您可能错误地假设信任这些文件中的任何一个,认为因为您在之前的 RDP 会话期间将它们放在那里,同时它们没有被篡改或感染,将它们转移到您的 RDP 客户端并打开/执行/...

  • Man-in-the-middle:与用户活动跟踪类似,只有这次攻击者在您连接的 RDP 服务器上处于活动状态,并且正在侦听您的 RDP 客户端到 RDP 服务器的连接、RDP 服务器到远程 LAN/WAN 的连接,或者可能两者兼而有之。除了能够检查交换的网络数据包的内容之外,中间人还能够更改它们的内容。RDP 会话可以使用 TLS 加密,从而有效地防止对其进行窃听,但对于您使用 RDP 服务器连接到的其他位置(远程 LAN 或 WAN),情况不一定如此。

  • 社会工程攻击:您可能成为社会工程攻击的受害者,攻击者以虚假的名义获得您的信任,并诱使您输入您认为在建立新会话时可以在您的 RDP 客户端中信任的 RDP 服务器地址,但是您输入的地址实际上是攻击者选择的。攻击者可以在该地址上托管 RDP 服务器,其唯一目的是为您打算连接的另一个真实 RDP 服务器记录您的登录凭据。感谢@emtunc 提醒我这个威胁!

老实说,我可能遗漏了许多其他滥用用户信任他们正在与之建立会话的 RDP 服务器的可能性,特别是当 RDP 服务器不可信但用户仍然假设这种信任,看不到潜在的这样做的危险。但是,这四个示例攻击向量应该足以证明您确实需要收到此类警告。


编辑添加:看到我和其他答案中使用的术语存在一些混淆(据我所知,我们都以相同的方式使用),我想澄清一下 RDP 会话中涉及的两端中的哪一个被考虑一个客户端,哪个服务器(或主机)。这些是维基百科的摘录,以排除任何有偏见和基于意见的解释:

Wikipedia on Client(计算):客户端是访问服务器提供的服务的计算机硬件或软件。服务器通常(但不总是)在另一个计算机系统上,在这种情况下,客户端通过网络访问服务。该术语适用于属于客户端-服务器模型的程序或设备

客户端是一个计算机程序,作为其操作的一部分,它依赖于向另一个计算机程序(可能位于也可能不在另一台计算机上)发送请求。例如,Web 浏览器是连接到 Web 服务器并检索网页以进行显示的客户端。电子邮件客户端从邮件服务器检索电子邮件。在线聊天使用各种客户端,这些客户端因所使用的聊天协议而异。多人视频游戏或在线视频游戏可以作为客户端在每台计算机上运行。术语“客户端”也可以应用于运行客户端软件的计算机或设备或使用客户端软件的用户。

Wikipedia on Server(计算):服务器是一个系统(软件和合适的计算机硬件),它通过计算机网络响应请求以提供或帮助提供网络服务。服务器可以在专用计算机上运行,​​该计算机通常也称为“服务器”,但许多联网计算机都能够托管服务器。在许多情况下,一台计算机可以提供多种服务并运行多个服务器。

服务器在客户端-服务器架构中运行,服务器是运行以服务于其他程序(客户端)的请求的计算机程序。因此,服务器代表客户端执行一些任务。客户端通常通过网络连接到服务器,但可能在同一台计算机上运行。在 Internet 协议 (IP) 网络环境中,服务器是作为套接字侦听器运行的程序。

为了说明这个术语如何应用于 RDP 会话,我还包括了以前链接的RDP 服务器远程桌面服务)和RDP 客户端远程桌面连接)维基百科页面的摘录:

远程桌面连接(RDC,也称为远程桌面,以前称为 Microsoft 终端服务客户端或 mstsc)是远程桌面服务的客户端应用程序。它允许用户远程登录到运行终端服务服务器的联网计算机。RDC 呈现远程系统的桌面界面(或应用程序 GUI),就好像它是在本地访问一样。

远程桌面服务的服务器组件是终端服务器 (termdd.sys),它侦听 TCP 端口 3389。当 RDP 客户端连接到此端口时,它被标记有唯一的 SessionID 并与新生成的控制台会话(会话 0 、键盘、鼠标和字符模式 UI)。然后启动登录子系统 (winlogon.exe) 和 GDI 图形子系统,它处理验证用户和显示 GUI 的工作。

直观地说, Windows 8 上的远程桌面连接客户端在建立 RDP 会话之前看起来像这样:

Windows 8 上的远程桌面连接客户端

默认情况下,基本的 RDP 客户端将通过 RDP 会话共享剪贴板(因为它非常方便)。仅此一项,远程服务器就可以获取您选择的所有内容的副本,并在您的客户端上“复制”它们,无论是文本摘录、文件……当远程主机处于敌对状态时,这是一个明显的安全问题。类似地,恶意服务器可能会在复制和粘贴机制中注入恶意代码:如果您将文件从桌面系统上的目录复制并粘贴到桌面系统上的另一个目录,那么恶意服务器可能会拦截复制并更改文件过境,从而注入病毒(如果文件以某种方式可执行)。

理论上,如果以下所有条件都成立,则恶意服务器不会对客户端做任何坏事:

  • 客户端和服务器之间没有共享资源。
  • 除非人类用户明确选择,否则服务器不会获得任何输入(例如按键和鼠标移动)。
  • RDP 客户端代码尽职尽责地验证来自服务器的所有数据,并且在处理从服务器获取的协议消息时不存在缓冲区溢出等漏洞。

打赌满足这三个条件中的任何一个,更不用说满足所有三个条件了,这会让我觉得相当冒险......

即使是与不受信任的服务器进行纯文本 SSH 连接的更简单的情况也可能是危险的。

远程桌面连接允许其他人完全访问计算机。另一方面,被访问的计算机可能会尝试使用已建立的“可信”远程桌面连接发送任何类型的可疑和/或恶意数据包。

在恶意软件分析(例如)中,如果不采取适当的预防措施(例如使用虚拟机),则永远不会连接到不受信任且可能受感染的系统,当您正在分析的受感染系统确实被感染并传播时,可以将其删除。使用任何可用的网络连接的讨厌的东西。在您的情况下,这将是您在单击确定”按钮时“信任”的远程桌面连接

这就是为什么它读取您需要确保您连接到受信任的计算机的原因。

永远记住,远程桌面连接——在它的核心——只不过是两台计算机之间的双向网络连接。因此,所有与网络相关的风险都与此相关。

值得一提的是,该消息还可以说:“您确定其他系统没有受到威胁,并且使用其他系统的人没有恶意吗?”

您无法想象在我分析系统时,我看到有多少非良性数据包通过远程桌面连接传输。这些会立即感染您的系统,在大多数情况下,您可能不会在造成伤害之前注意到它。相信我,这是你最不想发生的事情......

第一次阅读该消息时可能会引起注意,但一旦您意识到您将要做什么(创建与远程系统的“可信”网络连接),该警告肯定是有道理的。

编辑

万一您错过了:2013 年 6 月 11 日,Microsoft 不得不发布一个特别重要的补丁 (MS12-037),该补丁解决了(除其他外)所有Windows 操作系统 (RDP) 的远程桌面协议中的一个严重缺陷。如果您希望尽可能安全,请确保您已将最新更新和安全补丁应用到您的系统。