CVE-2019-0708是RDP协议的安全漏洞,具有蠕虫功能,因此危害很大。微软快速发布了该漏洞的补丁。但研究人员认为恶意攻击者可能已经将该漏洞武器化,在不久的将来可能就会看到再野漏洞利用了。
受影响的操作系统有:
· Windows 2003
· Windows XP
· Windows 7
· Windows Server 2008
· Windows Server 2008 R2
蠕虫是可以在网络上进行传播的病毒。蠕虫可以在没有用户帮助的情况下自动在远程机器上执行。如果病毒的主要攻击向量是通过网络,那么就可以将其分类为蠕虫。
概述
RDP协议连接了客户端和终端,定义了虚拟信道之间通信的数据。Windows Server 2000使用的RDP协议版本为RDP 5.1,定义了32个静态虚拟信道(Static Virtual Channels,SVC)。SVC在会话开始时创建在会话结束后断开,而DVC(动态虚拟信道)可按需创建和断开。
如图1所示,RDP Connection Sequence连接的初始化在Security Commencement之前,因此CVE-2019-0708可以在3389端口上进行网络自传播,因此具有蠕虫的相关性质。中国菜刀
图1: RDP协议序列
该漏洞是由于RDP协议的GCC Conference Initialization过程中,MS_T120 SVC name被绑定为引用信道31。信道名是微软内部使用的,因此对客户端来说没有明显的合法用例在名为MS_T120的SVC上建立连接。
图2是没有MS_T120信道的GCC Conference Initialization序列的合法信道请求。天空彩
图2: 标准GCC Conference Initialization Sequence
但在GCC Conference Initialization阶段,客户端会提供不在服务器白名单中的信道名,也就是说攻击者可以在除31外的其他信道上建立另一个名为MS_T120的SVC信道。在除31外的其他西岛上使用MS_T120会导致堆内存破坏和远程代码执行。
图3是信道号为4的GCC Conference Initialization阶段的信道名为MS_T120的异常信道请求。
图3: 异常的GCC Conference Initialization Sequence – 非标准信道上的MS_T120
MS_T120信道管理中的组件如图4所示。MS_T120引用信道在rdpwsx.dll中创建,堆池分配在rdpwp.sys中。当MS_T120引用引导在除31外的其他信道索引环境中时termdd.sys就会出现堆破坏。二四六
图4: Windows Kernel和用户组件
微软补丁如图5所示,在使用信道名为MS_T120的客户端连接请求中添加了一层检查来确保它只与termdd.sys中的_IcaBindVirtualChannels和 _IcaRebindVirtualChannels函数的31信道绑定。
图5: Microsoft补丁中加入了信道绑定检查
研究人员分析了应用在Windows 2003和XP中的补丁,理解了补丁前后RDP协议分析的过程,然后决定创建POC进行测试。POC可以在受害者机器上远程执行代码来启动计算器应用。
图6: PoC执行截图
POC视频参见:
https://www.youtube.com/embed/syF6rSM0JSM
研究人员调查后确认该漏洞利用是可以工作的,因此可能在有漏洞的机器上在没有认证的情况下远程执行代码。如果启用的话,网络级认证可以有效阻止该漏洞利用,但如果攻击者有凭证就可以绕过这一步。
建议
研究人员确认系统补丁可以阻止该漏洞利用,研究人员建议用户尽快更新系统补丁。
禁用外部使用RDP,内部使用RDP也要有所限制,如果不需要就禁用。如果RDP被禁用,漏洞利用就无法成功使用。
RDP协议的GCC Conference Initialization序列中含有MS_T120的客户端请求如果信道不是31,就拦截该请求,除非有证据证明是合法请求。
因为可以在注册表域修改RDP的默认端口,重启后就会与新指定的端口相关联。从检测的角度来看,这是高度相关的。
图7: 在注册表中修改默认RDP端口
恶意软件或企业管理员可以以admin权限修改端口并在注册表中写入新端口,如果系统没有打补丁,漏洞仍然可以被利用。