观成科技:新版suo5隧道工具加密流量跟踪分析

1、工具简介

suo5是一个高性能的http隧道代理工具,支持全双工半双工模式,具有很高的传输性能,现在越来越多的webshell管理工具与内存马生成工具都支持了生成suo5木马的功能。从v1.1.0版本开始,其TLS协议传输功能中,增加了新的变化,每次握手使用随机的加密套件和扩展列表项,使得客户端指纹和特征不固定,增大了其TLS加密流量的检测难度。

2、不同版本对比

v1.1.0之后的新版本相较于我们之前分析过的v0.5.0版本存在以下差异:

3、新旧版本差异详解

(1)HTTP协议通信分析

1)建立连接的验证阶段

图1:v0.5.0验证请求

图2:v1.1.0验证请求

  1. 在请求体的长度方面

0.5.0版本在ctrl.go文件中定义的checkMemshell函数限定了请求体长度以及验证连接成功的方式

图3:v0.5.0 checkMemshell函数限定了长度64字节

函数前半段的data使用randstring函数生成了长度为64的随机字符串作为请求体,并在之后用于验证连接情况。

图4:v0.5.0 响应体校验方式

之后使用len(body) != 32 || !strings.HasPrefix(data, string(body))校验响应体,如果响应体的长度不等于 32 或者响应体的前缀不是 data 的一部分,则认为检测失败。在失败的情况下,会将响应头和响应体内容记录下来,并返回错误。

1.1.0版本改用checkConnectMode函数,在校验连接的同时判断适用的连接模式,见下图:

图5:v1.1.0 checkConnectMode函数源码

这里随机生成的data长度不再是固定的64字节,而是在32 到 1024 字节之间随机取值,因此每次验证数据长度不固定。

2)首次传输数据

图6:v0.5.0首次传输数据

图7:v1.1.0首次传输数据

  1. 请求头中在Content-Type分别是application/octet-stream和application/x-binary这里在新老版本是相同的,作为全双工半双工模式标记。
  2. 新版本同样沿用了之前的异或加密方式,数据格式为【四个字节密文长度指示+密钥+密文】。

3)请求体解密:

图8:解密请求体

解密后请求体存在字符ac、h、p,这些参数在handler.go文件中定义:

图9:请求体构建函数

newActionCreate函数接收四个参数后,返回字节映射并在handleConnect函数中构建请求体。其中ac代表操作类型(创建、数据传输、删除、心跳);id代表当前操作的唯一标识,用于确保操作的正确性和一致性;h为目标的IP或域名;p代表端口,默认为0。除此之外,在chunked.go代码中,还记录着在后续传输数据时才存在的标志位”dt”,表示有数据传输。

4)响应体解密:

图10:解密响应体

响应体内容解密后除了不可读字符外仅有 “s”。

图11:响应体验证

分析代码可以看出响应体中的键 "s" 对应的值作为状态码。如果状态码不是 0x00 或者状态值的长度不为1,说明服务器拒绝了连接请求。

(2)TLS协议通信

图12:v1.1.0版本的TLS指纹不固定

图13:v0.5.0 版本的TLS指纹不变

v1.1.0版本在进行HTTPS通信时使用了utls库中的UClient函数,用于创建TLS客户端连接。该函数的第三个参数 utls.HelloRandomizedNoALPN 表示客户端消息中的ClientHello类型。这个参数表示在TLS握手中不使用ALPN并且随机化扩展列表和加密套件以增强隐私性。因为新版本使用的不是oldConn.ClientHelloID参数,所以由ClientHello消息计算得到的TLS指纹也不再是固定的。

图14:v1.1.0版本中处理TLS通信的相关代码

而v0.5.0版本并未发现这个函数,HTTPS通信上使用的是crypto/tls库中的tls.Config来构建请求,除了设置了忽略证书校验外都使用go的默认配置进行连接。

4、产品检测

观成瞰云(ENS)-加密威胁智能检测系统能够对suo5隧道代理工具产生的HTTP和HTTPS流量进行检测。

图15:suo5-http告警详情

图16:suo5-https告警详情

