基于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

相关文章

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

Java中的工具类命名方法

《Java中的工具类命名方法》:本文主要介绍Java中的工具类究竟如何命名,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java中的工具类究竟如何命名?先来几个例子几种命名方式的比较到底如何命名 ?总结Java中的工具类究竟如何命名?先来几个例子JD

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

MySql match against工具详细用法

《MySqlmatchagainst工具详细用法》在MySQL中,MATCH……AGAINST是全文索引(Full-Textindex)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜... 目录一、全文索引的基本概念二、创建全文索引三、自然语言搜索四、布尔搜索五、相关性排序六、全文索引的限制七

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

基于Java实现回调监听工具类

《基于Java实现回调监听工具类》这篇文章主要为大家详细介绍了如何基于Java实现一个回调监听工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录监听接口类 Listenable实际用法打印结果首先,会用到 函数式接口 Consumer, 通过这个可以解耦回调方法,下面先写一个

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加