Stowaway工具介绍
Stowaway是一款基于Go语言开发的多级代理工具,主要用于渗透测试中突破内网访问限制。该工具在GitHub上进行开源托管,当前版本支持多种连接模式和丰富的功能模块。且可以通过多级代理模式,可以实现复杂的内网穿透和流量转发。
|-----------------------------------------------------------------------------------------------------------------------------------------------------------|
| Stowaway工具角色: 1、Admin(服务端):服务端由渗透测试者使用。 2、Agent(客户端):客户端部署在目标机器上。 Stowaway连接模式: 1、正向连接 2、反向连接 3、SSH隧道 4、端口复用 Stowaway协议支持: 1、TCP 2、HTTP 3、WebSocket 4、TLS |
Stowaway协议分析
消息结构
所有消息遵循统一的头部结构:
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 字段 偏移 长度 说明 ---------------------------------------- Sender 0 10字节 发送方UUID Accepter 10 10字节 接收方UUID MessageType 20 2字节 消息类型(大端序) RouteLen 22 4字节 路由长度(大端序) Route 26 变长 路由信息 DataLen 变长 8字节 数据长度(大端序) |

图 1消息结构头
最小Header长度为36字节(10+10+2+4+0+8)。所有数值字段使用大端序。
Data部分经过Gzip压缩和AES-256-GCM加密,加密后的密文长度为原文长度+28字节(12字节Nonce+16字节Tag)。
关键常量定义
协议中定义了几个关键常量:

图 2 硬编码常量

图 3相关流量
这些固定字符串在握手过程中出现,是重要的流量特征。
消息类型枚举
协议定义了67种消息类型,主要包括:
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 0 - HI握手消息 1 - UUID分配 6 - Shell请求 7 - Shell响应 8 - Shell命令下发 9 - Shell命令回显 26 - SOCKS启动 27 - SOCKS传输TCP数据 28 - SOCKS传输UDP数据 31 - SOCKS传输TCP数据结束 33 - 端口转发测试 36 - 数据转发 66 - 心跳 |

图 4 shell模块流量

图 5 socks模块流量
连接建立流程
Stowaway代理工具支持多种协议通信,但通信过程中各协议载荷部分均遵循相同的数据结构。下面将以TCP流量为例进行分析。
预认证阶段
连接建立后首先进行预认证,用于验证双方的通信密钥是否一致。
Agent主动发送16字节AuthToken,Admin收到后回显相同的16字节。AuthToken的生成方式为MD5(secret)[:16]。

图 6 预连接随机Token
该步骤在连接建立后1秒内完成,是Stowaway连接的标志性特征。

图 7预连接流量
握手阶段
预认证通过后进入握手阶段:
|-------------------------------------------------------------------------------------------------------|
| Agent → Admin: HI消息(包含UUID、Greeting等) Admin → Agent: HI响应 Admin → Agent: UUID分配消息 Agent → Admin: 连接确认 |
HI消息包含以下结构:

图 8 消息结构

图 9 相关流量
UUID分配
Admin为Agent分配唯一的10字节UUID,用于后续通信和节点管理。UUID从32字节的V4 UUID中提取,获取位置为第12-21位,格式为[0-9a-f]{10}。

图 10 随机生成客户端UUID
连接建立特征
在建立连接时,客户端与服务端经过6个报文交互完成握手
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Agent → Admin: 16字节AuthToken Admin → Agent: 16字节AuthToken回显 Agent → Admin: HI消息(消息类型0) Admin → Agent: HI响应(消息类型0) Admin → Agent: UUID分配(消息类型1) Agent → Admin: MYINFO消息(消息类型4) |

图 11 完整握手流量
心跳特征
Stowaway使用单向心跳机制保活,默认不启用心跳功能。启用时间隔固定为10秒。

图 12 工具心跳代码

图 13 心跳流量
HTTP模式额外特征
在使用HTTP协议通信时,请求报文的URL会从列表中随机选择,列表中的数据存在三处可变值。

图 14 硬编码的URL列表
HTTP请求头为在工具代码中固定编码

图 15 硬编码的HTTP请求头

图 16 HTTP协议流量
WebSocket模式额外特征
在使用WebSocket协议通信时,URL在工具中为硬编码数据

图 17 硬编码的URL路径
WebSocket的GUID在工具中为硬编码数据

图 18 硬编码的GUID
WebSocket的请求头在工具中为硬编码数据

图 19 硬编码的WS请求头

图 20 WebSocket协议流量
产品检测
观成瞰云(ENS)-加密威胁智能检测系统能够对Stowaway代理工具产生的流量进行检测。

图 21 告警检出
总结
Stowaway作为一款功能强大的多级代理工具,在渗透测试场景中被广泛使用。通过对工具进行代码审计,观成安全研究团队针对该黑客工具提取了行为模式、特征字符、消息格式等多个维度的流量特征。在现网环境下通过结合多个维度的特征进行综合判断,使得相关告警检出准确度高,误报率小,且能很好的覆盖针对该工具的魔改情况。
当前网络环境下,攻击者不仅使用成熟的商业化工具,也会寻求新的、使用较少的工具来绕过防护策略。观成科技安全研究团队始终保持研究热忱,第一时间追踪解析新兴工具技术。对新威胁流量保持高效的追踪与深度解析,持续巩固网络安全领域的前沿优势。