Stowaway-用于戊酯的多跳代理工具

2020-06-16 20:26:34

PermalLink GitHub是5000多万开发人员的家园,他们一起工作,共同托管和审查代码、管理项目和构建软件。

报名。

用户可以很容易地将其网络流量代理到Intranet节点(多层),打破限制并操作您控制的所有节点XD。

PS:感谢大家的明星,我只是个业余爱好者,代码还需要优化,所以如果你发现任何错误或错误,请随时告诉我,PRS和问题都欢迎😘。

本工具仅限于安全研究和教学,因使用本工具而造成的一切法律责任及相关责任由用户承担!作者不承担任何法律责任和相关责任!

检查版本以获取一个。如果您想要未压缩的集合,请选中未压缩,或者您可以选择压缩的集合(更容易将代理上载到目标服务器),请选中压缩。

Startnode和Simple节点可以命名为agent模式,除了有一些细微的不同之外,它们几乎是相同的(您可以在以下内容中看到不同之处)。

含义:-l表示Stowaway正在侦听端口9999并等待传入连接-s表示Stowaway在通信期间使用123作为加密密钥请注意!-s选项的值在启动每个节点时必须相同

含义:-c表示Stowaway的监视器节点的侦听地址-l表示Stowaway正在侦听端口10000并等待传入连接(可选,您也可以通过命令打开侦听端口)-s表示Stowaway在通信过程中使用123aes加密密钥--startnode它表示Stowaway作为起始节点启动(如果该节点是连接到管理员的第一个节点,则必须添加此选项!否则,只需删除此选项)--reconnect它意味着startnode将每隔5秒自动尝试重新连接到管理节点(在本例中)。PS:如果您想启动重新连接功能,请在启动STARTNODE时添加--RECONNECT,在启动其他简单节点时不需要添加此选项。

含义:-r表示要以被动模式启动节点-l表示Stowaway正在侦听端口10000并等待传入连接。

现在,您可以使用ADMIN,键入use 1->;connect127.0.0.1:10001将这个简单的节点添加到网络中。

含义:-l,-s,--startnode与示例1-r相同,表示startnode被动启动。

下次要重新连接到startnode并重建整个网络时,只需启动管理节点,如./stowaway_admin-s 123-c 127.0.0.1:9999,然后整个网络将重建。

现在,Stowaway提供了基于SO_REUSEPORT和SO_REUSEADDR特性和iptable规则的端口重用功能(StartNode和Simple Node都可以使用此功能)。

主要支持WINDOWS、mac操作系统,也可以在linux上使用,但在linux平台上有一定的限制。

含义:-c/-s与我前面提到的一样--runstreuse它表示您要连接的节点处于端口重用模式(如果您要连接的节点正在重用端口,则必须设置此选项)

含义:-s/--startnode如前所述--report表示要重用的端口--rehost表示要监听的IP地址(不要设置0.0.0.0,会使重用功能失效)。

现在,如果有一个后跟startnode的简单节点,并且希望连接到startnode,则命令可以如下所示:./stowaway_agent-s123-c 192.168.0.105:80--runstreuse。

这种重用方法依赖于在流量到达重用端口(--report选项)之前,使用iptables规则将流量重定向到端口(-l选项)。

含义:--startnode/-s与我之前提到的相同--report它表示您要重用的端口-l它表示将接受所有重定向流量的端口(节点将侦听它)。

设置SECRET的值(SECRET的值是启动节点时-s选项的值)。

使用该脚本后,admin可以连接到startnode:./stowaway_admin-c 192.168.0.105:22-s 123--runstreuse。

现在,如果有一个后跟startnode的简单节点,并且希望连接到startnode,则命令可以如下所示:./stowaway_agent-s123-c 192.168.0.105:22--runstreuse。

如果节点被ctrl-c或命令kill终止,它将自动清除iptables规则,但如果它被命令kill-9终止,则它无法执行此操作,这将导致无法访问最初在重用端口上运行的服务,因此,为了避免这种情况,reuse.py提供了可以停止端口重用功能的函数。

