转载——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…

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"个月的兔子总…

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

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

最强鸿蒙系统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;叫‘任务状态段’…

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的&#…

eclipse和Tomcat绑定

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

OD里alt+F9和Ctrl+F9和shift+F9的区别

ShiftF9 - 与F9相同&#xff0c;但是如果被调试程序发生异常而中止&#xff0c;调试器会首先尝试执行被调试程序指定的异常处理&#xff08;请参考忽略Kernel32中的内存非法访问&#xff09;。 CtrlF9 - 执行直到返回&#xff0c;跟踪程序直到遇到返回&#xff0c;在此期间不进…

kafka数据不丢失不重复_超高速底层系统数据复制,安全精准不丢失

大家好&#xff0c;我是IT数码手机控&#xff0c;一名究极数码爱好者&#xff0c;喜欢最潮最酷的数码好物&#xff0c;追求科技美学&#xff0c;数码圈里最懂艺术&#xff0c;艺术圈里最会修电脑的女汉纸~而今天就给大家介绍佑华硬盘数据拷贝机。— ❶ —外观质感拿到佑华 PRO-…

如何在Visual Studio项目中正确添加汇编代码 .

引用注明>> 【作者&#xff1a;张佩】【镜像&#xff1a;www.yiiyee.cn/blog】 1. 问题描述 在以往的编程经历中&#xff0c;本人最常使用的汇编代码是__asm {int 3}。它可以在我的代码中插入一个软件断点。如果没有一个连接到当前程序的调试器&#xff0c;则程序将…

多叉树的前序遍历_二叉树的非递归遍历的思考

封面图来自wikipedia1 简介二叉树的深度优先遍历&#xff08;前序遍历、中序遍历、后序遍历&#xff09;是一个比较基本的操作。如果使用递归的做法&#xff0c;很容易写出相应的程序&#xff1b;而如果使用非递归的做法&#xff0c;虽然也能写出相应的代码&#xff0c;但是由于…

delphi中Label中文显示不全的问题解决办法

有时候把Label的AutoSize属性设置为True&#xff0c;当窗体显示的时候&#xff0c;Label中的内容可能会显示不完全&#xff0c;只能把AutoSize设置为False&#xff0c; 把Label调整成能显示出内容的大小。还有一种更简单的解决方法。把Form的Font属性进行如下设置&#xff1a;字…

焊接空间臂_焊接烟尘净化器设备哪种好

焊接烟尘净化器设备采用滤筒除尘器&#xff0c;焊接烟尘净化器用于焊接、切割、打磨等工序中产生烟尘和粉尘的净化以及对稀有金属、贵重物料的回收等&#xff0c;可净化大量悬浮在空气中对人体有害的细小金属颗粒。具有净化效率高、噪声低、使用灵活、占地面积小等特点。 适用于…

【摘录】C语言中利用 strtok函数进行字符串分割

C语言不像Java,Php之类的高级语言&#xff0c;对象中直接封装了字符串的处理函数。C语言中进行普通的字符串处理也经常会让我们焦头烂额……不过好在C语言 中还是提供了像strtok这样功能强大的字符串处理函数&#xff0c;可以帮我们实现部分需要的功能。下面我们介绍一下strtok…

woe分析_Python数据分析—apply函数

在对海量数据进行分析的过程中&#xff0c;我们可能要把文本型的数据处理成数值型的数据&#xff0c;方便放到模型中进行使用。也可能需要把数值型的数据分段进行处理&#xff0c;比如变量的woe化。而这些操作都可以借助python中的apply函数进行处理。今天介绍数据分析的第四课…

树莓派3b安装ubuntu mate(在有显示器前提下看)

树莓派安装&#xff1a; 准备材料 tf卡&#xff08;建议16G&#xff09;数据线树莓派win32烧录软件 &#xff0c;百度云链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/16Dq2XrqeJScUO_DxHRIz_g 提取码&#xff1a;kfkbubtuntu mate系统&#xff08;建议不要下ubu…