博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CVE-2019-0708漏洞: RDP= Really DO Patch?
阅读量:4173 次
发布时间:2019-05-26

本文共 1810 字,大约阅读时间需要 6 分钟。

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端口上进行网络自传播,因此具有蠕虫的相关性质。

CVE-2019-0708漏洞: RDP= Really DO Patch?

图1: RDP协议序列

该漏洞是由于RDP协议的GCC Conference Initialization过程中,MS_T120 SVC name被绑定为引用信道31。信道名是微软内部使用的,因此对客户端来说没有明显的合法用例在名为MS_T120的SVC上建立连接。

图2是没有MS_T120信道的GCC Conference Initialization序列的合法信道请求。

CVE-2019-0708漏洞: RDP= Really DO Patch?

图2: 标准GCC Conference Initialization Sequence

但在GCC Conference Initialization阶段,客户端会提供不在服务器白名单中的信道名,也就是说攻击者可以在除31外的其他信道上建立另一个名为MS_T120的SVC信道。在除31外的其他西岛上使用MS_T120会导致堆内存破坏和远程代码执行。

图3是信道号为4的GCC Conference Initialization阶段的信道名为MS_T120的异常信道请求。

CVE-2019-0708漏洞: RDP= Really DO Patch?

图3: 异常的GCC Conference Initialization Sequence – 非标准信道上的MS_T120

MS_T120信道管理中的组件如图4所示。MS_T120引用信道在rdpwsx.dll中创建,堆池分配在rdpwp.sys中。当MS_T120引用引导在除31外的其他信道索引环境中时termdd.sys就会出现堆破坏。

CVE-2019-0708漏洞: RDP= Really DO Patch?

图4: Windows Kernel和用户组件

微软补丁如图5所示,在使用信道名为MS_T120的客户端连接请求中添加了一层检查来确保它只与termdd.sys中的_IcaBindVirtualChannels和 _IcaRebindVirtualChannels函数的31信道绑定。

CVE-2019-0708漏洞: RDP= Really DO Patch?

图5: Microsoft补丁中加入了信道绑定检查

研究人员分析了应用在Windows 2003和XP中的补丁,理解了补丁前后RDP协议分析的过程,然后决定创建POC进行测试。POC可以在受害者机器上远程执行代码来启动计算器应用。

CVE-2019-0708漏洞: RDP= Really DO Patch?

图6: PoC执行截图

POC视频参见:

 

研究人员调查后确认该漏洞利用是可以工作的,因此可能在有漏洞的机器上在没有认证的情况下远程执行代码。如果启用的话,网络级认证可以有效阻止该漏洞利用,但如果攻击者有凭证就可以绕过这一步。

建议

研究人员确认系统补丁可以阻止该漏洞利用,研究人员建议用户尽快更新系统补丁

禁用外部使用RDP,内部使用RDP也要有所限制,如果不需要就禁用。如果RDP被禁用,漏洞利用就无法成功使用。

RDP协议的GCC Conference Initialization序列中含有MS_T120的客户端请求如果信道不是31,就拦截该请求,除非有证据证明是合法请求。

因为可以在注册表域修改RDP的默认端口,重启后就会与新指定的端口相关联。从检测的角度来看,这是高度相关的。

CVE-2019-0708漏洞: RDP= Really DO Patch?

图7: 在注册表中修改默认RDP端口

恶意软件或企业管理员可以以admin权限修改端口并在注册表中写入新端口,如果系统没有打补丁,漏洞仍然可以被利用。

转载地址:http://yccai.baihongyu.com/

你可能感兴趣的文章
Oracle日期计算之INTERVAL
查看>>
Oracle PL/SQL之EXCEPTION
查看>>
Oracle PL/SQL之EXCEPTION -- WHEN OTHERS THEN
查看>>
Oracle PL/SQL之VARCHAR2 QUALIFIER
查看>>
Oracle PL/SQL之处理index不连续的table类型变量
查看>>
Oracle PL/SQL之嵌套表(Nested Table)
查看>>
Oracle PL/SQL之令人不解的提示(nls_date_format)
查看>>
Oracle PL/SQL之GROUP BY ROLLUP
查看>>
Oracle PL/SQL之GROUP BY CUBE
查看>>
蓝桥杯2018省赛 - A3 乘积尾零
查看>>
蓝桥杯2018省赛 - A4 第几个幸运数
查看>>
命令窗口中javac(即javac.exe)不可用的原因
查看>>
如何完全卸载VS2010
查看>>
【算法概论】分治算法:计算数组中的逆序对
查看>>
【算法概论】分治算法:查找中位数
查看>>
【算法概论】分治算法:k路归并
查看>>
Python debug 一
查看>>
向量vector的初始化
查看>>
android数据存储与访问之使用pull解析器
查看>>
Android 短信模块分析(七) MMS数据库定义及结构整理
查看>>