利用 mstsc 反向攻击思路整理

  • A+
所属分类:安全文章

在实战中,当面对 DMZ 区隔离、堡垒机时,很多直接的正向攻击方式都很难实现。曾经在某次渗透过程中,通过日志分析,已经确认核心内网的 ip 地址,但是发现目标机器只随机开放远端口与被攻击机进行 rdp 远程连接,所有正向攻击手段都无法使用。很难受,因此收集整理了一下目前的 mstsc 反向攻击方法,供大家参考,不足之处请多指点。

1、tsclient 反向感染

a、原理

tsclient 是通过远程桌面连接到远程计算机时,在远程计算机“网上邻居”中出现的一个机器名,实际为远程计算机分配给本机的名称。

利用 mstsc 反向攻击思路整理

通过\tsclient盘符可以在远程计算机上访问本机。其访问方式类似于使用 smb 进行文件传输,虽然本质上都是 smb 协议,但是使用 tsclient 无需身份认证,因此可以直接将通过预制手段,使用 tsclient 反向感染。

b、利用

通常情况下,tsclient 的利用思路较为简单,通过文件传输将恶意程序脚本写入用户的启动(startup)文件夹,当机器重启时,就会执行恶意程序脚本。

大概场景如下:

遍历 tsclient 的自启动目录 -》添加执行程序 -》机器重启 -》目标上线

利用 mstsc 反向攻击思路整理

在这方便已经有较为成熟的工具,RDPInception,github 地址:

https://github.com/mdsecactivebreach/RDPInception/

c、限制条件

该攻击方法使用时限制条件较多。

1、mstsc 需要开启驱动器 C 盘,但是默认情况下 mstsc 是不开启磁盘共享功能的。必须要手工开启,如图所示:

利用 mstsc 反向攻击思路整理

2、当开启 RDP 远程访问时,只有远程登录的用户可以访问 tsclient。其他用户无法访问,包括使用 runas 也无法访问。

使用登录用户执行dir \tsclientc命令,可以正常访问。

利用 mstsc 反向攻击思路整理

使用其他用户执行命令无法访问,包括使用 runas:

利用 mstsc 反向攻击思路整理

因此,想使用 tsclient 进行信息收集也相对困难。

虽然限制条件较多,但在实际环境中,很多运维人员为了方便操作,通常会挂载磁盘,因此这一方法并非全然无用,需要根据实际情况判断。猥琐一些的思路:在脚本找不到挂载磁盘的情况下,直接结束 rdpclip.exe 使管理员无法使用剪切板功能,迫使管理员在不清楚原因的状况下,直接重新挂载上磁盘操作。

最后,不同于 smb 上传文件后使用计划任务启动,由于不知道被感染的机器用户身份,因此只能依托于启动项开机自启动。因此,该攻击方式对服务器攻击效果较弱。

2、剪切板窃取

除了利用文件传输以外,其实还可以尝试利用剪切板劫持的方法进行反向攻击。

a、原理

在使用 mstsc 进行远程桌面的时候,会启动一个叫 rdpclip.exe 的进程,该进程的功能是同步服务端与客户端的剪贴板。

利用 mstsc 反向攻击思路整理

而这个进程是一个十分有用的进程,如上文提到的,如果直接结束该进程,那么在服务端(远程机器)上将某些数据拷贝到客户端(本地机器)上时,就会发现剪贴板失效,无法复制。

由于启动该进程时,会自动同步剪切板内容,因此当目标目标机器与其他机器使用 mstsc 建立 RDP 远程连接时,就可以通过读取 rdplicp.exe 进程数据,进行剪贴板窃取,以尽可能地获取更多的信息。

此外,由于该进程是后台运行的,当管理员同时用远程桌面登陆多个服务器,在其中的某一个服务器上进行复制拷贝操作时,会将数据同步到所有服务器的 rdplicp.exe 进程。

b、利用

在 empire 中有一个 Get-ClipboardContents.ps1,可以用 empire 或者 coablt strike 加载该脚本。或者也可以自己编写相关脚本使用。是一个相对简单的工具。

