转载——CVE-2019-0807

译文声明

本文是翻译文章,文章原作者mcafee,文章来源:securingtomorrow.mcafee.com 
原文地址:https://securingtomorrow.mcafee.com/other-blogs/mcafee-labs/rdp-stands-for-really-do-patch-understanding-the-wormable-rdp-vulnerability-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端口,重启之后我们就可以使用新的通信端口了:

但是,恶意软件在获取到了目标系统的管理员权限之后,是可以修改这种配置参数的,并且在注册表中写入新的通信端口。

 

McAfee用户须知

McAfee NSP在2019年5月21日增加了如下所示的签名验证保护,因此McAfee NSP用户不会受到此类攻击的影响:

0x47900c00 “RDP: Microsoft Remote Desktop MS_T120 Channel Bind Attempt”

本文翻译自 securingtomorrow.mcafee.com, 原文链接 。如若转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381008.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

angular移除事件绑定事件绑定_Vue.js子组件利用事件向父组件传输数据,以及sync修饰符和双向绑定...

在Vue.js的组件中,prop是“单向绑定”的,数据只能从父组件传输到子组件。Vue文档中的说了这样做的原因:所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定:父级 prop 的更新会向下流动到子组件中,但是反过来则…

1!+2!+3!+…+10!的和

1!2!3!…10!的和 代码 public class Test {public static void main(String[] args) {/*输出1&#xff01;2&#xff01;***10&#xff01;的和*/int sum0;int n1;for (int i 1; i <10 ; i) {for (int j1;j<i;j){nn*j;}sumn;n1;}System.out.println("sum"su…

JS 对GridView的一些操作

//全选、全不选function CheckBoxChoice(checkAll){ //获取所有input对象的列表 var itemsdocument.getElementsByTagName("input"); for(var i0;i<items.length;i) { if(items[i].type "checkbox") { items[i].…

头文件一般放什么

一般的c和c工程里面头文件应该放那些内容&#xff1a; 1宏定义&#xff08;#define) 2结构体、联合体和枚举类型的定义(这个地方对结构体有时候称为定义,有时候称为声明,个人认为定义更合适一点). 3类的声明和类的定义&#xff08;不是类的对象的定义&#xff09; 4函数的声…

ipad无法充电怎么办_IPAD充电线破损无法保修,资深“果粉”吐槽:店大欺客!...

应该有不少人都是在使用苹果的电子产品吧&#xff1f;包括iphone、ipad之类的。您在使用的过程中有没有发现一个问题&#xff0c;这些电子产品的充电线似乎很不经用&#xff0c;没多久就会发生断裂或者破损&#xff0c;但大部分人都很少会去较真&#xff0c;一般都是自己花钱再…

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

代码 import java.util.Scanner;public class Testified {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.println("请输入月数:");int n scanner.nextInt();System.out.println("第"n"个月的兔子总…

windows内核情景分析---进程线程1

本篇主要讲述进程的启动过程、线程的调度与切换、进程挂靠 一、进程的启动过程&#xff1a; BOOL CreateProcess ( LPCTSTR lpApplicationName, // LPTSTR lpCommandLine, // command line string LPSECURITY_ATTRIBUTES lpProcessAtt…

【转】更改远程桌面默认端口3389及删除远程桌面连接历史记录

Windows 2000/2003等系统中的远程终端服务是一项功能非常强大的服务&#xff0c;同时也成了入侵者长驻主机的通道&#xff0c;入侵者可以利用一些手段得到管理员账号和密码并入侵主机。下面&#xff0c;我们来看看如何通过修改默认端口&#xff0c;防范黑客入侵。   远程终端…

jbod ugood 磁盘驱动状态_如何检查Mac磁盘空间,mac磁盘空间其他怎么清理

致力于成为您终身的苹果管家点击上方蓝字 关注我们检查Mac磁盘空间的时候&#xff0c;你会发现“其他存储”占用了驱动器太多的空间。你知道Mac上的其他存储在哪里&#xff0c;mac磁盘空间其他怎么清理吗&#xff1f;这里macw小编为大家带来了详细的mac 清理磁盘空间教程&…

Oracle中用For Loop 替代Cursor

我们在Oracle存储过程中需要遍历一张表&#xff0c;应该怎样做。我想大多少的人第一个念头就是Cursor。    比如&#xff1a;    create or replace procedure StudyCursor(  resulst out integer  ) is  v_tablename varchar(30);  v_tabletype varchar(11); …

最强鸿蒙系统txt_鸿蒙系统升级时间确认,哪些手机有望成为首批“宠儿”?

在华为麒麟芯片受到打压的这段时间&#xff0c;鸿蒙系统可以说是华为近阶段最受瞩目的研发项目之一。鸿蒙系统不仅仅是一个手机操作系统&#xff0c;它还可以安装在PC、智能家居设备。它的强大除了体现在很多方面。例如传统APP开发代码复杂&#xff0c;劳动强度大&#xff0c;后…

关于Tomcat双击startup.bat文件一闪而过问题

原因&#xff1a; 这是因为我们没有配置JAVA_HOME环境变量&#xff0c;Tomcat本身就是java写的解决方法 找到我们电脑的属性&#xff0c;打开&#xff0c;显示以下界面&#xff1a; 点击高级系统设置&#xff0c;进入下面的界面&#xff1a; 点击环境变量吗&#xff0c;进…

windows内核情景分析---进程线程2

二、线程调度与切换 众所周知&#xff1a;Windows系统是一个分时抢占式系统&#xff0c;分时指每个线程分配时间片&#xff0c;抢占指时间片到期前&#xff0c;中途可以被其他更高优先级的线程强制抢占。 背景知识&#xff1a;每个cpu都有一个TSS&#xff0c;叫‘任务状态段’…

前后落差大用什么词语_形容前后反差大的词语

欢迎来到阿八个人博客网站。本阿八个人博客网站提供最新的站长新闻,各种互联网资讯。喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术!URL链接&#xff1a;https://www.abboke.com/liaomei/2019/0722/52596.html形容前后反差大的词语(1)天壤之别【解释】壤&#x…

asp.net mvc 2 DisplayTemplates 的使用

asp.net mvc 2 官方给的例子有些简单&#xff0c;主要介绍了新的功能。下面主要介绍下DisplayTemplates 给我们带来的实用的功能&#xff0c;可以自定义字段显示的方式&#xff0c;按类型分&#xff1a;String、Boolean、Decimal。按显示的方式&#xff1a;EmailAddress、Html、…

关于Tomcat端口8080占用问题(解决方法)

解决方法 打开cmd命令提示符&#xff0c;输入netstat -aov&#xff0c;在本地地址下找到8080端口&#xff0c;显示如下&#xff1a; 这个时候我们要记得PID后面的数字&#xff0c;我的是8740&#xff1a; 然后打开任务管理器&#xff0c;在详细信息下找的PID为8740的&#…

攻破Win7~Win10 PatchGuard(KPP DSE)【支持Win10 TH1/TH2/RS1/RS2】【WIN64内核越狱】

EP_X0FF和Fyyre已开源 https://github.com/hfiref0x/UPGDSED 最新状态&#xff1a;已放弃Win7.Win8,8.1的静态Patch,专注于Win10 PatchGuard. 1.重启内核越狱,支持Win7~Win10 Win10 10.0.10240.0 ~ Win10.10.0.14939.693(2017.1.11更新至693最新版) Win8 6.3.9600.18289 ~ 6.…

json tostringfiy_JS学习笔记 : 类型转换之「抽象值操作」

这要是没搞懂你好意思说学过JS&#xff1f;这怕是JavaScript中最坑、最有毒的一个部分了。将值从一种类型转换成另一种类型叫做类型转换。例如&#xff1a;var a 1;var b String(a); // "1" 显式转换var c "" a; // "1" 隐式转换在JavaScrip…

cont char *p 和 char* const p 区别及记忆方法

/* cont char *p 和 char* const p 区别及记忆方法 const char *p "hello"; 和 char const *p "hello"; 等价 保护的是内容&#xff08;即这段buffer只读&#xff0c; 记忆&#xff1a;const 在*p前&#xff0c; *p是取内容&#xff0c;保护内容&am…

eclipse和Tomcat绑定

在file下new一个Dynamic Web Project 取好名字&#xff0c;点击next 或者finish都可以&#xff0c;完成创建 点击window,选择preferences 在搜索框里输入server,然后点击Runtime Environments 点击add 我的版本是7&#xff0c;选择7&#xff0c;大家是那个版本就选择…