RDP攻击 - 允许攻击者反向通信的多个关键漏洞

暴露于多个漏洞的RDP客户端允许攻击者反转通信的通常方向并从服务器连接回客户端。

来自Check Point的安全研究人员发现了16个主要漏洞,总共检测到25个安全漏洞。通过利用远程代码执行和内存损坏漏洞,攻击者可以从服务器连接回客户端计算机,研究人员将其称为反向RDP攻击。

由Microsoft开发的RDP客户端,被用户号码用户和IT专业人员广泛使用。此外,还有一些用于连接Mac和Linux机器的开源工具。

RDP攻击 - 以客户为目标

研究人员开始使用开源RDP客户端进行测试

  • FreeRDP - (开源RDP)内存损坏和远程代码执行
  • rdesktop - (开源RDP)内存损坏和远程代码执行
  • mstsc.exe - (Microsoft的内置)RDP客户端Path Traversal

这些漏洞允许攻击者在公司网络中获得系统访问权限,并使用该访问权限在组织内部进一步移动。以下是研究人员描述的常见情景。

  • 攻击连接到公司网络内受感染工作站的IT成员,从而获得更高的权限级别并更好地访问网络系统。
  • 攻击恶意软件研究人员,连接到包含经过测试的恶意软件的远程沙盒虚拟机。这允许恶意软件逃离沙箱并渗透到企业网络中。 RDP客户端 在分析rdesktop v1.8.3时,检查站的研究人员发现总共有19个漏洞,其中11个是关键漏洞。通过组合不同逻辑通道中的多个漏洞导致远程代码执行漏洞。 研究人员进一步分析了另一个开源RDP客户端FreeRDP v2.0.0-rc3,发现了6个漏洞,其中5个是关键漏洞。Free RDP也分享了rdesktop的类似漏洞。 “另一项调查表明,RDP客户端NeutrinoRDP是旧版本(1.0.1)的”FreeRDP“的分支,因此可能存在相同的漏洞。” 研究人员分析的下一个RDP客户端是Mstsc.exe微软的RDP客户端Build 18252.rs,研究人员使用微软的RDP客户端测试了所有开源客户端的PoC并且没有崩溃,它安全关闭。 “我们意识到Microsoft的实现比我们之前测试的实现要好得多。看起来微软的代码好几个数量级。“