但是需要注意的是,与 tsclient 类似,同计算机的不同用户之间是无法读取的,每一个用户的 rdplicp.exe 是独立启动的。不同用户之间的 rdplicp.exe/cilboard 是不互通的,但是能否在高权限下跨用户读取,未测试

c、限制条件

首先,与 tsclient 类似,mstsc 需要开启剪切板。但是与 tsclient 不同,在 mstsc 中剪切板是默认开启的。

其次,不同用户之间无法直接读取,使用 runas 同样不行。

并且由于 rdplicp.exe 是在远程计算机上运行,初次启动时会直接本地计算机读取剪切板内容,并同步回远程计算机的剪切板中,因此,这是一种单向行为。

从第二次更新剪切板内容开始变为双向同步,并且在结束远程连接时会自动删除双方机器的剪切板内容。

如果是发生在俄罗斯套娃(a 远程 b 远程 c 远程 d 远程……)的场景中,断开连接时,只会自动删除没有建立其他远程连接机器的剪切板。即,当a 断开 b 远程c 时,a 的剪切板清空,b、c 保留;当a 远程 b 断开 c 远程 d时,a、b 和 c、d 剪切板内容都会保留。

3、剪切板劫持

剪切板的利用方法有两种,一种是上面提到的利用共享剪贴板进行剪切板窃取,另外一种则是利用剪切板目录穿越进行恶意文件传输。

与剪切板窃取不同,剪切板劫持(路径穿越)是一个严重的漏洞,在 19 年 2 月被公开,其 CVE 漏洞编号为 CVE-2019-0887。

a、原理

在远程桌面时,使用剪切板传输一个文件的流程如下:

1、在服务器上,"复制"操作会创建格式为 "CF_HDROP" 的剪贴板数据

2、在客户端计算机中执行"粘贴"时,将触发一系列事件

3、要求服务器上的 rdpclip.exe 进程提供剪贴板的内容,并将其转换为 FileGroupDescriptor(Fgd) 剪贴板格式

4、使用 HdropToFgdConverter::AddItemToFgd() 函数,将文件的元数据添加到描述符中

5、完成后,将 Fgd Blob 发送到服务器上的 RDP 服务

6、服务器只是将其包装并将其发送给客户端

7、客户端将其解包并将其存储在自己的剪贴板中

8、"粘贴"事件将发送到当前窗口(例如,explorer.exe)

9、处理事件并从剪贴板读取数据

10、通过 RDP 连接接收文件的内容

在这个过程中,由于在将文件打包成 Fgd 格式然后发送给 PC 端的过程中,没有进行内容检测,再同时配合微软本身 API 支持"/"访问的特性,可以跨目录复制文件,实现类似于 CVE-2018-20250(winrar 解压目录穿越)的攻击效果。

详细过程请参考:

https://paper.seebug.org/1074/

b、利用

目前网上并没有公开此漏洞的 exp,但是可以看到其他人复现的视频:

https://www.bilibili.com/video/av74857336#reply2087757815

目前可以在 github 上检索到一个测试 poc,效果没有视频中那样强大,但是依旧可以实现替换复制文件。对这方面有研究的大佬可以自行修改测试。

https://github.com/0xedh/mstsc-path-traversal

c、限制条件

首先最重要的,还是要开启 mstsc 的剪切板功能。

其次,同 tsclient 的攻击方式类似,该漏洞的触发依旧依托于开机自启,因此对服务器的攻击效果较差。

此外,如果受害者不进行复制粘贴操作,也无法触发次漏洞,而多次进行复制粘贴又会触发文件重复弹窗(修改脚本,每次附加的文件文件名都不同应该可以解决),使用起来限制不小。但是仍不失为一种行之有效的攻击手段。

参考链接:

https://paper.seebug.org/1074/

以上就是目前我收集到的三种 mstsc 反向攻击方法。不足之处请多指教。

利用 mstsc 反向攻击思路整理

本文始发于微信公众号(信安之路):利用 mstsc 反向攻击思路整理

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: