一、概述
2024年8月1日,天穹沙箱分析人员在例行巡检样本分析报告时,注意到一个名为“top”的elf样本,这个样本是x86架构的32位elf程序,使用变形UPX加壳躲避杀软检测。经分析,这是来自Xnote家族的一个新型变种,主要是感染系统文件、连接C2以及启动反弹shell等。根据样本文件多处使用到FZX字符串,将其命名为FZX变种。进一步筛查线上样本发现该变种目前还在不断迭代,已出现多个同类型样本,本次我们跟随天穹沙箱分析报告做一个简单介绍。
Xnote家族是由Dr.WEB于2015年5月发现,之后出现多个变种,如:HELLOBOT、TOBOXHELL、PATPOOTY、REKOOBE等。虽然不同变种的代码结构有很大变化,但主体框架是一致的:加密配置数据、感染/etc/init.d/目录下以“!#/bin/bash”字符串开头的脚本、连接控制服务器、反弹shell等。
二、样本基本信息
三、样本分析
天穹沙箱动态分析该样本后,捕捉到以下关键行为:
沙箱报告的行为逻辑关系图展示了样本的执行流程和关键恶意行为,如图1所示,图中标注为 Pid:2728
的进程为样本进程。
由图中展示的进程文件关系可知,样本主进程 Pid:2728
从自身释放了一个恶意程序到 /usr/sbin/crond
,替换了系统原始crond文件,并给释放文件添加可执行属性,如图2所示。
在报告的分析衍生物部分标注了释放的crond程序疑似为样本变种,如图3所示。经二进制分析工具对比,样本本身与释放文件的末尾0xb6字节的数据完全一致,如图4所示。通过动态调试和内存数据提取双重验证,该数据为样本硬编码到自身的默认配置文件数据。
样本运行初期,调用解密函数将硬编码到自身文件中的默认配置文件数据解密到内存中。借助于天穹沙箱的自动脱壳工具,使用IDA查看脱壳后的文件,如图5所示。样本将读取文件位置调整到自身文件流末尾倒数4字节处,读取末尾4字节内容作为配置文件长度,根据长度数据继续调整读取文件位置到文件末尾倒数(4+配置文件长度)的位置,读取加密配置文件数据到内存缓冲区中。接下来使用密钥“6hqsblum7cno1cyf”对缓冲区中的数据进行解密。
解密后的配置文件数据如下:
[crond]
auto_start=0
close_iptable=0
dns=114.114.114.114
host0=175.178.106.9:53
lock_fd = -1
lock_file=/bin/sh
mon_interval=15
plugin_dir=/usr/local
protocol=2
retry_interval=15
在解密配置文件数据后,样本将根据配置文件内容执行恶意操作,同时再将解密后的配置文件数据加密处理后追加到释放文件crond末尾,如图6所示。由于样本的解密数据存储在内存中,报告中的敏感字符串记录了沙箱动态分析过程中内存数据提取结果,可输入关键词或选择特定类型查找相关数据信息,如图7所示。天穹沙箱支持详细数据下载,可点击“内存字符串文件下载”下载原始内存提取结果进行查看。
随后,样本主进程 Pid:2728
Fork出两个子进程 Pid:2738
和 Pid:2741
,其中子进程 Pid:2741
通过修改自身进程名为”crond”伪装成系统进程,如图8所示。接着向C2发起连接,如图9所示。最后该子进程启动反弹shell,执行攻击者发送的shell命令,如图10所示。
样本子进程 Pid:2738
执行释放文件“/usr/sbin/crond”,crond进程修改自身的uid和gid为root,以获取更高的系统权限,如图11所示。
除上述动态分析行为外,样本还包含其他恶意行为,依赖于启动参数设置、配置文件内容和远程指令下发触发相应行为。
配置文件内容项主要关联了以下恶意行为:
1)设置自启动
根据配置文件内容项 auto_start=
的具体值设置自启动。当设置值为1时,样本遍历/etc/init.d/目录下的文件内容,匹配文件头部数据为 #!/bin/sh
、 #!/bin/bash
、 #! /bin/bash
或 #! /bin/sh
的任一形式,匹配成功后就在文件尾部追加自启动代码,如图12、13所示。
2)关闭防火墙
根据配置文件内容项 close_iptable=
的具体值执行关闭防火墙行为,清空所有防火墙规则,如图14所示。
3)设置插件
根据配置文件内容项 plugin_dir=
的具体值设置插件存放目录。样本在接收到C2发送的插件数据后存放到指定目录,由上述解密后的配置文件数据可知,该样本设置的插件存放目录为/usr/local。样本执行插件功能时支持参数设置,如图15所示,具体参数功能见下表:
参数 | 说明 |
---|---|
Help | 显示插件支持的命令 |
List | 列举已经安装的插件 |
Del | 删除插件 |
Load | 加载运行插件 |
4)设置通信协议
根据配置文件内容项 protocol=
的具体值选择通信协议。当设置值为0时,使用UDP协议通信,值为1时使用TCP协议通信,值为2时根据UDP通信结果动态切换TCP,如图16所示。天穹沙箱捕捉到的多个同类型变种样本的网络流量验证了这一结果,如图17、18所示。
其他恶意行为:
窃取信息
样本提取受害者的系统信息后发送给C2,包括机器名、cpu信息、内存大小等数据,如图19所示。
设置代理
攻击者通过发送C2指令调整代理配置,如图20所示。
以下表格总结了攻击者向被控端发送的指令及其功能:
功能 | 说明 |
---|---|
7CFZXasK | 获取系统信息 |
8CManager | 管理进程 |
9FZXConfig | 配置文件 |
9CFileTask | 文件读写任务 |
11CPluginTask | 运行插件任务,自删除 |
11ProxyFZXasK | 执行代理任务 |
12CPortMapTask | 执行端口映射扫描 |
12ShellyFZXasK | 执行脚本 |
12FZXcketlient | 未知 |
12FZXClientUdp | 执行UDP通信 |
12AutoStartFZX | 安装自启动 |
四、IOC
a99824165604f2cc0a9bb81b6fc19550 crond
b1aee13e168021db54faa0666fe4ca82 top.386-32.elf
9f632279eec2a96f380b8355ee844cee top.386-32.elf
e849f53e605614c58b065fea93f7cdc8 eeee.386-32.elf
9de48713ed73aad20cff0025b5f557f6 45.386-32.elf
ee6a8234f6fe62f0d35b518f83d35364 server.386-32.elf
175.178.106.9[:]53 C2地址
五、技术支持与反馈
星图实验室深耕沙箱分析技术多年,致力于让沙箱更好用、更智能。做地表最强的动态分析沙箱,为每个样本分析人员提供便捷易用的分析工具,始终是我们最求的目标。各位同学在使用过程中有任何问题,欢迎联系我们。
星图实验室隶属于奇安信技术研究院,专注于软件与系统安全的核心技术研究与系统平台研发,对外输出“天穹”软件动态分析沙箱、“天问”软件供应链分析平台、“天象”软件漏洞挖掘系统等核心能力和工具系统。
我们目前正在招聘,工作地点覆盖北京、南京、成都等城市,详情请参见: