深入了解 Beacon 种类及其原理
字数 2428 2025-08-22 12:22:15

Beacon 种类及其原理详解

1. Beacon 概述

Beacon 是 Cobalt Strike 运行在目标主机上的 Payload,可以视为"窃听器",能够通过各种方式(可执行文件、Word 文档、目标主机上的漏洞)最终组成木马,实现对目标主机的长期控制。

1.1 Beacon 的安全特性

Beacon 的安全设计与 OPSEC(Operations security)概念密不可分,OPSEC 本质是在行动阶段就将对立方作为假想敌融入行动计划。早期远控没有考虑被发现、溯源的可能性,导致行动暴露。

安全设计特点

  • 使用团队服务器的公钥加密传输的元数据,只有团队服务器才能解密
  • 传输 Payload 时会验证团队服务器密钥,确保只接受来自团队服务器的任务
  • 设置睡眠(Sleep)和抖动(Jitter)时间控制通信频率,Sleep 控制再次请求前的睡眠时间,Jitter 改变睡眠时间以显示随机性

1.2 Beacon 的通信模式

  1. 异步式通信:Beacon 固定一段时间(由 Sleep 时间决定)向 Teamserver 发起通信,接受命令并回传上次执行结果
  2. 交互式通信(Sleep 0):由 Client 发出的指令通过 Teamserver 直接转发给 Beacon 执行

2. Beacon 分类

2.1 HTTP(S) Beacon

HTTP Beacon 与 HTTPS Beacon 的区别在于通信协议:

  • HTTP Beacon:明文传输
  • HTTPS Beacon:使用 SSL/TLS 协议加密传输

技术细节

  • Cobalt Strike 4.5 版本 HTTPS Beacon 使用 TLS v1.2
  • 一般使用 Get 方式请求任务,Post 方式回传数据

通信过程

Teamserver → HTTP(S) Beacon: HTTP(S)-Get
HTTP(S) Beacon → Teamserver: HTTP(S)-Post

2.2 SMB Beacon

2.2.1 前置知识:Windows 命名管道

Windows 中有两种管道:

  1. 命名管道(Named Pipe):适用于持久性、跨进程、双向通信的场景
  2. 匿名管道(Anonymous Pipe):适用于临时、有亲缘关系的进程间的单向数据传递

2.2.2 SMB 协议

SMB(Server Message Block)协议最初由微软开发,用于实现 Windows 系统中的文件和打印机共享。

2.2.3 SMB Beacon 特点

  • 使用命名管道并通过父 Beacon 进行通信
  • 适用于域渗透中机器不出网的场景
  • 与 Cobalt Strike 原生工具兼容
  • 某些功能(如 packages 模块、Web Driveby 模块)需要额外操作

2.2.4 隐蔽点对点通信

使用 link [host] [pipe] 命令使当前 Beacon 连接到等待连接的 SMB Beacon,连接后操作同步。

通信流程

Teamserver → 机器1(HTTP/DNS Beacon) → 机器2(SMB Beacon)
机器2(SMB Beacon) → 机器1(HTTP/DNS Beacon) → Teamserver

注意事项

  1. 目标机器必须开启 445 端口
  2. 需要从父级 Beacon 连接,且两个 Beacon 需属于同一 Cobalt Strike 主体
  3. 一旦使用此连接方式,无法再使用 DNS 或 HTTP 协议通信
  4. 同一时间只能连接一个父 Beacon,切换时需要先执行 unlink
  5. 取消连接后 SMB Beacon 进入等待连接状态

2.2.5 作为 Payload 通信

在对已植入 HTTP Beacon 的主机提权时,可将 SMB Beacon 作为 Payload 进行派分和通信,此时 IP 后会显示 ∞∞ 字符。

2.3 DNS Beacon

2.3.1 DNS 查询方式

  1. 迭代查询:接收者告诉请求者如何获得内容,但不主动请求
  2. 递归查询:接收者必须给出请求者想要的答案

2.3.2 DNS Beacon 原理

同时利用两种查询方式:

  • 递归查询:步骤 1 和 11
  • 迭代查询:步骤 2-10

最终本地 DNS 服务器找到的域名服务器实际上是 Cobalt Strike C2 服务器。

2.3.3 数据传递方式

支持三种 DNS 记录通道:

  1. A 记录(mode dns)
  2. AAAA 记录(mode dns6)
  3. TXT 记录(mode dns-txt,默认方式)

2.3.4 与 HTTP(S) Beacon 的区别

心跳时不会主动回传被控端数据,仅返回最后通联时间。使用 checkin 命令可使心跳时返回数据。

注意事项

  1. 所有域名必须与 Cobalt Strike Teamserver 服务器绑定
  2. Teamserver 在内网时,需将公网 IP 的 53 端口映射到内网

2.4 TCP Beacon

2.4.1 Socket 概念

Socket 可类比为快递驿站,由 IP 地址和端口号组成(0-65535):

  • <1024:特权端口,需管理员权限
  • 1024:可由任意用户应用程序打开

2.4.2 TCP Beacon 特点

  • 使用 TCP socket 通过父 Beacon 进行通信
  • 适用于同一主机和跨网主机
  • 特性与 SMB Beacon 相似,都需要父 Beacon 控制
  • 兼容性与 SMB Beacon 一致

绑定选项

  1. 绑定到 localhost only(127.0.0.1):仅本地访问
  2. 默认绑定(0.0.0.0):监听所有主机

3. Listener 类型

3.1 Beacon 与 Listener 的关系

  • Beacon:对内监听器,负责命令执行和数据回传
  • Listener:对外监听器,负责整合其他框架或会话

