观成科技:加密C2框架Covenant流量分析

2024-02-29 14:12

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

  • 工具介绍

Covenant是一个基于.NET的开源C2服务器,可以通过HTTP/HTTPS 控制Covenant agent,从而实现对目标的远程控制。Covenant agent在与C2通信时,使用base64/AES加密载荷的HTTP隧道构建加密通道。亦可选择使用SSL/TLS标准加密协议,但需自行准备证书,此工具并没有C&C服务端默认SSL证书。

  • 工具原理分析
  1. 工作流程

利用Covenant C2工具进行一次完整建联包含3个阶段,流程如下图所示:

  1. 阶段1:

被控制端主动连接控制端,并使用GET方法请求默认的url:/en-us/index.html、/en-us/docs.html、/en-us/test.html其中之一来判断控制端是否存活。

  1. 阶段2:

控制端会将特定内容”Hello World”返回给被控制端。

  1. 阶段3:

当建立连接成功后,被控制端会使用POST方法请求默认url:/en-us/index.html、/en-us/docs.html、/en-us/test.html其中之一,并将受控目标的GUID、Type、HMAC等数据加密发送给控制端。

相关固定配置如下图所示:

图1:DefaultHttpProfile.yaml配置文件

  1. HTTP流量分析

被控制端与控制端一次完整的上线通信相关流量分析如下:

  1. 阶段1:

图2:上线包

木马运行后,第一次请求的url是配置文件中默认提供的。

  1. 阶段2:

上线包中返回体中,控制端返回了特定内容Hello World给被控制端,特定内容Hello World也是配置文件中默认提供的。

  1. 阶段3

图3:连接成功

连接成功后,被控制端主动将GUID、Type、IV、EncryptedMessage、HMAC一组固定的数据发送给控制端,并且数据经过加密后放在POST请求的data字段中,url同上线包一样是默认提供的;服务端返回的数据,同样加密后放到返回包body标签中,在第二个Hello World字符串后进行传输。对其进行解密,看到传输内容如下图所示:

图4:解密

上述解密内容中GUID为token;Type为生成木马时在木马样本中定义好的数值,当发送第一个POST请求包时Type为0,返回包Type为1,后续通信该值一直为1;Meta无特殊含义值为空;IV为AES加密的初始向量;EncryptedMessage为AES加密传输的消息;HMAC为消息验证码,对AES-key与EncryptedMessage进行消息验证,确保完整性。

其中AES的密钥AES-key在生成木马时随机产生,并硬编码在木马样本中,如下图:

图5:AES-key

加密过程如下图:

图6:加密过程

心跳包使用的url也是在配置文件DefaultHttpProfile.yaml中定义,默认为/en-us/index.html、/en-us/docs.html、/en-us/test.html其中之一,心跳时间与抖动时间在创建木马时可自定义设置,默认心跳为5秒、抖动时间为10秒,与阶段一中上线包区别为:心跳包会在Cookie中传递由服务端确定好的GUID(token值),如下图:

图7:心跳包

  1. HTTPS流量分析

Covenant C2服务端提供了WEB服务,有前端界面,方便使用,其WEB服务界面如下:

图8:WEB前端界面

当启动服务端后,其WEB服务使用HTTPS协议,并且WEB服务使用固定TCP端口7443以及默认证书,如下图:

图9:WEB服务默认端口

图10:WEB服务默认证书

生成木马时,C&C通信方式也可以选择HTTPS加密,由于Covenant C2工具不提供agent与C2服务端之间通信的默认SSL证书,所以此工具的HTTPS模式需要自行生成并配置证书。

  • 工具检测

虽然此工具的心跳是自定义的,但值是固定整数值,不能中途更改,其工具的心跳存在周期性,并且其web服务使用固定服务端口7443以及默认证书,可通过证书指纹、机器学习模型以及多流行为检测此工具的HTTPS模式C&C通信流量。

根据分析结果,我们通过利用行为检测引擎,实现了对Covenant C2工具的有效检测。

图11:Covenant C2检出结果

  • 总结

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

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



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

相关文章

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 应