[观成科技] 加密C2框架Merlin流量分析

一、工具介绍

Merlin是一款支持多种协议的后渗透测试工具。与CS相比,由于该工具使用go语言进行开发(go语言支持跨平台编译),使得Merlin具备了跨平台的优势。该工具传输数据使用了JWE(JSON Web Encryption)格式进行加密数据传输,有效的保护了通信数据的隐蔽性。

二、工具原理分析

工作流程:

Merlin默认情况下,Server和CLI程序是放在同一台设备上,当部署在不同设备上时需要添加“-addr”参数指定地址端口。Merlin上线时,Agent上线后会给Server发送POST请求,请求中携带AgentID信息,Server端对请求包进行校验,检测是否符合请求特征,并使用生成的JWEKey尝试解析请求中的AgentID信息,如果使用JWEKey没有解析成功,则使用PSK(默认值为merlin)计算sha256后作为key进行校验,解密后取AgentID,之后的通信中Agent发送主机的相关信息。

验证过程与加解密分析

服务端会对Agent发送的请求包进行校验,验证步骤如下:

  • 请求方式是否为“POST”

  • 请求头中UA字段是否为默认的值

  • “Content-Type”字段是否为默认配置

  • 验证JWT加密模式,尝试解出AgentID(uuid)

这里调用第三方库"github.com/go-jose/go-jose/v3/jwt",对JWT数据进行解密。解密后为AgentID信息。

  • 请求体与响应体使用JWE对数据进行加密

该工具使用第三方库“github.com/go-jose/go-jose/v3”对数据进行加密和解密,格式为JWE格式。这里定义了加密算法信息。

三、流量分析

HTTP流量分析:

对merlin agent回连控制端的HTTP流量进行分析,交互的流量中存在如下特征:

* 请求方式均为POST

* 请求的路径不变,默认均为“/”

* 请求头中均含有“Authorization: Bearer eyJhbGciOiJkaXIiLCJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwidHlwIjoiSldUIn0”

* 请求头中“Content-Type”默认值为“application/octet-stream; charset=utf-8

* 响应头中“Content-Type”默认值为“application/octet-stream”

对请求头中的内容进行解密。

"alg":"dir" —这个字段是使用的签名算法,dir表示直接使用对称密钥进行签名;

"cty":"JWT" —这里指定JWT的内容类型;

"enc":"A256GCM" —这里指定加密使用的算法为AES256 GCM模式,默认的key是“merlin”的sha256哈希值;

"typ":"JWT" —指的是格式类型,这里使用的是JWT格式。

请求体中的内容使用JWE格式进行加密解密。

JWE格式分为五部分,每个部分都是用base64url编码,解码第一部分可以看到算法内容:

"alg":"PBES2-HS512+A256KW" —指使用PBES2进行密钥加密,使用HMAC SHA-512和A256KW两种加密算法;

"enc":"A256GCM" —指定使用AES256 GCM模式对内容进行加密;

"p2c":3000 —表示迭代次数3000次;

"p2s":"veb2ksZs8TiXTA6U6xWpTw" —是盐值。

HTTPS流量分析

对HTTPS流量进行分析:

该工具为反连木马,连接远程控制服务器时,其HTTPS通信方式默认使用TLS 1.3版本,证书经过加密,无法看到。但其流量存在心跳特征,默认的心跳间隔为30s,且心跳包存在独特的载荷变化规律。通过心跳间隔和载荷变化规律能够对该工具的HTTPS模式进行有效检测。

四、工具检测

根据分析结果,我们可以对merlin通信的加密流量进行有效的检出。

五、总结

Merlin支持在多种平台上使用,在较为复杂的环境中都能很好的得到应用。该工具使用独特的JWE格式加密传输数据,可以更好的躲避明文流量设备的检测,但是通过TLS限定域指纹和多流行为可以对该工具进行有效的检出。如今,越来越多的攻击者采用加密通信的C2工具,以提升攻击的隐蔽性。观成科技安全研究团队持续追踪这些C2工具的最新动态,积极研究和更新针对加密流量的检测技术。

相关推荐

  1. 鹤笔记2

    2024-04-10 15:12:01       30 阅读
  2. 使用Scapy框架分析HTTP流量

    2024-04-10 15:12:01       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-10 15:12:01       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-10 15:12:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-10 15:12:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-10 15:12:01       20 阅读

热门阅读

  1. 力扣经典150题第五题:多数元素

    2024-04-10 15:12:01       15 阅读
  2. 去了加拿大才能知道的一些事

    2024-04-10 15:12:01       15 阅读
  3. Eureka注册步骤

    2024-04-10 15:12:01       14 阅读
  4. LeetCode-热题100:23. 合并 K 个升序链表

    2024-04-10 15:12:01       11 阅读
  5. 计算机网络---第四天

    2024-04-10 15:12:01       15 阅读
  6. react类组件转化为函数组件

    2024-04-10 15:12:01       12 阅读
  7. docker 的常用命令

    2024-04-10 15:12:01       16 阅读