声明:本公众号分享的安全工具和项目均来自互联网,仅提供安全研究和学习使用。若用于其他目的,使用者需要承包所有法律责任及相关连带责任,与本公众号和工具作者无关。特在此声明。
项目介绍
隐藏桌面(通常称为 HVNC)是一种允许操作员在用户不知情的情况下与远程桌面会话进行交互的工具。不涉及VNC协议,但结果是类似的体验。这个 Cobalt Strike BOF 实现是作为用 C++ 编写的 TinyNuke/forks 的替代品创建的。
隐藏桌面有四个组件:
-
BOF initializer:负责将 HVNC 代码注入 Beacon 进程的小程序。 -
HVNC shellcode:TinyNuke HVNC 的 PIC 实现。 -
服务器和操作员 UI:侦听来自 HVNC shellcode 的连接的服务器和允许操作员与远程桌面交互的 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> [args]
演示
实施细节
-
Aggressor 脚本生成随机管道和桌面名称。这些作为参数传递给 BOF 初始值设定项。桌面名称在执行时存储在 CS 首选项中,并由应用程序启动器 BOF 使用。HVNC 流量使用rportfwd. 状态更新通过命名管道发送回 Beacon。 -
BOF 初始化程序首先解析所需的模块和函数。来自 Aggressor 脚本的参数已解决。指向包含参数和函数地址的结构的指针被传递给InputHandlerHVNC shellcode 中的函数。它用于BeaconInjectProcess执行 shellcode,这意味着可以在 Malleable C2 配置文件或进程注入 BOF 中自定义行为。您可以修改隐藏桌面以定位远程进程,但目前不支持。这样做是为了让 BOF 可以退出并且 HVNC shellcode 可以继续运行。 -
InputHandler创建一个新的命名管道供 Beacon 连接。建立连接后,将打开 ( OpenDesktopA) 或创建 ( CreateDesktopA) 指定的桌面。新套接字通过反向端口转发 ( rportfwd) 建立到 HVNC 服务器。输入处理程序为DesktopHandler下面描述的函数创建一个新线程。该线程将从 HVNC 服务器接收鼠标和键盘输入并将其转发到桌面。 -
DesktopHandler通过反向端口转发建立到 HVNC 服务器的附加套接字连接。此线程将监视窗口的更改并将它们转发到 HVNC 服务器。
下载地址
https://github.com/WKL-Sec/HiddenDesktop
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论