目录
[二、SMB Beacon原理](#二、SMB Beacon原理)
[三、SMB Beacon渗透实战](#三、SMB Beacon渗透实战)
[2、生成SMB Beacon木马](#2、生成SMB Beacon木马)
[(1)命令法spawn mooyuan_smb](#(1)命令法spawn mooyuan_smb)
[4、跳板机会话执行shell ping 10.100.10.100](#4、跳板机会话执行shell ping 10.100.10.100)
本文使用CobaltStrike生成SMB Beacon木马进行实战渗透,基于上一小节的Https Beacon进行渗透,拓扑如下所示。
-
生成HTTPS Beacon:在Cobalt Strike创建HTTPS监听器,生成Windows可执行Beacon。
-
上传到跳板机:攻击机将HTTPS Beacon上传至Windows跳板机并执行,此时CS可以查看到HTTPS Beacon上线成功,控制了跳板机
-
生成SMB Beacon:在Cobalt Strike创建SMB监听器,生成SMB Beacon。
-
横向部署SMB Beacon:通过跳板机将SMB Beacon上传至内网目标主机并运行。
-
建立隐蔽通信:攻击机在mooyuan_https会话中通过spawn mooyuan_smb创建SMB会话,并使用link 目标内网ip建立SMB通道,内网主机通过SMB管道连接跳板机,跳板机转发流量至内网目标主机,从而实现内网横向移动。

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: 上传HTTPS Beacon到10.33.212.200
Jumpbox->>C2: Beacon上线(20.1.0.21←HTTPS→10.33.212.200)
Note over C2: 阶段2:准备横向移动
C2->>C2: 生成SMB Beacon
Note over Jumpbox: 阶段3:部署执行
Jumpbox->>Internal: 通过跳板机上传SMB Beacon到10.100.10.100,并在目标内网执行
Note over C2: 阶段4:建立SMB通道
C2->>Jumpbox: spawn mooyuan_smb<br>link 10.100.10.100
Jumpbox->>Internal: 建立SMB管道连接<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管道转发<br>(10.33.212.200→10.100.10.100)
Internal->>Jumpbox: 返回数据
Jumpbox->>C2: 加密回传<br>(10.33.212.200→20.1.0.21 HTTPS)
一、CobaltStrike原理
Cobalt Strike(简称 CS)是一款基于红队演练和渗透测试的集成化攻击平台,其核心原理是通过 "攻击载荷投递→命令 C2 通信→内网渗透拓展" 的流程,模拟高级持续性威胁(APT)攻击,实现对目标网络的控制权获取与维持。Cobalt Strike 采用客户端 - 服务端(C/S)架构,包含三个核心组件:
-
客户端(Cobalt Strike Client)
- 攻击者操作的图形化界面(Windows/macOS/Linux 兼容),用于配置攻击参数、管理会话、下发命令。
- 支持多用户协作,多人可同时连接同一 C2 服务器,共享攻击数据和会话。
-
C2 服务器(Command & Control Server)
- 部署在攻击者控制的服务器(通常为公网 IP),作为攻击者与目标主机间的 "中转站"。
- 负责接收目标主机中 Beacon 的请求、转发攻击者指令、存储攻击数据(如会话信息、凭证)。
- 可配置多种通信协议(HTTP/HTTPS/DNS/SMB 等),适配不同网络环境。
-
Beacon 后门
- 植入目标主机的恶意程序,是 CS 实现远程控制的核心载体。
- 按预设规则与 C2 服务器通信(如定期 "心跳" 请求指令),执行命令并回传结果。
- 支持多种类型(如 HTTP Beacon、SMB Beacon 等),适配不同渗透场景。
二、SMB Beacon原理
SMB Beacon 是 Cobalt Strike 中一种隐蔽的内网横向移动技术,利用 Windows 的命名管道(Named Pipe)进行通信,不直接监听端口,规避传统防火墙检测。
1、原理分析
-
基于 SMB 协议的进程间通信
SMB 是 Windows 内网的基础协议(默认使用 445 端口),主要用于文件共享、打印机共享和远程管理。SMB Beacon 利用这一协议的特性,将攻击指令和数据伪装成正常的 SMB 通信流量,避免被安全设备识别。
-
命名管道(Named Pipe)的通道作用
命名管道是 Windows 中进程间通信(IPC)的一种机制,类似 "隐藏的管道",允许同一台主机或不同主机上的进程通过管道传递数据。
- SMB Beacon 在目标主机上创建一个自定义命名管道(如
\.\pipe\msagent_XXXX,名称由预先配置的监听器定义)。 - 已控制的跳板机通过 SMB 协议连接到该命名管道,形成 "跳板机 → 目标主机" 的直接通信链路。
- SMB Beacon 在目标主机上创建一个自定义命名管道(如
-
无公网依赖的内网闭环通信
与依赖公网 C2 服务器的 HTTP/HTTPS Beacon 不同,SMB Beacon 的通信完全在内网两台主机(跳板机与目标主机)之间进行:
- 目标主机的 Beacon 无需连接公网,仅通过命名管道等待跳板机的指令。
- 跳板机作为 "中间人",将攻击者的命令通过 SMB 协议传递给目标主机,再将结果回传,实现内网横向控制的 "闭环"。
2、渗透流程
当攻击者已控制一台内网主机(跳板机),需渗透同网段其他主机(目标主机)时,SMB Beacon 可通过以下流程工作:
- 跳板机通过 SMB 协议连接目标主机的 445 端口。
- 将SMB Beacon传到目标主机上并执行,创建预设命名管道。
- 跳板机通过命名管道向目标主机发送指令,实现远程控制(如执行命令、窃取数据)。
三、SMB Beacon渗透实战
1、添加SMB监听器
在 Cobalt Strike 客户端顶部菜单中,依次点击 Cobalt Strike → Listeners,打开监听器配置面板。在监听器面板中点击 Add 按钮(或右键空白处选择 New Listener), 弹出监听器配置窗口。选择 Beacon SMB 作为payload 选项,名字这里起为"mooyuan_smb",配置完毕后点击保存,效果如下图所示。

在配置窗口中设置以下关键参数:
- Name(必填):自定义监听器名称(mooyuan_smb,用于后续调用)。
- Payload(必填):从下拉菜单中选择Beacon_SMB 。
- Pipe Name(必填):指定命名管道名称(这里使用默认即可)。

2、生成SMB Beacon木马
(1)打开 Payload 生成界面
在 Cobalt Strike 客户端顶部菜单依次点击 Attacks → Packages → Windows Executable(stageless),如下图所示。

(2)选择 SMB 监听器
在弹出的窗口中,按以下参数配置,Listener 从下拉菜单中选择已创建的mooyuan_smb监听器,如下图所示。
(3)生成并保存木马
点击 Generate,选择保存路径,本文将其命名为smb.exe,配置过程如下图所示。

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

3、跳板机创建beacon会话
(1)命令法spawn mooyuan_smb
在跳板机(192.168.1.10)的 Beacon 控制台中执行命令。这里选择上一步https木马交互窗口输入命令spawn mooyuan_smb,其中mooyuan_smb指代的是创建的SMB Beacon的监听器名称,效果如下所示。

spawn 命令的本质是 "从现有 Beacon 会话中创建子会话",mooyuan_smb 是提前配置的 SMB 监听器名称。
(2)图形化法创建会话
也可以直接右击session,在Spawn选项中选择刚添加的SMB Beacon。


4、跳板机会话执行shell ping 10.100.10.100
执行shell ping 10.100.10.100,如下所示ping通成功,从而实现通过跳板机访问到内网主机10.100.10.100。

5、上传木马到目标机
(1)先将木马传到跳板机
使用远程桌面连接跳板机10.33.212.200,将木马上传到靶机中,如下图所示。


通过python开启web服务,使目标机可以通过跳板机下载木马。

(2)从跳板机下载木马到目标机
在目标机10.100.10.100中通过web端访问跳板机192.168.26.200,下载smb.exe,如下图所示。


(3)目标机运行smb.exe
在目标机中双击SMB.exe,效果如下所示。

6、上线SMB木马
在攻击机的cs shell中输入link命令(link 10.100.10.100)上线smb马,如下所示内网10.100.10.100成功上线。

7、横向移动
在新上线的SMB.exe会话中右键-会话交互,输入shell ipconfig,如下所示成功获取到目标靶机的ip地址10.100.10.100。
