基于Gost工具的ICMP隐蔽隧道通信分析

2024-02-19 16:04

本文主要是介绍基于Gost工具的ICMP隐蔽隧道通信分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.概述

近期,观成科技安全研究团队在现网中检测到了利用Gost工具实现加密隧道的攻击行为。Gost是一款支持多种协议的隧道工具,使用go语言编写。该工具实现了多种协议的隧道通信方法,例如TCP/UDP协议,Websocket,HTTP/2,QUIC,TLS等。

2022年11月,Gost更新了V3新版本,在新版本中新增了ICMP隧道功能。ICMP隧道是利用ICMP协议的Echo类型报文(ping命令所采用)进行数据传输,Gost在ICMP之上利用QUIC协议来实现安全可靠的数据传输,因此该ICMP隧道可以看作是QUIC-over-ICMP数据通道。QUIC协议是一种加密协议,所以该隧道也是一种加密隧道。

2.隧道原理分析

隧道的搭建需要客户端和服务端两端,客户端负责接收socks5代理协议,解析后将数据封装成ICMP协议发送到服务端,服务端接收后解析成原始流量并转发。

                                                   图1 隧道示意图

ICMP隧道传输的数据,由两部分构成:MessageHeader和QUIC数据。MessageHeader的长度固定10个字节,前四个字节存放magicNumber,默认为固定字符串“GOST”,最后两字节存放后续载荷的长度。

                                                    图2MessageHeader构成

 

QUIC协议是一种基于UDP的低时延的互联网传输层加密协议,和TLS类似,使用加密握手来完成密钥交换。ICMP隧道中的QUIC数据是基于quic-go包实现的。

                                                             图3 QUIC实现

在ICMP隧道的流量数据中,紧随MessageHeader之后,就是QUIC数据。隧道中传输的QUIC数据舍弃了QUIC协议的公共包头,直接传输QUIC协议的帧包。根据帧包的格式解析,第一个字节为帧类型,用来解释帧包的属性。下图流量中,帧类型为0xC3(11000011B),最高位“1”表示这是一个STREAM帧,用来进行数据传输。

                                                               图4STREAM帧包

下图数据包中的帧类型为0x4D(01001101B),最高两位“01”表示这是一个ACK帧,用来保证数据传输的可靠性。

                                                                   图5 ACK帧包

QUIC协议是一种加密协议,通过流量无法直接观察数据内容。但是从流量数据包的长度上看,ACK帧的长度远小于STREAM帧,而常规的ICMP协议的Echo类型报文数据长度往往都是相同的。

                                                               图6 数据包长度特征

3.产品检测

观成瞰云(ENS)-加密威胁智能检测系统能够对GOST工具产生的ICMP隐蔽隧道流量进行检测。

4.总结

利用Gost工具搭建ICMP隧道,攻击者可以将攻击流量隐藏在隧道之中,从而规避流量监测设备,大幅度降低被发现的可能性。目前,越来越多的攻击者利用ICMP、DNS等协议来实现隐蔽隧道加密通信,我们将会保持对此类工具的密切跟踪和研究。

这篇关于基于Gost工具的ICMP隐蔽隧道通信分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/725172

相关文章

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

CnPlugin是PL/SQL Developer工具插件使用教程

《CnPlugin是PL/SQLDeveloper工具插件使用教程》:本文主要介绍CnPlugin是PL/SQLDeveloper工具插件使用教程,具有很好的参考价值,希望对大家有所帮助,如有错... 目录PL/SQL Developer工具插件使用安装拷贝文件配置总结PL/SQL Developer工具插

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意