【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 的通信模式

  1. 异步式通信:Beacon 按固定间隔(Sleep时间)向Teamserver发起通信
  2. 交互式通信(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使用方式

  1. 隐蔽点对点通信
    • 使用link [host] [pipe]命令连接
    • 适用于机器无法直接与Teamserver通信的场景
  2. 作为Payload通信
    • 用于对已植入HTTP Beacon主机提权
    • IP后会显示∞∞字符

2.3 DNS Beacon

2.3.1 DNS查询方式

  • 迭代查询:接收者告知请求者如何获得内容
  • 递归查询:接收者必须返回答案

2.3.2 DNS Beacon原理

  • 结合迭代和递归查询
  • 本地DNS服务器最终找到C2服务器

2.3.3 数据传递方式

  1. A记录(mode dns):IPv4地址记录
  2. AAAA记录(mode dns6):IPv6地址记录
  3. 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 通用注意事项

  1. 确保网络配置正确(端口开放、域名绑定等)
  2. 根据场景选择合适的Beacon类型
  3. 合理设置Sleep和Jitter参数增强隐蔽性
  4. 注意各类型Beacon的兼容性和限制条件

4. 参考资源

  1. Cobalt Strike官方文档
  2. Cobalt Strike 4.0用户手册中文翻译
  3. Socket编程基础
  4. CIA蜂巢计划文档
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的兼容性和限制条件 4. 参考资源 Cobalt Strike官方文档 Cobalt Strike 4.0用户手册中文翻译 Socket编程基础 CIA蜂巢计划文档