开发人员提供了Manjusaka框架的系统架构,说明了不同组件之间的通信。这些组件中的许多尚未在开源的C2二进制文件中实现。因此很可能该框架还在开发中,部分功能暂未实现,亦或是开发人员打算或已经通过购买服务/工具来提供这些功能,而开源的C2只是测试版本。
二:Manjusaka系统架构
通信
HTTP请求中的会话cookie是base64编码的,包含二进制数据的压缩副本,表示随机字节和系统初始信息的组合,用于向C2识别并注册受感染端。下图显示了用于生成这样一个会话cookie的信息。
载荷的功能
植入程序可以根据从C2服务器收到的请求和数据在受感染的端上执行以下功能:
-
执行任意命令:植入程序可以使用“cmd.exe /c”在系统上运行任意命令。
-
获取指定文件的文件信息:创建和最后写入时间、大小、卷序列号和文件索引。 -
获取有关系统上建立的当前网络连接(TCP和UDP)信息,包括本地网络地址、远程地址和所属的进程ID(PID)。 -
收集浏览器凭据:针对基于chrome的浏览器使用查询:SELECT signon_realm, username_value, password_value FROM logins;针对浏览器:谷歌Chrome, Chrome Beta, Microsoft Edge, 360,QQ浏览器等。 -
使用命令netsh wlan show profile key=clear收集Wi-Fi SSID信息以及密码。
-
获取Premiumsoft Navicat凭据:Navicat是一个图形化的数据库管理工具,可以连接到各种数据库类型,例如 MySQL、Mongo、Oracle、SQLite、PostgreSQL 等。植入程序会枚举每个配置数据库的服务器上已安装软件的注册表项,并获取端口、用户名及密码的值。
-
截取当前桌面的屏幕截图。 -
从终端获取全面的系统信息,包括: 1.系统内存信息。 2.处理器信息。 3.使用“SELECT * from MSAcpi_ThermalZoneTemperature”从WMI读取当前和临界温度。 4.与系统相连的网络接口信息:名称。 6.处理模块名称。 7.磁盘和驱动器信息:卷序列号、名称、根路径名和磁盘可用空间。 8.网络账户名称、本地组。 9.Windows 版本号和主要版本号。 -
激活文件管理模块以执行与文件相关的活动。
载荷的文件管理功能包括:
-
文件枚举:列出磁盘上指定位置的文件。 -
在文件系统上创建目录。 -
获取并设置当前工作目录。 -
获取文件的完整路径。 -
删除磁盘上的文件和目录。 -
在两个位置之间移动文件,将文件复制到新位置并删除旧副本。 -
从文件中读取和写入数据。
就像 Windows 版本一样,ELF 变种也从客户端收集各种系统特定的信息:
-
全局系统信息,例如页面大小、当前时间、主机名、系统版本、机器 ID 等。
-
/proc/meminfo 中的系统内存信息,包括缓存内存大小、可用内存和总内存、交换内存大小和 Slab 内存大小。
-
/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设备信息。
-
/etc/passwd中的帐户信息和用户组列表。
GitHub 上的https://github.com/YDHCUI/manjusaka存在C2服务器二进制文件的副本。
它可以监控和管理受感染的端点,并可以为 Windows 和 Linux 生成相应的Payload。而生成的Payload就是前面所描述的 Rust载荷。
C2 服务器和管理面板主要构建在Gin Web框架,该框架用于管理和向基于 Rust的载荷发出命令。
填写选项后,会按照以下格式向 C2 发出请求生成载荷:
然后将修改后的二进制文件提供下载,以响应前面的HTTP GET请求。
三:总结
Manjusaka 攻击框架的可用性表明了APT组织广泛使用的攻击技术的流行程度。这个新的攻击框架包含攻击者期望从RAT中获得的大部分功能,且它是用最现代和可移植的编程语言编写的。该框架的开发人员可以轻松地集成新的操作系统平台,如MacOS X或其他在嵌入式设备上运行的Linux版本。开发人员提供了 C2的全功能版本,增加了攻击者更多选择。