RDP身份验证错误:CredSSP加密Oracle修复

时间:2020-01-09 10:46:57  来源:igfitidea点击:

安装了2016年5月之后发布的Windows安全更新后,在以下情况下,我们可能会在RDP连接到远程Windows服务器或者计算机的过程中遇到CredSSP加密Oracle修复错误:

  • 我们正在尝试连接到具有最新安装的旧Windows版本(例如Windows 10 RTM或者内部版本1709或者更早版本,Windows Server 2012 R2,Windows Server 2015)的计算机的远程桌面,在该计算机上最新的Windows安全更新未安装;
  • 我们正试图通过RDP连接到很长时间未安装Microsoft更新的计算机。
  • 远程计算机阻止了RDP连接,因为计算机上缺少必需的安全更新。

让我们尝试了解RDP错误CredSSP加密oracle修复的含义以及如何修复它。

因此,当尝试连接到运行Windows Server 2015/2012 R2/2008 R2的RDS服务器上的RemoteApp或者使用RDP协议(在Windows 10、8.1或者7上)的其他用户的远程桌面时,将出现错误:

远程桌面连接发生身份验证错误。函数是。远程计算机:主机名这可能是由于CredSSP加密oracle修复引起的。

发生此错误的原因是,我们尝试通过RDP连接到的远程Windows实例上未安装Windows安全更新(至少自2016年3月以来)。

该错误也可能看起来像这样:发生了身份验证错误。要求的功能是。

2016年3月,Microsoft发布了更新,这些更新使用CredSSP(凭据安全支持提供程序)协议中的漏洞(公告CVE-2016-0886)阻止了远程代码执行。在2016年5月,发布了一个添加更新,默认情况下,该更新阻止Windows客户端使用易受攻击(未修补)版本的CredSSP协议连接到远程RDP服务器。

因此,如果自2016年3月以来未在Windows RDS/RDP服务器(计算机)上安装累积安全更新,而2016年5月已在RDP客户端上安装了更新安全更新(或者较新的更新),则当我们尝试使用未修补的连接到RDS服务器版本的CredSSP会出现错误:"这可能是由于CredSSP加密oracle修复"。

安装以下安全更新后,将在客户端上显示RDP错误:

  • Windows 7/Windows Server 2008 R2 KB4103718
  • Windows 8.1/Windows Server 2012 R2 KB4103725
  • Windows Server 2015 KB4103723
  • Windows 10 1803 KB4103721
  • Windows 10 1709 KB4103727
  • Windows 10 1703 KB4103731
  • Windows 10 1609 KB4103723

该列表显示了2016年5月以来的KB编号;目前,我们需要下载并安装Windows版本的最新累积更新包。我们可以通过Windows Update从Microsoft服务器,本地WSUS服务器获得最新的安全更新,或者从Microsoft Update目录(https://www.catalog.update.microsoft.com/Home)手动下载修补程序*。msu文件。 .aspx)。例如,要搜索Windows 10 1803的2019年8月更新,我们需要使用以下搜索查询:

windows 10 1803 x64 8/*/2019

。下载并安装Windows累积更新(在我的示例中,它是Windows 10版本1803的累积更新,用于基于x64的系统的Windows 10版本1803(KB4512509)。

要恢复远程桌面连接,我们可以在远程计算机上卸载指定的安全更新(但不建议这样做,并且不建议这样做,这是更安全正确的解决方案)。

要解决连接问题,我们需要"暂时"在通过RDP连接的计算机上禁用CredSSP版本检查。可以使用本地组策略编辑器来完成。

  • 运行本地GPO编辑器:gpedit.msc;
  • 转到GPO部分的"计算机配置->管理模板->系统->凭据委派";
  • 找到名称为Encryption Oracle Remediation的策略,启用策略并将保护级别设置为易受攻击;
  • 更新计算机上的策略设置(运行
gpupdate /force

命令),然后尝试通过RDP连接到远程服务器。将Oracle Remediation Encryption策略设置为Vulnerable,具有CredSSP支持的客户端应用程序甚至可以连接到未修补的RDS/RDP端点。

加密Oracle修复策略提供3个可用值来防御CredSSP漏洞:

  • 当RDP服务器阻止来自未修补客户端的连接时,"强制更新客户端"是最高的保护级别。通常,在我们完全更新了整个基础结构并将最新的安全更新添加到服务器和工作站的Windows安装镜像之后,应该启用此策略。
  • 在这种模式下"已缓解",将阻止到具有受感染版本CredSSP的RDP服务器的传出远程RDP连接。但是,使用CredSSP的其他服务也可以正常工作。
  • 当使用易受攻击的CredSSP版本连接到RDP服务器时,"易受攻击"是最低的保护级别。

如果没有本地GPO编辑器(例如,在Windows Home版本中),则可以直接进行注册表更改,以允许RDP连接到具有未修补版本的CredSSP的服务器:

REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters /v AllowEncryptionOracle /t REG_DWORD /d 2

我们可以使用域GPO或者这样的PowerShell脚本在AD的多台计算机上更改AllowEncryptionOracle注册表参数(我们可以使用RSAT-AD-PowerShell模块中的Get-ADComputer cmdlet获取域中的计算机列表):

$computers = (Get-ADComputer -Filter *).DNSHostName
Foreach ($computer in $computers) {
Invoke-Command -ComputerName $computer -ScriptBlock {
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters /v AllowEncryptionOracle /t REG_DWORD /d 2
}
}

成功连接到远程RDP服务器(计算机)后,我们需要通过Windows Update(验证已启用" wuauserv"服务)或者手动安装最新的安全更新。如上所示,从Microsoft更新目录网站下载并安装最新的累积Windows更新。如果在安装MSU更新时出现错误"更新不适用于计算机",请使用上面的链接阅读文章。

对于不再受支持的Windows XP/Windows Server 2003,我们需要安装Windows Embedded POSReady 2009的更新。例如:https://support.microsoft.com/zh-cn/help/4056564.

安装更新并重新启动服务器后,请不要忘记在客户端上禁用该策略(将其切换为"强制更新客户端"),或者将AllowEncryptionOracle注册表参数的值返回为0。在这种情况下,计算机不会有风险连接到不受保护的CredSSP主机并利用此漏洞。

REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters /v AllowEncryptionOracle /t REG_DWORD /d 0

在另一种情况下,计算机上未安装更新。例如,RDP服务器已更新,但是它具有一个策略,该策略会阻止来自具有易受攻击版本CredSSP的计算机的RDP连接("强制更新客户端"策略设置)。在这种情况下,我们还将看到RDP连接错误,这可能是由于CredSSP加密oracle修复引起的。

使用PSWindowsUpdate模块或者通过PowerShell控制台中的WMI命令,检查Windows更新在计算机上的最后安装日期:

gwmi win32_quickfixengineering |sort installedon -desc

此示例显示最新的Windows安全更新已于2016年6月17日安装。为Windows版本下载并安装更新的MSU累积更新文件(请参见上文)。