【cobalt strike手册0x04】Listeners和Beacon

admin 2025年7月3日12:59:39评论16 views字数 6017阅读20分3秒阅读模式
【cobalt strike手册0x04】Listeners和Beacon

Listeners-监听器

监听器面板

【cobalt strike手册0x04】Listeners和Beacon

创建监听器

【cobalt strike手册0x04】Listeners和Beacon

Payload有6种不同的类型

  • DNS Beacon - 使用 DNS 协议(通常是 DNS A 记录查询)与 TeamServer 通信
  • HTTP Beacon & HTTPS Beacon - 使用 HTTP 或 HTTPS 协议与 TeamServer 通信,是最常用的 Beacon 类型
  • SMB Beacon - 使用 Windows 的 SMB(Server Message Block)协议进行通信,通常用于内网横向移动
  • TCP Beacon - 使用原始的 TCP 协议与 TeamServer 通信,通常用于特定场景下的直接连接
  • External C2 - 是一种机制,允许 Beacon 通过第三方工具或自定义协议与 TeamServer 通信
  • Foreign Listeners - 不是一种独立的 Beacon 类型,而是一种配置方式,允许 TeamServer 监听来自其他工具(如 Metasploit)的 Payload 连接
【cobalt strike手册0x04】Listeners和Beacon

CS 的 Beacon

核心组件之一,是一种轻量级的后门代理(Payload),用于在目标系统上执行命令、收集数据并与团队服务器(Team Server)通信。Beacon 是 Cobalt Strike 实现命令与控制(Command and Control, C2)功能的关键部分

  • Beacon通过HTTP、HTTPS或DNS通信,还可以通过Windows命名管道和TCP套接字控制
  • Beacon支持异步和交互式通信
  • Beacon可进行重定义通信来伪装成其他恶意软件或混入合法流量

系统调用的函数

Beacon的payload已经实现使用系统调用而不是标准Windows API函数,目前Beacon支持的一组有限函数如下:

CloseHandleCreateFileCreateFileMappingCreateThreadDuplicateHandleGetThreadContextMapViewOfFileOpenProcessOpenThreadReadFileReadProcessMemoryResumeThreadSetThreadContextUnmapViewOfFileVirtualAllocVirtualAllocExVirtualFreeVirtualProtectVirtualProtectExVirtualQueryWriteFileWriteProcessMemoryWriteProcessMemory

CS4.11新增了如下的一些API

NtQueueApcThreadNtCreateProcessNtOpenProcessTokenNtTestAlertNtSuspendProcessNtResumeProcessNtQuerySystemInformationNtQueryDirectoryFileNtSetInformationProcessNtSetInformationThreadNtQueryInformationProcessNtQueryInformationThreadNtOpenSectionNtAdjustPrivilegesTokenNtDeviceloControlFileNtWaitForMultipleObjects

当生成了stageless(无阶段)的Beacon可以选择使用哪一种系统调用

System Call Method

描述

None

使用标准Windows API函数

Direct

使用Nt* 版本函数

Indirect

跳转到函数Nt*版本的适当指令

可在profile设置 stage.syscall_method 来控制初始的方法

以下是stage.syscall_method 设置的字段

  • elevate
  • inject
  • jump
  • spawn
  • spawnas
  • spawnu
  • team server responding to a stageless payload request
  • team server responding to an external c2 paylaod request

syscall-method [method] 命令用于修改方法,不带任何参数就会查询当前方法

【cobalt strike手册0x04】Listeners和Beacon

Beacon的安全防护

设置Beacon时,CS的TeamServer会生成独有的公私钥对。公钥嵌入到Beacon的有效Payload

Beacon会加密每一个会话元数据,再发送给TeamServer,此元数据包含该Beacon生成的随机会话密钥。每个Beacon实现和数据通道都使用相同的方案

【cobalt strike手册0x04】Listeners和Beacon

阶段Beacon - payload stager

阶段Beacon分为两部分:

  • the payload stage(shellcode)
  • the payload stager(shellcode下载执行器)

stager 是一个小的程序,通常是手动优化的程序集,它会下载payload stage,将其注入内存,并将执行传递给它

可在profile中设置是否将其开启或关闭

host_stage 选项设置为 false。这将防止Cobalt Strike在其Web和DNS服务器上托管有效负载阶段。这样做有很大的OPSEC好处

通过stage,任何人都可以连接到您的服务器,请求有效负载,并分析其内容以从您的有效负载配置中查找信息。

/

Payload Stager

Payload Stage

角色

下载并执行shellcode的程序

shellcode

体积

极小(仅含下载功能)

较大(完整功能模块)

检测重点

网络流量(下载行为)

内存行为(反射加载/API调用)

典型代表

Cobalt Strike的stager.x86.exe

Meterpreter的metsvc.dll持久化模

