技术社区
安全培训
技术社群
积分商城
先知平台
漏洞库
历史记录
清空历史记录
相关的动态
相关的文章
相关的用户
相关的圈子
相关的话题
注册
登录
Merlin后渗透利用框架之Merlin Agent通信加解密原理剖析
T0daySeeker
历史精选
690浏览 · 2025-02-19 01:35
返回文档
概述
简单小结:
春节的喜庆氛围渐行渐远,新的征程已悄然开启。愿在新的一年里,大家都能迎接机遇,开创辉煌,事业蒸蒸日上,财源滚滚而来,收获属于自己的财富与成功!
回到正题:
前期,笔者在《Merlin后渗透利用框架之Merlin Agent远控木马剖析》文章中对Merlin Agent远控木马进行了简单剖析。
为了能够更详细的了解Merlin Agent远控木马的相关技术,笔者将从Merlin Agent远控木马的通信角度对其进行详细的研究和剖析。
经过简单研究,笔者发现:
●
Merlin Agent远控木马支持多种通信协议上线,同时还支持多种通信协议构建跳板通信;
●
Merlin Agent远控木马支持自定义用于加密通信数据的预共享密钥;
●
Merlin Agent远控木马支持自定义开启身份认证,更新用于加密通信数据的共享密钥;
●
Merlin Agent远控木马支持自定义通信编码/加密算法;
Merlin Agent通信加密代码逻辑
为了能够详细剖析Merlin Agent远控木马的通信原理,笔者将直接基于源码进行剖析,梳理Merlin Agent远控木马的通信原理。
Merlin Agent远控木马的项目地址:
https://github.com/Ne0nd0g/merlin-agent
序列化通信数据
在剖析merlin-agent源码时,笔者发现Merlin Agent远控木马的通信数据均是由
messages.Base
结构体封装的,相关代码截图如下:
进一步分析,才发现Merlin后渗透利用框架原来是将通信结构体代码进行了单独的分离,便于merlin-agent、merlin-server独立更新。
项目地址:
https://github.com/Ne0nd0g/merlin-message
,相关截图如下:
对merlin-message项目进行简单剖析,发现在
init()
函数中使用了gob.Register函数显式注册了自定义结构体类型,以便程序进行序列化和反序列化数据。
相关代码截图如下:
在merlin-message项目中,存放了Merlin后渗透利用框架所使用的各类通信数据结构,相关代码截图如下:
通信数据密钥
通过多轮详细剖析,笔者发现merlin-agent在发送通信数据时,将对
messages.Base
结构通信数据进行编码/加密处理,编码/加密处理所使用的共享密钥存放于
client.secret
数据中。
相关代码截图如下:
进一步对
client.secret
数据进行剖析,发现
secret
是
Client
结构体的一个成员,相关代码截图如下:
client.secret
数据将在两处被赋值:
●
使用Merlin Agent样本的psk配置信息做SHA256运算,得到预共享密钥;
●
若Merlin Agent样本开启身份认证,则使用OPAQUE协议进行用户认证,获得新的共享密钥;
相关代码截图如下:
Merlin Agent样本的默认psk配置信息代码截图如下:
merlin项目中对OPAQUE协议的介绍(
非对称密码身份验证密钥交换
):
Merlin Agent身份认证
通过对merlin-agent源码分析,笔者发现此项目源码大量使用了interface实现了多态,使整个项目的代码可根据具体的需求很好的扩展代码。
在进一步代码研究的过程中,笔者发现merlin-agent可通过
-auth
参数控制是否开启Merlin Agent远控木马上线过程中的身份认证功能。
Merlin Agent身份认证的interface接口代码如下:
-auth none
若通过
-auth none
参数运行远控木马,则Merlin Agent通信过程中使用的
client.secret
共享密钥将直接由
psk
配置信息的SHA256值生成。
相关代码截图如下:
-auth opaque
若通过
-auth opaque
参数运行远控木马,则Merlin Agent通信过程中使用的
client.secret
共享密钥将使用OPAQUE协议用户认证后的新共享密钥生成。
相关代码截图如下:
通信模型对比
尝试对不同
-auth
运行参数下的网络通信模型进行对比,详情如下:
●
-auth none(以下是解密后的通信数据)
●
-auth opaque(以下是解密后的通信数据)
Merlin Agent自定义通信编码/加密算法
通过对merlin-agent源码分析,笔者发现此项目源码支持多种编码、加密算法。
●
编码算法:base64、gob、hex
●
加密算法:aes、jwe、rc4、xor
●
Merlin Agent默认使用的编码/加密算法为:
jwe,gob-base
相关代码截图如下:
进一步分析,发现Transformer接口定义了网络通信数据的构造、解构函数,详情如下:
构造通信数据
Merlin Agent远控木马在发送通信数据时,将根据编码/加密算法配置信息先后调用对应的Construct函数进行数据加密和编码。
相关代码截图如下:
解构通信数据
Merlin Agent远控木马在接收通信数据后,将根据编码/加密算法配置信息先后调用对应的Deconstruct函数进行数据解码和解密。
相关代码截图如下:
Merlin Agent多种上线通信协议
根据merlin项目介绍,发现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通信协议,相关截图如下:
在实际开启监听的过程中,发现SMB、TCP、UDP通信协议是无法正常启动的;进一步基于源码进行剖析,发现SMB、TCP、UDP通信协议对应的开启监听代码是空。(
备注:SMB、TCP、UDP通信协议是用于构建跳板通信的
)
相关代码截图如下:
HTTP通信协议上线
尝试基于HTTP通信协议上线Merlin Agent远控木马,相关操作流程如下:
●
Merlin Server
●
Merlin Agent
相关数据包截图如下:
HTTPS通信协议上线
尝试基于HTTPS通信协议上线Merlin Agent远控木马,相关操作流程如下:
●
Merlin Server
●
Merlin Agent
相关数据包截图如下:
H2C通信协议上线
尝试基于H2C通信协议上线Merlin Agent远控木马,相关操作流程如下:
●
Merlin Server
●
Merlin Agent
相关数据包截图如下:
HTTP2通信协议上线
尝试基于HTTP2通信协议上线Merlin Agent远控木马,相关操作流程如下:
●
Merlin Server
●
Merlin Agent
相关数据包截图如下:
HTTP3通信协议上线
尝试基于HTTP3通信协议上线Merlin Agent远控木马,相关操作流程如下:
●
Merlin Server
●
Merlin Agent
相关数据包截图如下:
0
人收藏
0
人喜欢
转载
分享
0
条评论
某人
表情
可输入
255
字
评论
发布投稿
热门文章
1
2025ISCC练武区域赛和决赛pwn以及擂台pwn合集
2
通过Elastic EDR看smbexec并进行二次开发Bypass
3
php代码审计篇 - 信呼OA 前台注入分析一
4
D3CTF-d3kshrm(预期&非预期)题解
5
Tomcat解析XML引入的新颖webshell构造方式
近期热点
一周
月份
季度
1
2025ISCC练武区域赛和决赛pwn以及擂台pwn合集
2
通过Elastic EDR看smbexec并进行二次开发Bypass
3
php代码审计篇 - 信呼OA 前台注入分析一
4
D3CTF-d3kshrm(预期&非预期)题解
5
Tomcat解析XML引入的新颖webshell构造方式
暂无相关信息
暂无相关信息
优秀作者
1
T0daySeeker
贡献值:28700
2
一天
贡献值:24800
3
1674701160110592
贡献值:18000
4
1174735059082055
贡献值:15000
5
Yale
贡献值:14000
6
LeeH
贡献值:10000
7
MeteorKai
贡献值:9000
8
姓*户
贡献值:8600
9
Arcueid
贡献值:8000
10
熊猫正正
贡献值:8000
目录
概述
Merlin Agent通信加密代码逻辑
序列化通信数据
通信数据密钥
Merlin Agent身份认证
-auth none
-auth opaque
通信模型对比
Merlin Agent自定义通信编码/加密算法
构造通信数据
解构通信数据
Merlin Agent多种上线通信协议
一个误导人的小坑
HTTP通信协议上线
HTTPS通信协议上线
H2C通信协议上线
HTTP2通信协议上线
HTTP3通信协议上线
转载
标题
作者:
你好
http://www.a.com/asdsabdas
文章
转载
自
复制到剪贴板