5、总结

       在利用suo5隧道代理工具的过程中,攻击者不仅可以将工具自带的木马上传到目标中,也可以由其他内存马以suo5的通信方式和加密形式来利用,还可以通过webshell管理工具来注入suo5的内存马进行利用,但是基于人工智能、流行为特征和TLS限定域指纹检测的加密威胁智能检测系统能够高效、准确的检测出该代理工具。目前越来越多的攻击者利用隐蔽隧道工具来封装攻击行为,观成科技安全研究团队一直在持续追踪这些工具的最新动态,并积极进行研究和更新,以提高对加密流量的检测技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/879743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

青海省基础地理矢量数据

青海是长江、黄河、沧澜江的发源地,因此被誉为“三江源”和“中华水塔”,具有全球独一无二的生态地位。青海省拥有丰富的水资源和生物多样性,对维护亚洲的水资源和生态平衡具有重要作用。 该数据集涵盖了青海省内的主要地理要素,包…

聚焦汽车智能化与电动化,亚洲领先的汽车工业技术博览会 2025年11月与您相约 AUTO TECH 华南展

抢占市场先机︱聚焦汽车智能化与电动化,亚洲领先的汽车工业技术博览会 2025年11月与您相约 AUTO TECH 华南展 随着汽车智能化与电动化的迅猛发展,汽车电子技术、车用功率半导体技术、智能座舱技术、轻量化技术/材料、软件定义汽车、EV/HV技术、测试测量技…

deepspeed安装报错 No module named ‘dskernels‘解决

pip install deepseek安装报错 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/61/e6/04e2f2de08253e6b779fe7706f2e06d8fb48353e1d33a2fd7805062213d4/deepspeed-0.12.3.tar.gz (1.2 MB)Preparing metadata (setup.py) ... errorerror: subprocess-exited-with-err…

透明屏幕有普通屏幕有哪些优点

针对透明玻璃屏幕的安装方案,我们需要综合考虑多个因素,包括安装环境、屏幕尺寸、重量、安全要求以及视觉效果等。以下是一个概括性的安装方案框架,供您参考: 一、前期准备 1.1 需求分析 明确透明玻璃屏幕的使用场景&#xff08…

C++速通LeetCode中等第4题-三数之和

解题思路&#xff1a;先排序&#xff0c;固定第一个数&#xff0c;用两个指针分别指向右侧剩余数列的两端&#xff0c;右侧向左移动直到两指针重合&#xff0c;看三数合有没有解&#xff0c;指针遇到相同数字跳过。 class Solution { public:vector<vector<int>> …

【数据库】MySQL内置函数

本篇分享一些在MySQL中常见的一些内置函数&#xff0c;如日期函数&#xff0c;字符串函数和数学函数&#xff0c;以方便于操作数据库中的数据。 1.日期函数 我们先整体观察一下这些函数再讲解案例 日期函数使用起来都非常就简单 获得年月日&#xff1a; select current_dat…

为解决bypy大文件上传报错—获取百度云文件直链并使用Aria2上传文件至服务器

问题描述 一方面组内的服务器的带宽比较小&#xff0c;另一方面使用bypy方式进行大文件(大于15G)上传时会报错&#xff08;虽然有时可以成功上传&#xff0c;但是不稳定&#xff09;&#xff1a; 解决方式 总体思路: 获得云盘需要下载文件的直链复制直链到服务器中使用自带…

24年蓝桥杯及攻防世界赛题-MISC-3

21 reverseMe 复制图片&#xff0c;在线ocr识别&#xff0c;https://ocr.wdku.net/&#xff0c;都不费眼睛。 22 misc_pic_again ┌──(holyeyes㉿kali2023)-[~/Misc/tool-misc/zsteg] └─$ zsteg misc_pic_again.png imagedata … text: “$$KaTeX parse error: Undefined…

Excel快速填充颜色,快捷键真香

大家好&#xff0c;这里是效率办公指南&#xff01; &#x1f3a8; 在Excel中工作时&#xff0c;我们经常需要对单元格进行颜色填充&#xff0c;以突出显示重要数据或增加视觉可读性。今天&#xff0c;我们将分享几种快速填充颜色的方法&#xff0c;帮助你提高工作效率&#x…

Golang使用ReverseProxy实现反向代理