【cobalt strike手册0x04】Listeners和Beacon

DNS Beacon

payload使用DNS请求来发送beacon

【cobalt strike手册0x04】Listeners和Beacon

数据通道

DNS Beacon可通过DNS TXT记录、DNS AAAA记录或DNS A记录下载任务

mode dns 是DNS A记录下载任务

mode dns6 是DNS AAAA记录通道

mode dns-txt 是DNS TXT记录数据通道(默认为DNS TXT记录数据通道)

基于http的DNS

可在C2的profile中设置DOH(DNS Over HTTP)(通过 HTTP/HTTPS 协议传输 DNS 查询的技术)

DNS监听器设置

【cobalt strike手册0x04】Listeners和Beacon

参数选项介绍:

  • DNS Hosts - 按钮[+]可添加一个或多个域名至beacon。这些域名将被用于DNS通信,需要为每个域名创建DNS A记录,指向TeamServer服务器IP。可以使用DNS NS记录将多个域或子域委托给TeamServer服务器的A记录(beacon主机列表在payload中的总长度不能超过255个字符,否则会被丢弃)
  • Host Rotation Strategy ****- 配置beacon行为,用于从列表中选择用于出口的主机
    • round-robin - 按照列表中提供的顺序依次使用每个主机(需要均匀分配流量到所有可用主机时)
    • random - 每次尝试连接时,从列表中随机选择一个主机(需要高度不可预测的连接模式时)
    • failover-xx - 尽可能长时间使用当前工作主机(需要稳定连接且能自动处理主机故障的情况)
    • rotate-xx - 每个主机使用指定的时间段(m=分钟,h=小时,d=天),然后切换到下一个主机(需要定期更换连接点以规避检测)
  • Max Retry Stategy- 控制beacon在多次连接团队服务器失败后的行为
    • none - beacon永远不会因为连接失败而退出
    • exit-xxx - 格式 exit-[max_attempts]-[increase_attempts]-[duration][m,h,d];max_attempts:最大连续失败尝试次数,超过此值beacon将退出,increase_attempts:触发增加休眠时间的连续失败次数阈值,duration:设置的新休眠时间长度(m=分钟,h=小时,d=天)[例子:exit-5-3-30m]
  • DNS Host(Stager) - DNS Beacon的TXT记录暂存器(stager)配置,它通过DNS的TXT记录传输初始恶意代码片段,仅用于需要显式暂存器的特定功能,且要求团队服务器必须对使用的域名拥有完全控制权,能够自主设置DNS记录
  • Profile - CS配置为自定义的profile
  • DNS Port(Blind)- 设置端口重定向转发器(port bending redirector),转发器在标准DNS端口53接收连接,但实际将连接路由到团队服务器的其他端口
  • DNS Resovler - 允许 DNS Beacon 使用特定的 DNS 解析器进行出站通信,而不是使用目标服务器默认的 DNS 解析器
  • Guardrails - 可以基于特定条件(如域名、用户名、主机名等)限制 Beacon 的有效执行范围
【cobalt strike手册0x04】Listeners和Beacon

如何设置域名

域名为 mircoswif.xyz

如下图设置A记录(绑定公网IP)和NS记录

【cobalt strike手册0x04】Listeners和Beacon

设置完成后开启 DNS Beacon 的监听,确定53端口没有被其他应用占用,DNS Beacon设置如下图

【cobalt strike手册0x04】Listeners和Beacon

使用nslookup进行测试,若返回的A记录解析结果为 0.0.0.0,则表明DNS已正确设置,否则错误

【cobalt strike手册0x04】Listeners和Beacon

Note:

  • 确保DNS记录指向您网络接口的主IP地址,因为Cobalt Strike的DNS服务器始终会从该主地址发送响应
  • 若处于NAT设备后方,必须在NS记录中使用公网IP地址,需设置防火墙将53端口的UDP流量转发至您的系统,Cobalt Strike内置DNS服务器组件用于控制Beacon通信
  • 可通过"Malleable C2"功能自定义DNS Beacon的网络流量特征

通过DNS Beacon上线的机器会是下图的图标

【cobalt strike手册0x04】Listeners和Beacon

checkin 后会获取信息

【cobalt strike手册0x04】Listeners和Beacon

【cobalt strike手册0x04】Listeners和Beacon

HTTP Beacon 和 HTTPS Beacon

beacon通过HTTP GET请求下载任务,通过 POST请求发送数据。这些都是默认设置可以在profile中进行修改的

HTTP(S)监听器设置

【cobalt strike手册0x04】Listeners和Beacon

参数介绍:

  • HTTP(S) Hosts - [+]添加一个或多个HTTP Beacon回连的主机,[-]移除选定的主机,[x]清空当前所有的主机配置,支持直接粘贴逗号分隔的主机列表(Beacon中的主机列表总长度不能超过255个字符,超过的会自动删除)
  • Host Rotation Strategy - 配置beacon行为,用于从列表中选择用于出口的主机
    • round-robin - 按照列表中提供的顺序依次使用每个主机(需要均匀分配流量到所有可用主机时)
    • random - 每次尝试连接时,从列表中随机选择一个主机(需要高度不可预测的连接模式时)
    • failover-xx - 尽可能长时间使用当前工作主机(需要稳定连接且能自动处理主机故障的情况)
    • rotate-xx - 每个主机使用指定的时间段(m=分钟,h=小时,d=天),然后切换到下一个主机(需要定期更换连接点以规避检测)
  • Max Retry Stategy - 控制beacon在多次连接团队服务器失败后的行为
    • none - beacon永远不会因为连接失败而退出
    • exit-xxx - 语法格式 exit-[max_attempts]-[increase_attempts]-[duration][m,h,d];max_attempts:最大连续失败尝试次数,超过此值beacon将退出,increase_attempts:触发增加休眠时间的连续失败次数阈值,duration:设置的新休眠时间长度(m=分钟,h=小时,d=天)[例子:exit-5-3-30m]
  • HTTP Host(Stager) - 用于控制 HTTP Beacon 的stager所使用的目标主机,当满足特定条件时才会生效
  • Profile - CS配置为自定义的profile
  • HTTP Port(C2) - 设置HTTP Beacon的回连端口
  • HTTP Port(blind) - 指定 HTTP Beacon payload web 服务器的监听端口,支持设置端口重定向转发器
  • HTTP Host Header - 允许用户自定义 HTTP 请求中的 Host 头字段值,这个选项可以配置域前置功能
  • HTTP Proxy - 为有效的payload设置代理
  • Guardrails - 可以基于特定条件(如域名、用户名、主机名等)限制 Beacon 的有效执行范围

重定向

可以隐藏TeamServer,在设置监听时,设置监听的ip为转发后的主机IP,将端口80上的所有连接转发到端口80上192.168.12.100的TeamServer的socket语法:

socat TCP4-LISTEN:80,fork TCP4:192.168.12.100:80

如下场景:

  • TeamServer 192.168.130.128
  • 重定向器 192.168.130.130

在 重定向器 中输入命令 socat TCP4-LISTEN:8880,fork TCP4:192.168.130.128:8899

创建Listener如下配置,要创建两个监听器

【cobalt strike手册0x04】Listeners和Beacon

上线后的机器就会有内外部之分,而且在连接时会无法查到TeamServer的IP

【cobalt strike手册0x04】Listeners和Beacon

【cobalt strike手册0x04】Listeners和Beacon

【cobalt strike手册0x04】Listeners和Beacon

SMB Beacon

Windows将命名管道通信封装在SMB协议中

【cobalt strike手册0x04】Listeners和Beacon

link & unlink

在 link 或 unlink 的前提是必须先利用任何方式横向到其他机器,比如通过获取到账号密码或哈希横向到其他机器

【cobalt strike手册0x04】Listeners和Beacon

smb beacon流程如下

  1. 创建listener smb beacon
  2. spwan smb在已有的beacon中派生smb beacon

【cobalt strike手册0x04】Listeners和Beacon

  1. 横向到其他的机器,选择的session为smb beacon的session,listener也是smb beacon

【cobalt strike手册0x04】Listeners和Beacon

这样就可以在pid为348的beacon控制台使用 link 或 unlink 来断开连接或重新连接

使用 link [host] [pipe(可选)] 将当前Beacon链接到正在等待连接的SMB Beacon。当前Beacon签入时,其链接的对等点也将签入,接入必须满足一下条件

  1. 具有SMB Beacon的主机必须接受端口445上的连接
  2. 只能连接由统一CS实例管理的Beacon

销毁Beacon连接用 unlink [ip address] [session PID(可选)] ,PID为Beacon关联的进程

当断开连接的时候,SMB Beacon不会消失,他会等待另一个Beacon的连接

【cobalt strike手册0x04】Listeners和Beacon

TCP Beacon

TCP Beacon使用TCP套接字进行通信

TCP Beacon大多数操作与SMB Beacon类似

使用TCP Beacon生成的exe在运行后会开启端口

【cobalt strike手册0x04】Listeners和Beacon

然后再用其他机器使用命令 connect 来连接

【cobalt strike手册0x04】Listeners和Beacon

Connect & unlink

connect [ip address] [port]unlink [ip address] [session PID]

知识星球

【cobalt strike手册0x04】Listeners和Beacon

原文始发于微信公众号(CatalyzeSec):【cobalt strike手册0x04】Listeners和Beacon

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年7月3日12:59:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【cobalt strike手册0x04】Listeners和Beaconhttps://cn-sec.com/archives/4219039.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息