CVE-2019-0708:远程桌面服务漏洞的综合分析
字数 2057 2025-08-27 12:33:22

CVE-2019-0708:远程桌面服务漏洞综合分析教学文档

漏洞概述

CVE-2019-0708是Microsoft远程桌面服务(RDS)中的一个严重远程代码执行漏洞,影响Windows操作系统。该漏洞允许未经身份验证的攻击者通过发送特制的RDP消息来利用漏洞,成功利用可导致攻击者以系统权限执行任意代码。

技术背景

远程桌面服务(RDS)

  • 允许用户远程打开交互式Windows会话
  • 默认使用RDP协议通过TCP端口3389通信
  • 支持静态虚拟通道作为各种RDP组件和用户扩展的通信链路

RDP协议栈

  • 基于ITU-T T.128应用共享协议
  • 利用T.120标准中的底层协议:
    • T.124通用会议控制(GCC)
    • T.122多点通信服务(MCS)

漏洞细节

漏洞类型

  • Use-After-Free (UAF)漏洞
  • 位于Windows RDP内核驱动程序termdd.sys中

漏洞触发流程

  1. 攻击者建立RDP连接并发送特制的"MCS Connect Initial and GCC Create"请求
  2. 请求中包含名为"MS_T120\x00"的虚拟通道
  3. termdd!IcaCreateChannel()调用termdd!IcaFindChannelByName()
  4. 返回插槽0x1F中的MS_T120结构指针
  5. 该指针被存储在用户指定的插槽中(如插槽10)
  6. 当使用MCS通道加入请求打开通道时,MS_T120通道被成功打开
  7. 攻击者发送特制数据到MS_T120通道
  8. termdd.sys尝试关闭通道,调用termdd!IcaCloseChannel()和termdd!IcaFreeChannel()
  9. 释放MS_T120 ChannelControlStructure并清除用户控制插槽中的指针
  10. 但插槽0x1F中的相同指针未被清除
  11. 连接终止时,RDPWD!SignalBrokenConnection()调用termdd!IcaChannelInputInternal()
  12. 尝试使用Slot 0x1F处的指针写入已释放的ChannelControlStructure
  13. 导致UAF状态

漏洞利用

利用条件

  • 攻击者能够与目标服务器建立RDP连接
  • 目标系统未安装补丁

利用步骤

  1. 建立RDP连接
  2. 发送包含特制"clientNetworkData"的"MCS Connect Initial and GCC Create"请求
  3. 在请求中指定名为"MS_T120\x00"的虚拟通道
  4. 发送特制数据到MS_T120通道触发漏洞

检测方法

检测位置

  • 监控TCP端口3389的流量

检测特征

  1. 查找"MCS Connect Initial and GCC Create"请求
  2. 检查其中的"Settings Data Block"
  3. 查找类型为CS_NET(0xC003)的设置块
  4. 检查channelName_n字段是否包含"MS_T120"(不区分大小写)

加密考虑

  • RDP有两种加密方式:
    • 自定义RDP加密
    • TLS加密
  • 对于TLS加密的流量,检测设备需要先解密才能分析

补丁分析

Microsoft修补了termdd.sys中的两个函数:

  1. IcaBindVirtualChannels()
  2. IcaReBindVirtualChannels()

这两个函数暴露了两个不同但相似的攻击向量。

影响范围

  • Windows 7
  • Windows Server 2008 R2
  • Windows Server 2008
  • Windows XP
  • Windows Server 2003

缓解措施

  1. 立即安装Microsoft提供的安全补丁
  2. 对于无法立即打补丁的系统,启用网络级认证(NLA)
  3. 在防火墙级别阻止TCP端口3389
  4. 考虑使用VPN替代直接RDP访问

技术参考

  1. [MS-RDPBCGR]: Remote Desktop Protocol: Basic Connectivity and Graphics Remoting
  2. ITU-T Recommendation T.123: Network-specific data protocol stacks for multimedia conferencing
  3. Microsoft文档: Client Network Data (TS_UD_CS_NET)
  4. ITU T.125: Multipoint communication service protocol specification
  5. ITU T.124: Generic Conference Control

总结

