【Cobalt Strike】深入了解 Beacon 种类及其原理
字数 1781 2025-08-06 08:35:03
Cobalt Strike Beacon 深入解析与使用指南
1. Beacon 概述
Beacon 是 Cobalt Strike 运行在目标主机上的 Payload,可以视为"窃听器",通过可执行文件、Word 文档或漏洞利用等方式植入目标主机,实现长期控制。
1.1 Beacon 的安全特性
Beacon 的设计遵循 OPSEC(Operations security)原则,主要安全特性包括:
- 使用团队服务器公钥加密传输的元数据
- 验证团队服务器密钥确保任务来源可信
- 设置睡眠(Sleep)和抖动(Jitter)时间增加隐蔽性
1.2 Beacon 的通信模式
- 异步式通信:Beacon 按固定间隔(Sleep时间)向Teamserver发起通信
- 交互式通信(Sleep 0):指令通过Teamserver直接转发给Beacon执行
2. Beacon 分类与原理
2.1 HTTP(S) Beacon
- HTTP Beacon:使用HTTP协议通信
- HTTPS Beacon:使用TLS v1.2加密通信(Cobalt Strike 4.5版本)
- 通信方式:Get请求获取任务,Post回传数据
2.2 SMB Beacon
2.2.1 前置知识:Windows命名管道
- 命名管道(Named Pipe):持久性、跨进程、双向通信
- 匿名管道(Anonymous Pipe):临时、有亲缘关系的进程间单向通信
2.2.2 SMB协议基础
- SMB(Server Message Block)协议用于文件和打印机共享
- 通过445端口通信
2.2.3 SMB Beacon特性
- 使用命名管道通过父Beacon通信
- 适用于域渗透中机器不出网场景
- 兼容Cobalt Strike原生工具
- 限制:
- 目标必须开启445端口
- 同一时间只能连接一个父Beacon
- 无法使用DNS或HTTP协议通信
2.2.4 SMB Beacon使用方式
- 隐蔽点对点通信:
- 使用
link [host] [pipe]命令连接 - 适用于机器无法直接与Teamserver通信的场景
- 使用
- 作为Payload通信:
- 用于对已植入HTTP Beacon主机提权
- IP后会显示∞∞字符
2.3 DNS Beacon
2.3.1 DNS查询方式
- 迭代查询:接收者告知请求者如何获得内容
- 递归查询:接收者必须返回答案
2.3.2 DNS Beacon原理
- 结合迭代和递归查询
- 本地DNS服务器最终找到C2服务器
2.3.3 数据传递方式
- A记录(mode dns):IPv4地址记录
- AAAA记录(mode dns6):IPv6地址记录
- TXT记录(mode dns-txt):默认传递方式
2.3.4 注意事项
- 所有域名必须与Teamserver绑定
- 内网环境需将公网IP的53端口映射到内网Teamserver
- 与HTTP(S) Beacon区别:心跳时不主动回传数据,需使用
checkin命令
2.4 TCP Beacon
2.4.1 Socket基础
- Socket = IP地址 + 端口号(0-65535)
- 服务器Socket:指定IP和端口
- 客户端Socket:主机IP + 随机端口
2.4.2 TCP Beacon特性
- 使用TCP socket通过父Beacon通信
- 适用于同一主机和跨网主机
- 绑定选项:
- 绑定localhost(127.0.0.1):仅本地访问
- 绑定0.0.0.0:监听所有主机(默认)
3. 关键操作与注意事项
3.1 SMB Beacon操作要点
- 连接:
link [host] [pipe] - 断开连接:
unlink(Beacon进入等待状态) - 切换父Beacon前必须先执行
unlink
3.2 DNS Beacon特殊命令
checkin:强制回传数据- 执行命令时会自动执行
checkin
3.3 通用注意事项
- 确保网络配置正确(端口开放、域名绑定等)
- 根据场景选择合适的Beacon类型
- 合理设置Sleep和Jitter参数增强隐蔽性
- 注意各类型Beacon的兼容性和限制条件