【观成科技】加密C2框架Xiebro流量分析

2024-05-14 19:04

本文主要是介绍【观成科技】加密C2框架Xiebro流量分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、工具介绍

Xiebro是由Golang和 .NET编写,提供支持的多人和多服务器 C2/后开发框架。它支持多种通信协议,包括TCP、websocket等,并且在客户端与Xiebro服务器之间的通信通常采用AES加密来保障安全性和隐蔽性。

二、工具原理分析

Xiebro C2工具在生成木马时AES密钥硬编码在木马中,木马与C2服务器通信使用AES算法来加密通信内容,流程见下图。

图1:工具原理图

固定字段

字段用途

Pac_ket

区分传输数据内容,比如传输的心跳或者命令下发

Controler_HWID

生成的唯一ID,用于区分不同的受控主机

ProcessID

进程ID

ListenerName

监听器的名字

ReadInput

被控端命令结果返回

WriteInput

控制端命令下发

表一:传输固定字段用途

木马运行后,被控端会发一个上线请求,内容分为固定字段和对应数据,固定字段为Pac_ket、ProcessID、ListenerName、Controler_HWID、Info等数据,其中Controler_HWID为生成的唯一ID,用于区分不同的受控主机。

图2:AES密钥和上线请求的图

木马交互时心跳为固定json格式,内容为{'Pac_ket': 'ClientPing', 'Message': 'DDDD'},经过AES加密后将加密数据发送给服务端,默认木马心跳是15秒一次。

图3:心跳

服务端命令下发和被控端返回命令结果格式大致相同,服务端下发命令内容分为固定字段和对应数据,固定字段为Pac_ket、WriteInput、TargetClient、HWID,将命令放在WriteInput中,经过AES加密后将加密数据发送给受控端。被控端返回命令结果内容分为固定字段和对应数据,固定字段为Pac_ket、Controler_HWID、ProcessID、ListenerName、ReadInput,将命令结果放在ReadInput中传输给服务端。

图4:被控端返回命令结果

图5:流量分析

图6:解密后的命令结果返回内容

三、工具检测

根据分析结果,此工具具有心跳,且心跳包的载荷长度有规律,虽然载荷经过加密看不到明文,通过心跳行为模型能够实现对Xiebro C2工具的有效检测;如果工具使用者不对默认密钥进行更换,也可通过规则检测工具默认格式字段加密后的特征。

图7:Xiebro检出结果

四、总结

利用Xiebro C2工具进行C&C通信,攻击者可以将通信内容加密从而规避传统明文流量设备的检测,但是基于人工智能、流行为特征检测的加密威胁智能检测系统能够检测此类加密通信行为。如今,越来越多的攻击者采用加密通信的C2工具,以提升攻击的隐蔽性。观成科技安全研究团队持续追踪这些C2工具的最新动态,积极研究和更新针对加密流量的检测技术。

这篇关于【观成科技】加密C2框架Xiebro流量分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java中使用Hutool进行AES加密解密的方法举例

《Java中使用Hutool进行AES加密解密的方法举例》AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个,下面:本文主要介绍Java中使用Hutool进行AES加密解密的相关资料... 目录前言一、Hutool简介与引入1.1 Hutool简介1.2 引入Hutool二、AES加密解密基础

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应