APP下载

我们一起分析一下这个刚刚修复的RDP漏洞CVE-2019-0708

消息来源:baojiabao.com 作者: 发布时间:2026-05-17

报价宝综合消息我们一起分析一下这个刚刚修复的RDP漏洞CVE-2019-0708

写在前面的话

在微软今年五月份的漏洞更新安全公告中,提到了一个跟远端桌面协议(RDP)有关的漏洞。我们之所以要在这里专门针对这个漏洞进行分析,是因为这个漏洞更新涉及到Windows XP以及其他多个Windows操作系统,而众所周知,Windows XP已经很多年没有过更新了。那么为什么微软这一次要修复这个高危漏洞呢?别着急,我们现在一起来看一看!

根据微软释出的安全公告,这是一个非常严证的安全漏洞,它将导致攻击者在目标装置上实现远端程式码执行,并植入蠕虫等恶意软件。这也就意味着,一旦目标组织的其中一台装置受到了感染,整个网络系统内其他未受安全保护的计算机装置也将“无一幸免”。在这份安全公告中,微软提到了著名的网络蠕虫“WannaCry”。在2017年三月份,微软修复了针对该恶意软件的相关漏洞(MS17-010),但是在此之前,很多攻击者都在使用“WannaCry”进行网络攻击。

鉴于该漏洞的安全威胁等级(高危漏洞),攻击者很有可能会在这段时间内开发出相应的漏洞利用工具,McAfee高阶威胁研究团队也对该漏洞以及相关的威胁场景进行了深度分析,我们建议广大使用者尽快修复漏洞CVE-2019-0708。

受影响的操作系统

Windows 2003

Windows XP

Windows 7

Windows Server 2008

Windows Server 2008 R2

RDP协议

远端桌面协议(RDP, Remote Desktop Protocol)是一个多通道(multi-channel)的协议可以帮助使用者(客户端或称“本地电脑”)与提供微软终端机服务的电脑(服务器端或称“远端电脑”)建立通讯连线。目前,市场上大部分的Windows都安装了远端桌面协议。其他操作系统也有相关的客户端软件,例如Linux、FreeBSD和Mac OS X等等。

该协议是对国际电信联盟释出的一个国际标准的多通道会议协议T.120 的一个扩充套件。RDP协议在终端服务推出后已有四个版本,即4.0、5.0、5.1、5.2。一般来说,版本是根据windows的版本确定的。从客户端的角度来说,5.X版本间提供的功能差别不是很大,相对于4.0版本,它提供了使用者带密码直接登入、客户端驱动器资源对映、客户端音讯回放、最高24位色显示和符合FIPS加密级别连线。另外,从4.0协议开始变提供的客户羰功能有:高、中、低三种资料加密级别,客户端自定义初始登入环境,客户端打印机对映,客户端LPT埠对映,客户端com埠对映,剪贴簿对映,客户登入的个性化设定(包括键盘、显示界面大小等)。7.0版:这是最新的版本,仅支援Windows Server 2008 R2 或 Windows 7及以上版本。

漏洞概览

蠕虫病毒可以在受感染的网络系统内进行自我复制和传播,并在受感染的远端主机上自动执行,而不需要使用者任何的额外互动。如果一款恶意软件的主要攻击载体是网络的话,那么它就应该被归类为蠕虫。

远端桌面协议(RDP)定义了通讯双方在虚拟通道间的资料通讯方式,支援客户端建立点到点的连线。这种虚拟通道为双向资料通道,可以扩充套件RDP的功能。Windows Server 2000在RDP v5.1中定义了32种静态虚拟通道(SVC),但是由于其中涉及还到大量动态虚拟通道(DVC),因此可用的通道数量以及种类会受到一定限制。SVC是在会话开始时建立的,并在会话终止前保持不变,但DVC不同,因为它是根据使用者需求来建立和删除的。

漏洞分析

漏洞CVE-2019-0708涉及到了RDP驱动器termdd.sys中的_IcaBindVirtualChannels 和_IcaRebindVirtualChannels。我们可以从下图中看到,系统初始化了RDP连线序列,并且会在安全机制启用前完成通道的建立,这就导致了漏洞CVE-2019-0708的可蠕虫化,因为它可以通过开放埠3389在目标网络系统内实现自我复制和传播。

先给大家简单介绍一下“MS_T120”这个静态虚拟通道,它的RDP通道编号为31,位于GCC会话初始序列中。这是一个微软内部使用的通道名称,而且在客户端通过一个SVC来请求建立连线时,不会显示关于“MS_T120”这个通道的使用资讯。

下图显示的是GCC会话初始化序列的通道请求资讯,我们可以看到其中不涉及到任何关于MS_T120通道的资讯。

但是在GCC会话初始化的过程中,客户端提供的通道名称并不在服务器端的白名单中,因此攻击者将能够设定另一个名为“MS_T120”的SVC通道(而不是之前编号为31的合法通道)来让目标系统发生堆内存崩溃,或实现远端程式码执行。

下图显示的是GCC会话初始化过程中的非正常通道请求(“MS_T120”通道编号为4):

MS_T120通道管理中涉及到的元件我们在下图中进行了标注。MS_T120参考通道会在rdpwsx.dll中建立,堆内存也会在rdpwp.sys中分配内存池。当MS_T120参考通道在通道编号非31的场景下建立时,便会发生堆内存崩溃。

下图显示的是微软的漏洞修复情况,微软在termdd.sys的_IcaBindVirtualChannels和_IcaRebindVirtualChannels函式中的客户端连线请求部分添加了针对通道名称“MS_T120”的检测程式码,并确保该通道会跟通道序列31进行系结。

在对Windows 2003和Windows XP的漏洞补丁进行了分析之后,我们弄清楚了RDP协议在安装补丁之前以及安装补丁之后的通道解析流程,因此我们打算针对这个漏洞开发一份漏洞概念验证程式码,并尝试在目标装置上利用该漏洞来实现远端程式码执行,然后启动计算器程式。

下图为我们PoC程式的执行截图:

经过简单配置之后,我们在目标装置上启用了远端桌面协议,并且在执行概念验证程式码前确保了该装置没有安装漏洞补丁。

我们通过研究分析,确认了PoC程式码的有效性,并成功在目标系统上实现了远端程式码执行。但是,如果目标系统启用了网络等级认证功能,那么这份PoC程式码就无法正常运行了。不过攻击者如何能够获取到目标网络系统的管理员凭证,那么他们仍然能够绕过这种安全保护机制。

由于微软已经针对该漏洞释出了相应的漏洞补丁,因此我们就不再详细讨论针对该漏洞的利用方法了,而且出于对广大使用者的安全性负责的角度考虑,我们也不打算对外公开我们的PoC程式码。

缓解方案

1、 确保我们的Windows系统已安装了针对漏洞CVE-2019-0708的安全补丁,我们强烈建议广大使用者尽快安装该补丁。

2、 禁止装置在外网使用远端桌面协议,并将其限制在内网使用。如果可以的话,建议广大使用者直接禁用远端桌面协议,因为该协议如果被禁用,那么装置安全也就完全不会受到该漏洞的影响了。

3、 在远端桌面协议的GCC会话初始化序列时,将“MS_T120”与通道编号31进行系结,如果请求的通道编号不正确,则禁止建立连线。

需要注意的是,我们还可以在登录档中修改预设的RDP埠,重启之后我们就可以使用新的通讯埠了:

但是,恶意软件在获取到了目标系统的管理员许可权之后,是可以修改这种配置引数的,并且在登录档中写入新的通讯埠。

来源:安全客

2020-01-09 18:53:00

相关文章