海莲花活跃木马KSRAT加密通信分析

2024-08-21 15:28

本文主要是介绍海莲花活跃木马KSRAT加密通信分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.概述

自2023年8月至今,海莲花组织多次利用KSRAT远控木马对我国发起攻击。KSRAT通过HTTP协议与C&C服务器进行通信,每个样本都使用了不同的URL。其心跳包采用XOR算法进行加密,而控制指令包和数据回传包则使用了XOR以及“XOR+AES-128-CBC”组合的加密方法。这种对不同类型的数据采用不同加密方式的策略,使得心跳包的解密方法无法完全应用于其他数据,从而有效延缓了安全人员对其具体攻击操作的分析。为了隐藏通信特征,KSRAT在心跳包中填充了随机生成的数据,使得载荷长度随机变化,但其并未更改XOR密钥和数据结构,导致心跳包请求体中的特征仍然显著,可直接通过特征值进行检测。

2.执行过程

样本执行后,会先在内存中XOR解密出shellcode和dll文件,shellcode负责调用dll的导出函数,函数参数为加密的配置文件,配置文件中包含了C2地址、请求头信息、心跳时间间隔等信息。样本使用HTTP协议与服务器进行通信,通信URL为“http://38.180.94.8/public/home/images/2024/yawwjs.jpg”。

图 2‑1 KSRAT执行过程

图 2‑2 解密后的参数信息

3.通信分析

3.1心跳包

样本执行后,使用HTTP协议与服务器进行通信,每隔30秒左右向服务器发送心跳包,心跳包构造为“8字节通信标识符+13字节固定数据+8字节随机数据长度+随机数据+9字节固定数据”。心跳包中的数据通过XOR算法进行加密,密钥为“p@sswor!kS@mk$y”。

图 3‑1 KSRAT心跳包

图 3‑2 心跳包数据结构

图 3‑3 解密后的心跳包

3.2控制指令包

当攻击者想要对受害机进行操作时,会通过心跳包的响应体向样本下发控制指令。控制指令按照加密方式可以分为两种,一种使用XOR算法进行加密,另一种使用“XOR+AES”组合算法进行加密。

攻击者下发“上传系统信息”、“上传进程ID”等指令时使用XOR算法加密,密钥为“p@sswor!kS@mk$y”。XOR算法加密的指令包由“8字节通信标识符+8字节固定数据+4字节控制指令+1字节数据+8字节随机数据长度+随机数据+9字节固定数据”组成。

图 3‑4 控制指令-上传系统信息

图 3‑5 xor加密控制指令包数据结构

图 3‑6 上传系统信息指令0x03

图 3‑7 上传进程ID指令0x14

攻击者下发“执行CMD命令”指令时,使用“XOR+AES”组合算法对控制指令包进行加密,XOR密钥“p@sswor!kS@mk$y”,AES密钥和IV为“AF744438F8996F07543623C6E426E29C”。该指令包由“8字节通信标识符+4字节控制指令+8字节参数长度+参数+8字节随机数据长度+随机数据+9字节固定数据”组成。

图 3‑8 下发指令

图 3‑9 “XOR+AES”加密的控制指令包结构

图 3‑10 解密后的CMD指令“tasklist”

3.3数据回传包

回传给服务器的数据也使用了两种方式进行加密。接收到控制指令0x3后,样本会XOR加密回传系统信息。接收到控制指令0x14和0x4后,样本会使用“XOR+AES”组合算法加密回传数据。

图 3‑11 上传系统信息

图 3‑12 XOR解密后的系统信息

接收到控制指令0x14,样本使用“XOR+AES”组合算法加密回传进程ID。

图 3‑13 上传的加密数据

图 3‑14 解密后的进程ID 0x0B40

接收到控制指令0x4后,样本提取出参数“tasklist”,执行后将进程列表使用“XOR+AES”组合算法加密后回传给服务器。

图 3‑15 加密的上传数据与解密后的进程列表

4.产品检测

玖鼎软件科技-加密威胁智能检测系统能够对海莲花KSRAT进行有效检出。

加密威胁智能检测系统检测结果

5.总结

近年来,越来越多的APT组织开始使用Go、Rust、Nim和DLang等编程语言开发攻击工具,这些语言本身具有一定的混淆效果,能够有效规避杀软检测并阻碍安全分析工作。海莲花组织采用Rust语言实现KSRAT远控木马,并去除了样本中AES加密算法的特征,显著降低了研究人员的分析速度。KSRAT在通信上别具匠心,每个样本使用了不同的URL,并且在URL中掺杂了随机字符,以避免流量检测系统通过URL识别其恶意流量。然而,自2023年至今,KSRAT并未改变其心跳包的XOR密钥和数据结构。尽管心跳包长度因随机数据填充而变化,但由于固定数据和固定密钥的存在,使得心跳包请求体中的特征依然明显,可通过特征值直接检测。未来,海莲花可能会更新其XOR密钥来隐藏其心跳包特征,规避流量检测。玖鼎软件科技安全研究团队将持续关注并更新其检测策略,以有效应对这一网络威胁。

这篇关于海莲花活跃木马KSRAT加密通信分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1093546

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

java 恺撒加密/解密实现原理(附带源码)

《java恺撒加密/解密实现原理(附带源码)》本文介绍Java实现恺撒加密与解密,通过固定位移量对字母进行循环替换,保留大小写及非字母字符,由于其实现简单、易于理解,恺撒加密常被用作学习加密算法的入... 目录Java 恺撒加密/解密实现1. 项目背景与介绍2. 相关知识2.1 恺撒加密算法原理2.2 Ja

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、