zhangguanzhang's Blog

记录一次十字符病毒清理过程

字数统计: 961阅读时长: 4 min
2018/11/05

周五网络组同事告知几个租户的session过大,建议我把租户这几台机器关机了
我进去后把网卡down了后开始看
稍微看了下是好几个十个字符的进程一直杀不完,叫存储同事把快照挂载了准备周一恢复

结果今天挂载上去后开机发现还是有,好吧,手动查杀
结合猜想和状态输出想了下逻辑是如下思路

  • crontab加计划(/var/spool/cron/用户名文件,/etc/crontab里,/etc/cron.hourly/x.sh)
  • 进程互相守护,杀掉一个生成一个新的在/usr/bin/目录,命名是十个字符
  • /etc/init.d/和/etc/rc.d/rcx.d/对应的软链接保证开机启动

首先ssh进去top看到

因为进程会互相守护,这里不能杀掉否则会创建出新的,用STOP信号让它停止并停掉crond

1
2
[root@fangke ~]# kill -STOP 2764
[root@fangke ~]# systemctl stop crond

检查定时任务并清理(根据各自情况去清理)

1
2
3
[root@fangke ~]# crontab -l
* * * * * /mnt/.../udp &>/dev/null
[root@fangke ~]# rm -rf /mnt/.../udp

然后清除/var/spool/cron目录里和对应的病毒文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@fangke ~]# ll /var/spool/cron/
-rw-r--r-- 1 root kmem 39 Oct 4 07:15 p
-rw------- 1 root root 73 Nov 5 13:27 root
[root@fangke ~]# cat /var/spool/cron/p
* * * * * /usr/bin/.ss &>/dev/null
[root@fangke ~]# rm -f /usr/bin/.ss
[root@fangke ~]# rm -f /var/spool/cron/p
[root@fangke ~]# cat /etc/crontab
*/3 * * * * root /etc/cron.hourly/gcc.sh
[root@fangke ~]# ll /etc/cron.hourly/
total 8
-rwxr-xr-x 1 root root 228 Nov 5 13:23 gcc.sh
-rwxr-xr-x 1 root root 162 Nov 5 13:23 rltqyqlmtwizq.sh
[root@fangke ~]# cat /etc/cron.hourly/gcc.sh
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
for i in `cat /proc/net/dev|grep :|awk -F: {'print $1'}`; do ifconfig $i up& done
cp /lib/libudev.so /lib/libudev.so.6
/lib/libudev.so.6

同理清掉/etc/cron.*相关的定时目录里的脚本

1
2
3
4
5
6
7
$ ll -d /etc/cron.*
drwxr-xr-x. 2 root root 4096 May 10 2019 /etc/cron.d
drwxr-xr-x. 2 root root 4096 Mar 7 2019 /etc/cron.daily
-rw-------. 1 root root 0 Apr 11 2018 /etc/cron.deny
drwxr-xr-x. 2 root root 4096 Mar 7 2019 /etc/cron.hourly
drwxr-xr-x. 2 root root 4096 Jun 10 2014 /etc/cron.monthly
drwxr-xr-x. 2 root root 4096 Jun 10 2014 /etc/cron.weekly

因为向外发包,估计是肉鸡向外ddos,查看tcp/udp端口是哪个进程占用了

进程名伪装可能图里的,另一台我看到过伪装成gnome啥的进程,全部kill -STOP
然后像图上去查进程文件在哪然后删掉他们

然后删掉母体

1
[root@fangke ~]# rm -f /lib/libudev.so

接下来清理开机目录


这里我偷懒下,用户组后的数字一样的,我全部删除的(每个rcx.d里数字不同,可以在大部分删之前稍微看看)

同样过程清理掉/etc/rc.d/rcx.d/的0-6目录里的

然后杀掉之前STOP掉的进程后观察一段时间再看看
这里我怀疑过top和ps命令是不是替换了,因为top命令能看到病毒进程,ps查不到,我在其他机器下了对应的procps-ng和contab相关的包重新安装了。一般这里到现在病毒基本就起不来了,但是有些是入侵了so文件的,我们得安装一个strace看看

1
2
3
while read file;do
rpm -V `rpm -qf $file`
done < <(strace ls .ssh/ |& grep -Po 'open\("\K.+?\.\d?(?=")')

然后看so文件所属的包用rpm -V xxx,不属于包则同系统机器比对下md5和ctime或者a和mtime

全部检查完可以尝试重启机器看看
另外可能会遇到加了个uid为0的用户,可以查看下/etc/passwd以及别人可能能互信免密登陆,ssh的key也自己清理下

CATALOG