CVE-2019-0708:远程桌面效劳破绽的综合剖析 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

CVE-2019-0708:远程桌面效劳破绽的综合剖析

申博_安全预警 申博 133次浏览 未收录 0个评论

在2019年5月的补钉周期中,Microsoft在其长途桌面效劳(RDS)中宣布了一个长途代码实行毛病补钉。长途未经身份验证的进击者可以或许经由过程将精心设计的RDP音讯发送到目的效劳器来应用此破绽。胜利应用能够会致使实行具有治理权限的恣意代码。虽然我们对此破绽的开端研讨重要集合在减缓和珍爱上,但趋向科技平安研讨团队的Pengsu Cheng,Kamlapati Choubey和Saran Neti致力于完全剖析破绽。以下是趋向科技破绽研讨效劳申报的摘录,内容涵盖CVE-2019-0708,并举行了一些最小的修正。

破绽

Microsoft长途桌面效劳(之前称为终端效劳)许可用户长途翻开交互式Windows会话。长途桌面效劳供应与基于终端的状况类似的功用,个中多个终端(客户端)可以或许衔接到单个主机(效劳器)。长途用户可以或许登录到长途主机并接见主机上的数据,运转应用递次等。长途桌面衔接默许运用长途桌面协定(RDP)经由过程端口3389 / TCP与长途效劳器通讯。

RDP指定多个集会参与者怎样检察和合作同享递次。该协定是ITU-T T.128应用递次同享协定的Microsoft扩大。该协定应用T.120规范中较低层协定供应的其他效劳,比方T.124通用集会掌握(GCC),T.122多点通讯效劳(MCS)等。

RDP衔接以衔接序列音讯最先,由长途桌面协定:基础衔接和图形长途处置惩罚(MS-RDPBCGR)协定界说,以下所示:
CVE-2019-0708:远程桌面效劳破绽的综合剖析

每条音讯的花样可以或许在[ 1 ]中找到。该破绽与“MCS Connect Initial and GCC Create”请求有关。

收到“X.224衔接确认”响应后,从客户端发送到效劳器的“MCS Connect Initial and GCC Create”请求。“MCS Connect Initial and GCC Create”请求包罗与平安相干的信息,假造通道竖立信息以及其他受支撑的RDP客户端功用。“MCS Connect Initial and GCC Create”请求的构造以下:

除tpktHeader字段外,一切多字节整数都是小端字节递次。

•X.224层一般可以或许具有多种PDU范例并由恣意长度构成,但“MCS Connect Initial and GCC Create”数据包具有3字节x224构造。
•mcsCi构造是T.125 MULTIPOINT-COMMUNICATION-SERVICE衔接初始PDU,运用ASN.1 DER举行编码。
•gccCrq构造是T.124 GCC(Generic Conference Control) ConnectData构造。

“Settings Data Block”是一个或多个“Settings Data Block”的串连,个中每一个具有以下花样:
CVE-2019-0708:远程桌面效劳破绽的综合剖析

存在种种范例的“Settings Data Block”,包罗CS_CORE(0xC001),CS_SECURITY(0xC002),CS_NET(0xC003)等。
该tpktHeader字段具有以下构造:
tpktHeader中的一切多字节整数都是big-endian字节递次。version必需为0x03,tpktLength指定全部数据包的长度。该破绽与 “CS_NET”块也称为clientNetworkData)有关。
该clientNetworkData字段包罗请求的假造频道列表。clientNetworkData字段的构造以下:
clientNetworkData的CS_NETHeader字段是0xC003,小端透露表现是\ x03 \ xc0。 channelCount字段指导请求的静态假造通道。 channelNamen(个中n是1,2,…,N)字段界说了通道的8字节空停止称号,channelOption_n字段指定了通道的属性。
RDP协定支撑静态假造通道,旨在用作种种RDP组件和用户扩大的通讯链路。 这些通道以其8字节通道称号而著名,并包罗规范的Microsoft假定通道,如“rdpdr”(重定向),“rdpsnd”(声响),“cliprdr”(剪贴板同享)等。用户可以或许运用 RDP API支撑其他渠道。 除上述通道外,Microsoft默许竖立两个通道:MS_T120(用于RDP自身)和CTXTW(用于Citrix ICA)。 客户不该经由过程收集竖立这些渠道; 相反,当竖立衔接时,这些通道由Windows RDP体系在内部初始化。

