目录
[一、Cobalt Strike原理](#一、Cobalt Strike原理)
[1、Conbalt Strike简介](#1、Conbalt Strike简介)
[三、监听器Https Beacon渗透实战](#三、监听器Https Beacon渗透实战)
[3、攻击机生成https stageless木马](#3、攻击机生成https stageless木马)
[4、受害靶机运行Https Beacon](#4、受害靶机运行Https Beacon)
本系列讲解内网渗透中跳板机为Windows系统的情况下,通过CobaltStrike生成的https beacon与跳板机建立连接,再基于跳板机进行横向渗透的过程。
-
创建监听器 & 生成 HTTPS Beacon
- 在 C2 服务器(20.1.0.21)上创建 HTTPS 监听器(如
mooyuan_https),并生成 Windows 可执行的 HTTPS Beacon 文件。
- 在 C2 服务器(20.1.0.21)上创建 HTTPS 监听器(如
-
控制跳板机
- 通过漏洞利用或钓鱼攻击,将 HTTPS Beacon 上传至跳板机(10.33.212.200)并执行,使其回连 C2 服务器,建立加密 HTTPS 通信。
-
准备横向移动
- 在 C2 服务器上创建 SMB 或 TCP 监听器(如
mooyuan_smb或mooyuan_tcp),并生成对应的 Beacon 文件(SMB Beacon 或 TCP Beacon)。
- 在 C2 服务器上创建 SMB 或 TCP 监听器(如
-
上传并执行 SMB/TCP Beacon 到内网主机
- 通过已控制的跳板机(10.33.212.200)将 SMB/TCP Beacon 上传至内网目标主机(10.100.10.100),并执行该 Beacon。
-
建立 SMB/TCP 通道
-
在跳板机的 HTTPS Beacon 会话中执行
spawn命令(如spawn mooyuan_smb或spawn mooyuan_tcp),使跳板机在内存中注入 SMB/TCP Beacon 的 Shellcode,并连接目标内网主机(10.100.10.100)。 -
内网主机通过 SMB 管道或 TCP 连接回连跳板机,形成隐蔽通信通道。
-
-
数据通信与控制
-
攻击机(C2)→ 跳板机 :通过 HTTPS 加密发送控制指令(如
shell whoami)。 -
跳板机 → 内网主机:通过 SMB 管道或 TCP 连接转发指令。
-
内网主机 → 跳板机:返回执行结果。
-
跳板机 → 攻击机(C2):将数据加密后通过 HTTPS 回传。
-
整体流程图如下所示。本篇主要讲解CS原理以及使用CobaltStrike生成https beacon木马的上线过程,即攻击机与跳板机建立会话连接的流程(如下整体流程的前两个流程)

sequenceDiagram
participant C2 as 攻击者<br>20.1.0.21(CobaltStrike)
participant Jumpbox as 跳板机<br>10.33.212.200(HTTPS Beacon)
participant Internal as 内网主机<br>10.100.10.100(SMB Beacon)
Note over C2: 阶段1:控制跳板机
C2->>Jumpbox: 创建HTTP监听并生成HTTPS Beacon,上传Beacon到跳板机10.33.212.200中运行
Jumpbox->>C2: Beacon上线(20.1.0.21←HTTPS→10.33.212.200)
Note over C2: 阶段2:准备横向移动
C2->>C2: 创建SMB或TCP 监听以及对应的Beacon文件
Note over Jumpbox: 阶段3:部署执行
Jumpbox->>Internal: 通过跳板机上传SMB或TCP Beacon到10.100.10.100,并在目标内网执行,开启监听
Note over C2: 阶段4:建立SMB或TCP通道
C2->>Jumpbox: 跳板机内存中注入SMB或TCP Beacon的shell,连接目标内网主机10.100.10.100
Jumpbox->>Internal: 建立SMB或TCP连接<br>(10.33.212.200↔10.100.10.100)
Internal->>Jumpbox: 连接确认
Note over C2: 阶段5:数据通信
C2->>Jumpbox: 发送指令<br>(20.1.0.21→10.33.212.200 HTTPS)
Jumpbox->>Internal: SMB或TCP转发<br>(10.33.212.200→10.100.10.100)
Internal->>Jumpbox: 返回数据
Jumpbox->>C2: 加密回传<br>(10.33.212.200→20.1.0.21 HTTPS)
一、Cobalt Strike原理
1、Conbalt Strike简介
Cobalt Strike(简称 CS)是一款由美国安全公司 Rapid7(原由 Strategic Cyber LLC 开发)推出的商业化渗透测试工具,以强大的内网渗透、社会工程学攻击和团队协作功能著称,广泛应用于红队演练、渗透测试和网络安全评估场景。Cobalt Strike的核心架构如下所示。
-
C2 服务器:由渗透测试人员部署,负责接收 Beacon 的连接、下发命令,通常运行在公网或目标内网可访问的服务器;
-
客户端(Cobalt Strike Client):图形化操作界面,攻击者通过客户端连接 C2 服务器,管理 Beacon 会话和执行攻击命令。
-
Beacon 后门:植入目标主机的恶意程序,通过 C2 服务器与攻击者通信;
2、Beacon简介
Beacon 是 Cobalt Strike Strike 中最核心的组件之一,本质上是一种植入目标主机的恶意后门程序,负责与攻击者控制的 C2(Command & Control,命令与控制)服务器通信,并执行攻击者下发的指令。它是攻击者实现对目标主机持久化控制、内网横向移动的关键工具,具有隐蔽性强、功能灵活等特点。
(1)Beacon协议
Cobalt Strike 中 Beacon 支持的主要通信协议及其特点如下表所示。
| 协议类型 | 核心特点 | 适用场景 | 优势 | 局限性 |
|---|---|---|---|---|
| HTTP | 基于 HTTP 协议通信,使用 GET/POST 方法传输数据,可伪装成正常网页请求 | 目标网络允许 HTTP 出站流量(80 端口),需绕过简单的网络过滤 | 兼容性强,常见网络环境均支持 | 流量特征较明显,易被 HTTP 层检测设备识别 |
| HTTPS | 基于 HTTPS 协议(TLS 加密)通信,数据传输经过加密,伪装成加密的 Web 通信 | 目标网络允许 HTTPS 出站流量(443 端口),需规避深度包检测(DPI) | 加密传输,难以被中间人解密,隐蔽性优于 HTTP | 需配置 SSL 证书,部分环境可能对 HTTPS 流量严格审查 |
| DNS | 利用 DNS 协议的查询 / 响应过程传递数据(如 TXT 记录、A 记录) | 目标网络仅允许 DNS 流量出站(53 端口),其他协议被封锁(如 HTTP/HTTPS 受限) | 绕过端口限制,适合严格管控的网络环境 | 数据传输效率低,每次传输的数据量有限 |
| SMB | 基于 Windows SMB 协议(445 端口),通过命名管道(Named Pipe)进行进程间通信 | 内网横向移动时,已控制主机与目标主机间的通信(无需通过公网 C2 服务器) | 隐蔽性强,利用系统原生协议,不易触发异常告警 | 仅限 Windows 系统,且需在同一内网网段 |
| TCP | 基于原始 TCP 协议建立持久连接,直接通过端口传输数据 | 简单网络环境,无复杂协议过滤,需要稳定的长连接 | 通信效率高,配置简单 | 易被防火墙检测到异常 TCP 连接,隐蔽性较差 |
(2)Beacon类型
根据功能和使用场景,Beacon 主要被分为stager(分阶段)和stageless(不分阶段)类型。在实际红队工作中,很多时候不能在目标上执行过大的代码和文件,因此出现了,用一个小一点的代码去拉取更大的功能代码的情况。我们把这个一段一段的拉去代码执行的过程叫分阶段执行,因此出现了Stage(分阶段)和Stageless(不分阶段)这两个词。
-
**Staged Beacon(分阶段载荷):**体积较小,先在目标主机上运行一个 "引导程序",再从 C2 服务器下载完整的 Beacon payload 并执行。适合通过漏洞利用(如缓冲区溢出)等对载荷大小有限制的场景。
-
**Stageless Beacon(无阶段载荷):**包含完整功能的独立程序,无需额外下载组件,可直接运行。体积较大,但稳定性更高,适合通过钓鱼邮件附件、恶意软件等方式投递。
-
**Named Pipe Beacon(命名管道 Beacon):**基于 Windows 命名管道(Named Pipe)通信,主要用于内网横向移动时的主机间通信(如通过 SMB 协议在已控制主机与目标主机间建立隐蔽通道)。
(3)Beacon流程
-
**生成 Beacon 载荷:**在 Cobalt Strike 客户端中,通过 "Payload Generator" 生成适合目标环境的 Beacon 载荷(如 EXE、DLL、PowerShell 脚本等)。
-
**投递与执行:**通过钓鱼攻击(如诱骗用户打开带恶意宏的文档)、漏洞利用(如永恒之蓝)等方式,将 Beacon 载荷植入目标主机并执行。
-
**建立会话:**Beacon 执行后,主动连接 C2 服务器,Cobalt Strike 客户端会显示新的 "Beacon 会话"。
-
远程操控: 攻击者通过客户端向 Beacon 下发命令(如
shell ipconfig查看网络配置、getsystem提权、portscan扫描内网),实现对目标主机的控制和内网渗透。
二、CobaltStrike实战
1、服务端
(1)配置权限
在CobaltStrike执行服务端程序之前一定记得给执行权限 否则无法执行,具体命令如下所示。
chmod +x teamserver
chmod +x TeamServerImage
(2)启动服务端
服务端的命令如下:./teamserver `本地kali虚拟机`的ip 密码
./teamserver 192.168.59.128 123456
启动成功后 会显示Linstener:forward started!,效果如下所示。

2、客户端
客户端启动成功后 会显示一个登录界面 在密码处写入刚才设置的密码 点击connect连接即可,其中主机ip地址填写服务端的ip地址,端口填写默认的50050,效果如下图所示。

登陆成功后,进入到如下页面,效果如下图所示。

三、监听器Https Beacon渗透实战
1、添加监听器
通过 Cobalt Strike → Listeners,进入监听器的页面,操作如下所示。

在新弹出的监听器listener页面中,点击下图红框中的添加部分,效果如下图所示。

配置监听器,payload选择BeaconHttps,地址填写攻击主机的IP地址,如下所示。

- name: 为监听器名字,配置为mooyuan_https
- HTTP Hosts: 进行回连的主机(shell反弹的主机),也就是我们kali的ip(如果是阿里云,则填阿里云主机的公网ip),可以设置多个,我这里使用的是公网ip地址20.1.0.21
- HTTP Hosts(Stager): Stager的马请求下载payload的地址(一般也是和上面的ip填一样)
- HTTP Port(C2): payload回连的端口,这里选择使用10086
配置成功后效果如下所示。

2、配置NAT模式
将端口7777映射到NAT中。
由于我的环境中Kali攻击机装在vmware中,而Kali攻击机使用NAT方式配置,故而需要对Kali进行NAT配置,确保攻击机反向代理可以连接成功(对于直接只用kali作为攻击机的环境可忽略此步骤)。
点击vmware-编辑-虚拟网络编辑器,在弹出的对话框中选中vmnet8模式(如下图1),点击NAT设置(如下图2),在弹出NAT配置对话框中点击添加(如下图3),具体如下图所示。

使用ifconfig查看Kali攻击机的ip地址,本机为192.168.59.128,如下所示。

点击添加后,端口映射主机与虚拟机的端口均配置为10086,其中虚拟机的ip地址配置为kali的ip地址192.168.59.128,配置方法如下所示。

点击确认配置完毕后如下图红框所示,按照顺序点击确定即可配置成功。

3、攻击机生成https stageless木马
点击有效载荷-windows可执行程序(stageless),效果如下图红框所示。

在弹出的生成框中点击下图红框中的选项部分,在选择payload的listener中选择mooyuan_https的监听器,点击选择,效果如下图所示。

配置完毕后点击下图红框中的"生成"按钮,将生成的windows可执行程序重命名为https.exe。

生成成功后效果如下图所示,提示已经成功保存https.exe。

4、受害靶机运行Https Beacon
使用远程桌面连接靶机10.33.212.200,将木马上传到靶机中。双击https启动木马程序,如下图所示。

5、上线https木马
受害靶机运行Https Beacon后,查看cs状态,如下所示成功上线。

6、横向渗透
点击https会话,右键-凭证提取-抓取哈希(hash),效果如下图所示。
