Cobalt Strike渗透之HTTPS/SMB/TCP Beacon横向移动实战1(跳板机Windows) - 实践

目录

一、Cobalt Strike原理

1、Conbalt Strike简介

2、Beacon简介

(1)Beacon协议

(2)Beacon类型

(3)Beacon流程

二、CobaltStrike实战

1、服务端

(1)配置权限

(2)启动服务端

2、客户端

三、监听器Https Beacon渗透实战

1、添加监听器

2、配置NAT模式

3、攻击机生成https stageless木马

4、受害靶机运行Https Beacon

5、上线https木马

6、横向渗透


本系列讲解内网渗透中跳板机为Windows系统的情况下,通过CobaltStrike生成的https beacon与跳板机建立连接,再基于跳板机进行横向渗透的过程。

  • 创建监听器 & 生成 HTTPS Beacon

    • 在 C2 服务器(20.1.0.21)上创建 HTTPS 监听器(如 mooyuan_https),并生成 Windows 可执行的 HTTPS Beacon 文件。

  • 控制跳板机

    • 通过漏洞利用或钓鱼攻击,将 HTTPS Beacon 上传至跳板机(10.33.212.200)并执行,使其回连 C2 服务器,建立加密 HTTPS 通信。

  • 准备横向移动

    • 在 C2 服务器上创建 SMB 或 TCP 监听器(如 mooyuan_smb 或 mooyuan_tcp),并生成对应的 Beacon 文件(SMB Beacon 或 TCP Beacon)。

  • 上传并执行 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 攻击者
20.1.0.21(CobaltStrike) participant Jumpbox as 跳板机
10.33.212.200(HTTPS Beacon) participant Internal as 内网主机
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连接
(10.33.212.200↔10.100.10.100) Internal->>Jumpbox: 连接确认 Note over C2: 阶段5:数据通信 C2->>Jumpbox: 发送指令
(20.1.0.21→10.33.212.200 HTTPS) Jumpbox->>Internal: SMB或TCP转发
(10.33.212.200→10.100.10.100) Internal->>Jumpbox: 返回数据 Jumpbox->>C2: 加密回传
(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 StrikeListeners,进入监听器的页面,操作如下所示。

在新弹出的监听器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),效果如下图所示。

posted @ 2026-01-31 09:15  gccbuaa  阅读(9)  评论(0)    收藏  举报