观成科技:加密C2框架Vshell流量分析

一、工具介绍

Vshell是一款功能全面的红队工具,其设计兼顾隐蔽性与灵活性,尤其适合模拟网络攻击和测试防御体系。该工具支持TCP、UDP、KCP、WebSocket、DNS、DOH、DOT等多种协议。内置隧道代理功能,支持正向和反向连接模式,可以适应复杂网络环境。其核心功能包括文件管理、正/反连接上线、插件运行、隧道代理等。多协议的支持及通信加密等功能大大增加了检测难度。

二、通信流程分析

图1 工具原理图

  1. 运行服务端程序后,默认通过8082端口启动Web管理后台,用户可以通过浏览器访问http://IP:8082进入控制面板,conf/setting.conf配置文件中可修改Web端口及其他核心参数。
  2. 在web界面中可以开启监听器,监听器支持多种协议其中包括TCP、KCP/UDP、WebSocket、DNS、DOH、DOT和OSS。默认监听端口为8084,可通过Web界面或配置文件修改为非常用端口。
  3. 运行客户端程序后,受害者会主动连接到监听地址并传输客户端信息,如IP、用户名、主机名系统类型等。
  4. 默认客户端每10秒发送心跳包,包含客户端ID、系统指纹等。服务端与客户端内置相同VKey,用于双向认证。并配置盐值对流量进行加密。
  5. 服务端下发命令,客户端接收到后将执行结果加密后返回给服务端。本文使用TCP和WebSocket协议监听器进行分析,通过分析通信流量特征对恶意流量进行检测。
  • Vshell TCP协议流量分析

图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 流量分析

  • Vshell WebSocket协议流量分析

如果C2工具选择通过WebSocket协议进行通信,攻击流量中会有明文特征:受害者与C2服务器完成TCP三次握手后,立即发起了一个高度可疑的HTTP GET请求,其路径为/?a=l64&h=serverip&t=ws_&p=8088,包含多个动态配置参数:

  1. a=l64 指示目标系统架构为Linux 64位(l64);
  2. h=serverip 显式暴露了C2服务器的IP或域名;
  3. t=ws_ 标明通信类型为WebSocket协议;
  4. p=8088 标识了服务端配置的自定义监听端口;

图6 WebSocket监听配置

图7 WebSocket协议上线流量

三、工具检测

根据流量特征的分析结果,我们采用了特征匹配、行为规则等检测方式,实现了的Vshell C2工具Websocket协议与TCP协议通信的有效检测。

图8 Vshell 检出结果

四、总结

利用 Vshell C2工具进行 C&C通信,攻击者可以将通信内容加密从而规避传统明文流量分析设备的检测,但是加密威胁智能检测系统能够针对性的检测加密通信行为,我们会持续分析研究Vshell多种通信协议,对该工具的各种加密流量检测做到全面覆盖。如今,越来越多的攻击者采用加密通信的 C2工具,以提升攻击的隐蔽性。观成科技安全研究团队持续追踪这些 C2工具的最新动态,积极研究和更新针对加密流量的检测技术。

相关推荐
飞猫的边缘AI13 小时前
SoC和SoC FPGA的野心与市场渗透
人工智能·科技·soc芯片·边缘ai
爱和冰阔落13 小时前
【Linux网络】TCP 半包粘包怎么解决?从长度报头、JSON 拆包到网络计算器完整实战
linux·运维·网络·tcp/ip
say_fall15 小时前
【Linux网络编程】UDP套接字编程:系统编程组件、基础回显服务、InetAddr与地址转换、翻译服务与线程池聊天室
linux·服务器·网络·udp·vr
我不会插花弄玉1 天前
6.传输层协议UDP【由浅入深-网络】
网络·网络协议·udp
火云代理1 天前
更换网络后为什么会退出登录?分清 IP、Cookie 与会话的关系
服务器·网络·网络协议·tcp/ip·php·ip
xbzb1 天前
容器 IP 每次重建都变?docker network 五种模式与自定义网桥固定地址
网络·docker·容器·ip·network·固定
火云代理1 天前
同一个网站,有的网络能打开、有的打不开?认识 IPv4 与 IPv6 的访问差异
服务器·网络·网络协议·tcp/ip·测试工具·php·状态模式
坤坤子吖1 天前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
火云代理1 天前
Python 使用代理 IP 前,先弄清 Requests 的配置来源与验证方法
网络·python·网络协议·tcp/ip·ip
如夏倾城1 天前
QUIC——HTTP/3 的唯一底层传输协议 及 0-RTT恢复
网络·网络协议·tcp/ip·安全·http