运用termdd!IcaCreateChannel()竖立通道,它起首搜检指定的定名通道是不是存在,若是不是,则分派通道构造来竖立通道。 指向通道构造的指针,这个指针我们称为ChannelControlStructure,它的构造存储在一个表中,这个表我们称为ChannelPointerTable。 一切RDP衔接都以ChannelPointerTable开首,以下所示(前五个插槽不是用户掌握的,因而不显现。而是将插槽号0作为第一个客户端可写通道):
在上表中,每一个槽都可以或许存储一个ChannelControlStructure指针,个中标记为Empty的存储空指针。 当RDP客户端经由过程在clientNetworkData中指定它们来衔接和翻开通道时,将竖立响应的ChannelControlStructures,并将其指针存储在从Slot 0最先的ChannelPointerTable中。请注重,CTXTW一直存在于插槽7中,而MS_T120存在于插槽0x1F中。

深入分析IO_FILE、Unsortbin attack与Largebin attack的连系应用

前言: 最近在学习的过程中,遇到一个很有趣的东西,就是IO_FILE和Largebin Unsortbin attack的结合利用,这个技巧能延伸出来很多种利用方式。 正文: 就拿最近的*CTF上的heap_master来举例。 因为本文主讲利用技巧,所以具体程序分析这里就略过了。程序在mmap区域上对堆进行增删改,所以要想构造利用,就得在mmap区域上构造chunk。以下均在libc-2.23环境下进行。 漏洞点: 有一个类似于UAF的漏洞点。 利用初探: 程序没有show函数,那么便很容易想到用修改stdout的方式来泄漏,那么该怎么去修改呢,从UAF角度分析,可以利用UAF来达到Unsortbin attack和Largebin attack。 利用思考: Unsortbin attack只能任意地址写一个libc地址的值,该如何把这一次任意写利用最大化呢,那么就是修改global_max_fast。这样我们就可以得到glibc上的任意地址写堆地址,因为很大的chunk都变成了fastbin,因此越界了规定内的fastbin_index,导致可以在任意写堆地址。 用图来表示就是: 所以可以任意写堆地址。 我们可以覆盖stdout,使得stdout指向我们的mmap空间,并且我们事先在mmap空间构造好_IO_2_1_stdout,导致在打印出程序菜单之前先泄漏了地址。结果为这样: 如图0x57e5c100开始就是我们

Microsoft Windows RDP内核驱动递次termdd.sys中存在“UAF”破绽。在接收到包罗clientNetworkData的“MCS Connect Initial and GCC Create”分组时,竖立个中指定的信道的ChannelControlStructures。若是指定了名为“MS_T120 \ x00”的通道(比方,在插槽10中),则termdd!IcaCreateChannel()挪用termdd!IcaFindChannelByName()并返回由插槽0x1F中的MS_T120构造指向的ChannelControlStructure。该指针(与插槽0x1F中的指针雷同)存储在函数termdd!IcaBindVirtualChannels()中的用户指定插槽(在此示例中为插槽10)中。接下来,当运用MCS通道。到场请求翻开通道时,MS_T120通道也会胜利翻开。若是进击者随后将制造的数据发送到MS_T120频道,则termdd.sys会实验经由过程发送毛病音讯并运用termdd!IcaCloseChannel()封闭该频道来响应当音讯,后者又挪用termdd!IcaFreeChannel(),从而开释 MS_T120 ChannelControlStructure并消灭ChannelPointerTable中用户掌握的插槽(运转示例中的插槽10)中的指针。然则,插槽0x1F中的雷同指针不会被消灭。随后,当衔接停止时,挪用RDPWD!SignalBrokenConnection(),然后挪用termdd!IcaChannelInputInternal()并实验运用Slot 0x1F处的指针写入开释的ChannelControlStructure。这致使了“UAF”状况。
长途未经身份验证的进击者可以或许经由过程在翻开MS_T120通道时与目的效劳器竖立RDP衔接并向其发送精心设计的数据来应用此破绽。 胜利应用将致使进击者可以或许运用治理(内核级)权限实行恣意代码。

