RDP客户端错误 – 发生authentication错误(0x609)

我有一台名为ws24(192.168.1.168)的计算机,另一台名为srvPPassTest2。

我写了一个运行在ws24上的程序,它是一个“RDP代理”。 它接受来自7070端口(可configuration)的RDP客户端的连接,并将它们转发到srvPPassTest2。 我做了以下configuration计算机使用代理:

  • 我使用以下命令为代理创build证书:
    ./makecert -n "CN=ws24.pleasant.local" -pe -ss Root -sr localMachine -sky exchange -m 120 -r -a sha1 -eku 1.3.6.1.5.5.7.3.1
    • 然后我用私钥导出它来创build一个代理将使用的.pfx。
    • 我也导出它没有私钥,并导入到srvPPassTest2的证书(本地计算机) – 受信任的根证书颁发机构/证书文件夹。
  • 我跑
    Enable-WSManCredSSP -role client -DelegateComputer srvPPassTest2 Enable-WSManCredSSP -role client -DelegateComputer ws24 Enable-WSManCredSSP -role client -DelegateComputer 192.168.1.168
    在ws24上。 我相信他们并不是全部必要的,但它还没有正常工作,所以我正在尝试一切。
  • 在ws24我做了以下registry更改:
    • HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa \ Security Packages – 添加tspkg
    • HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders – 添加credssp.dll
  • 我在srvPPassTest2上运行Enable-WSManCredSSP -role Server

如果WSManCredSSP调用出现错误,请尝试先调用Enable-PSRemoting。


以下是我运行rdp代理并使用RDP客户端连接到它时发生的情况:

  • 在ws24上,我使用RDP客户端连接到192.168.1.168:7070。 使用IP地址而不是名称会阻止客户端响应您无法连接到自己。
  • 代理接收并修改(如果需要的话)RDP协议的ConnectionRequestPDU消息,以确保SupportedProtocol标志被设置为ProtocolHybrid&ProtocolSSL。 这将确保CredSSP的使用。 这是转发到srvPPassTest2。
  • 代理mitm的TLS握手。
  • 代理接收客户端NTLMN协商消息,从中获取一些信息并创build一个新的消息转发给目标srvPPassTest2。
  • 同样与NTLMChallenge和NTLMAuthentication。
    • 在这一点上,RDP客户端和服务器仍然在继续。 他们不会返回错误或performance出奇怪的行为。
  • 机器交换证书公钥,用NTLM交换机的密钥encryption。
  • 客户端发送带有TSCredential的TSRequest。 代理接收它,validation信息并构造一个具有不同凭证的发送给srvPPassTest2。
  • 转发来自客户端的消息,长度为462
  • 从srvppasstest2转发邮件,长度为108
  • 转发来自客户端的消息,长度为12

然后,我从rdp客户端得到一个错误popup窗口:

发生authentication错误(代码:0x609)
远程计算机:192.1.168.1.168


唯一相关的结果,当我查找错误0x609在这里 ,我已经按照这些步骤。 一个重要的事情要注意:我有这个代理工作3个月前。 然后srvPPassTest2恢复到以前的状态,现在代理不起作用。 我不能将srvPPassTest2恢复到工作状态,那个vm不是我的,快照也没有被IT保存> 🙁

在哪里find关于代码0x609的信息?

我缺less什么其他可能的设置,在ws24或srvPPassTest2? 我认为这个证书应该放在srvPPassTest2的附加文件夹中,但我不知道是哪一个。

有什么我可以做的疑难解答? NTLM和TSCredential交易所都是完美无缺的。

错误是在这一步:

  • 代理接收并修改(如果需要的话)RDP协议的ConnectionRequestPDU消息,以确保SupportedProtocol标志被设置为ProtocolHybrid&ProtocolSSL。 这将确保CredSSP的使用。 这是转发到srvPPassTest2。

事实certificate,我还必须在ConnectionRequestPDU中设置ProtocolHybridEx标志。 我猜这是因为转发的消息,在TSCredential之后,关心这个标志。

既然如此,我决定只是转发客户端使用的标志,而不是自己构build它们。 如果ProtocolHybrid标志没有设置,我会轻轻地出错,因为我们需要使用networking级authentication(NLA)。