×

TailVNC是一款基于Tailscale网络的Windows远程桌面持久化工具

hqy hqy 发表于2026-04-22 00:33:51 浏览7 评论0

抢沙发发表评论

基于Tailscale的WireGuard加密网格网络构建的Windows远程桌面持久化工具。TailVNC将一个完全自包含的VNC服务器和Tailscale节点嵌入到一个二进制文件中,使用户能够通过Tailscale/Headscale安全地进行远程桌面访问,而不会向公共互联网暴露任何端口。该工具旨在支持合法的基础设施管理和红队持久化操作。

灵感来自SockTail.

功能

  • Tailscale/Headscale 集成 - 利用 tsnet 将 WireGuard 对等节点直接嵌入到二进制文件中;支持官方 Tailscale 协调和自托管的 Headscale 控制平面

  • Windows 会话 0 隔离绕过 - 以 SYSTEM 身份运行时,通过 CreateProcessAsUser 自动在活动用户会话中启动一个代理进程,并通过 IPC 代理 VNC 交通,绕过 Vista+ 会话隔离

  • 动态桌面跟踪 - 跟随用户穿越桌面转换,包括默认桌面、Winlogon(登录屏幕)、UAC安全桌面和锁定屏幕,通过 OpenInputDesktop/SetThreadDesktop

  • Ctrl+Alt+Del 注入 - 通过会话 0 发送安全警报序列sas.dll!SendSAS

  • 双向剪贴板同步 - 在VNC客户端和目标主机之间进行拉丁-1剪贴板同步

  • 编译时配置嵌入 - 授权密钥、VNC密码、监听端口和控制URL是通过LDFLAGS在编译时注入的;生成的二进制文件在运行时不需要配置文件

  • Auth Key 混淆 - Tailscale auth key 在编译时通过 XOR 混淆以防止二进制文件中出现明文凭证暴露

建筑

┌──────────────────────────────────────────────┐
│          TailVNC Service (Session 0)         │
│                                              │
│  tsnet.Server ───► Tailscale/Headscale Net   │
│       │                                      │
│  VNC Listener :5900 (Tailscale interface)    │
│       │                                      │
│  ┌────▼───────────────────────────────────┐  │
│  │ Session Manager                        │  │
│  │  - Polls active console session (2s)   │  │
│  │  - Spawns agent via CreateProcessAsUser│  │
│  │  - Auto-restarts on session change     │  │
│  │    or agent crash                      │  │
│  └────┬───────────────────────────────────┘  │
│       │ TCP Proxy (bidirectional)            │
└───────┼──────────────────────────────────────┘
        ▼
┌────────────────────────────────────────┐
│   VNC Agent (User Session, Desktop)    │
│   127.0.0.1:15900                      │
│   - GDI+ screen capture (~30fps)       │
│   - SendInput keyboard/mouse injection │
│   - Clipboard monitoring               │
└────────────────────────────────────────┘

技术栈

组件科技
语言Go 1.25+
网络传输Tailscale tsnet — 嵌入式WireGuard对等体
VNC 协议RFB 3.008(自定义实现,Raw 编码)
屏幕捕获Windows GDI+ (CreateDIBSectionBitBlt)
输入注入Windows SendInput 应用程序编程接口
会话管理WTSQueryUserToken+CreateProcessAsUser
桌面切换OpenInputDesktop+SetThreadDesktop
SAS 注射sas.dll!SendSAS
认证VNC DES 挑战应答(根据 RFB 规范)
密钥混淆XOR + 十六进制编码
系统调用golang.org/x/sys(Windows 系统调用包装器)
二进制压缩UPX(可选)
构建系统GNU Make + Go LDFLAGS 注入

建筑

先决条件

  •  >= 1.25.3

  • GNU Make

  • UPX(可选,用于减少二进制文件大小)

  • Tailscale 认证密钥 — 从 Tailscale 管理控制台生成;建议为运营用途生成可重复使用和临时密钥

构建参数

参数必填默认描述
AUTH_KEY是的Tailscale 认证密钥;在编译时自动 XOR 混淆和嵌入
LISTEN_PORT5900VNC 监听端口在 Tailscale 接口上
AUTH_PASS空(无认证)VNC连接密码(DES挑战响应)
CONTROL_URL空 (官方 Tailscale)头部规模控制平面 URL
CONFIG_DIRC:\Windows\Temp\.cache持久的tsnet状态目录(WireGuard密钥,节点身份)

编译

# Minimal build — only auth key requiredmake build-vnc AUTH_KEY=tskey-auth-kBEXAMPLEKEY# Full build with all parameters# [CONTROL_URL] — optional, only required when using a self-hosted Headscale control plane# [CONFIG_DIR]  — optional, overrides the default tsnet state directory (C:\Windows\Temp\.cache)make build-vnc \
  AUTH_KEY=tskey-auth-kBEXAMPLEKEY \
  LISTEN_PORT=5900 \
  AUTH_PASS=VNCPassword \
  [CONTROL_URL=https://headscale.example.com] \
  [CONFIG_DIR='C:\Windows\Temp\.cache']

构建产物被写入到 dist/

dist/TailVNC-windows-amd64.exe

构建管道执行以下步骤:

  1. 清理之前的构建文件

  2. 下载和整理 Go 模块依赖项

  3. 运行obfuscator/以对认证密钥进行XOR混淆

  4. 通过LDFLAGS将所有配置注入到二进制文件中 (-X)

  5. 剥离符号表和DWARF调试信息 (-s -w)

  6. 如果可用,用UPX压缩二进制文件 (--best --lzma)

附加制作目标

make clean    # Remove build artifactsmake deps     # Download and tidy Go modulesmake help     # Print usage and parameter reference

用法

TailVNC必须以SYSTEM权限运行。 当在第0会话中执行(作为Windows服务或在SYSTEM上下文中)时,该工具会自动检测活动的控制台会话,在其中启动一个代理进程以进行屏幕捕获和输入注入,并代理所有VNC流量。如果直接在交互式用户会话中启动,它将本地模式运行,不经过代理代理层。

执行后,目标主机将作为一个新节点加入配置的 Tailscale 网络。使用任何标准 VNC 客户端进行连接:

<Tailscale IP>:5900

图片-20260412003923140

图片-20260412004037568


打赏

本文链接:https://www.kinber.cn/post/6474.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客