- 文档
- 教程
- 网络安全
【免费下载链接】Viper
Adversary simulation and Red teaming platform with AI
本篇实战指南以 Viper 红队平台为主体,讲解如何利用 Behinder(冰蝎)Webshell 客户端作为「网络桥接通道」,让无法直接访问外网的目标主机成功上线 Viper 的 meterpreter 会话。文章覆盖两条经典路线——Java 版 meterpreter 与功能更完整的原生版 meterpreter,并给出 Viper 监听建立、载荷生成、参数一致性等关键配置说明,读完后你可以将本方案直接复用于内网渗透中的不出网主机上线场景。
适用场景与前置条件
在真实内网渗透中,目标主机经常处于**不出网(无外网访问)**状态:它无法主动连接位于公网 VPS 上的 Viper 服务器,因此常规的reverse_tcp、reverse_https反向连接载荷都无法直接上线。此时,Behinder(冰蝎)这类以「服务端脚本 + 客户端连接」方式工作的 Webshell 管理工具反而成为可利用的通道——Behinder 客户端(运行在攻击者 PC 上)能够主动访问外网,且它与目标主机之间已经建立了 Webshell 连接。
本方案依赖以下前置条件(与仓库中 docs/en/training/Behinder_and_Viper_collaborate.md 的原始描述一致):
- Behinder 已经正常获取到目标主机的 Webshell,并且可以正常执行命令(无论该 Webshell 是 PHP、JSP 还是 ASPX 形态,只要可执行命令即可);
- Viper 部署在一台公网 VPS 上(下文以文档示例中的
116.85.xx.xx指代该 VPS 地址),攻击者 PC 可以访问 Viper 控制台,同时可以运行 Behinder 客户端; - 在 Viper 中预先建立好对应的监听(Listener)。
文档测试环境基于Behinder v3.0 Beta 7版本,下文配置以该版本为参照。整个联动过程的核心思想是:让 Behinder 客户端网络(攻击者 PC)充当端口映射器,把 Viper VPS 的端口「映射」到目标主机本地的回环地址上,从而让目标主机上执行的各种反向载荷以为自己连接的是本地端口,实际却通过 PC 中转抵达 Viper。
方案一:通过反弹 Shell 通道上线 Java 版 Meterpreter
该方案适合快速建立会话,整体链路最短,配置也最简单。
第一步:在 Viper 中建立监听
在 Viper 控制台中进入监听管理,建立对应端口的监听(文档截图中展示了监听列表与新建监听的界面,见 监听建立截图 与 监听配置截图)。
需要注意,此方案最终的目标端口为9090:Viper 监听应建立在 VPS 的 9090 端口上,且监听类型需要能够接受来自 Behinder 反弹 Shell 通道传入的 meterpreter 流量。关于监听与载荷的更多用法,可参考仓库中的 监听载荷指南——其中提到监听支持「生成 PE/ELF」「生成载荷」等快捷操作,且「自动监听」选项可以在生成载荷完成后自动添加对应监听,便于反复生成不同形态的载荷。
第二步:在 Behinder 中切换到「反弹 Shell」
在 Behinder 中切换到反弹 Shell功能,并按照下图进行配置:
配置要点如下:
| 配置项 | 取值 |
|---|---|
| 反弹目标 | Viper VPS 地址116.85.xx.xx |
| 反弹端口 | 9090(与 Viper 监听端口一致) |
| 执行方式 | 通过 Webshell 在目标主机上执行反弹 Shell 命令 |
第三步:执行并获取会话
点击执行后,Behinder 会在目标主机上发起一次指向「116.85.xx.xx:9090」的反弹连接。但由于这个连接实际经过 Behinder 客户端的通道中继,最终落在 Viper 监听上的是一个Java 版本的 meterpreter会话。
上线原理:Behinder 会在目标主机9090 端口建立监听,然后通过 Behinder 客户端网络(即攻击者 PC)将该端口映射到 Viper VPS116.85.xx.xx的 9090 端口。换言之,目标主机发往本机 9090 端口的反弹连接,经过 PC 中继后等价于连接到了 Viper 的 9090 监听端口。
该方案的局限
文档明确提示:Java 版本的 meterpreter 缺失了很多功能。这是因为 Java meterpreter 运行在 JVM 环境中,其底层能力受限于 Java 平台 API,许多原生 meterpreter 的扩展(如进程注入、DLL 注入、系统级 API 调用等)不可用或降级。因此,若需要完整的后渗透能力,应当采用下面的方案二上线原生版本 meterpreter。
方案二:通过内网穿透通道上线原生版 Meterpreter
原生版本 meterpreter 功能更加强大,是正式后渗透阶段的首选。该方案的链路为:Behinder 内网穿透(建立目标主机本地端口与 Behinder 客户端之间的隧道)→ Behinder 客户端将本地端口与 Viper VPS 端口互联 → 目标主机执行 Viper 生成的、连接本地端口的原生载荷。
第一步:在 Behinder 中切换到「内网穿透」
在 Behinder 中切换到内网穿透功能,按照下图配置:
此步骤的实质是在目标主机上开启一个本地监听端口(本方案约定的端口为2222),并让 Behinder 客户端网络把该端口与 Viper VPS 的 2222 端口连通。
第二步:在 Viper 中建立 reverse_tcp_rc4 监听
在 Viper 中建立监听,监听类型选择reverse_tcp_rc4(TCP 反向连接 + RC4 流量加密),监听端口为2222:
关于传输协议,仓库的 传输协议指南 中有两点与本方案直接相关的说明:
- Session 通常只能在初始阶段指定一种传输方式,待 Session 完全加载后才能增加多个传输协议以保证可靠性;
- 传输协议中无法添加 rc4 密码参数,因此不要将 rc4 类的监听添加到传输协议中。这条约束在联动场景中尤其重要:一旦为 Session 配置了传输协议,RC4 加密通道将无法被持久化复用。
第三步:在 Viper 中生成载荷
选择监听,点击生成载荷(生成 PE/ELF 或按需手动配置),配置如下图所示:
这里有三个参数必须严格注意(原文强调「请仔细阅读下方说明」):
| 参数 | 取值规则 |
|---|---|
LHOST | 填写已控主机的内网 IP 地址,或直接填写127.0.0.1 |
LPORT | 必须与Viper 监听端口和Behinder 配置端口保持一致(即2222) |
RC4 密码 | 一定要与Viper 监听配置中的 RC4 密码一致 |
需要理解LHOST填写127.0.0.1的深层原因:载荷在目标主机上执行后,将直接连接目标主机的本地 2222 端口,而该端口已经被 Behinder 内网穿透通道接管。因此载荷不需要知道任何真实的远端地址,只要连接本机回环地址即可,实际流量经由 Behinder 客户端中继到 Viper。这与仓库中 不出网主机利用出网主机上线 一文所述的「反向端口转发 + reverse_tcp_rc4」方案(LHOST 填写出网主机内网 IP、LPORT 填写端口转发的远程监听端口)原理同源,可相互印证。
第四步:上传载荷并执行
将 Viper 生成的载荷(exe文件)通过 Behinder 的文件管理上传到目标主机,然后执行:
执行成功后,目标主机即以原生 meterpreter身份上线到 Viper 的 2222 监听,获得完整的后渗透能力。
上线原理:Behinder 会在目标主机2222 端口建立监听,通过 Behinder 客户端网络(攻击者 PC)将该端口映射到 Viper VPS116.85.xx.xx的 2222 端口;Viper 生成的载荷连接目标主机本地 2222 端口,即等同于连接 VPS116.85.xx.xx的 2222 端口。
两种方案的链路对比与原理总结
| 维度 | 方案一(Java meterpreter) | 方案二(原生 meterpreter) |
|---|---|---|
| Behinder 功能 | 反弹 Shell | 内网穿透 |
| 端口约定 | 9090 | 2222 |
| Viper 载荷形态 | 无需本地生成载荷 | 生成exe载荷并上传执行 |
| LHOST | 不需要 | 已控主机内网 IP 或127.0.0.1 |
| RC4 密码 | 不涉及 | 必须与监听一致 |
| 会话类型 | Java 版 meterpreter | 原生 meterpreter |
| 后渗透能力 | 受限 | 完整 |
两种方案的数据流都可以概括为:
目标主机 (不出网) │ │ ① Webshell 连接(HTTP/HTTPS,仅能到达攻击者 PC 可见网络) ▼ 攻击者 PC(Behinder 客户端) │ │ ② Behinder 客户端网络将目标主机端口映射至 Viper VPS 端口 ▼ Viper VPS 116.85.xx.xx(监听 9090 / 2222) │ ▼ meterpreter 会话上线其中关键的一环是:Behinder 客户端(攻击者 PC)同时具备对目标内网的访问能力(通过 Webshell)和对公网 Viper VPS 的访问能力,因此它天然成为「内网 ↔ 公网」的桥梁,这与 Viper 平台自带的 多级代理/隧道方案 中「以已控主机为跳板构建隧道」的思路互为补充:前者把流量桥接到攻击者本机,后者把流量桥接到已控内网主机。
联动方案的实战要点与排错建议
- 端口三处一致:方案二中
Viper 监听端口、Behinder 内网穿透端口、载荷 LPORT三者必须完全一致(文档示例统一使用2222),任何一处不一致都会导致连接失败; - RC4 密码一致性:
reverse_tcp_rc4监听在建立时设定的 RC4 密码会写入监听配置,生成载荷时必须复用同一密码,否则载荷与监听无法完成握手解密。仓库中的 Reverse_TCP_RC4 直连免杀模块 展示了该监听类型的另一种典型用法——生成免杀 exe 及其 C++ 源码,其中同样强调「新建 reverse_tcp_rc4 监听 → 选择对应的 rc4 监听 → 运行模块」的操作序列,可见 RC4 监听配置在 Viper 生态中是反复复用的核心对象; - LHOST 语义:载荷的
LHOST在联动场景中并不是「真正要连接的远端」,而是「目标主机本地可到达的地址」,因此填127.0.0.1或已控主机内网 IP 均可;若填真实公网 VPS 地址反而会因目标不出网而失败; - 回连地址联动:Viper 的 通用配置 中提供了「回连地址」项,用于监听/载荷/端口转发等功能的自动填充。在联动场景中若频繁更换 VPS 或端口,可以先在通用配置中维护好回连地址,再快速生成监听与载荷,降低手填出错的概率;
- Java 与原生会话的取舍:优先使用原生 meterpreter 会话进行正式的后渗透操作;Java 会话适合快速验证链路连通性或作为临时通道;
- Behinder 版本:文档测试基于 Behinder v3.0 Beta 7,若使用其他版本,反弹 Shell 与内网穿透的界面入口和参数名称可能存在差异,但「本地监听 + 客户端中继 + 远端对接」的原理不变。
延伸阅读
- 不出网主机利用出网主机上线:同主题的另两条路线(内网路由 + bind_tcp、反向端口转发 + reverse_tcp_rc4),可作为无 Behinder 场景下的替代方案;
- 监听载荷指南:虚拟监听、生成 PE/ELF、自动监听等监听进阶用法;
- 传输协议指南:Session 传输协议的管理、切换与休眠,以及 rc4 监听不能加入传输协议的注意事项;
- Reverse_TCP_RC4 直连免杀模块:利用 reverse_tcp_rc4 监听生成免杀载荷的独立用法;
- 多级内网穿透之原生隧道:Viper 平台侧构建多级代理隧道的整体方案,可与本文的 Webshell 桥接通道组合使用。
- 文档
- 教程
- 网络安全
【免费下载链接】Viper
Adversary simulation and Red teaming platform with AI
相关推荐
Decepticon 对手模拟实战:Turla(Venomous Bear / Secret Blizzard)APT 配置文件深度解析
Decepticon 对手模拟实战:Turla(Venomous Bear / Secret Blizzard)APT 配置文件深度解析 本篇技术指南以 Dec
霞鹜文楷|开源楷体中文字体上手指南,一条命令完成安装
霞鹜文楷|开源楷体中文字体上手指南,一条命令完成安装 霞鹜文楷(LXGW WenKai)是一款基于 FONTWORKS 开源字体 Klee One 衍生的开源楷
UI组件Viper 内网 ARP 扫描模块实战:主机存活探测、路由联动与跨网段限制解析
Viper 内网 ARP 扫描模块实战:主机存活探测、路由联动与跨网段限制解析 本文以 Viper 红队平台的 Discovery_NetworkService
文档教程网络安全
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考