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脚本主要实现如下功能:
- 结束当前主机正在运行的其他已知挖矿程序并删除,已知挖矿程序的文件名如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进行分析,补充知识后下次在做分析。
参考链接: