4.1、概述
任何行动的第一步都是建立基础设施。在 Cobalt Strike
中,基础设施由一台或多台团队服务器、重定向器以及指向团队服务器和重定向器的 DNS
记录组成。一旦团队服务器启动并运行,你将需要连接到它,并将其配置为接收来自受感染系统的连接。监听器是 Cobalt Strike
执行此操作的机制。
监听器既是payload
的配置信息,也是 Cobalt Strike
建立服务器以接收来自payload
连接的指令。监听器由用户定义的名称、payload
类型和几个特定于payload
的选项组成。
# 4.2、监听器管理
要管理Cobalt Strike
监听器,点击菜单栏上的Cobalt Strike -->Listeners
打开监听器管理选项卡,列出了所有已经配置的payload
和监听器。
点击ADD
添加新的监听器。将显示New Listener
面板。
使用Payload
下拉菜单选择要配置的payload
/listener
类型。每种类型都有不同的参数,将在后面的章节中进行详细介绍。
要编辑监听器,选中一个监听器,然后点击 Edit
。删除监听器,点击Remove
。
# 4.3、Cobalt Strike 的 Beacon Payload
通常情况下,你需要为 Cobalt Strike
的 Beacon payload
配置监听器。 Beacon
是 Cobalt Strike
的paylod
,用于对高级攻击者进行建模。使用 Beacon
通过 HTTP
、HTTPS
或 DNS
出网。还可以通过控制 Windows
命名管道和 TCP
套接字上的点对点Beacon
来限制哪些主机可以出网。
Beacon
非常灵活,支持异步和交互式通信。异步模式下通信缓慢, Beacon
回连服务器,下载其任务,然后休眠。交互式通信模式下是实时的。
Beacon
的网络指标具有可塑性。使用 Cobalt Strike
的可扩展 C2
语言重新定义 Beacon
的通信。这可以将Beacon
活动伪装成其他恶意软件或混入合法流量。有关详细信息,会在后续的Malleable Command and Control
章节介绍。
# 4.3.1、系统调用
``Beaconpayload
实现了使用系统调用而非标准 Windows API
函数的功能。目前,Beacon
只支持有限的函数集来实现这一功能。
以下函数支持系统调用的使用:
- CloseHandle
- CreateFileMapping
- CreateRemoteThread
- CreateThread
- GetThreadContext
- MapViewOfFile
- OpenProcess
- OpenThread
- ResumeThread
- SetThreadContext
- UnmapViewOfFile
- VirtualAlloc
- VirtualAllocEx
- VirtualFree
- VirtualProtect
- VirtualProtectEx
- VirtualQuery
当你通过 Cobalt Strike UI
或支持的攻击者函数生成五阶段``Beaconpayload
时,你可以选择在执行时使用哪个系统调用方法。
系统调用方法 | 描述 |
---|---|
None | 使用标准Windows API函数 |
Direct | 使用 Nt* 版本的函数 |
Indirect | 跳转到 Nt* 版本函数中的相应指令 |
有些注入或生成新Beacon
的命令和工作流程不允许设置初始系统调用方法。在这种情况下,在配置文件中设置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 payload request
使用 syscall-method [method]
命令可以修改后续命令使用的方法。不带任何参数的 syscall-method
将查询当前方法。
# 4.3.2、Payload安全特性
Cobalt Strike
会采取措施保护Beacon
通信,确保Beacon
只能从团队服务器接收任务并向团队服务器发送输出。
首次设置 Beacon``Payoad
时,Cobalt Strike
会生成团队服务器独有的公钥/私钥对。团队服务器的公钥被嵌入 Beacon
的payload stage
。Beacon
会使用团队服务器的公钥对发送到团队服务器的会话元数据进行加密。
Beacon
必须始终发送会话元数据,团队服务器才能从 Beacon
会话中发布任务和接收输出。该元数据包含由该 Beacon
生成的随机会话密钥。团队服务器使用每个 Beacon
的会话密钥来加密任务和解密输出。
每个Beacon
实现和数据通道都使用相同的方案。HTTP
和 DNS
混合Beacon
中 A
记录数据通道的安全性与 HTTPS Beacon
相同。
请注意,一旦 payload stage
被执行,上述内容就适用。payload stagers
由于体积小,没有内置安全功能。
# 4.4、Payload Staging
作为背景信息,值得一提的一个主题是payload Staging
(分阶段载荷)。许多攻击框架将攻击与攻击执行的内容分离。攻击执行的内容称为payload
。payload
通常分为两部分:payload stage
和payload stager
。 stager
是一个小程序,通常是手工优化的汇编指令,用于下载payload stager
,将其注入内存,并将执行命令传递给它。此过程称为staging
(分阶段)。
在某些进攻行为中,staging
过程是必要的。许多攻击对于成功利用后可以加载到内存中并执行的数据量都有严格的限制。这极大地限制了你进行后渗透,除非分阶段加载你的后渗透payload
。
Cobalt Strike
在用户驱动的攻击中使用了分阶段技术。大部分项目在Payloads
和Attacks
中。这些地方使用的stager
取决于与攻击配对的payload
。例如,HTTP Beacon
有一个 HTTP stager
。DNS Beacon
有 DNS TXT
记录stager
。并非所有payload
都有stager
选项。没有stager
的payload
无法使用这些攻击选项进行投递。
如果你不需要staging
,可以将其关闭。在 Malleable C2
配置文件中的 host_stage
选项设置为 false
。这将阻止 Cobalt Strike
在其 Web
和 DNS
服务器上payload stage
。这样做对于 OPSEC
有很大的好处。如果开启了staging
,任何人都可以连接到你的服务器、请求一个payload
、并分析它的内容,从而可以从payload
配置中获取信息。
在
Cobalt Strike 4.0
及更高版本中,后渗透和横向移动行动避开了stager
,并尽可能的选择去投递一个完整的payload
。如果你禁用了payload staging
,,那么除非你准备做后渗透那么你应该不会注意到此变动。
# 4.5、DNS Beacon
DNS Beacon
是 Cobalt Strike
最受欢迎的功能。此payload
使用 DNS
请求将Beacon
返回给你。这些 DNS
请求用于解析由你的 Cobalt Strike
团队服务器作为权威 DNS
服务器的域名。 DNS
响应告诉 Beacon
进入睡眠状态或连接到服务器下载任务。 DNS
响应还将告诉 Beacon
如何从团队服务器下载任务。
在 Cobalt Strike 4.0
及更高版本中,DNS Beacon
仅是一个 DNS payload
。该payload
没有 HTTP
通信模式。这是与先前版本的一个变化。
# 4.5.1、数据通道
DNS Beacon
可以通过 DNS TXT
记录、DNS AAAA
记录或 DNS A
记录下载任务。该payload
可以在到达目标时灵活地在这些数据通道之间进行切换。使用Beacon
的模式命令可以改变当前Beacon
的数据通道。
mode dns
是DNS A
记录数据通道。mode dns6
是DNS AAAA
记录通道。mode dns-txt
是DNS TXT
记录数据通道。默认为DNS TXT
记录数据通道。
请注意,DNS Beacon
直到有可用任务时才会 checkin
。使用 checkin
命令要求 DNS Beacon
在下次回连的时候 checkin
。
# 4.5.2、DNS 监听器设置
要创建 DNS Beacon
监听器,请在主菜单中选择Cobalt Strike -> Listeners
,然后点击Listeners
选项卡底部的Add
按钮
然后在New Listener
窗口选择Beacon DNS
作为 payload
类型。
设置监听器的名字。确保给新监听器起一个好记的名字,因为在 Cobalt Strike
的命令和工作流中,这个名字就是你要引用的监听器。
参数
-
DNS Hosts:点击
[+]
来添加一到多个与beacon
通信的域名。你的Cobalt Strike
团队服务器系统必须对你指定的域名具有权威性。创建一个DNS A
记录然后指向你的Cobalt Strike
团队服务器。使用DNS NS
记录来将多个域名或子域名委派到你的Cobalt Strike
团队服务器的 A 记录。Beacon payload
中Beacon
主机列表的长度限制为 255 个字符。这包括为每个主机随机分配的 URI 以及列表中每个项目之间的分隔符。如果超过长度,主机将从列表末尾删除,直到长度合适为止。团队服务器日志中将包含已删除主机的消息。 -
Host Rotation Strategy:主机轮换策略,该值配置
Beacon
行为以供选择,选择以下选项之一:- round-robin:轮询机制,选择按提供的顺序循环连接主机名列表。每个主机用于一个连接。
- random:随机,选择后,每次尝试连接时都会从列表中随机选择一个主机名。
- failover-xx:故障转移,选择尽可能长时间地使用工作主机。使用列表中的每个主机,直到它们达到连续故障转移计数 (x) 或持续时间段 (m,h,d),然后使用下一个主机。
- rotate-xx:轮流,选择在一段时间内使用每台主机。在指定的时间段(m,h,d)内使用列表中的每台主机,然后使用下一台主机。
-
Max Retry Stategy:最大重试策略,此项配置
Beacon
在与团队服务器的连接尝试连续失败后退出的行为。有多个默认选项可供选择,也可以使用LISTENER_MAX_RETRY_STRATEGIES
钩子创建自己的列表。请参考后续章节的LISTENER_MAX_RETRY_STRATEGIES
。-
none:选择此选项可确保
Beacon
不会因连接尝试失败而退出。 -
exit-xxx:这些设置使用
exit-[max_attempts]-[increase_attempts]-[duration][m,h,d]
语法。max_attempt
值是Beacon
退出之前连续尝试失败的次数。increase_attempts
是增加睡眠时间之前连续失败尝试的次数。duration
是设置新睡眠时间的分钟数、小时数或天数。如果当前睡眠时间大于新指定的持续时间值,睡眠时间将不会更新。睡眠时间将受当前抖动值的影响。成功连接后,失败尝试计数将重置为零,睡眠时间也将重置为先前的值。
-
-
DNS Host (Stager):配置
DNS Beacon
的TXT
记录stager
。这个stager
仅被用在要求显式stager
的Cobalt Strike
功能中。你的Cobalt Strike
团队服务器系统也必须对此域名具有权威性。 -
Profile :配置
Malleable C2
策略。 -
DNS Port (Bind):此字段指定
DNS Beacon payload
服务器绑定的端口。如果想要设置端口重定向器(例如接受端口 53 上的连接但将连接路由到另一个端口上的团队服务器的重定向器),则此选项非常有用。 -
DNS Resolver:允许
DNS Beacon
使用特定的DNS
服务器,而不是使用目标服务器的默认DNS
解析服务。指定所需解析服务的IP
地址。DNS Beacon
的stager
不使用此DNS
解析器。 -
Guradrails:
Beacon Guardrials
允许用户创建一种方法来限制Beacon
可以执行的目标。配置后,这些值将成为Stageless
或Windows Stageless payload
生成器的默认guradrails
。按 ... 按钮打开
Guardrails
设置: IP Address:输入特定 IP 地址或网段的通用通配符:
-
123.123.123.123
-
123.123.123.*
-
123.123..
-
123...*
User Name:输入一个特定的名称或一个值:
-
支持结尾通配符“*”
-
支持开头通配符“*”
-
不区分大小写
Server Name:输入特定的计算机名称:支持通配符“*”,不区分大小写
-
Domain:特定的域名,支持通配符“*”,不区分大小写
测试
要测试你的DNS
配置,打开终端并输入 nslookup jibberish.beacon domain
(domain
自行替换为 stager
域名)。如果你得到了一个 0.0.0.0
的 A 记录回复——说明你的 DNS
配置是对的。如果没有得到回复,那说明你的 DNS
配置不对、DNS Beacon
不会与你通信。
备注
- 确保你的
DNS
记录引用了你的网络接口的首选地址(primary address)。Cobalt Strike
的DNS
服务 器会一直从你的网络接口的首选地址发送响应。当DNS
解析器从一台服务器请求信息,但是从另一台服务器接收回复时,DNS
解析器往往会丢弃回复。 - 如果你在
NAT
设备后面,请确保用你的公网IP
地址作为NS
记录,并配置防火墙转发53
端口上的UDP
流量到你的系统。Cobalt Strike
包含一个控制Beacon
的DNS
服务器。 - 要自定义
DNS Beacon
的网络流量指示器,请参阅Malleable C2
中的DNS beacon
。
# 4.6、HTTP Beacon 和HTTPS Beacon
默认设置情况下,HTTP
和 HTTPS Beacon
通过 HTTP GET
请求来下载任务。通过 HTTP POST
请求传回数据。也可以通过Malleable C2
来控制 payload
的行为和流量指标。
# 4.6.1、HTTP(S) 监听器配置
要创建 HTTP
或 HTTPS Beacon
监听器,请在主菜单中选择 Cobalt Strike -> Listerners
,然后点击Listerners
选项卡底部的Add
按钮。
选择Beacon HTTP
或Beacon HTTPS
作为Payload
类型,并为监听器指定名称。
参数
- HTTP(S) Hosts :按 [+] 来为
HTTP Beacon
增加一个或多个回连的主机。按 [-] 移除一个或多个主机,按 [X] 来清除当前的主机列表。如果有多个主机,可以在此对话框中粘贴以逗号分隔的回连主机列表。(主机列表的长度限制为 255 个字符.这包括为每个主机随机分配的 URI 以及列表中每个项目之间的分隔符。) - Host Rotation Strategy :配置轮换策略,与
DNS Beacon
中的配置类似。 - Max Retry Stategy:最大重试策略,同
DNS Beacon
中的配置 - HTTP Host (Stager):控制
HTTP Beacon
的HTTP Stager
的主机。仅当你将此payload
与需要显式stager
的攻击配对时,才使用此值。 - Profile:通过
Profile
字段,可以选择一个C2
拓展文件变体。通过一个C2
文件变体,可以在一个文件中指定多个配置文件的变量。使用变体文件之后,你设置的每个HTTP
或HTTPS
监听器会有不同的网络流量指标。 - HTTP Port (Bind) :指定你的
HTTP Beacon payload web
服务器绑定的端口。如果你要设置端口弯曲重定向器(例如,接受来自80
或443
端口的连接但将连接路由到团队服务器开在另一个端口上的连接,这样的重定向器),那么这些选项会很有用。 - HTTP Host Header:如果指定
HTTP Host Header
值,会影响你的HTTP stagers
,并通过你的HTTP
通信。这个选项使得通过Cobalt Strike
利用域名前置变得更加容易。 - HTTP Proxy:点击旁边的
...
按钮来为此payload
指定一个显式的代理配置。 - Gurardrails:同
DNS Beacon
中的配置
# 4.6.2、手动 HTTP 代理配置
(Manual) Proxy Settings
对话框提供了多个选项来控制 Beacon
的 HTTP
和 HTTPS
请求的代理配置。默认情况下,Beacon
当前的进程/用户上下文使用 Internet Explorer
代理配置。
Proxy Type
指定代理的类型。 Proxy Host
和 Proxy Port
字段告诉 Beacon
使用的代理主机和端口。 Username
和 Password
字段是可选的,这些字段指定了 Beacon
用来对代理进身份验证的凭据。
Ignore proxy settings; use direct connection
:(忽略代理设置;使用直连),如果勾选则配置Beacon
强制使用直连,在不通过代理的情况下尝试发送HTTP
和 HTTPS
请求。
按set
以使用所需的代理设置更新Beacon
对话框。按Reset
将代理配置设置回默认配置。
注意 :手动代理设置仅影响
HTTP
和HTTPS Beacon payload stage
,不影响payload stager
。
# 4.6.3、Redirectors(重定向器)
重定向器是位于目标网络和团队服务器之间的系统。任何去往重定向器的连接将转发到你的团队服务器进行处理。通过重定向器,为你的 Beacon payload
提供多个回连主机。使用重定向器还有助于提升OPSEC
,因为它会使溯源团队服务器的真实地址变得更加困难。
Cobalt Strike
的监听器管理功能支持使用重定向器。只需在设置一个 HTTP
或HTTPS Beacon
监听器的时候指定重定向器 IP
(在 Host
字段填入)。Cobalt Strike
不会验证这个信息。如果你提供的 host
不隶属于当前主机(不是团队服务器的 IP
),那么 Cobalt Strike
就假设它是重定向器。一种把服务器转变为重定向器的简单方法是使用 socat
。
下面是将80
端口上的所有连接转发到位于192.168.12.100
的团队服务器的80
端口是socat
语法:
socat TCP4-LISTEN:80,fork TCP4:192.168.12.100:80
# 4.7、SMB Beacon
SMB Beacon
使用命名管道通过一个父 Beacon
进行通信。这种对等通信对同一台主机上的 Beacon
和跨网络的 Beacon
都有效。Windows
将命名管道通信封装在 SMB
协议中。因此得名 SMB Beacon
。
# 4.7.1、SMB 监听器设置
要配置一个 SMB Beacon payload
,通过 Cobalt Strike --> Listeners
。点击 Add
。选择Beacon SMB
作为payload
选项。
SMB Beacon
与 Cobalt Strike
中派生 payload
的大多数动作兼容。除了一些要求显式 stager
的用户驱动的攻击(例如 Attacks --> Packages
, Attacks --> Web Drive-by
)。
Cobalt Strike
后渗透和横向移动行为派生一个 payload
,会尝试为你承担对 SMB Beacon payload
的控制。如果你手动的运行 SMB Beacon
,你将需要从一个父 Beacon
链接到它。
参数
- Pipename (C2) :设置一个明确的管道名称或使用默认选项。
- Gurardrails:同前
# 4.7.2、链接和取消链接
在Beacon
控制台中,使用link [host] [pipe]
来把当前的 Beacon
链接到一个等待连接的 SMB Beacon
。当当前 Beacon
check in
,它的链接的对等 Beacon
也会 check in
。
check in ,指的是 Beacon 回连主机,回传受害系统的元数据,准备好进行任务数据通讯的状态。
为了与正常流量混合, 链接的Beacon
使用 Windows
命名管道进行通信,此流量封装在 SMB
协议中。此方法有一些注意事项:
1、具有SMB Beacon
的主机必须接受445
端口上的连接。
2、只能链接由同一个 Cobalt Strike
实例管理的Beacon
。
如果在尝试链接 Beacon
后收到error 5
(拒绝访问):窃取域用户的token
或使用 make_token DOMAIN\user password
将当前令牌填充为目标的有效凭据。再次尝试链接Beacon
。
要销毁一个 Beacon
链接,在父会话或子会话中使用 unlink [ip address] [session PID]
。这个[session PID]
参数是要取消链接的Beacon
的进程 ID。当有多个子 Beacon
时,指定这个值来断开特定的 Beacon
链接。
当你对一个 SMB Beacon
取消了链接,它不会离开并消失。相反,它进入一种等待其他Beacon
连接的状态。你可以使用link
命令从将来的另一个 Beacon
恢复对 SMB Beacon
的控制。
# 4.7.3、隐蔽Beacon点对点通信
当多个受害者系统同时回连时,很难保持隐蔽。使用 Beacon
的点对点通信功能可以解决这个问题。该功能可让 Beacon
相互链接。链接的Beacon
通过其父 Beacon
下载任务并发送输出。
使用mode smb
将 Beacon
转换为等待另一个 Beacon
连接的对等体。
使用link [ip address]
将当前 Beacon
链接到正在等待连接的对等方。当当前 Beacon
check in
时,其链接的对等方也会check in
。
一旦 Beacon
成为对等体,就无法再通过 HTTP
或 DNS
发送Beacon
。如果你想杀死 Beacon
对等体,请使用 exit
命令。如果你想让主机通过 HTTP
或 DNS
发送Beacon
,可以让Beacon
对等体为你提供另一个 Beacon
会话。
Beacon Peer as a Payload(作为 Payload 通信)
有些系统无法与互联网通信。在这些情况下,最好有一种方法来提供准备链接的Beacon
,以便可以连接到它。使用[host] -> Login -> psexec
或 [host] -> Login -> psexec (psh)
与Beacon
(连接到目标)监听器一起使用。这将在主机上运行 Beacon
对等点,无需连接到互联网即可进行部署。
你也可以设置一个监听器来发送点对点Beacon
。为 windows/beacon_smb/reverse_tcp
创建一个监听器。该监听器将为你的点对点Beacon
提供stage
。在它启动后,你仍需要从另一个Beacon
链接到它。
如果staging
(分阶段)比较麻烦,你可以使用 Cobalt Strike
将完全staged
的点对点Beacon
导出为可执行文件
、DLL
、PowerShell
脚本或 shellcode
的原始 blob
。点击主菜单上的Payloads -> Windows Stageless Payload
,然后选择 SMB Beacon
。
# 4.8、TCP Beacon
TCP Beacon
使用一个 TCP socket
来通过一个父 Beacon
通信。这种对等通信对同一台主机上的Beacon
和跨网络的 Beacon
都有效。
# 4.8.1、TCP监听器设置
要创建TCP Beacon
监听器,在主菜单选择Cobalt Strike -> Listeners
,然后点击Add
,在New Listener
面板选择Payload
为Beacon TCP
,并设置一个监听器名字。
使用这种方法配置的 TCP Beacon
是一个绑定的 payload
。一个绑定的 payload
会等待来自它的控制器(在此场景中,控制器是另一个 Beacon
会话)的连接。
参数
- Port (C2) :控制
TCP Beacon
将等待连接的端口 - Bind to localhost only:勾选是否让
TCP Beacon
绑定到127.0.0.1
。如果将TCP Beacon
用于仅本地主机的操作,这是一个不错的选择。 - Gurardrails :同
DNS Beacon
与SMB Beacon
类似,TCP Beacon
与 Cobalt Strike
中派生 payload
的大多数动作兼容。除了一些要求显式 stager
的用户驱动的攻击(例如 Attacks --> Packages
, Attacks --> Web Drive-by
)。
Cobalt Strike
后渗透和横向移动行为派生一个 payload
,会尝试为你承担对 TCP Beacon payload
的控制。如果你手动的运行 TCP Beacon
,你将需要从一个父 Beacon
链接到它。
# 4.8.2、链接和取消链接
在 Beacon
控制台,使用 connect [ip address] [port]
来把当前的 Beacon
连接到一个等待连接的 TCP Beacon
。当当前的会话 check in
,它的链接的对等 Beacon
也会 check in
。
要销毁 Beacon
链接,请使用父会话或子会话控制台中的 unlink [ip address] [session PID]
。之后,你可以从同一主机(或不同主机)重新连接 TCP Beacon
。
# 4.9、外置C2
External C2
是一种规范,允许第三方程序充当 Cobalt Strike
的Beacon payload
的通信层。这些第三方程序连接到 Cobalt Strike
读取以其为目标的帧,并从以这种方式控制的paylod
中写入输出帧。这些第三方程序使用External C2
服务器与Cobalt Strike
团队服务器进行交互。
External C2 监听器设置
要创建External C2 Beacon
监听器,请在主菜单上选择 Cobalt Strike -> Listeners
,然后点击Listeners
选项卡底部的Add
按钮。选择External C2
作为payload
。
参数
- Port (Bind):指定外部 C2 服务器等待连接的端口。
- Bind to localhost only:设置外部 C2 服务器链接仅为本地主机
注意:外部External C2 监听器与其他 Cobalt Strike 监听器不同。无法用于Cobalt Strike 的后渗透来发送指令。这个选项只是一个数据接收端口。
规范
外部 C2 接口详见外部 C2 规范。
https://hstechdocs.helpsystems.com/manuals/cobaltstrike/current/userguide/content/externalc2spec.pdf
https://hstechdocs.helpsystems.com/manuals/cobaltstrike/current/userguide/content/extc2example.c
如果你想将本规范中的示例(附录 B)改编为第三方 C2,你需要遵循 3-clause BSD
许可证。
第三方资料
以下是参考、使用或基于 External C2 的第三方项目和文章列表:
- Custom Command and Control (C3) by F-Secure Labs. A framework for rapid prototyping of custom C2 channels.
- external_c2_framework by Jonathan Echavarria. A Python Framework for building External C2 clients and servers.
- ExternalC2 Library by Ryan Hanson .NET library with Web APi, WebSockets, and a direct socket. Includes unit tests and comments.
- Tasking Office 365 for Cobalt Strike C2 by MWR Labs. Discussion and demo of Office 365 C2 for Cobalt Strike.
- Shared File C2 by Outflank BV. POC to use a file/share for command and control.
# 4.10、Foreign Listeners(外部监听器)
Cobalt Strike
支持外部监听器的概念。这些是托管在 Metasploit
框架或其他 Cobalt Strike
实例的 x86 payload handler
的别名。要将一个Windows HTTPS Meterpreter
会话传递到给使用 msfconsole
的朋友那里,只需要建立一个 Foreign HTTPS payload
并将主机和端口的值指向它们的 handler
。你可以在任何你想要使用 x86 Cobalt Strike
监听器的地方使用 foreign listener
(外部监听器)。
# 4.10.1、Foreign Listeners设置
点击主菜单上的Cobalt Strike -> Listeners
,然后点击底部的Add
,在New Listener
面板中选择payload
为Foreign HTTP/Foreign HTTPS
:
参数
- HTTP(S) Host (Stager):此字段指定了外部监听器所在的主机名。
- HTTP(S) Port (Stager):此字段指定服务器上的端口,外部监听器在此端口监听连接。
# 4.11、基础设施整合
Cobalt Strike
的分布式操作模型是为参与的每个阶段建立一个单独的团队服务器。例如,将后渗透基础设施和持久性基础设施分开是有意义的。你不希望如果一个后渗透行为被发现,这个基础设施将被重建。
一些行动阶段要求多个重定向器和通信通道选项。Cobalt Strike 4.x
对此有非常友好的设计。
你可以将多个 HTTP
、HTTPS
和 DNS
监听器绑定到单独Cobalt Strike
团队服务器上。这些payload
的配置还支持端口弯曲。这允许你的重定向器和 C2
设置中使用与你通信通道(80、443 或 53)共同的端口,但最需要将这些监听器绑定到不同的端口,以避免团队服务器系统上的端口冲突。
为了使你的网络流量指标多样化,Cobalt Strike 的 C2 拓展文件可能包含多种变体。变体是一种将当前 为了使你的网络指示器多样化,Cobalt Strike
的 Malleable C2
配置文件可能包含多个变体。变体是一种将当前配置文件的变体添加到一个配置文件中的方法。你可以在定义每个 HTTP
或 HTTPS Beacon
侦听器时指定配置文件变体。
此外,还可以在一个团队服务器上定义多个 TCP
和 SMB Beacom
,每个Beacon
都有不同的管道和端口配置。一旦部署到目标环境中,任一个来自同一团队服务器的出口Beacon
都可以控制任何一个这些 TCP
和 SMB Beacon
的 payload
。