Hidden Desktop(通常称为HVNC)是一种允许操作员在用户不知情的情况下与远程桌面会话交互的工具。它不涉及VNC协议,但结果提供类似的体验。此Cobalt Strike BOF实现是作为用C++编写的TinyNuke/分支的替代方案而创建的。
Hidden Desktop包含四个组件:
BOF初始化器:负责将HVNC代码注入到Beacon进程中的小程序。
HVNC shellcode:TinyNuke HVNC的PIC实现。
服务器和操作员UI:监听HVNC shellcode连接的服务器,以及允许操作员与远程桌面交互的UI。目前仅支持Windows。
应用程序启动器BOF:一组在新桌面中执行应用程序的Beacon对象文件。
下载最新版本或使用make自行编译。在可从团队服务器访问的Windows机器上启动HVNC服务器。然后使用以下命令执行客户端:
HiddenDesktop <server> <port>
您应该会在服务器机器上看到一个空白的新窗口。BOF默认不执行任何应用程序。您可以使用应用程序启动器BOF在新桌面上执行常见程序:
hd-launch-edge
hd-launch-explorer
hd-launch-run
hd-launch-cmd
hd-launch-chrome
您还可以通过鼠标和键盘使用文件资源管理器启动程序。可以使用以下命令执行其他应用程序:
hd-launch <command> [args]
https://github.com/WKL-Sec/HiddenDesktop/assets/9327972/82f73393-ba44-42b4-8eae-b36b7181fac0
rportfwd转发回团队服务器。状态更新通过命名管道发送回Beacon。InputHandler函数。它使用BeaconInjectProcess执行shellcode,这意味着可以在Malleable C2配置文件或进程注入BOF中自定义行为。您可以修改Hidden Desktop以针对远程进程,但目前不支持。这样做是为了让BOF可以退出而HVNC shellcode可以继续运行。InputHandler创建一个新的命名管道供Beacon连接。一旦建立连接,将打开(OpenDesktopA)或创建(CreateDesktopA)指定的桌面。通过反向端口转发(rportfwd)建立到HVNC服务器的新套接字。输入处理器为下面描述的DesktopHandler函数创建一个新线程。该线程将从HVNC服务器接收鼠标和键盘输入,并将其转发到桌面。DesktopHandler通过反向端口转发建立到HVNC服务器的额外套接字连接。该线程将监控窗口的变化并将其转发到HVNC服务器。HiddenDesktop BOF已在以下Windows版本/架构上使用example.profile进行了测试: