RDP安全层在讨论降级攻击之前,我们需要明白,所谓的降级究竟从什么级别降到什么级别。 在RDP协议中有下面三个可用的安全层。都可以在Terminal Server终端服务器上进行配置。
这里面第一个选项是不安全的。如果协商后使用这个协议,连接就比较容易遭受中间人攻击。实施这一攻击的人可以看到客户端和服务器之间传递的所有输入信息和数据。我们的目标就是要降级到这个协议之上。 剩下的两个选项都使用了SSL封装,就安全多了。我们就是从这两个协议降级。 怎么才能知道连接使用了哪个安全层可以利用终端服务客户端mstsc.exe的警告信息来识别使用了什么协议。 Classic RDP提示不能认证服务器的警告信息,在上面还提到了中间人攻击。 Classic RDP连接的警告 SSL如果你没有配置主机信任RDP服务器的SSL证书,你会看到下面的证书警告: (Non-CredSSP)SSL连接的警告 CredSSP(NLA + SSL)你会收到一个输入用户名和口令的弹出窗口。而Classic RDP和SSL都通过完整的Windows桌面来输入密码。 NLA连接的对话框 有漏洞的配置如果把Terminal Servers配置成“Negotiate”协商安全层,就有降级攻击的可行性。下面就是Windows 2003服务器的配置,在更新版本的Windows上也有。 降级攻击我们要连接至一台Windows 2003 RDP服务器,这台服务器配置为协商安全层(Negotiate)。我们连接所用的系统自然就是支持Classic RDP、SSL和NLA的Windows系统。这台服务器则只支持Classic RDP和SSL。可以预见,两者一般情况下应该会协商出双方都支持的最安全的协议:SSL。 在攻击的时候,我们对流量进行篡改,让服务器认为客户端只支持Classic RDP。至于流量拦截,我们可以用ARP欺骗或者DNS欺骗或者其它方法实现。 在连上TCP 3389端口之后,客户端(mstsc)会发送类似于下面的数据(十六进制显示): 其中的03就表示客户端支持的协议,这个位置的值分别对应下面这些含义:
这在协议规范的37页有描述。 我们的POC就是简单的把03换成00,让客户端和服务器最终协商出Classic RDP,而不是SSL。 用我们的工具在192.168.190.170上监听TCP 3389端口。并让它把流量转发到192.168.2.96。 这个例子中,我们没有做真实的ARP欺骗攻击,直接连向了中间人。 输入了攻击者的IP地址 在我们的POC工具里,看到了来自于RDP客户端(192.168.190.1)的连接,并且代理向目标服务器发起了连接。 接下来,我们看到客户端发送了19个字节,注意靠近数据末尾的03,POC工具将其识别了出来,并提示信息告诉我们,已经将03改成00。 接着,我们不做任何更改就可以自由地查看流量了: mstsc会显示Classic RDP连接的警告框,这就表明降级攻击成功了。这个警告对话框,我们在前面提到Classic RDP的时候就已经见过了。 Classic RDP连接的警告信息 结论通过上面的攻击过程,我们当然建议不要将终端服务器的安全层配置成“Negotiate”协商,而是配置成使用SSL,这理论上就能有效阻止上面这样的降级攻击了。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|