目录 1.源码结构体 2.官方单机示例 3.使用示例 4.简单的http服务&#xff08;用于测试&#xff09; 1.源码结构体 type ReverseProxy struct {// Rewrite 必须是一个函数&#xff0c;用于将请求修改为要使用 Transport 发送的新请求。然后&#xff0c;其响应将原封不动地…

用ASR PRO离线语音芯片和月饼盒做一个会跑会跳会说话的机器狗

中秋节刚过&#xff0c;大家月饼盒应该还有&#xff0c;不要扔&#xff0c;可以做点小玩意。 机器狗的创意来自B站石桥北的视频&#xff0c;他使用了一块ESP32芯片和打印件加四个舵机实现&#xff0c;应该说是比较复杂的&#xff0c;需要有3D打印机打印外壳&#xff0c;还得会…

Linux标准IO-系统调用详解

1.1 系统调用 系统调用&#xff08;system call&#xff09;其实是 Linux 内核提供给应用层的应用编程接口&#xff08;API&#xff09;&#xff0c;是 Linux 应用层进入内核的入口。不止 Linux 系统&#xff0c;所有的操作系统都会向应用层提供系统调用&#xff0c;应用程序通…

【Harmony】轮播图特效,持续更新中。。。。

效果预览 swiper官网例子 Swiper 高度可变化 两边等长露出&#xff0c;跟随手指滑动 Swiper 指示器导航点位于 Swiper 下方 一、官网 例子 参考代码&#xff1a; // xxx.ets class MyDataSource implements IDataSource {private list: number[] []constructor(list: nu…

软考高级:嵌入式系统调度算法 AI 解读

嵌入式系统中的调度算法用于管理任务的执行顺序&#xff0c;确保系统资源能够有效分配。以下是几种常见的调度算法的通俗讲解。 生活化例子 想象你是一位超市收银员&#xff0c;有很多顾客排队&#xff0c;每位顾客都可以看作一个任务&#xff0c;收银台就是你的处理器。你需…

PostgreSQL技术内幕10:PostgreSQL事务原理解析-日志模块介绍

文章目录 0.简介1.PG日志介绍2.事务日志介绍3.WAL分析3.1 WAL概述3.2 WAL设计考虑3.2.1 存储格式3.2.2 实现方式3.2.3 数据完整性校验3.3 check ponit 4.事务提交日志&#xff08;CLOG&#xff09;4.1 clog存储使用介绍4.2 slru缓冲池并发控制 0.简介 本文将延续上一篇文章内容…

【无标题】Java_Se 数据变量与运算符

标识符、变量、常量、数据类型、运算符、基本数据类型的类型转换等。这些是编程中的“砖块”&#xff0c;是编程的基础。要想开始正式编程&#xff0c;还需要再学“控制语句”&#xff0c;控制语句就像“水泥”&#xff0c;可以把“砖块”粘到一起&#xff0c;最终形成“一座大…

华为OD机试 - 二维伞的雨滴效应(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

ClickHouse-Kafka Engine 正确的使用方式

Kafka 是大数据领域非常流行的一款分布式消息中间件&#xff0c;是实时计算中必不可少的一环&#xff0c;同时一款 OLAP 系统能否对接 Kafka 也算是考量是否具备流批一体的衡量指标之一。ClickHouse 的 Kafka 表引擎能够直接与 Kafka 系统对接&#xff0c;进而订阅 Kafka 中的 …

镀金引线---

一、沉金和镀金 沉金和镀金都是常见的PCB金手指处理方式&#xff0c;它们各有优劣势&#xff0c;选择哪种方式取决于具体的应用需求和预算。 沉金&#xff08;ENIG&#xff09;是一种常用的金手指处理方式&#xff0c;它通过在金手指表面沉积一层金层来提高接触性能和耐腐蚀性…

【C++】模拟实现vector

在上篇中我们已经了解过的vector各种接口的功能使用&#xff0c;接下来我们就试着模拟实现一下吧&#xff01; 注意&#xff1a;我们在此实现的和C标准库中实现的有所不同&#xff0c;其目的主要是帮助大家大概理解底层原理。 我们模拟vector容器的大致框架是&#xff1a; t…