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中
漏洞触发流程
- 攻击者建立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提供了更新,显示了其严重性。所有受影响系统应立即修补,无法立即修补的系统应采取其他缓解措施。