如果要停止端口重用,只需运行reuse.py,如下所示:Python reuse.py--stop--rhost 192.168.0.105--rport 22。

然后将关闭重新使用的";端口,并且可以再次访问原来在重新使用的端口上运行的服务。

每个节点(除管理节点外)都可以由多个节点连接以构建网络树。

当一个节点离线时,它将强制与该节点相关的所有SOCKS、反射、转发服务关闭。

如果其中一个分支因网络波动或中间节点断开而断开(例如,admin之后是startnode,并且startnode的分支分为两个分支,一个是startnode->节点2-节点3-节点4,另一个是startnode-节点5-节点6)。

此时,如果用户想要将节点3和节点4重新加入网络,则用户有两个选择。一种是,如果startnode可以直接访问node3,那么用户可以随时在startnode使用connect或sshnel命令重新连接node3(请记住,即使startnode也可以同时访问node4,请不要直接连接到node4,请将整个缺失链(node3->;node4)的头节点node3连接到网络中,这样就可以将node3和node4重新连接到网络中。

另一种选择是,当starnode无法直接访问node3(即必须通过node2)时,请先重启node2并加入网络,然后在node2上使用connect或sshnel命令连接到node3,使node3和node4重新入网(如前所述,即使node2可以直接访问node4,也请不要连接node4,只连接node3)。

现在,使用管理节点并键入";use 1";-&>&34;connect 127.0.0.1:10001";,然后就可以将节点1添加到网络中

一旦设置了节点的便笺,除非节点关闭,否则即使在管理员脱机后重新连接到整个网络,也可以恢复便笺。因此,您不必担心丢失便笺。

它可以将您的流量代理到第二个简单节点,第二个简单节点将像socks5服务器一样执行其工作。

如果您想为socks5服务设置用户名/密码(火狐支持此功能,Chrome不支持此功能),例如,如果您想要将用户名设置为ph4ntom,将密码设置为11235,只需将命令更改为socks7777 ph4ntom 11235(请注意,用户名和密码中都不要使用冒号(:))。

它可以让第二个简单节点作为ssh客户端启动到127.0.0.1:22的ssh连接(ARM和MIPSEL代理不支持此功能)。

现在,如果您想将另一个节点添加到网络中,您可以选择sshnel命令:

我建议在防火墙限制了除SSH之外的所有流量后,使用命令将节点添加到网络中。通常,您只需使用命令即可,它也可以工作(ARM和Mipsel代理不支持此功能)。

如果您要上传/下载任何文件,请使用Upload/Download+(Filepath),然后可以将特定文件上传到选定节点/从选定节点XD下载特定文件(请注意!您一次只能传输一个文件,如果您想传输更多文件,请等待上一个文件传输完成。)。

现在您可以像真正连接到127.0.0.1:22一样连接到127.0.0.1:8888(将本地端口转发到远程端口)

现在,任何连接到127.0.0.1:80的人实际上都将连接到127.0.0.1:22(将远程端口转发到本地端口)。

如果要在节点3上打开新监听器以接受以下节点连接,可以使用";listen";命令。

这个项目编码只是为了好玩,逻辑结构和代码结构不够严格,请不要那么认真。

这个程序编译后会比平时稍微大一点,但实际上通过我的测试,它只比平时多了1MB,在物联网平台上可能会稍微大一点(1MB可能不是什么大不了的事情),所以如果你在物联网平台上使用时有什么问题,尽管告诉我,我会尽我最大的努力减小它的大小。

UPX压缩后的可执行文件看起来比原来的要小很多,确实让偷渡客上传到目标服务器变得很容易,但实际上,虽然它可以让上传东西变得更容易,但它会比原来的稍微占用更多的内存,所以根据你想要使用偷渡者的目标来选择合适的版本(UPX或非UPX)。

如果要从源代码编译此项目,可以运行build_admin.sh/build_agent.sh(请注意!默认编译结果为代理模式,请运行build_agent.sh。但是如果您想编译管理模式,请查看main.go文件并按照说明进行操作,接下来您可以运行build_admin.sh来获取管理模式程序。)