Windows远程桌面连接"要求的函数不受支持"解决方法
前言
博主在重装完公司的ERP系统服务器,并配置完毕之后,发现用工作电脑无法远程连接服务器,报错如下:
两台ERP系统服务器均是如此情况,并且都是全新安装的纯净操作系统,操作系统版本信息如下:
- ERP系统应用服务器:Microsoft Windows Server 2008 R2 Enterprise
- ERP系统数据库服务器:Microsoft Windows Server 2012 R2 Standard
解决方法
CredSSP
凭据安全支持提供程序协议(CredSSP)是处理其他应用程序的身份验证请求的身份验证提供程序。
根据微软官方的说法,CredSSP的未修补版本中存在远程代码执行漏洞。 成功利用此漏洞的攻击者可以在目标系统上中继用户凭据以执行代码。 任何依赖CredSSP进行身份验证的应用程序都可能容易受到此类攻击。
此漏洞属于安全漏洞,命名为”CredSSP 远程执行代码漏洞“,编号为”CVE-2018-0886“。
为了修复此漏洞,微软官方于2018年3月13日发布了第一版的针对”CVE-2018-0886“的CredSSP更新。也就是说使用远程桌面通过安装了此补丁包的系统连接未安装此补丁包的系统,就会弹出类似的报错。
结合我们公司ERP服务器系统版本,那当然会报错了。
方法一:服务端安装CredSSP更新
因为服务端未安装修复CVE-2018-0886的CredSSP补丁而导致的连接失败,解决办法当然是在服务器安装相关的补丁。
对于刚出厂的服务器系统来说,如果条件允许,可以打开服务器的Windows更新功能,系统会自动下载相关的补丁并安装。
如果系统无法获取更新,可以手动安装更新补丁,下载链接见微软官方的MSRC:
选择自己系统对应的补丁下载即可。
方法二:客户端关闭加密数据库修正
如果不想或无法维护服务端操作系统,可以通过修改客户端本地组策略解决。
在运行里面输入
gpedit.msc
打开本地组策略编辑器。找到该路径:
计算机配置
→管理模板
→系统
→凭据分配
,在右边设置名称找到加密Oracle修正
,双击打开。将
未配置
修改为已启用
,把”保护级别“修改为易受攻击
,点击应用
并确定
。
相关文档
CVE
CVE(Common Vulnerabilities and Exposures)的全称是公共漏洞和暴露,是公开披露的网络安全漏洞列表。IT人员、安全研究人员查阅CVE获取漏洞的详细信息,进而根据漏洞评分确定漏洞解决的优先级。
在CVE中,每个漏洞按CVE-1999-0067、CVE-2014-10001、CVE-2014-100001这样的形式编号。CVE编号是识别漏洞的唯一标识符。CVE编号由CVE编号机构(CVE Numbering Authority,CNA)分配,CVE编号机构主要由IT供应商、安全厂商和安全研究组织承担。
CVE形成
CVE漏洞信息由CVE组织机构的网站承载( http://cve.mitre.org/ )。CVE这个组织最初由麻省理工学院在1999年建立,是一个非营利性组织。网站上的CVE信息是公开的,可以在法律许可前提下免费使用。
每个漏洞都被分配一个称为CVE标识符的编号,编号格式为“CVE-年份-编号”,例如CVE-2019-0708代表远程桌面服务远程代码执行漏洞。
CVE的发布主体是CVE编号机构(CVE Numbering Authority,CNA),当前大约有100个CNA,由来自世界各地的IT供应商、安全公司和安全研究组织组成。任何机构或个人都可以向CNA提交漏洞报告,CNA对应的组织往往也会鼓励人们寻找漏洞,以增强产品的安全性。
不是所有漏洞都能被录入CVE,CNA主要根据如下规则判定是否为漏洞分配CVE编号:
- 漏洞可独立修复,与其他漏洞没有耦合。
- 软件或硬件供应商承认此漏洞的存在或有书面公告。
- 漏洞只影响一个代码库,如果漏洞影响多个产品,则为每个产品独立分配CVE编号。
经过上述判断,如果可以分配编号则编写描述信息并发布到CVE网站。每个CVE条目主要包含以下信息:
- 描述: 漏洞的来源、攻击方式等简要描述。
- 参考: 漏洞的相关参考信息链接汇总,例如供应商的漏洞公告、紧急响应建议等。
- 发布的CNA: 发布此CVE的CNA。
- 发布日期: 此CVE的发布日期。
综上,CVE机构通过与CNA合作,识别、定义、公开发布网络安全漏洞,形成漏洞信息行业标准。
CVE作用
如果没有CVE,每个IT供应商或安全组织都维护自己的漏洞数据库,数据无法共享,大家对漏洞的认识也不统一。CVE为漏洞赋予唯一编号并标准化漏洞描述,主要作用如下:
- IT人员、安全研究人员基于相同的语言理解漏洞信息、确定修复漏洞的优先级并努力解决漏洞。
- 不同的系统之间可以基于CVE编号交换信息。
- 安全产品或安全工具开发者可以将CVE作为基线,评估产品的漏洞检测覆盖范围。
有的人可能会认为公开披露漏洞会给黑客带来可乘之机,黑客会利用这些漏洞发起攻击。其实利大于弊,首先CVE只公开已知的漏洞,不管是否有CVE,黑客都能获取漏洞信息;其次漏洞详细信息和修复建议可以暂时隐藏,只分配编号,直到IT供应商发布补丁等修复程序;最后漏洞信息在整个行业的共享可以加快修复建议的推出。
建议在安全产品或工具的安全事件报告等内容中包含CVE编号信息, 这样使用该安全产品或工具的人员可以迅速获取网络中存在的漏洞信息,并根据漏洞修复建议解决问题。
当然CVE网站中的信息比较简要,CVE主要用于给漏洞指定身份。更多的修复建议、影响、评分等信息需要直接到IT供应商网站、其他漏洞数据库获取。但是不可否认,CVE编号是这些信息的串联者,基于CVE编号可以快速检索到漏洞信息。
CVE-2018-0886 的 CredSSP 更新
摘要
凭据安全支持提供程序协议 (CredSSP) 是处理其他应用程序的身份验证请求的身份验证提供程序。
CredSSP 的未修补版本中存在远程代码执行漏洞。 成功利用此漏洞的攻击者可以在目标系统上中继用户凭据以执行代码。 任何依赖 CredSSP 进行身份验证的应用程序都可能容易受到此类攻击。
此安全更新通过更正 CredSSP 在身份验证过程中验证请求的方式来修复此漏洞。
若要了解有关此漏洞的更多信息,请参阅 CVE-2018-0886。
更新
2018 年 3 月 13 日
2018 年 3 月 13 日的初始版本更新了所有受影响平台的 CredSSP 身份验证协议和远程桌面客户端。
缓解措施包括在所有符合条件的客户端和服务器操作系统上安装更新,然后使用包含的“组策略”设置或基于注册表的等效项管理客户端和服务器计算机上的设置选项。 我们建议管理员应用该策略,并尽快在客户端和服务器计算机上将其设置为“强制更新的客户端”或“缓解”。这些更改将需要重启受影响的系统。
请密切关注导致本文后面的兼容性表中的客户端和服务器之间的“阻止”交互的组策略或注册表设置对。
2018 年 4 月 17 日
KB 4093120 中的远程桌面客户端 (RDP) 更新将增强更新的客户端无法连接到尚未更新的服务器时出现的错误消息。
2018 年 5 月 8 日
将默认设置从“易受攻击”更改为“缓解”的更新。
相关的 Microsoft 知识库编号已在 CVE-2018-0886 中列出。
默认情况下,安装此更新后,修补的客户端无法与未修补的服务器进行通信。 使用本文中描述的互操作性矩阵和组策略设置来启用“允许的”配置。
组策略
策略路径和设置名称
说明
策略路径:“计算机配置”->“管理模板”->“系统”->“凭据分配”
设置名称: 加密 Oracle 修正加密 oracle 修正
此策略设置可应用于使用 CredSSP 组件(例如,远程桌面连接)的应用程序。
CredSSP 协议的某些版本容易受到针对客户端的加密 oracle 攻击。 此策略控制与易受攻击的客户端和服务器的兼容性。 此策略允许你设置针对加密 oracle 漏洞的防护级别。
如果启用此策略设置,将会基于以下选项选择 CredSSP 版本支持:
强制更新的客户端– 使用 CredSSP 的客户端应用程序将无法回退到不安全的版本,且使用 CredSSP 的服务将不接受未修补的客户端。
注意 在所有远程主机支持最新版本之前,不应部署此设置。
缓解– 使用 CredSSP 的客户端应用程序将无法回退到不安全的版本,但使用 CredSSP 的服务将接受未修补的客户端。
易受攻击– 使用 CredSSP 的客户端应用程序将通过支持回退到不安全的版本使远程服务器遭受攻击,但使用 CredSSP 的服务将接受未修补的客户端。
“加密 Oracle 修正组策略”支持以下三个选项,应将这些选项应用于客户端和服务器:
策略设置
注册表值
客户端行为
服务器行为
强制更新的客户端
0
使用 CredSSP 的客户端应用程序将无法回退到不安全的版本。
使用 CredSSP 的服务将不接受未修补的客户端。
注意 在所有 Windows 和第三方 CredSSP 客户端支持最新的 CredSSP 版本之前,不应部署此设置。缓解
1
使用 CredSSP 的客户端应用程序将无法回退到不安全的版本。
使用 CredSSP 的服务将接受未修补的客户端。
易受攻击
2
使用 CredSSP 的客户端应用程序将通过支持回退到不安全的版本使远程服务器遭受攻击。
使用 CredSSP 的服务将接受未修补的客户端。
第二次更新(于 2018 年 5 月 8 日发布)会将默认行为更改为“缓解”选项。
注意 对加密 Oracle 修正的任何更改都需要重启。
注册表值
警告 如果使用注册表编辑器或其他方法修改注册表不当,可能会出现严重问题。 这些问题可能需要您重新安装操作系统。 Microsoft 不能保证可解决这些问题。 请自行承担修改注册表的风险。
此更新引入了以下注册表设置:
注册表路径
HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters
值
AllowEncryptionOracle
数据类型
DWORD
是否需要重启?
是
互操作性矩阵
客户端和服务器都需要更新,否则,Windows 和第三方 CredSSP 客户端可能无法连接到 Windows 或第三方主机。 有关易受攻击或导致操作失败的情况,请参阅以下互操作性矩阵。
注意 连接到 Windows 远程桌面服务器时,可以将服务器配置为使用采用 TLS 协议进行身份验证的回退机制,并且用户可能会获得与此矩阵中描述的结果不同的结果。 此矩阵仅描述 CredSSP 协议的行为。
服务器 未修补 强制更新的客户端 缓解 易受攻击 客户端 未修补 允许 阻止 允许 允许 强制更新的客户端 阻止 允许 允许 允许 缓解 阻止 允许 允许 允许 易受攻击 允许 允许 允许 允许
客户端设置
CVE-2018-0886 修补程序状态
未修补
易受攻击
强制更新的客户端
安全
缓解
安全
易受攻击
易受攻击
Windows 事件日志错误
如果在阻止的配置中配置客户端和远程主机,将在已修补的 Windows 客户端上记录事件 ID 6041。
事件日志
系统
事件源
LSA (LsaSrv)
事件 ID
6041
事件消息文本
对 <主机名> 的 CredSSP 身份验证无法协商通用协议版本。 远程主机提供了加密 Oracle 修正不允许的版本 <协议版本>。
由未修补的 Windows RDP 客户端通过 CredSSP 阻止的配置对生成的错误
由没有 2018 年 4 月 17 日修补程序 (KB 4093120) 的远程桌面客户端提供的错误
与配置了“强制更新的客户端”的服务器配对的未修补的 Windows 8.1 之前的客户端和 Windows Server 2012 R2 客户端
由未修补的 Windows 8.1/Windows Server 2012 R2 和更高版本的 RDP 客户端通过 CredSSP 阻止的配置对生成的错误
发生了身份验证错误。
提供给函数的令牌无效
发生了身份验证错误。
不支持请求的函数。
由具有 2018 年 4 月 17 日修补程序 (KB 4093120) 的远程桌面客户端提供的错误
与配置了“强制更新的客户端”的服务器配对的未修补的 Windows 8.1 之前的客户端和 Windows Server 2012 R2 客户端
这些错误是由未修补的 Windows 8.1/Windows Server 2012 R2 和更高版本的 RDP 客户端通过 CredSSP 阻止的配置对生成的。
发生了身份验证错误。
提供给函数的令牌无效。
发生了身份验证错误。
不支持请求的函数。
远程计算机: <主机名>
这可能由 CredSSP 加密 oracle 修正引起的。
第三方远程桌面客户端和服务器
所有第三方客户端或服务器必须使用最新版本的 CredSSP 协议。 请联系供应商以确定其软件是否与最新的 CredSSP 协议兼容。
可在 Windows 协议文档网站中找到协议更新。
文件变更
此更新中更新了以下系统文件。
- tspkg.dll
credssp.dll 文件保持不变。 有关更多信息,请查看相关文章以了解文件版本信息。