[观成科技] 加密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工具的最新动态,积极研究和更新针对加密流量的检测技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/545586.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OSI七层网络攻击行为及防范手段

2020年3月3日,360安全大脑披露美国中央情报局攻击组织(APT-C-39)对我国大型互联网公司、政府部门及相关企业进行长达11年的网络攻击渗透,该组织所使用的网络武器和CIA“Vault7”项目中的网络武器完全吻合。如今随着互联网技术的蓬…

企业吉祥物如何通过全身动作捕捉设备化身虚拟主持人亮相直播发布会?

全身动作捕捉设备已经是各大产业领域耳熟能详的词汇,尤其在虚拟主持人等新型业务的兴起,全身动作捕捉设备可以赋能虚拟主持人亮相于企业直播发布会等现场,那企业吉祥物又该如何通过全身动作捕捉设备化身虚拟主持人亮相直播发布会呢&#xff1…

cdn加速与ssl加速

cdn CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。 简单的来说,就是把原服务器上数据复制到其他服务器上,用户访…

计算方法实验5:对鸢尾花数据集进行主成分分析(PCA)并可视化

任务 iris数据集包含150条数据,从iris.txt读取,每条数据有4个属性值和一个标签(标签取值为0,1,2)。要求对这150个4维数据进行PCA,可视化展示这些数据在前两个主方向上的分布,其中不…

云卓LS-01喊话器说明书-新版中文

一: 概述 LS-01 无人机喊话器适用于搭载无人机进行交通管制、现场指挥、应急救援、人群疏导、防疫宣传、景区安防、鱼塘巡视、林业防控等场景。产品具有喊话、警报、播放多媒体文件等多种功能。喊话器外壳采用尼龙加纤材质,具有抗、抗震、轻便灵活、外观新颖、质量稳…

贝叶斯公式中的先验概率、后验概率、似然概率

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

VectorMap论文阅读

1. 摘要 自动驾驶系统需要对周围环境具有很好的理解,包括动态物体和静态高精度语义地图。现有方法通过离线手动标注来解决语义构图问题,这些方法存在严重的可扩展性问题。最近的基于学习的方法产生稠密的分割预测结果,这些预测不包含单个地图…

总结|性能优化思路及常用工具及手段

性能优化是降低成本的手段之一,每年大促前业务平台都会组织核心链路上的应用做性能优化,一方面提升系统性能,另外一方面对腐化的代码进行清理。现结合业务平台性能优化的经验,探讨一下性能优化的思路及常用工具及手段。性能优化本…

关于下载EsayOCR模型总是连接中断报错

关于下载EsayOCR模型总是连接中断报错 因为网络问题,自动下载总是失败报错,所以只好去网上手动下载训练好的模型。 以下是一些模型的下载地址:text detection model (CRAFT) chinese (traditional) model chinese (simplified) model jap…

TCP报文与三次握手四次断开、TCP最大连接数与文件打开数限制、keepalive、tcpdump、wireshark抓包分析工具

TCP报文 tcp详解、tcp与udp对比等 TCP:传输控制协议 UDP:用户数据报协议 源端口和目的端口字段:各占 2 字节(16位)。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。 序列号:在建立…

linux学习:进程(新建+运行某文件+退出处理函数+等待)

目录 api 创建新进程 注意 运行某文件 例子 注意 例子,等待进程 进程是由进程控制块、程序段、数据段三部分组成 进程有都有一个父进程,除了init,父进程可以创建子进程 每个进程都有一个PID,可以用ps来查看,等…

目标检测应用场景—数据集【NO.30】织物缺陷图像目标检测数据集

写在前面:数据集对应应用场景,不同的应用场景有不同的检测难点以及对应改进方法,本系列整理汇总领域内的数据集,方便大家下载数据集,若无法下载可关注后私信领取。关注免费领取整理好的数据集资料!今天分享…

2024第十五届蓝桥杯 JAVA B组

目录 前言:试题 A: 报数游戏试题 B: 类斐波那契循环数试题C:分布式队列 前言: 没参加这次蓝桥杯算法赛,十四届蓝桥杯被狂虐,对算法又爱又恨,爱我会做的题,痛恨我连题都读不懂的题😭,十四届填空只…

Linux基础(持续更新~)

常见的Linux目录 1、“/”:根目录 2、“/root”:root 用户的家目录 3、“/home/username ”:普通用户的家目录 4、“/etc”:配置文件目录(类似于Windows的注册表) 5、“/bin ”:命令目录 …

不再写满屏import导入

密密麻麻的import语句不仅仅是一种视觉上的冲击,更是对代码组织结构的一种考验。 我们是如何做到让import“占领满屏“的了,又该如何优雅地管理这些import语句呢? 本文将从产生大量import语句的原因、可能带来的问题以及如何优化和管理impo…

java版数字藏品深色UI仿鲸探数藏盲盒合成短视频卡牌模式支持高并发

Java版数字藏品深色UI仿鲸探数藏盲盒合成短视频卡牌模式支持高并发,是一种结合了Java技术、深色用户界面(UI)设计、数字藏品概念、盲盒合成玩法以及短视频卡牌模式的综合性应用。该模式旨在为用户提供一种新颖、有趣的数字藏品体验&#xff0…

深度学习pytorch实战第P3周--实现天气识别

>- **🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **🍖 原作者:[K同学啊](https://mtyjkh.blog.csdn.net/)** 引言 1.复习上周 深度学习pytorch实战-第…

算法-反转单向链表

需求 思路 链表必有节点&#xff0c;节点两要素&#xff1a;当前元素值&#xff0c;下一个节点地址 import java.util.Scanner;// 定义一个单向链表 public class MyLinkedList<E> {int size 0;// 顶一个私有的内部类&#xff0c;表示链表的节点public class Node {E da…

pyinstaller后打开qt的exe报错Available platform

具体弹窗&#xff1a; 处理&#xff1a; 添加临时的环境变量&#xff1a; cd dir && set QT_PLUGIN_PATH.\platforms && XXX.exe

【JAVA基础篇教学】第十三篇:Java中I/O和文件操作

博主打算从0-1讲解下java基础教学&#xff0c;今天教学第十三篇&#xff1a;Java中I/O和文件操作。 理解 Java 中的 I/O&#xff08;输入/输出&#xff09;和文件操作对于开发各种类型的应用程序都至关重要。I/O 操作涉及从文件、网络或其他数据源中读取数据&#xff0c;以及…