DeimosC2工具加密通信分析

admin 2023年3月26日17:13:52评论35 views字数 1302阅读4分20秒阅读模式

概 述

DeimosC2是一个开源的C&C框架,使用go语言编写。该C2工具实现了多种协议通信方法,例如HTTPS、QUIC、TCP、DOH、PIVOTTCP等。DeimosC2创建的每个监听器都有自己的RSA公钥和私钥对,用于加密随机生成的AES会话密钥,再用AES算法加密木马与C2之间的通信,外层使用HTTPS等加密协议封装,因此,即使HTTPS证书卸载后看到的C&C信息依然是加密的。

工具原理

DeimosC2工具生成的木马启动时会判断是否在可运行时间内,若不在,则休眠至指定时间,木马与C2通信数据使用了混合加密方式,AES加密数据,RSA加密AES密钥。木马在被控主机上运行后,会生成一个默认为36字节全零值的AgentKey,第一次连接后木马会生成的UUID替换这个AgentKey作为受控端ID号,从而可以区分不同的受控主机。AES会话密钥在每次木马与C2通信时随机产生,用于加密二者之间的通信信息。服务器在生成监听器(木马)时,会同时生成一对RSA公私钥,并将公钥写入监听器中,私钥由服务端储存,被控端使用RSA 公钥加密 AES会话密钥,服务器收到信息时使用RSA私钥解密消息得到AES密钥再解密得到数据。见下图。

DeimosC2工具加密通信分析

被控端通信分析

第一次启动时,木马启动受害系统的shell来收集OS类型、当前用户、IP地址、执行路径等信息,见下图。

DeimosC2工具加密通信分析

网络通信部分有个sendMsg函数,其作用是发送加密数据。首先,生成一个长度36字节默认全零值的AgentKey(连接成功后木马会用UUID替换默认AgentKey)。接下来生成一个长度为32字节的随机AES密钥,并将AESKey拼接到AgentKey后面,用随机数据填充到256字节长度,再使用内置的RSA公钥加密,得到256字节的密文1:Enc(AgentKey+AESKey+Padding)。接着使用生成的AES密钥加密要发送的数据,得到密文2:Enc(data),第一次上线时data为被控端的系统信息,心跳包中data为空json格式头,如果获取了命令,则data部分是命令执行的结果。最后,将Enc(data)拼接到Enc(AgentKey+AESKey+Padding)后面,使用HTTPS将加密后的消息发送给服务端。见下图:

DeimosC2工具加密通信分析

服务端通信分析

DeimosC2服务器创建监听端口会生成一个Apache的默认Ubunt页面,同时,服务端设置了TLS连接时的最低版本、证书颁发机构等,见下图。

DeimosC2工具加密通信分析

服务端的handleConnections函数用来处理HTTPS连接,服务端收到数据后会提取存储的RSA私钥,并用私钥解密消息的前256字节,在从中提取前36字节的AgentKey,提取32字节的AESKey,使用AESKey解密256字节以后的data部分,见下图。

DeimosC2工具加密通信分析

流量分析

该工具HTTPS流量存在心跳的特征,虽然心跳时间是抖动的,但是心跳包的大小呈现一致性,且该工具客户端与主流浏览器产生的TLS限定域指纹也不相同,这些都会使该工具的通信行为被加密流量检测设备发现。

DeimosC2工具加密通信分析

原文始发于微信公众号(信息安全与通信保密杂志社):DeimosC2工具加密通信分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月26日17:13:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   DeimosC2工具加密通信分析https://cn-sec.com/archives/1628701.html

发表评论

匿名网友 填写信息