CVE-2019-0708是一个严重的RDP协议漏洞,攻击者无需认证即可利用,且能获得系统级权限。Microsoft为此漏洞发布了紧急补丁,甚至为已停止支持的Windows XP和Server 2003提供了更新,显示了其严重性。所有受影响系统应立即修补,无法立即修补的系统应采取其他缓解措施。

CVE-2019-0708:远程桌面服务漏洞综合分析教学文档 漏洞概述 CVE-2019-0708是Microsoft远程桌面服务(RDS)中的一个严重远程代码执行漏洞,影响Windows操作系统。该漏洞允许未经身份验证的攻击者通过发送特制的RDP消息来利用漏洞,成功利用可导致攻击者以系统权限执行任意代码。 技术背景 远程桌面服务(RDS) 允许用户远程打开交互式Windows会话 默认使用RDP协议通过TCP端口3389通信 支持静态虚拟通道作为各种RDP组件和用户扩展的通信链路 RDP协议栈 基于ITU-T T.128应用共享协议 利用T.120标准中的底层协议: T.124通用会议控制(GCC) T.122多点通信服务(MCS) 漏洞细节 漏洞类型 Use-After-Free (UAF)漏洞 位于Windows RDP内核驱动程序termdd.sys中 漏洞触发流程 攻击者建立RDP连接并发送特制的"MCS Connect Initial and GCC Create"请求 请求中包含名为"MS_ T120\x00"的虚拟通道 termdd!IcaCreateChannel()调用termdd !IcaFindChannelByName() 返回插槽0x1F中的MS_ T120结构指针 该指针被存储在用户指定的插槽中(如插槽10) 当使用MCS通道加入请求打开通道时,MS_ T120通道被成功打开 攻击者发送特制数据到MS_ T120通道 termdd.sys尝试关闭通道,调用termdd!IcaCloseChannel()和termdd !IcaFreeChannel() 释放MS_ T120 ChannelControlStructure并清除用户控制插槽中的指针 但插槽0x1F中的相同指针未被清除 连接终止时,RDPWD!SignalBrokenConnection()调用termdd !IcaChannelInputInternal() 尝试使用Slot 0x1F处的指针写入已释放的ChannelControlStructure 导致UAF状态 漏洞利用 利用条件 攻击者能够与目标服务器建立RDP连接 目标系统未安装补丁 利用步骤 建立RDP连接 发送包含特制"clientNetworkData"的"MCS Connect Initial and GCC Create"请求 在请求中指定名为"MS_ T120\x00"的虚拟通道 发送特制数据到MS_ T120通道触发漏洞 检测方法 检测位置 监控TCP端口3389的流量 检测特征 查找"MCS Connect Initial and GCC Create"请求 检查其中的"Settings Data Block" 查找类型为CS_ NET(0xC003)的设置块 检查channelName_ n字段是否包含"MS_ T120"(不区分大小写) 加密考虑 RDP有两种加密方式: 自定义RDP加密 TLS加密 对于TLS加密的流量,检测设备需要先解密才能分析 补丁分析 Microsoft修补了termdd.sys中的两个函数: IcaBindVirtualChannels() IcaReBindVirtualChannels() 这两个函数暴露了两个不同但相似的攻击向量。 影响范围 Windows 7 Windows Server 2008 R2 Windows Server 2008 Windows XP Windows Server 2003 缓解措施 立即安装Microsoft提供的安全补丁 对于无法立即打补丁的系统,启用网络级认证(NLA) 在防火墙级别阻止TCP端口3389 考虑使用VPN替代直接RDP访问 技术参考 [ MS-RDPBCGR ]: Remote Desktop Protocol: Basic Connectivity and Graphics Remoting ITU-T Recommendation T.123: Network-specific data protocol stacks for multimedia conferencing Microsoft文档: Client Network Data (TS_ UD_ CS_ NET) ITU T.125: Multipoint communication service protocol specification ITU T.124: Generic Conference Control 总结 CVE-2019-0708是一个严重的RDP协议漏洞,攻击者无需认证即可利用,且能获得系统级权限。Microsoft为此漏洞发布了紧急补丁,甚至为已停止支持的Windows XP和Server 2003提供了更新,显示了其严重性。所有受影响系统应立即修补,无法立即修补的系统应采取其他缓解措施。