文中所涉及的技术、思路及工具等相关知识仅供安全为目的的学习使用,任何人不得将其应用于非法用途及盈利等目的,间接使用文章中的任何工具、思路及技术,我方对于由此引起的法律后果概不负责。
Hidden Desktop(通常称为HVNC)是一种允许操作员在用户不知情的情况下与远程桌面会话进行交互的工具。不涉及VNC协议,但结果是类似的体验。Cobalt Strike BOF作为是用C++编写的TinyNuke/forks的VNC替代品而创建的。
隐藏桌面有四个组件:
-
BOF初始化器:负责将HVNC代码注入Beacon进程的小程序。
-
HVNC shellcode:TinyNuke HVNC的PIC实现。
-
服务器和操作员UI:监听来自HVNC外壳代码的连接的服务器和允许操作员与远程桌面交互的UI。目前仅支持Windows。
-
应用程序启动器BOF:在新桌面中执行应用程序的信标对象文件集。
下载最新版本或使用make
自行编译。在可从teamserver访问的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>
- Aggressor脚本生成随机管道和桌面名称。这些作为参数传递给BOF初始化器。桌面名称在执行时存储在CS首选项中,并由应用程序启动器BOF使用。HVNC流量使用
rportfwd
转发回团队服务器。状态更新通过命名管道发送回Beacon。 - BOF初始化器首先解析所需的模块和函数。解析来自Aggressor脚本的参数。一个指向包含参数和函数地址的结构的指针被传递给HVNC外壳代码中的
InputHandler
函数。它使用BeaconInjectProcess
来执行shellcode,这意味着可以在可延展的C2配置文件或进程注入BOF中自定义行为。您可以修改隐藏桌面以定位远程进程,但目前不支持。这样BOF就可以退出,HVNC外壳代码可以继续运行。 InputHandler
为Beacon创建一个新的命名管道。建立连接后,将打开(OpenDesktopA
)或创建(CreateDesktopA
)指定的桌面。通过到HVNC服务器的反向端口转发(rportfwd
)建立新的套接字。输入处理程序为下面描述的DesktopHandler
函数创建一个新线程。这个线程将从HVNC服务器接收鼠标和键盘输入,并将其转发到桌面。DesktopHandler
通过反向端口转发建立到HVNC服务器的额外套接字连接。该线程将监视窗口的更改并将其转发到HVNC服务器。
兼容性
HiddenDesktop BOF在以下Windows版本/架构上使用example.profile进行了测试:
- Windows Server 2022 x64
- Windows Server 2016 x64
- Windows Server 2012 R2 x64系统
- Windows Server 2008 x86系统
- Windows 7 SP1 x64
原文始发于微信公众号(SecHub网络安全社区):CS隐藏VNC工具,在静默下与远程桌面交互
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论