观成科技:Stowaway代理工具解析
Stowaway是一款基于Go语言开发的开源多级代理工具,主要用于渗透测试中的内网穿透。该工具采用客户端/服务器架构,支持TCP、HTTP、WebSocket等多种协议,提供正向/反向连接、SSH隧道、端口复用等功能。其通信协议采用固定头部结构(36字节),数据经过Gzip压缩和AES-256-GCM加密。特征包括:16字节预认证Token、6个交互报文的握手流程、10秒间隔心跳机制,以及HTTP
Stowaway工具介绍
Stowaway是一款基于Go语言开发的多级代理工具,主要用于渗透测试中突破内网访问限制。该工具在GitHub上进行开源托管,当前版本支持多种连接模式和丰富的功能模块。且可以通过多级代理模式,可以实现复杂的内网穿透和流量转发。
|
Stowaway工具角色: |
Stowaway协议分析
消息结构
所有消息遵循统一的头部结构:
|
字段 偏移 长度 说明 |

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

图 2 硬编码常量

图 3相关流量
这些固定字符串在握手过程中出现,是重要的流量特征。
消息类型枚举
协议定义了67种消息类型,主要包括:
|
0 - HI握手消息 |

图 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等) |
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 |

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