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 方式回传数据
通信过程:
Teamserver → HTTP(S) Beacon: HTTP(S)-Get
HTTP(S) Beacon → Teamserver: HTTP(S)-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,连接后操作同步。
通信流程:
Teamserver → 机器1(HTTP/DNS Beacon) → 机器2(SMB Beacon)
机器2(SMB Beacon) → 机器1(HTTP/DNS Beacon) → Teamserver
注意事项:
- 目标机器必须开启 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 框架中的连接数量。