16种方法利用远程桌面协议漏洞
Check Point 安全研究人员在Windows、Linux和Mac系统的远程桌面协议(RDP)客户端中发现25个RDP安全漏洞,其中16个为重要漏洞。
RDP常被技术型用户和IT人员用于连接远程计算机,是微软开发的专有协议。
Check Point 测试了主要为Linux和Mac用户所用的开源RDP协议客户端,以及微软自己的客户端。不幸的是,尽管后者的漏洞发现工作颇为困难,开源RDP客户端及微软专有客户端均存在严重漏洞。
Check Point 的 Eyal Itkin 对下列客户端进行了漏洞测试:
- mstsc.exe——微软内置RDP客户端。
- FreeRDP——GitHub上最流行也最成熟的开源RDP客户端。
- rdesktop——Kali Linux 发行版中默认可用的较老版本开源RDP客户端。
Itkin的团队查找了利用终端用户主机提升网络权限的方法,可以让攻击者在目标的基础设施内更方便地拓展。
Check Point 的测试样例包括:
1) 攻击连接到公司网络内已感染工作站的IT人员,获取其更高权限,实现对网络系统更深层次的访问。
2) 攻击连接到远程沙箱虚拟机的恶意软件研究人员,令沙箱中被测恶意软件逃逸出沙箱,渗透入企业网络。”
Check Point 称,有15个漏洞可致远程代码执行攻击。开源客户端已发布补丁,微软却在接到漏洞报告的8周后回复称不会修复漏洞,因为尽管漏洞“有效”,却未达到微软的服务标准。
因此,路径遍历漏洞并未获得CVE编号,且没有官方补丁可用。
RDP漏洞:作怪的剪贴板
Check Point 使用IDA逆向工程微软的RDP客户端,发现如果客户端使用复制粘贴功能,恶意RDP服务器可秘密释放任意文件至客户端主机的任意文件位置,仅受客户端权限限制。
比如说,我们可以将恶意脚本释放到客户端的‘开始’文件夹。这样一来,当客户端主机重启,恶意脚本就能在这台机器上执行,我们会获得该主机的完整控制权。
Check Point 的漏洞利用测试中,他们终结了rdpclip.exe进程,通过往每个复制粘贴操作添加恶意文件,产生出大量自己的进程去执行路径遍历攻击。
简言之,客户端和服务器之间通过剪贴板共享数据,但该渠道上的数据流未经恰当清洗,是可以被利用的。
研究团队用老式的人工代码审计就在开源客户端中发现了漏洞,都没有用到任何模糊测试技术。(模糊测试通过自动向目标输出大量数据并观察其反应来查找漏洞。观察到目标崩溃时,分析其崩溃原因有时候能揭示可被恶意第三方利用的漏洞。)
微软RDP客户端的代码比开源客户端代码好上几个数量级,有多层优化驱动高效网络视频流,有健壮的输入检查及解压检查以保证目标缓冲区不会被溢出。因此,Check Point 不得不用其他更高端的机制来发现其中缺陷。
由于RDP使用广泛,Check Point 强烈建议用户修复自身RDP客户端。
另外,鉴于微软RDP客户端存在剪贴板使用上的漏洞,我们建议用户在连接到远程主机时禁用剪贴板共享(默认是开启的)。
Check Point 分析报告:
https://research.checkpoint.com/reverse-rdp-attack-code-execution-on-rdp-clients/