3.2 Foreign Listeners(外部监听器)

用于将 Cobalt Strike 与 Metasploit 框架(及其他支持 MSF 的产品)整合,实现信息整合与 Payload 分发。

3.3 Pivot Listeners(透视监听器)

支持绑定 Beacon 与 SSH 会话,绑定后可进行反向连接,减少 C&C 框架中的连接数量。

Beacon 种类及其原理详解 1. Beacon 概述 Beacon 是 Cobalt Strike 运行在目标主机上的 Payload,可以视为"窃听器",能够通过各种方式(可执行文件、Word 文档、目标主机上的漏洞)最终组成木马,实现对目标主机的长期控制。 1.1 Beacon 的安全特性 Beacon 的安全设计与 OPSEC(Operations security)概念密不可分,OPSEC 本质是在行动阶段就将对立方作为假想敌融入行动计划。早期远控没有考虑被发现、溯源的可能性,导致行动暴露。 安全设计特点 : 使用团队服务器的公钥加密传输的元数据,只有团队服务器才能解密 传输 Payload 时会验证团队服务器密钥,确保只接受来自团队服务器的任务 设置睡眠(Sleep)和抖动(Jitter)时间控制通信频率,Sleep 控制再次请求前的睡眠时间,Jitter 改变睡眠时间以显示随机性 1.2 Beacon 的通信模式 异步式通信 :Beacon 固定一段时间(由 Sleep 时间决定)向 Teamserver 发起通信,接受命令并回传上次执行结果 交互式通信(Sleep 0) :由 Client 发出的指令通过 Teamserver 直接转发给 Beacon 执行 2. Beacon 分类 2.1 HTTP(S) Beacon HTTP Beacon 与 HTTPS Beacon 的区别在于通信协议: HTTP Beacon:明文传输 HTTPS Beacon:使用 SSL/TLS 协议加密传输 技术细节 : Cobalt Strike 4.5 版本 HTTPS Beacon 使用 TLS v1.2 一般使用 Get 方式请求任务,Post 方式回传数据 通信过程 : 2.2 SMB Beacon 2.2.1 前置知识:Windows 命名管道 Windows 中有两种管道: 命名管道(Named Pipe) :适用于持久性、跨进程、双向通信的场景 匿名管道(Anonymous Pipe) :适用于临时、有亲缘关系的进程间的单向数据传递 2.2.2 SMB 协议 SMB(Server Message Block)协议最初由微软开发,用于实现 Windows 系统中的文件和打印机共享。 2.2.3 SMB Beacon 特点 使用命名管道并通过父 Beacon 进行通信 适用于域渗透中机器不出网的场景 与 Cobalt Strike 原生工具兼容 某些功能(如 packages 模块、Web Driveby 模块)需要额外操作 2.2.4 隐蔽点对点通信 使用 link [host] [pipe] 命令使当前 Beacon 连接到等待连接的 SMB Beacon,连接后操作同步。 通信流程 : 注意事项 : 目标机器必须开启 445 端口 需要从父级 Beacon 连接,且两个 Beacon 需属于同一 Cobalt Strike 主体 一旦使用此连接方式,无法再使用 DNS 或 HTTP 协议通信 同一时间只能连接一个父 Beacon,切换时需要先执行 unlink 取消连接后 SMB Beacon 进入等待连接状态 2.2.5 作为 Payload 通信 在对已植入 HTTP Beacon 的主机提权时,可将 SMB Beacon 作为 Payload 进行派分和通信,此时 IP 后会显示 ∞∞ 字符。 2.3 DNS Beacon 2.3.1 DNS 查询方式 迭代查询 :接收者告诉请求者如何获得内容,但不主动请求 递归查询 :接收者必须给出请求者想要的答案 2.3.2 DNS Beacon 原理 同时利用两种查询方式: 递归查询:步骤 1 和 11 迭代查询:步骤 2-10 最终本地 DNS 服务器找到的域名服务器实际上是 Cobalt Strike C2 服务器。 2.3.3 数据传递方式 支持三种 DNS 记录通道: A 记录(mode dns) AAAA 记录(mode dns6) TXT 记录(mode dns-txt,默认方式) 2.3.4 与 HTTP(S) Beacon 的区别 心跳时不会主动回传被控端数据,仅返回最后通联时间。使用 checkin 命令可使心跳时返回数据。 注意事项 : 所有域名必须与 Cobalt Strike Teamserver 服务器绑定 Teamserver 在内网时,需将公网 IP 的 53 端口映射到内网 2.4 TCP Beacon 2.4.1 Socket 概念 Socket 可类比为快递驿站,由 IP 地址和端口号组成(0-65535): <1024:特权端口,需管理员权限 1024:可由任意用户应用程序打开 2.4.2 TCP Beacon 特点 使用 TCP socket 通过父 Beacon 进行通信 适用于同一主机和跨网主机 特性与 SMB Beacon 相似,都需要父 Beacon 控制 兼容性与 SMB Beacon 一致 绑定选项 : 绑定到 localhost only(127.0.0.1):仅本地访问 默认绑定(0.0.0.0):监听所有主机 3. Listener 类型 3.1 Beacon 与 Listener 的关系 Beacon:对内监听器,负责命令执行和数据回传 Listener:对外监听器,负责整合其他框架或会话 3.2 Foreign Listeners(外部监听器) 用于将 Cobalt Strike 与 Metasploit 框架(及其他支持 MSF 的产品)整合,实现信息整合与 Payload 分发。 3.3 Pivot Listeners(透视监听器) 支持绑定 Beacon 与 SSH 会话,绑定后可进行反向连接,减少 C&C 框架中的连接数量。