【观成科技】Websocket协议代理隧道加密流量分析与检测
Websocket协议代理隧道加密流量简介
攻防场景下,Websocket协议常被用于代理隧道的搭建,攻击者企图通过Websocket协议来绕过网络限制,搭建一个低延迟、双向实时数据传输的隧道。当前,主流的支持Websocket通信代理的工具有:FRP、wsp、wstunnel和TurboTunnel等。
以wstunnel工具为例,当wstunnel使用Websocket协议搭建隧道代理相关流量时,客户端使用HTTP Upgrade 机制来完成协议的握手阶段。当完成握手后,客户端和服务端就使用Websocket协议的数据格式来进行全双工的通信。服务器和客户端都可以主动发送消息,而不需要等待对方先发送消息。Wstunnel可以通过这种方式,搭建起一个高性能、低延迟的Websocket隧道。

Websocket 在握手完成过后以数据帧为单位来传输数据。wstunnel的Websocket隧道流量如下图所示:


Websocket的MASK加密
Websocket协议中有一个标志位:Mask, 用于指示数据是否启用掩码加密。当该位置为1时表明使用掩码加密,则载荷长度后4字节为解密密钥。Websocket中的掩码加密使用异或(xor)做简单的加密,当MASK字段对应位被设置为 1 时表示加密,那么后续会设置4字节的Masking-key,Mask位设置为 0 时表示不加密,则不会携带Masking-key。目前标准的 Websocket 规定,客户端发送数据必须使用掩码加密,而服务器发送则不使用掩码加密。
下图是另一款wsp工具启用MASK加密后的流量:


Websocket Secure
此外,Websocket支持WSS属性,即Websocket Secure,传输为形式为“wss://”。该通信将Websocket数据通过TLS加密协议进行封装,使得最外层看到的数据就是TLS协议通信,传输数据更加隐蔽,如图所示:

- Websocket协议代理工具加密流量样例
除了wstunnel和wsp,还有其他工具也支持Websocket隧道:
- FRP
- Turbo Tunnel


上述四款工具,对载荷的加密情况如下所示:
- 客户端加密:FRP、wsp、TurboTunnel
- 服务端加密:TurboTunnel
- 客户端不加密:wstunnel
- 服务端不加密:wstunnel、FRP、wsp
- Websocket协议代理工具加密流量检测
上边介绍了几款常用工具的Websocket通信流量特征,观成瞰云-加密威胁智能检测系统对这些工具使用Websocket加密通信的流量可以有效检测:

- 总结
在攻防演练等场景中,Websocket协议隧道具有低延迟、双向实时的高性能特点,又具有较强的加密功能,方便规避流量设备审计,因此这类工具逐渐变得热门。观成科技的安全团队通过研究Websocket协议本身结构特点,并与对应的工具流量相结合,从而提出行之有效的检测方法应用于产品当中,能在Websocket流量中准确发现异常,找出相关隧道的搭建和使用痕迹,保障客户网络的安全。我们会持续追踪和研究这类隧道工具,不断提升产品的检测能力。
相关文章:
【观成科技】Websocket协议代理隧道加密流量分析与检测
Websocket协议代理隧道加密流量简介 攻防场景下,Websocket协议常被用于代理隧道的搭建,攻击者企图通过Websocket协议来绕过网络限制,搭建一个低延迟、双向实时数据传输的隧道。当前,主流的支持Websocket通信代理的工具有…...
DangerWind-RPC-framework---三、服务端下机
当一台机器下线时,面临很多问题:如何将其从注册中心下线?如何清理释放资源?客户端拉取服务列表时也使用了本地缓存,如何及时更新本地缓存? 服务端机器的优雅下线需要使用ShutdownHook,这相当于添…...
基于Make的c工程No compilation commands found报错
由于安装gcc时只安装了build-essential,没有将其添加到环境变量中,因此打开Make工程时,CLion会产生如下错误: 要解决这个问题,一个方法是将GCC添加到环境变量中,但是这个方法需要修改至少两个配置文件&…...
c++:面向对象的继承特性
什么是继承 (1)继承是C源生支持的一种语法特性,是C面向对象的一种表现 (2)继承特性可以让派生类“瞬间”拥有基类的所有(当然还得考虑权限)属性和方法 (3)继承特性本质上是为了代码复用 (4)类在C编译器的内部可以理解为结构体,派…...
skywalking-2-客户端-php的安装与使用
skywalking的客户端支持php,真的很棒。 官方安装文档:https://skywalking.apache.org/docs/skywalking-php/next/en/setup/service-agent/php-agent/readme/ 前置准备 本次使用的php版本是8.2.13: php -v PHP 8.2.13 (cli) (built: Nov 21 2023 09:5…...
图文讲解IDEA如何导入JDBC驱动包
前言 学习JDBC编程,势必要学会如何导入驱动包,这里笔者用图文的方式来介绍 视频版本在这里 50秒教你怎么导入驱动包然后进行JDBC编程的学习_哔哩哔哩_bilibili 忘记录音频了,大伙凑合着看 下载驱动包 https://mvnrepository.com/artifact/mysql/mysql-connector-java 去中…...
java.lang.NullPointerException: null cannot be cast to non-null type kotlin.Int
java.lang.NullPointerException: null cannot be cast to non-null type kotlin.Int fun main(args: Array<String>) {var any1: Any?any1 nullval n1 any1 as? Int ?: -2024println(n1)kotlin.runCatching {var any2: Any?any2 nullval n2 any2 as Intprintln(…...
scrapy写爬虫
Scrapy是一个用于爬取网站数据并提取结构化信息的Python框架 一、Scrapy介绍 1.引擎(Engine) – Scrapy的引擎是控制数据流和触发事件的核心。它管理着Spider发送的请求和接收的响应,以及处理Spider生成的Item。引擎是Scrapy运行的驱动力。…...
Mybatis study
一、Mybatis Plus mybatis-plus指定实体类字段不查询 加标签 TableField(exist false) Spring Data Jpa学习 干我们这行,啥时候懈怠,就意味着长进的停止,长进的停止就意味着被淘汰,只能往前冲,直到凤凰涅槃的一天&am…...
【论文速读】《面向深度学习的联合消息传递与自编码器》
这篇文章来自华为的渥太华无线先进系统能力中心和无线技术实验室,作者中有大名鼎鼎的童文。 一、自编码架构的全局收发机面临的主要问题 文章对我比较有启发的地方,是提到自编码架构的全局收发机面临的主要问题: 问题一:基于随…...
防御---001
一、实验拓扑二、要求 1,DMZ区内的服务器,办公区仅能在办公时间内(9:00 - 18:00)可以访问,生产区的的设备全天可以访问. 2,生产区不允许访问互联网,办公区和游客区允许访问互联网 3,办公区设备10.0.2.10不允许访问DMZ…...
DNS 杂谈
一、定义 DNS(Domain Name System),域名系统,该系统记录域名和Ip地址的相互映射关系。用户访问互联网时,通过域名地址得到对应的IP地址,这个过程称为域名解析。DNS运行于UDP协议之上,使用的端口…...
docker笔记2
docker笔记2 一、阿里云镜像配置二、docker基本原理1.docker是如何启动一个容器的2.docker的底层原理 三、镜像命令总结 一、阿里云镜像配置 配置镜像的目的 由于Docker Hub等公共镜像仓库的服务器可能位于国外,直接从中拉取镜像时可能会遇到网络延迟或不稳定的问…...
数字统计
import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别// 注意 while 处理多个 caseint a in.nextInt();i…...
Git 使用问题
Git 使用问题 1, 网络问题 1, 网络问题 # 报错如下: fatal: unable to access https://github.com/xianglingliwei/HRNet.git/: Failed to connect to github.com port 443 after 21044 ms: Couldnt connect to server在不能正常访问Github的区域,需要设…...
JMH325【剑侠情缘3】第2版80级橙武网游单机更稳定亲测视频安装教学更新整合收集各类修改教学补丁兴趣可以慢慢探索
资源介绍: 是否需要虚拟机:是 文件大小:压缩包约14G 支持系统:win10、win11 硬件需求:运行内存8G 4核及以上CPU独立显卡 下载方式:百度网盘 任务修复: 1,掌门任务(…...
大数据专业创新人才培养体系的探索与实践
一、引言 随着大数据技术的迅猛发展,其在各行各业中的应用日益广泛,对大数据专业人才的需求也日益增长。我国高度重视大数据产业的发展,将大数据作为国家战略资源,推动大数据与各行业的深度融合。教育部也积极响应国家战略&#…...
MySQL 中的 DDL、DML、DQL 和 DCL
文章目录 1. 数据定义语言(DDL)2. 数据操作语言(DML)3. 数据查询语言(DQL)4. 数据控制语言(DCL)总结 在 MySQL 数据库管理系统中,SQL 语句可以根据其功能分为不同的类别&…...
基础架构服务API:降低成本,提升业务效益
基础架构服务API的应用可以显著降低企业的成本,并提升业务效益。通过使用这些API,企业可以充分利用云计算、自动化部署和资源管理等功能,从而减少了传统基础设施所需的大量投资和维护成本。这些API还提供了弹性扩展和自动化功能,使…...
Redis IO多路复用
0、前言 本文所有代码可见 > 【gitee code demo】 本文涉及的主题: 1、BIO、NIO的业务实践和缺陷 2、Redis IO多路复用:redis快的主要原因 3、epoll 架构 部分图片 via 【epoll 原理分析】 1、BIO单线程版 1.1 业务代码 client client代码相同…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...

