Merlin后渗透利用框架之Merlin Agent通信加解密原理剖析
字数 2103 2025-08-29 08:30:30
Merlin后渗透利用框架之Merlin Agent通信加解密原理详解
1. 概述
Merlin Agent是Merlin后渗透利用框架中的远控木马组件,支持多种通信协议上线和跳板通信。本文将深入剖析其通信加解密原理,包括序列化机制、密钥管理、身份认证、编码加密算法实现以及不同通信协议的特性。
2. 通信数据序列化
Merlin Agent的通信数据使用messages.Base结构体封装,该结构体来自独立的merlin-message项目:
- 项目地址:https://github.com/Ne0nd0g/merlin-message
- 使用
gob.Register函数显式注册自定义结构体类型,支持序列化和反序列化 - 包含Merlin框架使用的各类通信数据结构
3. 通信数据密钥管理
Merlin Agent使用client.secret作为通信数据的加密密钥,其来源有两种方式:
3.1 预共享密钥(PSK)模式
- 使用Merlin Agent样本的psk配置信息进行SHA256运算生成
- 默认psk配置为"merlin"的SHA256值
- 通过
-auth none参数运行时使用此模式
3.2 OPAQUE协议认证模式
- 使用OPAQUE协议(非对称密码身份验证密钥交换)进行用户认证
- 认证后生成新的共享密钥
- 通过
-auth opaque参数运行时使用此模式
4. 身份认证机制
Merlin Agent通过-auth参数控制身份认证方式:
4.1 -auth none模式
- 直接使用psk的SHA256值作为
client.secret - 通信模型简单,无额外认证步骤
4.2 -auth opaque模式
- 使用OPAQUE协议进行用户认证
- 认证成功后生成新的共享密钥作为
client.secret - 提供更强的安全性
5. 通信编码/加密算法
Merlin Agent支持多种编码和加密算法组合:
5.1 支持的编码算法
- base64
- gob
- hex
5.2 支持的加密算法
- aes
- jwe
- rc4
- xor
5.3 默认配置
- 编码/加密算法组合:jwe,gob-base
5.4 Transformer接口
定义了网络通信数据的构造(Construct)和解构(Deconstruct)函数:
- 构造通信数据:发送时按配置顺序调用加密和编码函数
- 解构通信数据:接收时按配置逆序调用解码和解密函数
6. 通信协议支持
Merlin Agent支持多种上线通信协议,各协议特性如下:
| 协议 | 加密 | 基础协议 | 特性 | 端口 | 使用场景 |
|---|---|---|---|---|---|
| HTTP | 否 | TCP | 明文传输、无状态 | 80 | 无需安全、低速传输的场景 |
| HTTPS | 是 | TCP + TLS | 安全传输、身份验证、加密 | 443 | 需要安全传输的场景(如在线支付、登录) |
| H2C | 否 | TCP | 明文传输、使用HTTP/2特性 | 80 | 特定优化需求但不需要加密的场景 |
| HTTP/2 | 是 | TCP + TLS | 二进制协议、多路复用、头压缩 | 443 | 需要高效传输的安全场景 |
| HTTP/3 | 是 | UDP + TLS | 基于QUIC、快速连接建立、更好的多路复用 | 443 | 高延迟或丢包环境下的优化传输 |
注意:虽然Merlin Server命令行显示支持SMB、TCP、UDP协议,但这些协议实际用于构建跳板通信,不能直接用于Agent上线。
7. 各协议上线示例
7.1 HTTP协议上线
- 特点:明文传输
- 适用场景:内网环境或测试环境
7.2 HTTPS协议上线
- 特点:TLS加密传输
- 适用场景:需要安全通信的公网环境
7.3 H2C协议上线
- 特点:HTTP/2特性但不加密
- 适用场景:需要HTTP/2优化但不需加密的环境
7.4 HTTP2协议上线
- 特点:完整HTTP/2协议+TLS
- 适用场景:需要高效安全通信的环境
7.5 HTTP3协议上线
- 特点:基于QUIC协议
- 适用场景:高延迟或丢包网络环境
8. 关键实现细节
- 多态设计:Merlin Agent大量使用interface实现多态,便于功能扩展
- 模块分离:通信数据结构分离到独立项目(merlin-message),便于独立更新
- 灵活配置:支持多种编码/加密算法组合,可根据需求调整
- 安全机制:提供从简单PSK到复杂OPAQUE协议的多级安全选项
9. 总结
Merlin Agent提供了高度灵活和安全的通信机制,通过分析其实现原理,我们可以:
- 理解其多层次的安全设计
- 根据实际需求选择合适的通信协议和加密方式
- 在红队操作中更有效地使用该工具
- 为防御方提供检测和对抗的思路
其模块化设计和接口抽象也值得在类似工具开发中借鉴。