电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 955 人浏览分享

新型Coinminer家族挖矿rootkit"77oracle"病毒分析

[复制链接]
955 0
病毒首次出现在2021年12月,但因为种种原因一直到现在才能够整理成文,希望能给大家一些参考。

0X00 异常现象确认

安全态势感知平台告警 受害服务器连接矿池服务器的703端口进行挖矿。但诡异之处在于 经过确认
这些矿池服务器均为内网地址。

QQ截图20220707142909.png

但查看报文,的确是挖矿程序运行的情况。

QQ截图20220707143019.png

至此确认该主机存在挖矿行为。

此外,我们首先发现出现异常的主机还存在通过757端口爆破其他主机的敏感文件的流量:

66699.png

也就是说,被这种挖矿病毒感染的主机还存在僵尸网络的行为。

0x01 异常现象分析

我们登录主机查看CPU占用,如下图所示:

66698.png

虽然没有明显反常现象,但应急还是万变不离其宗。我们先使用杀毒软件过一下这台主机查看是否存在恶意文件
很快,我们发现了一个位于C:\Program Files\Oracle下,名为$77_oracle.exe的隐藏文件。

66697.png

在Oracle目录下,还存在一系列其他的隐藏文件,包括设置、日志、可执行文件等:

66696.png

66695.png

查看网络状态,757、708端口均被打开,并且有外联迹象,且同一进程中还有本地任意端口连接其他受害主机的757
708端口进行通讯的迹象,而pid=0的系统空闲进程,外联的正是703。

66694.png

66693.png

该外联PID对应的进程为svchost.exe,说明此时正常的svchost进程已经被注入。

66691.png

此外,我们还发现存在一个机器中新增账户adm:

66690.png

该账号新增时间与平台告警时间吻合,由此推断,该账号是受病毒所影响而创建的恶意账号。

0X02 静态文件

首先我们对该目录下的隐藏静态文件进行简单的分析。

9989.png

直接访问该目录,显示为空,尝试了各类常见隐藏查看文件方法如取消隐藏属性、服务级别隐藏等等均无果
于是我们只能通过命令行查看文件详情。

日志文件

隐藏文件夹中包含的日志文件共有四个:加载日志Loader.log、服务日志Service.log、安装日志$77_ExecuteOra
cle.InstallLog、安装日志ExecuteOracle.InstallLog。
其中$77_ExecuteOracle.InstallLog和ExecuteOracle.InstallLog内容相同
都是恶意软件的安装情况。

9988.png

重要的日志在加载日志Loader.log中。

命令:type [文件名]或者more [文件名]

9987.png

这份日志只有当天病毒的运行状况,我们发现大量的ColorG、ColorM字样有关这一点的分析会在下文提到。
目前网络上暂无关于该类服务的公开情报,但我们查看另一隐藏文件Service.log可以发现该服务一直
在启动并且会定期进行检查。

9986.png

在Loader.log中我们还可以看到一个样本运行的步骤大致是这样的:

设定目标服务器(5.133.65.53)
找到代理服务器文件这里我们可以看到不止XX/oracle一处下存在恶意文件,该恶意文件在机器中存在备份
尝试直接连接外网矿池,通过https和http检测外网矿池连通性
检查工作状态
检查对应端口(757、708、703)的潜在服务器,并记录数量
清除痕迹和日志
添加要隐藏的自定义文件
添加用户
添加防火墙规则
检查矿池并添加代理
通过代理检查病毒更新,检查本地版本和服务器版本
打开999端口
设定下一次更新时间

配置文件

该挖矿程序中涉及的配置文件包括config.json、$77_ExecuteOracle.exe.config两个文件。

其中$77_ExecuteOracle.exe.config包括了对运行程序的环境的配置,以及对注册表项的设定。

831.png

config.json则更加复杂,包括了挖矿地址池的配置等。config.json文件大小与内网大
小成正比这一点后文会有解释主要分为几个部分:

api:分为id号和worker-id,推测需要自行配置、或者由总控端自动生成。

830.png

网络连接配置,包括http、tls、dns,以及他们的相关配置,比如加密方式、证书等等:

829.png

828.png