源代码演示

以下代码段取自termdd.sys版本6.1.7601.24056。 趋向科技增加的批评已凸起显现。
CVE-2019-0708:远程桌面效劳破绽的综合剖析

要检测应用此破绽的进击,检测装备必需看管和剖析分派端口上的流量,默许状况下为3389 / TCP。
RDP衔接以衔接序列音讯最先,由长途桌面协定:基础衔接和图形长途处置惩罚(MS-RDPBCGR)协定界说,以下所示:

注重:
•此检测指南触及音讯“MCS Connect Initial和GCC Create”。
•RDP有两种范例的加密:自界说RDP加密,一种运用TLS。在前一种状况下,“MCS Connect Initial和GCC Create”是纯文本,而在后一种状况下,“MCS Connect Initial和GCC Create”是RDP客户端在TLS竖立后发送的第一个数据包。
•在交流第一个要乞降响应以后,可以或许运用TLS加密流量。肯定这一点的最简朴要领是搜检到效劳器的第二个传入数据包是不是以“\ x16 \ x03”(TLS纪录范例和TLS客户端Hello的高版本号)开首。

检测装备必需可以或许搜检和剖析RDP效劳器与RDP客户端之间的RDP通讯。若是RDP通讯运用TLS,则检测装备必需在继承实行后续步调之前解密流量。
检测装备必需查找传入的“MCS Connect Initial and GCC Create”请求。“MCS Connect Initial and GCC Create”请求的构造以下:
除tpktHeader字段外,一切多字节整数都是小端字节递次。
•X.224层一般可以或许具有多种PDU范例并由恣意长度构成,但“MCS Connect Initial和GCC Create”数据包具有3字节x224构造。
• mcsCi构造是T.125 MULTIPOINT-COMMUNICATION-SERVICE衔接初始PDU,运用ASN.1 DER举行编码。
•gccCCrq构造是T.124通用集会掌握ConnectData构造.
“Settings Data Block”是一个或多个“Settings Data Block”的串连,每一个该块具有以下花样:
存在种种范例的“Settings Data Block”,包罗CS_CORE(0xC001),CS_SECURITY(0xC002),CS_NET(0xC003)等。

若是找到“MCS Connect Initial and GCC Create”请求,则检测装备必需搜检每一个“Settings Data Block”并查找范例为CS_NET(0xC003)的设置。如许的“Settings Data Block”称为clientNetworkData,具有以下构造:
若是找到clientNetworkData,则检测装备必需遍历每一个channelName_n(个中n是1,2 ..,N)并搜检任何channelName n字段的值是不是包罗不辨别大小写的字符串“MS_T120”。若是找到如许的频道,则应将流量视为歹意; 应用此破绽的进击正在举行中

触发破绽

在将调试递次附加到目的体系时触发破绽时,会发作以下毛病搜检:

结论

当Microsoft为其支撑的操作体系修补此破绽时,他们决议还为如今不支撑的Windows XP和Windows Server 2003体系宣布补钉。这表明他们以为这个破绽有多严峻。另有一些关于检测到主动进击的议论,但毫无疑问这个破绽的可应用性。此毛病显着取得其症结评级,受影响的体系应尽快修补。关于那些仍然在Windows XP或Server 2003上的人来讲,这是另一个提示,请求制订晋级设计。微软能够已宣布了针对此破绽的补钉,然则每次宣布时,他们为这些如今陈旧的体系宣布未来补钉的能够性会下降。
请注重,Microsoft补钉IcaBindVirtualChannels()和IcaReBindVirtualChannels()修复了termdd.sys中的两个易受进击的函数。这两个函数暴露了两个分歧但类似的进击向量。我们的剖析侧重于IcaBindVirtualChannels()公然的进击序言。

特别感谢趋向科技平安研讨团队的Richard Chen,Pengsu Cheng,Kamlapati Choubey和Saran Neti对此破绽供应了云云周全的剖析。我们固然愿望未来可以或许看到更多的破绽剖析。


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明CVE-2019-0708:远程桌面效劳破绽的综合剖析
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址