但是,Microsoft RDP客户端容易受到路径遍历攻击,攻击者可以在使用剪贴板功能时对其进行操纵。 路径遍历漏洞 当客户端与恶意服务器建立RDP连接时,如果他们使用“复制和粘贴”,则恶意服务器可以将任意文件丢弃到客户端计算机上的任意文件位置。 以下是Checkpoint发布的视频PoC,“我们简单地杀死了rdpclip.exe,并通过向每个”复制和粘贴“操作添加额外的恶意文件来生成我们自己的进程来执行路径遍历攻击。攻击是以“用户”权限执行的,并不要求攻击者拥有“系统”或任何其他提升权限。“ 视频链接:https://youtu.be/F70FGv_QxDY Checkpoint已向供应商报告了所有这些漏洞,并且供应商已提交补丁程序。 “在我们的研究过程中,我们在测试的RDP客户端中发现了许多关键漏洞。虽然不同客户端的代码质量各不相同,但从我们发现的漏洞分布可以看出,我们认为远程桌面协议很复杂,容易出现漏洞,“研究人员总结道。 附录A - 在rdesktop中找到的CVE:

  • CVE 2018-8791:rdesktop版本(包括v1.8.3)包含函数rdpdr_process()中的Out-Of-Bounds,导致信息泄漏。
  • CVE 2018-8792:rdesktop版本直到并包括v1.8.3包含函数cssp_read_tsrequest()中的Out-Of-Bounds Read,导致拒绝服务(segfault)。
  • CVE 2018-8793:rdesktop版本(包括v1.8.3)在函数cssp_read_tsrequest()中包含基于堆的缓冲区溢出,导致内存损坏,甚至可能导致远程代码执行。
  • CVE 2018-8794:rdesktop版本(包括v1.8.3)包含一个整数溢出,导致函数process_bitmap_updates()中的Out-Of-Bounds写入并导致内存损坏甚至可能导致远程代码执行。
  • CVE 2018-8795:rdesktop版本(包括v1.8.3)包含整数溢出,导致函数process_bitmap_updates()中的基于堆的缓冲区溢出,并导致内存损坏甚至可能导致远程代码执行。
  • CVE 2018-8796:rdesktop版本直到并包括v1.8.3包含函数process_bitmap_updates()中的Out-Of-Bounds,导致拒绝服务(segfault)。
  • CVE 2018-8797:rdesktop版本(包括v1.8.3)在函数process_plane()中包含基于堆的缓冲区溢出,导致内存损坏甚至可能导致远程代码执行。
  • CVE 2018-8798:rdesktop版本(包括v1.8.3)包含函数rdpsnd_process_ping()中的Out-Of-Bounds,导致信息泄漏。
  • CVE 2018-8799:rdesktop版本(包括v1.8.3)包含函数process_secondary_order()中的Out-Of-Bounds,导致拒绝服务(segfault)。
  • CVE 2018-8800:rdesktop版本(包括v1.8.3)在函数ui_clip_handle_data()中包含基于堆的缓冲区溢出,导致内存损坏甚至可能导致远程代码执行。
  • CVE 2018-20174:直到并包括v1.8.3的rdesktop版本包含函数ui_clip_handle_data()中的Out-Of-Bounds,导致信息泄漏。
  • CVE 2018-20175:rdesktop版本(包括v1.8.3)包含几个Integer Signedness错误,这些错误导致文件mcs.c中的Out-Of-Bounds读取并导致拒绝服务(segfault)。
  • CVE 2018-20176:rdesktop版本(包括v1.8.3)包含文件secure.c中的几个Out-Of-Bounds,导致拒绝服务(segfault)。
  • CVE 2018-20177:rdesktop版本(包括v1.8.3)包含整数溢出,导致函数rdp_in_unistr()中的基于堆的缓冲区溢出,并导致内存损坏甚至可能导致远程代码执行。
  • CVE 2018-20178:rdesktop版本(包括v1.8.3)包含函数process_demand_active()中的Out-Of-Bounds,导致拒绝服务(segfault)。
  • CVE 2018-20179:rdesktop版本(包括v1.8.3)包含一个整数下溢,导致函数lspci_process()中的基于堆的缓冲区溢出,导致内存损坏,甚至可能导致远程代码执行。
  • CVE 2018-20180:rdesktop版本(包括v1.8.3)包含一个整数下溢,导致函数rdpsnddbg_process()中的基于堆的缓冲区溢出,导致内存损坏甚至可能导致远程代码执行。
  • CVE 2018-20181:rdesktop版本(包括v1.8.3)包含整数下溢,导致函数seamless_process()中的基于堆的缓冲区溢出,并导致内存损坏甚至可能导致远程代码执行。
  • CVE 2018-20182:rdesktop版本(包括v1.8.3)在函数seamless_process_line()中包含全局变量的缓冲区溢出,导致内存损坏,甚至可能导致远程代码执行。
  • 附录B - FreeRDP中的CVE:
  • CVE 2018-8784:版本2.0.0-rc4之前的FreeRDP在函数zgfx_decompress_segment()中包含基于堆的缓冲区溢出,导致内存损坏甚至可能导致远程代码执行。
  • CVE 2018-8785:版本2.0.0-rc4之前的FreeRDP在函数zgfx_decompress()中包含基于堆的缓冲区溢出,导致内存损坏甚至可能导致远程代码执行。
  • CVE 2018-8786:版本2.0.0-rc4之前的FreeRDP包含一个整数截断,导致函数update_read_bitmap_update()中的基于堆的缓冲区溢出,并导致内存损坏甚至可能导致远程代码执行。
  • CVE 2018-8787:版本2.0.0-rc4之前的FreeRDP包含一个整数溢出,导致函数gdi_Bitmap_Decompress()中的基于堆的缓冲区溢出,并导致内存损坏甚至可能导致远程代码执行。
  • CVE 2018-8788:版本2.0.0-rc4之前的FreeRDP包含函数nsc_rle_decode()中最多4个字节的Out-Of-Bounds写入,这会导致内存损坏甚至可能导致远程代码执行。
  • CVE 2018-8789:版本2.0.0-rc4之前的FreeRDP在NTLM身份验证模块中包含几个Out-Of-Bounds,导致拒绝服务(segfault)。

原文发布于微信公众号 - 洛米唯熊(luomiweixiong)

原文发表时间:2019-05-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券