826.png

其他初始化设置,包括自动保存、背景配置、重传次数等等。

822.png

821.png

820.png

日志组件和配置级别:

819.png

本机相关信息,主要为挖矿相关的cpu配置:

818.png

本机相关的矿池配置,也是这份文件中占比最大的数据:

816.png

为什么强调本机“相关”呢?因为这里指的是本机所能连接到、记录到的矿池主机,或者说是本机在层层代理出网最终连接到
真正的矿池地址的一份记录,上图所示为2段主机,除2段外还包括了10段、172段各10台左右的主机记录,pool的最后一部
分记录的是外网矿池的配置,如下图所示,包括了外网矿池的地址、算法地址等信息。

815.png

间谍文件

在本节开头的文件截图中,我们看到存在netpass.exe、netpass.cfg,其中netpass是常用于
读取本地明文rdp密码的软件(图源网络)。

210.png

dll文件

api-ms-win-core-console-l2-2-0.dll中记录了所有潜在代理主机,总数超过100台。其中横跨多个网段前一部分
为内网主机,最后一部分为外网主机,根据。这些潜在代理主机中一部分已经失陷,而另一部分状态未知。

209.png

可执行文件

Oracle文件夹中与病毒相关的可执行文件有$77_Loader.exe、$77_Oracle.exe、$77_Install.exe、$77_Install.exe
$77_ExecuteOracle.exe。这一节先对它们进行一个初步的静态分析。
$77_Loader.exe文件存在基础的代码保护,属于加载器。

208.png

字符串易读,没有经过混淆。

206.png

$77_Oracle.exe文件最大,功能最多。

205.png

该文件同样未混淆,从字符串中我们可以得知其调用有用于通信的加密算法,还有证书生成字段:

203.png

除此之外还存在服务创建等行为:

202.png

总结

前面对于日志文件Loader.log的文件分析中我们发现,病毒会尝试直接连接外网矿池,并且探测是否有可用的代理服务器
因此,我们可以假设内网中的病毒传播链为:A主机通过某种方式感染病毒,但挖矿病毒发现无法连通外网目标服务器因
此在内网中探测开放可代理端口(703等)的主机,并且将之作为矿池服务器,读取账号密码并且进行一系列进程注入文
件隐藏等操作;而在config.json中我们看到其中添加了许多矿池服务器,勾勒出了一条从内网到外网的路径。在成功连
接公网矿池之后,再下发命令,并且反向让从外网到内网的失陷主机都加入挖矿的行列。

201.png

0X03 进程分析

如果说上一节的静态文件分析是根据Oracle文件夹下的文件由点及面、根据文件的信息分析出该挖矿软件在内
网中的攻击图谱的话,那么进程分析就是继续深挖该病毒在单节点主机上执行的恶意操作。上一节中的可执行
文件也与进程分析有莫大的联系。

但是需要注意的是,这里的进程分析是以事件发生过后的时间段进行的,希望能够还原一个实战应急分析情景。

svchost.exe 进程

根据第一节中的外联痕迹,我们找到了svchost.exe进程。

200.png

其CPU占用率非常之低,难道这意味着它并非挖矿主进程?但是通过前面的各类文件隐藏技术,我们可以猜测这是一
款挖矿rootkit,也就是说,它可以通过设置隐藏的进程PID为0的方式来隐藏真正的挖矿进程,这有可能是PID=0的进
程上CPU占用率最高的原因之一。

199.png

通过读取内存字符串,我们发现它的主要行为有:

运行隐藏进程$77_Loader.exe。

198.png

下载Linux挖矿脚本

http://5.133.65.53/soft/linux/somescript

197.png

查询下载这个脚本的IP,涉及恶意行为:

196.png

根据此前的信息,推测其属于Coinminer家族。
但由于这是个linux脚本,而主机大多数为windows服务器,在态势感知平台我们并没有看到大量的外
联记录更多的矿池地址集中在未能监控的内网区域。
与这个进程相关联的还有一些注册表事件:

189.png

由此我们可以定位该病毒新增的注册表目录之一为HKEY_LOCAL_MACHINE\SOFTWARE\$77config\
并且覆盖掉正常目录。

