挖矿木马分析

 

1、样本信息

基本信息:

header 1 header 2
样本名称 c6340ddc9b20b7bb5380fbd9217170262a2f4691920abb67b4fdc71422769033 2
样本类型 Bourne-Again shell script, ASCII text executable
样本大小 5548
MD5 1f6554f2559d83ace7f0af82d32beb72
SHA1 4c8d696dccd17b9c676ff2753c72d20e49014f4f
SHA256 c6340ddc9b20b7bb5380fbd9217170262a2f4691920abb67b4fdc71422769033
SSDeep 96:9LUgPYWtczle3X99QI6QwPEqU9tSAsTih1SS:9IgPYWtczY3X99QI6QwPEqU9tSAsTihb
样本功能:

利用Bosss反序列化命令执行漏洞、Couchdb的组合漏洞、Redis、Hadoop未授权访问漏洞等入侵互联网中的服务器并植入该木马,运行脚本后,下载挖矿程序,进行恶意挖矿,该挖矿样本疑似来源于8220挖矿团伙。

 

2、sh样本分析

该恶意文件实际为一bash脚本,该bash脚本主要实现如下功能:

  1. 结束当前主机正在运行的其他已知挖矿程序并删除,已知挖矿程序的文件名如pscf、ntpd、ntp、qq、qq1、aa等。

备注:上面的一些命令是对受害主机的进程进行查看,并清理同类挖矿木马,对我们应急来说,也可以利用上述命令进行木马清理。此处以ps ax | grep java.conf | grep bin | awk ‘{print $1}’ | xargs kill -9这条指令为例子,|管道符标识上一条指令的输出用于下调指令的参数,grep命令,grep aa查找含有aa的字段,grep -v aa,反之查找不含aa的信息。所以上面这条语句实际先执行ps aux,在在结果中查找java.conf,再从筛选的结果中查找带有bin的进程,最终kill相关进程。

2.通过比对md5的方式,判断主机上是否存在挖矿木马,从代码分析来看,挖矿木马被隐藏在tmp目录下并且名字为java

备注:

脚本先判断tmp/java是否存在,如果存在则判断文件是否具有可写权限且文件不是目录,如果满足上述两个条件,在利用md5sum计算md5值,与恶意文件的mud5值进行比对,如果比对正确输出“java ok”,表明tmp/java为恶意文件以便下一步进行调用。

如果不满足条件则会创建相关目录

shell脚本if变量具体解析如下

3.判断系统支持哪种下载方法,采用wget或curl发起下载链接请求

4.在确定系统不存在恶意文件后,downloadIfNeed函数调用download、download2函数进行下载,函数内容依次如下

访问下载url地址:https://raw.githubusercontent.com/ffazop1/mygit/master/x_64
5.判断cpu使用率,结束cpu使用率大于%30的进程

备注:158.69.133.20、192.99.142.249、202.144.193.110这几个地址应该都是挖矿相关的恶意脚本,判断这个几个连接的cpu使用率当大于30%会结束相关进程,感觉挖矿木马还是挺聪明的。

6.开始挖矿

备注:通过前期一些列准备工作,现在挖矿木马已经具备,先是判断java进程是否存在,如果不存在则通过https://raw.githubusercontent.com/ffazop1/mygit/master/w.conf下载配置文件,使用nohup命令后台执行挖矿,并且在挖矿开始会删除该配置文件。

7.添加定时任务

备注:将cr.sh下载地址为任务计划,同时还会删除其他恶意文件的定时任务<br />通过对执行脚本分析发现,程序会下载md5分别是7f4d9a672bb7ff27f641d29b99ecb08a、b00f4bbd82d2f5ec7c8152625684f853的挖矿程序,该挖矿一个为32位一个为64位,挖矿木马均是基于XMRig进行了修改,且内置了一个钱包地址,该地址属于开源挖矿软件作者,用于抽水。

 

3、小结

本文主要是针对sh可执行脚本文件进行了分析,通过分析执行的语句颇受启发,很多方法也可以用在我们日常的应急中,由于知识盲区太多,此次未对挖矿部分XMRig进行分析,补充知识后下次在做分析。

参考链接:

https://www.anquanke.com/post/id/154381

(完)