Vshell是一款功能全面的红队工具,其设计兼顾隐蔽性与灵活性,尤其适合模拟网络攻击和测试防御体系。该工具支持TCP、UDP、KCP、WebSocket、DNS、DOH、DOT等多种协议。内置隧道代理功能,支持正向和反向连接模式,可以适应复杂网络环境。其核心功能包括文件管理、正/反连接上线、插件运行、隧道代理等。多协议的支持及通信加密等功能大大增加了检测难度。
图1:工具原理图
-
运行服务端程序后,默认通过8082端口启动Web管理后台,用户可以通过浏览器访问http://IP:8082进入控制面板,conf/setting.conf配置文件中可修改Web端口及其他核心参数。
-
在web界面中可以开启监听器,监听器支持多种协议其中包括TCP、KCP/UDP、WebSocket、DNS、DOH、DOT和OSS。默认监听端口为8084,可通过Web界面或配置文件修改为非常用端口。
-
运行客户端程序后,受害者会主动连接到监听地址并传输客户端信息,如IP、用户名、主机名系统类型等。
-
默认客户端每10秒发送心跳包,包含客户端ID、系统指纹等。服务端与客户端内置相同VKey,用于双向认证。并配置盐值对流量进行加密。
-
服务端下发命令,客户端接收到后将执行结果加密后返回给服务端。本文使用TCP和WebSocket协议监听器进行分析,通过分析通信流量特征对恶意流量进行检测。
图2:Vshell TCP监听配置
客户端通过TCP协议与监听器建立连接后,首先完成标准三次握手,随后立即发送一个6字节的数据:l64或w64用于标识客户端系统架构是linux64位或者windows64位。紧接着,客户端会发送一个34字节的服务端IP声明包,声明最多15个字节位为IP地址(如:0x3139322E3136382E3139392E313334对应的ip是192.168.199.134),其余字节为保留位。完成基础校验后,客户端加密传输系统信息,包括IP、用户名、主机名、操作系统类型及权限等级。
图3:左tcp协议windows上线流量,右linux上线流量
经过分析Vshell C2工具命令执行的TCP流量有以下几个特征:每个数据包均以4字节长度字段开头(比如“23 00 00 00”则表示后续35字节载荷),载荷内容为加密数据,无明显特征;流量中的短包与长包交替出现,短包用于心跳维持,长包用于指令分发或数据回传,传输内容均为加密数据,无明显的明文特征。
图4:心跳包
图5:流量分析
如果C2工具选择通过WebSocket协议进行通信,攻击流量中会有明文特征:受害者与C2服务器完成TCP三次握手后,立即发起了一个高度可疑的HTTP GET请求,其路径为/?a=l64&h=serverip&t=ws_&p=8088,包含多个动态配置参数:
-
a=l64 指示目标系统架构为Linux64位(l64);
-
h=serverip 显式暴露了C2服务器的IP或域名;
-
t=ws_ 标明通信类型为WebSocket协议;
-
p=8088 标识了服务端配置的自定义监听端口;
图6:WebSocket监听配置
图7:WebSocket协议上线流量
根据流量特征的分析结果,我们采用了特征匹配、行为规则等检测方式,实现了的Vshell C2工具Websocket协议与TCP协议通信的有效检测。
图8:Vshell 检出结果
利用 Vshell C2工具进行C&C通信,攻击者可以将通信内容加密从而规避传统明文流量分析设备的检测,但是加密威胁智能检测系统能够针对性的检测加密通信行为,我们会持续分析研究Vshell多种通信协议,对该工具的各种加密流量检测做到全面覆盖。如今,越来越多的攻击者采用加密通信的C2工具,以提升攻击的隐蔽性。观成科技安全研究团队持续追踪这些C2工具的最新动态,积极研究和更新针对加密流量的检测技术。
原文始发于微信公众号(北京观成科技):【涨知识】加密C2框架Vshell流量分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论