为什么 Windows 7/2008 mstsc 在服务器证书警告之前要求输入用户名密码?

Jim*_*hen 4 windows mstsc

在使用 Windows 7 mstsc 连接到 Windows Server 2008(远程桌面)时,我发现了一个无法解释的问题。

mstsc 首先要求输入用户名密码。如果我提供了错误的信息,mstsc 会告诉我“用于连接的凭据不起作用”。

在此处输入图片说明

只有在我提供正确的证书之后,mstsc 才会警告我服务器的证书不受信任。

在此处输入图片说明

我认为 mstsc 应该在验证“服务器是否接受我的用户名/密码”之前提示“服务器证书不受信任”。

所以我的问题是:如果我连接的服务器是伪造的(由攻击者托管),我的凭据是否可能会被泄露?

即使我的凭据在这种情况下永远不会被泄露,在要求用户名/密码之前,mstsc 提示服务器证书问题不是更好吗?至少,这可以消除普通用户密码被盗的担忧。

The*_*ner 8

这里发生的事情有点复杂,但是如果您阅读 NLA 和 CredSSP,您将获得更好的了解。

http://technet.microsoft.com/en-us/library/cc749211%28WS.10%29.aspx

http://en.wikipedia.org/wiki/Network_Level_Authentication

基本上,要回答您的问题...不,伪造的服务器不会损害您的凭据。他们必须做的第一件事就是将您的 DNS 欺骗到不正确的 IP,但即使如此,RDP 现在的工作方式(假设我们正在谈论 Win7 或 Vista 客户端和 Win2008 或更新的服务器)凭据是加密且未公开(警告是在 Technet 文章底部解释的 NTLM)。

以下摘录可能对 Technet 文章有所帮助:

与 Windows Server® 2003 终端服务器中的体验不同,凭据提示出现在客户端计算机上,而不是服务器上。最重要的是,客户端凭据提示位于安全桌面上。因此,即使是终端服务客户端也看不到凭据,这是一个重要的通用标准要求。此外,在验证服务器身份之前,不会委派从提示中获得的凭据(取决于策略配置)。最后,在对客户端进行身份验证之前,终端服务器不会为用户建立会话(这会消耗服务器上的大量内存和 CPU 处理时间),从而降低了服务器拒绝服务攻击成功的机会。

编辑:让我们添加一个例子来澄清......

示例 #1 - 用户可以访问远程服务器并使用正确的密码

在此示例中,您将输入用户名和密码,它将在本地对域进行身份验证以验证它是有效的用户名/密码,然后尝试连接到远程服务器。此时,如果它是第一次连接,您可能会收到“无法验证远程计算机的身份”,您可以选择是否信任它。

示例 #2 - 用户可以访问远程服务器并使用不正确的密码

在这里您会看到您发布的图片...凭据无效。请输入新凭据。这是在客户端本地完成(根据 kerberos 票证或 DC 进行验证),而无需连接到远程服务器。

示例 #3 - 用户无法访问远程服务器,但使用正确的用户名和密码

在这里,您将在本地进行身份验证,因为它是一个有效的帐户和密码,但是一旦您连接到服务器以传递凭据,您将获得:

登录无效

希望有帮助...