在实战中,当面对 DMZ 区隔离、堡垒机时,很多直接的正向攻击方式都很难实现。曾经在某次渗透过程中,通过日志分析,已经确认核心内网的 ip 地址,但是发现目标机器只随机开放远端口与被攻击机进行 rdp 远程连接,所有正向攻击手段都无法使用。很难受,因此收集整理了一下目前的 mstsc 反向攻击方法,供大家参考,不足之处请多指点。
1、tsclient 反向感染
a、原理
tsclient 是通过远程桌面连接到远程计算机时,在远程计算机“网上邻居”中出现的一个机器名,实际为远程计算机分配给本机的名称。
通过\tsclient盘符
可以在远程计算机上访问本机。其访问方式类似于使用 smb 进行文件传输,虽然本质上都是 smb 协议,但是使用 tsclient 无需身份认证,因此可以直接将通过预制手段,使用 tsclient 反向感染。
b、利用
通常情况下,tsclient 的利用思路较为简单,通过文件传输将恶意程序脚本写入用户的启动(startup)文件夹,当机器重启时,就会执行恶意程序脚本。
大概场景如下:
遍历 tsclient 的自启动目录 -》添加执行程序 -》机器重启 -》目标上线
在这方便已经有较为成熟的工具,RDPInception,github 地址:
https://github.com/mdsecactivebreach/RDPInception/
c、限制条件
该攻击方法使用时限制条件较多。
1、mstsc 需要开启驱动器 C 盘,但是默认情况下 mstsc 是不开启磁盘共享功能的。必须要手工开启,如图所示:
2、当开启 RDP 远程访问时,只有远程登录的用户可以访问 tsclient。其他用户无法访问,包括使用 runas 也无法访问。
使用登录用户执行dir \tsclientc
命令,可以正常访问。
使用其他用户执行命令无法访问,包括使用 runas:
因此,想使用 tsclient 进行信息收集也相对困难。
虽然限制条件较多,但在实际环境中,很多运维人员为了方便操作,通常会挂载磁盘,因此这一方法并非全然无用,需要根据实际情况判断。猥琐一些的思路:在脚本找不到挂载磁盘的情况下,直接结束 rdpclip.exe 使管理员无法使用剪切板功能,迫使管理员在不清楚原因的状况下,直接重新挂载上磁盘操作。
最后,不同于 smb 上传文件后使用计划任务启动,由于不知道被感染的机器用户身份,因此只能依托于启动项开机自启动。因此,该攻击方式对服务器攻击效果较弱。
2、剪切板窃取
除了利用文件传输以外,其实还可以尝试利用剪切板劫持的方法进行反向攻击。
a、原理
在使用 mstsc 进行远程桌面的时候,会启动一个叫 rdpclip.exe 的进程,该进程的功能是同步服务端与客户端的剪贴板。
而这个进程是一个十分有用的进程,如上文提到的,如果直接结束该进程,那么在服务端(远程机器)上将某些数据拷贝到客户端(本地机器)上时,就会发现剪贴板失效,无法复制。
由于启动该进程时,会自动同步剪切板内容,因此当目标目标机器与其他机器使用 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,但是可以看到其他人复现的视频:
目前可以在 github 上检索到一个测试 poc,效果没有视频中那样强大,但是依旧可以实现替换复制文件。对这方面有研究的大佬可以自行修改测试。
https://github.com/0xedh/mstsc-path-traversal
c、限制条件
首先最重要的,还是要开启 mstsc 的剪切板功能。
其次,同 tsclient 的攻击方式类似,该漏洞的触发依旧依托于开机自启,因此对服务器的攻击效果较差。
此外,如果受害者不进行复制粘贴操作,也无法触发次漏洞,而多次进行复制粘贴又会触发文件重复弹窗(修改脚本,每次附加的文件文件名都不同应该可以解决),使用起来限制不小。但是仍不失为一种行之有效的攻击手段。
参考链接:
https://paper.seebug.org/1074/
以上就是目前我收集到的三种 mstsc 反向攻击方法。不足之处请多指教。
本文始发于微信公众号(信安之路):利用 mstsc 反向攻击思路整理
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论