在 Cobalt Strike 中,在获取目标机器的 Beacon shell 的前提下,要与目标主机上的桌面交互,通过 [beacon]
→ Explore
→ Desktop(VNC)
。这会将一个 VNC 服务器转入当前进程的内存中并通过 Beacon 对连接建立隧道。
当 VNC 服务器准备就绪时,Cobalt Strike 会打开一个标签为 Desktop HOST@PID
的标签页。
也可以使用 Beacon 的 desktop
命令来将一个 VNC 服务器注入一个特定的进程。使用 desktop pid 架构 low|high
命令。最后一个参数用于指定 VNC 会话的画质。
环境:
ZhuDongFangYu.exe
) 杀软。通过选项卡 Desktop (VNC)
选项无法打开 Desktop 标签页:
可以看到在团队服务器的 7609 端口派生了一个 VNC 服务器,但是与 VNC 服务器的连接没有响应。
尝试的一些思路是:
1、查看 VNC 的 DLL 是不是存在:
在 Cobalt Strike 团队服务器上确认存在:
2、查看团队服务器的 7609 端口是否开放:
看上去就是此服务,那也不是端口的问题。
解决方案就是:
一种思路是:把 Desktop(VNC) 工具注入到 explorer.exe
进程中,这样回来一个会话,即用此会话去开 VNC Desktop。
但是用 explorer.exe 的话,可能对方会明显感觉卡顿。最好是切到一个在线的用户权限上,像截屏、键盘记录等这些后渗透功能,一般都要到对应的用户空间下操作。
具体命令:
在 Beacon 控制台中,
desktop [explorer pid] x86|x64 low|high
注:
low|high
控制截屏画质。操作实例:
注意:
有时候也会有这种情况,
团队服务器:
客户端:
上线过程:
因为我关闭了一切杀软及 Windows Defender,自不必做免杀。
一些朋友搞不清楚 Windows Executable
和 Windows Executable (s)
的区别。据官方文档说,Windows Executable
是生成一个 stager
,但是 Windows Executable (s)
是 stageless 的,相当于直接生成一个 stage
。这个涉及一个分阶段传送 payload 的概念,不做过多解释。我认为选 Windows Executable (s)
比较好,因为 payload stager 因其体积原因,没有一些内建的安全特性。所以能不分阶段就不分阶段。
然后就点击上线。
点击上线之后,可以做一些基本的配置。如设置「抖动因子」或者启动「交互式模式」。
这两个概念官方手册有写,以下部分摘自 cs 官方文档,我翻译了一下:
请注意,Beacon 是一个异步的 payload。命令不会立即执行。每个命令都会先进入队列。当 Beacon 连接到你的时候。它会下载这些命令并挨个执行它们。此时,Beacon 会将所有的输出报告给你。如果输入有误,使用
clear
命令来清理当前 Beacon 的命令队列。
默认情况下,Beacon 每60秒连接到你一次。你可以使用 Beacon 的sleep
命令修改这个时间设置。使用sleep
接着一个秒数来指定 Beacon 连接到你的频率。你也可以指定第二个参数,这个参数必须是一个0到99之间的数字。这个数字就是抖动因子。Beacon 会根据你指定的抖动因子的百分比随机变化下次连接到你的时间。比如,sleep 300 20
这条命令,会使得 Beacon 睡眠 300秒,另外有 20% 的抖动因子。这意味着 Beacon 在