跳到正文
发现
命令行工具开发者工具

Stowaway:多级代理渗透测试工具

用 Go 编写的多级代理工具,帮助渗透测试人员通过多节点树状网络将流量代理进内网。

admin
发布于 2026-10-28
浏览
4
访问
0
下载
0
版本
v2.2
平台
Windows、macOS、Linux
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。

详细介绍

项目简介

Stowaway 是一个用 Go 语言编写的多级代理工具,专为渗透测试工作者制作。使用者可以把外部流量经由多个节点逐级代理进内网,突破内网的访问限制,构造树状节点网络,并对其进行统一管理。

本项目仅供网络安全研究与教学用途,严禁用于任何非法用途。使用前请确认已获得目标系统的明确授权,并遵守所在国家/地区的法律法规。

主要功能

  • 管理端交互友好,支持命令补全与历史记录
  • 一目了然的节点树管理与丰富的节点信息展示
  • 节点间支持正向/反向连接,并支持重连
  • 节点间可通过 socks5/http 代理连接,也可通过 ssh 隧道连接
  • 节点间流量可选择 TCP/HTTP/WS
  • 多级 socks5 流量代理转发,支持 UDP/TCP、IPv4/IPv6
  • 节点支持 ssh 访问远程主机、远程 shell、上传及下载文件
  • 端口本地/远程映射,节点可进行端口复用
  • 各类服务可自由开关,节点间相互认证
  • 节点间流量以 TLS/AES-256-GCM 加密
  • 相比 v1.0 文件体积减小 25%
  • 支持 Linux/Mac/Windows/MIPS/ARM 等平台

安装与使用

编译

使用 make 直接编译多平台完整程序,或参看 Makefile 编译特定程序。不想编译的可以直接使用 release 下编译完成的程序。

角色

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

快速启动

./stowaway_admin -l 9999
./stowaway_agent -c <stowaway_admin's IP>:9999

常用参数

admin:

-l 被动模式下的监听地址[ip]:<port>
-s 节点通信加密密钥,所有节点(admin&&agent)必须一致
-c 主动模式下的目标节点地址
--socks5-proxy socks5代理服务器地址
--socks5-proxyu socks5代理服务器用户名(可选)
--socks5-proxyp socks5代理服务器密码(可选)
--http-proxy http代理服务器地址
--down 下游协议类型,默认为裸TCP流量,可选HTTP/WS
--tls-enable 为节点通信启用TLS,在启用TLS后,AES加密将被禁用
--domain 指定TLS SNI/WebSocket域名,若为空,默认为目标节点地址
--heartbeat 开启心跳包

agent:

-l 被动模式下的监听地址[ip]:<port>
-s 节点通信加密密钥
-c 主动模式下的目标节点地址
--socks5-proxy socks5代理服务器地址
--socks5-proxyu socks5代理服务器用户名(可选)
--socks5-proxyp socks5代理服务器密码(可选)
--http-proxy http代理服务器地址
--reconnect 重连时间间隔
--rehost 端口复用时复用的IP地址
--report 端口复用时复用的端口号
--up 上游协议类型,默认为裸TCP流量,可选HTTP/WS
--down 下游协议类型,默认为裸TCP流量,可选HTTP/WS
--cs 运行平台的shell编码类型,默认为utf-8,可选gbk
--tls-enable 为节点通信启用TLS,在启用TLS后,AES加密将被禁用
--domain 指定TLS SNI/WebSocket域名,若为空,默认为目标节点地址

组成多级网络

多级网络需要借助 admin 中的 listen、connect、sshtunnel 命令实现。例如 agent-1 已连上 admin 后,agent-2 以 ./stowaway_agent -l 10000 -s 123 启动,可在 admin 中输入 use 0 后执行 connect agent-2的IP:10000,使其成为 agent-1 的子节点。若无法直接访问目标节点,可用 listen 让当前节点监听端口等待连接,或用 sshtunnel 通过 ssh 将其加入网络。

admin 控制台命令

主 panel:help、detail、topo、use <id>、exit。使用 use 选中节点后进入 node panel,提供 status、listen、ssh、shell、socks、connect、sshtunnel、upload、download、forward、backward、shutdown 等命令,可用 tab 补全。

端口复用

支持基于 SO_REUSEPORT/SO_REUSEADDR 与基于 IPTABLES 的端口复用。前者需设置 --rehost、--report、-s,主要适用于 windows、mac,linux 亦可但限制较多;后者仅支持 Linux,需 root 权限,并配合 script 目录下的 reuse.py 启停转发规则。

注意事项

  • 所有节点(admin 与 agent)的通信密钥 -s 必须一致。
  • 启用 --tls-enable 后 AES 加密将被禁用,网络中每一个节点(包括 admin)都需启用该参数。
  • 某一节点设置上/下游为 TCP/HTTP/WS 后,与其连接的父/子节点的下/上游协议必须一致,否则网络出错。
  • http 为半双工协议,仅实现了消息格式,无法通过 nginx 转发;如需反代请使用 ws 并搭配 TLS。
  • 使用 IPTABLES 端口复用模式时,agent 会强制监听在 0.0.0.0;若被 kill -9 杀死则无法自动清理规则,需运行 python reuse.py --stop --rhost xxx --rport xxx 关闭转发。
  • 在 Windows 上使用 admin 前请先安装 ansicon。
  • 若 shell 功能出现乱码,可将 agent 的 --cs 设为 gbk。
  • 节点掉线时,与其及子节点相关的所有 socks、backward、forward 服务会被强制停止;主动重连时请连接缺失链的头节点。

本作品整理自 GitHub 开源项目 ph4ntonn/Stowaway,原作者 @ph4ntonn,许可证 MIT。中文介绍由 AI 根据项目 README 整理,以原仓库为准。

更新记录

  1. v2.2当前版本

    修复多项 bug 并新增功能:AES-CBC 改为 AES-GCM,新增 gzip 压缩与 http 代理支持,节点间连接支持 TLS,修复 shell/topo 及短连接关闭时的数据丢失问题。

评论