$77_Loader.exe 进程

该进程为隐藏进程,我们借助火绒剑对它进行分析

188.png

$77_Loader.exe也由一个已结束的父进程唤醒。

186.png

这个任务组的主要行为即为横向连接内网段主机的703、708、757端口这一部分验证了静态文件分析的结果。

182.png

此外,这个加载器还创建了loader.log、config.xml等文件

181.png

查看子进程conhost.exe内存字符串,我们发现其中有明显的挖矿运行行为和挖矿日志记录行为。

180.png

169.png

$77_oracle.exe进程

进程的映像名被修改和Oracle相关,具有一定的迷惑性

168.png

根据内存字符串分析,该程序运行XMRig挖矿程序,挖矿程序版本号即为程序本身版本号启动$77_Loader.exe

166.png

根据获取到的哈希值,我们找到了一份比较详细的沙箱分析报告,其中内容相当丰富这里以手工
分析为主,就不再赘述,以供参考。

除了以上三个可执行文件之外,$77_ExecuteOracle.exe还有服务隐藏的行为:

39.png

0X04 处置思路

隔离C:\Program Files\Oracle\$77_Loader.exe、$77_Oracle.exe文件如果是没有安装Java
相关环境的主机,建议隔离C:\Program Files\Oracle文件夹。
如果没有在703、708、757端口运行程序,建议封禁该类端口。
结束svchost.exe、$77_Loader.exe、$77_oracle.exe等进程。
停止隐藏服务$77_ExecuteOracle.exe。
删除账户adm。
恢复注册表修改项。
处置完毕后,757等端口无外联进程。

0X05 旁枝斜逸:Linux脚本文件

前面分析的都是失陷主机,一台windows服务器的主机中留存的恶意文件。

在分析过程中,我们还发现了C:\Program files下留存的一个奇怪的somescriptbash脚本文件。

代码分析

somescript设定成在Linux环境下执行,第一步会修改域名服务器为8.8.8.8。

38.png

下载nc、wget、xinetd等软件包,这里的语句兼顾了不同类型的Linux发行版。

36.png

设置IP,在warmup文件夹下均为该挖矿程序的准备文件。

33.png

向/etc/init.d/modules写入文件,该文件中包含连接外网、服务隐藏、加密方式、自启动等配置:

31.png

例如下图中,启动维持,将进程添加到/bin/plymouth中

30.png

扫描708端口,如果发现有没在矿池中的IP就将它加入矿池文件中。

11.png

过nc反向连接708端口并写入文件。

10.png

假如已经下载到somescript文件,就将存有这个脚本的somescript写入目录:

9.png

这个以颜色首字母大写为命名的特征我们在第二节的日志分析中见过类似的ColorG基本可以确定两程序作者为同一人。

将703端口写入iptables

8.png

如果不能直接下载,就把找到的其他主机加入代理中,并且从中下载恶意文件:

7.png

接下来恶意程序会检查热身文件,如果没有热身文件就从互联网或者从内网其他主机下载:

6.png

写入配置,这部分配置和windows下的配置文件基本一致,不再赘述:

5.png

探测系统版本,若为windows或者mac就进行其他操作

4.png

在文件资源管理器同样无法查看该文件,更新时间在挖矿病毒运行前数分钟。

以下是somescript文件和其他文件的关系图谱:

3.png

深入挖掘

相比于其他windows文件,这份linux脚本可以称之为简单易懂、路线清晰,可以很好的帮助我们分析恶意软件运行思路
而笔者在溯源的过程中,发现$77oracle的特征与r77rootkit格外接近!这是一个强大的ring3层rootkit,开源,且在持
续开发中。相关分析文章很多,并且开发者的博客有一个详细的开发文档可以供参考,这里不再赘述。

根据前面的分析结果,在这个目录下拼接任意文件名即可以下载分析样本,本次的内网大型挖矿rootkit感染事件很有
可能是正是由于某台主机下载了破解软件所导致的。从这个事件中,我们也可以看出,rootkit在恶意软件对抗中必将
有着越来越重要的地位。

http://msupdate.info/Oracle/

2.png

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.