Windows RDP服务高危缝隙分析(CVE-2019-0708)

颁布功夫 2019-05-29
缝隙布景


2019年5月14日微软官方颁布垂危安全补丁,建复了Windows远程桌面服务的远程代码执行高危缝隙CVE-2019-0708(CNVD-2019-14264、CNNVD-201905-434),该缝隙影响了某些旧版本的Windows系统 。由于该缝隙无需身份验证且无需用户交互,所以这个缝隙能够通过网络蠕虫的方式被利用,利用此缝隙的恶意软件能够从被习染的推算机传布到网络中其他易受攻击的推算机,传布方式与2017年WannaCry恶意软件的传布方式类似 。


缝隙影响版本


Windows 7
Windows XP
Windows 2003
Windows Server 2008
Windows Server 2008 R2


RDP和谈简介


RDP是微软终端服务利用的和谈,服务端基于Windows操作系统,Windows从NT起头提供终端服务 。RDP和谈基于T.128(T.120和谈族)提供多通路通讯,并进行了拓展 。


宝运莱·(中国区)最新官方网站


RDP和谈的衔接流程能够分为10个分歧的阶段 。这里我们关注通路衔接有关的几个阶段 。


(1)ConnectionInitiation(衔接初始化)


客户端通过向服务器发送Class 0 X.224 ConnectionRequest PDU启动衔接要求 。服务器使用Class 0 X.224 Connection Confirm PDU进行响应 。之后,客户端和服务器之间发送的所有后续数据都被包裹在X.224数据和谈数据单元(PDU)中 。


(2) BasicSettings Exchange(互换根基设置)


通过使用MCS Connect Initial PDU和MCS Connect Response PDU在客户端和服务器之间互换根基设置 。GCC的全称是 Generic Conference Control,GCC 作为 T.124 的尺度和谈,用于陆续传输大量数据时,将数据整顿分块传输 。


(3)Channel Connection (虚构通路衔接)


客户端通过发送multiple MCS Channel Join Request PDUs参与用户信路,输入/输出通路及所有的静态虚构通路(IO和静态虚构通路ID信息在GCC数据包中) 。服务器通过MCS Channel Join Confirm PDU回复每个通路 。


补丁分析


通过补丁包分析,我们发现补丁前后差距在于termdd.sys文件的IcaBindVirtualChannels及IcaReBindVirtualChannels,增长了对MS_T120和谈通路的判定 。若是是通路和谈名为MS_T120,则设定IcaBindChannel的第三个参数为31 。


宝运莱·(中国区)最新官方网站


服务端在初始化阶段,会创建MS_T120, Index为31的通路 。在收到MCS Connect Initial数据封包后进行通路创建和绑定操作 。


在IcaBindVirtualChannels函数中进行绑按时,IcaFindChannelByName函数只凭据通路名进行通路查找 。当通路名为MS_T120(不分辨大幼写)时,会找到系统内部通路MS_T120的通路并与之绑定,绑定后,通路索引会即被更改为新的通路索引 。


缝隙道理分析


我们在客户端MCS Connect Initial数据封包中,增长一个名为MS_T120的通路 。


宝运莱·(中国区)最新官方网站


接下来,我们开释这个Channel 。我们向MS_T120通路发送机关的数据,但由于这个通路已经被绑定到内置的MS_T120通路,所以数据最终会派发到相应的处置函数rdpwsx!MCSProtData中,而后挪用MCSChannelClose函数关关通路 。


宝运莱·(中国区)最新官方网站


尔后,我们向系统的MS_T120通路发送数据,再次引用被关关的通路,从而导致UAF缝隙 。


宝运莱·(中国区)最新官方网站




解决规划


目前宝运莱官方网站已经颁布了对应的产等第解决规划,有关链接为:/article/1/9148.html  。


对于Windows 7及Windows Server 2008的用户,实时装置Windows颁布的安全更新 。


对于Windows 2003及Windows XP的用户,实时更新系统版本 。


一时风险减轻措施:开启网络身份验证(NLA) 。请把稳若是攻击者占有合法的网络身份,依然能够绕过该身份验证,利用缝隙攻击指标主机 。