新型远控—基于Web管理界面Manjusaka的分析
发布时间 · 2022-10-28
作者:H0e4a0r1t
一:Manjusaka简介
Cisco Talos的研究人员最近发现了一款来自中国、相对较新的攻击框架“Manjusaka”(中文翻译为“牛屎花”),并且已经在野使用。作为防御者,重要的是要跟踪进攻性框架,如Cobalt Strike和silver,以便企业可以有效地防御使用这些工具的攻击。研究始于一份恶意的Microsoft Word钓鱼文档(maldoc),这份文件在2022年6月下半月创建,以青海省海西蒙古藏族自治州最大的城市之一格尔木市的新冠肺炎疫情作为诱饵,其中包含有Cobalt Strike (CS) Beacon。在调查maldoc感染链时,研究者发现了一个用于检测Manjusaka感染的载荷,它与CS Beacon连接的IP地址相同。这个植入程序是用Rust语言编写的,并找到了适用于Windows和Linux的示例,Windows植入程序包括测试样本,这些样本的C2地址均为内网私有地址。此外,研究者还在GitHub上发现了Manjusaka——一个用GoLang编写的功能齐全的C2 ELF二进制文件,带有简体中文用户界面,并且开发人员宣传它是一个类似于Cobalt Strike或Sliver的植入框架。
开发人员提供了Manjusaka框架的系统架构,说明了不同组件之间的通信。这些组件中的许多尚未在开源的C2二进制文件中实现。因此很可能该框架还在开发中,部分功能暂未实现,亦或是开发人员打算或已经通过购买服务/工具来提供这些功能,而开源的C2只是测试版本。
二:Manjusaka系统架构
Manjusaka是用GoLang写的ELF文件,而植入程序是用Rust编写的,包含各种功能,可用于控制受感染的端,包括执行任意命令等。我们发现了植入EXE和ELF版本。满足这些平台的两组样本包含几乎相同的RAT功能和通信机制。
通信
该示例向内网地址http://172.16.199.3/global/favicon.png发出HTTP 请求,该地址包含固定会话cookie,而不是由服务器定义的。
HTTP请求中的会话cookie是base64编码的,包含二进制数据的压缩副本,表示随机字节和系统初始信息的组合,用于向C2识别并注册受感染端。下图显示了用于生成这样一个会话cookie的信息。
在压缩并编码到base64之前,cookie上的信息按下面所述的方式排列。20个随机生成的字节.本地IP地址.用户名.主机名.系统.PID这种通信遵循一种常规的通信模式,植入体会向一个URL发出请求,在这种情况下,URL是'/global/favicon.png',如下图所示。
即使是一个HTTP的GET请求,它也会发送两个字节0x191a。返回由五个字节0x1a1a6e0429组成。如果没有提供会话cookie,服务器将返回302状态码,重定向到http://micsoft.com。
载荷的功能
该植入程序包含大量远程访问木马(RAT)功能,其中包括一些标准功能和一个专用的文件管理模块。
植入程序可以根据从C2服务器收到的请求和数据在受感染的端上执行以下功能:
-
-
3.使用“SELECT * from MSAcpi_ThermalZoneTemperature”从WMI读取当前和临界温度。5.进程和系统时间:用户时间、退出时间、创建时间、内核时间。7.磁盘和驱动器信息:卷序列号、名称、根路径名和磁盘可用空间。
-
激活文件管理模块以执行与文件相关的活动。
载荷的文件管理功能包括:
-
-
-
-
-
-
在两个位置之间移动文件,将文件复制到新位置并删除旧副本。
-
ELF变种的功能集与Windows变种的功能集几乎相同。然而,ELF变种中缺少两个关键功能:从基于chrome的浏览器收集凭证和获取Wi-Fi登录凭证的能力。
就像 Windows 版本一样,ELF 变种也从客户端收集各种系统特定的信息:
-
全局系统信息,例如页面大小、当前时间、主机名、系统版本、机器 ID 等。
-
/proc/meminfo 中的系统内存信息,包括缓存内存大小、可用内存和总内存、交换内存大小和 Slab 内存大小。
-
/proc/uptime的系统正常运行时间:系统正常运行时间和内核空闲时间。
-
/proc/os-release和lsb-release中的操作系统标识信息。
-
/proc/stat 的内核活动信息。
-
/proc/cpuinfo和/sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq中的 CPU 信息。
-
/sys/class/hwmon和/sys/class/thermal/thermal_zone*/temp中的温度信息。
-
/sys/class/net中的网络接口信息和统计信息。
-
设备挂载和文件系统信息。SCSI设备信息。
-
两个版本都包含功能相同的文件管理模块,专门用于管理受感染系统上的文件和目录。EXE 与 ELF 版本的植入程序,包含功能等效的文件管理模块。
GitHub 上的https://github.com/YDHCUI/manjusaka存在C2服务器二进制文件的副本。
它可以监控和管理受感染的端点,并可以为 Windows 和 Linux 生成相应的Payload。而生成的Payload就是前面所描述的 Rust载荷。
C2 服务器和管理面板主要构建在Gin Web框架,该框架用于管理和向基于 Rust的载荷发出命令。
填写选项后,会按照以下格式向 C2 发出请求生成载荷:
然后C2服务器将配置好的选项生成rust的载荷。C2使用packr将未配置的基于rust的植入存储在C2二进制文件中,该二进制文件由单个打包的C2二进制文件组成,且没有任何外部依赖。C2将打开基于GoLang的C2二进制文件中的一个虚拟文件夹,它由位于“plugins/npc.exe”位置的虚拟Rust载荷组成。这个可执行文件是Rust植入程序的预构版本,然后由C2服务器根据通过Web UI输入的C2信息进行修改。Rust植入包含C2 IP/域的占位符以及以重复特殊字符“$”和“*”形式的扩展 URL。如,载荷中 C2 IP/Domain 的占位符为(十六进制):24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 2433 39 2E 31 30 34 2E 39 30 2E 34 35 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24
然后将修改后的二进制文件提供下载,以响应前面的HTTP GET请求。
三:总结
Manjusaka 攻击框架的可用性表明了APT组织广泛使用的攻击技术的流行程度。这个新的攻击框架包含攻击者期望从RAT中获得的大部分功能,且它是用最现代和可移植的编程语言编写的。该框架的开发人员可以轻松地集成新的操作系统平台,如MacOS X或其他在嵌入式设备上运行的Linux版本。开发人员提供了 C2的全功能版本,增加了攻击者更多选择。
https://blog.talosintelligence.com/2022/08/manjusaka-offensive-framework.html