1. 程式人生 > >【踩坑】阿里雲ECS清除隱藏的挖礦程式

【踩坑】阿里雲ECS清除隱藏的挖礦程式

問題描述:

一臺阿里雲伺服器,收到連續告警CPU使用量已經大於95%。但這臺機器上面使用中的業務只有一個不常使用的MySQL,其他就沒有了,正常情況下CPU是不可能達到這麼高的。檢視告警資訊,發現有被植入挖礦程式,可疑程式檔案路徑為 /usr/lib/libiacpkmn.so.3

排查過程:

1、top檢視,找佔CPU高的程序:
阿里雲機器清除隱藏的挖礦程式

通過按照CPU佔比降序檢視,除了少數幾個程序佔CPU,並沒有發現可疑程式
阿里雲機器清除隱藏的挖礦程式
佔用CPU高的挖礦程式應該是隱藏在某個地方了,

2、使用命令ps -aux --sort=-pcpu|head -10查詢,果然找到了這個程式:

[[email protected]
~]# ps -aux --sort=-pcpu|head -10 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 14454 179 0.0 6780 740 ? Ssl 08:00 708:24 [xfsdatad]

阿里雲機器清除隱藏的挖礦程式

解決過程:

1、首先殺掉上面這個佔CPU高的xfsdatad程序:

[[email protected] ~]# kill -9 14454

再使用top檢視CPU,馬上就降下來了:
阿里雲機器清除隱藏的挖礦程式

2、清理定時任務
挖礦程式一般都設定了定時任務啟動指令碼程式,檢視定時任務,crontab -l檢視是找不到的。得看/etc/crontab檔案。果然有任務在啟動程式指令碼 /usr/lib/libiacpkmn.so.3

[[email protected] bin]# cat /etc/crontab 
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
0/8 00 * * * /bin/bash  /usr/lib/libiacpkmn.so.3  >/dev/null 2>&1
[
[email protected]
bin]#

刪除掉定時任務,防止再次啟動指令碼

3、刪除指令碼檔案/usr/lib/libiacpkmn.so.3
根據定時任務中暴露的可疑檔案所在路徑/usr/lib/libiacpkmn.so.3,徹底刪除該指令碼檔案 rm -f /usr/lib/libiacpkmn.so.3 。
結果顯示檔案是被加了鎖的,使用root使用者去刪除、mv、chmo/chown改許可權,或者清空檔案,任何操作都會報Permission denied(沒許可權):

[[email protected] lib]# cd /usr/lib
[[email protected] lib]# rm -rf libiacpkmn.so.3 
rm: cannot remove ‘libiacpkmn.so.3’: Operation not permitted
[[email protected] lib]# >libiacpkmn.so.3 
-bash: libiacpkmn.so.3: Permission denied

因此需要確認檔案是否枷鎖,lsattr命令檢視,發現有一個 i 許可權:
lsattr 命令介紹
發現 I 許可權如下:
不能被刪除、改名、設定連結、寫入或新增資料;

[[email protected] lib]# lsattr libiacpkmn.so.3
----i--------e-- libiacpkmn.so.3

使用命令撤銷i許可權:

[[email protected] lib]# chattr -i libiacpkmn.so.3 

注意:如果不能使用chattr命令,就使用yum -y install e2fsprogs命令安裝即可。

然後再檢查檔案許可權,就沒有i許可權了。再刪除檔案成功:

[[email protected] lib]# lsattr libiacpkmn.so.3
-------------e-- libiacpkmn.so.3
[[email protected] lib]# rm -f libiacpkmn.so.3
[[email protected] lib]# 
[[email protected] ~]# find / -name "libiacpkmn.so.3"      #查詢檔案,確認已經刪除OK
[[email protected] ~]#     

4、同樣的方法刪除殘留檔案nfstruncate
查詢挖礦程式根源所在地 已知 PID 14454。同時根據 ps -anx查詢到的埠號查詢埠14454,
cd /proc/14454
ls -a 查詢到/etc/ 目錄存在啟動檔案nfstruncate 
exe -> /etc/rc.d/init.d/nfstruncate #這個nfstruncate 檔案,也需要刪除

[[email protected] lib]# find  / -name "nfstruncate"     #查找出來這個檔案有兩個,都刪除
/etc/rc.d/init.d/nfstruncate
/usr/bin/nfstruncate
[[email protected] lib]#  cd /etc/rc.d/init.d/
[[email protected] init.d]# chattr -i nfstruncate 
[[email protected] init.d]# rm -rf nfstruncate 
[[email protected] bin]# 
[[email protected] init.d]# cd /usr/bin/
[[email protected] bin]# chattr -i nfstruncate 
[[email protected] bin]# rm -rf nfstruncate 
[[email protected] bin]# 
[[email protected] ~]# find / -name "nfstruncate"   #查詢檔案,確認已經刪除OK
[[email protected] bin]# 

補記:
在後面的一次防毒中,/proc/pid/目錄下面的exe指向的是另一個檔案:

exe -> /usr/lib/libiacpkmn.so.3 (deleted)

但是/etc/rc.d/init.d/目錄和/usr/bin/下面也都存在nfstruncate檔案。因此不僅要刪除 /usr/lib/libiacpkmn.so.3,也要刪除/etc/rc.d/init.d/nfstruncate和/usr/bin/nfstruncate。三個檔案都得清理乾淨。

5、清除/etc/rc*.d/目錄下的S01nfstruncate檔案連結,在rc0.d-rc6.d目錄下都存在S01nfstruncate檔案,全部刪除。
檢視/etc/rc0.d目錄下的檔案連結S01nfstruncate:

[[email protected] rc0.d]# ll
total 0
lrwxrwxrwx 1 root root 20 May  3  2016 K01agentwatch -> ../init.d/agentwatch
lrwxrwxrwx 1 root root 15 Mar 27  2017 K15nginx -> ../init.d/nginx
lrwxrwxrwx 1 root root 19 Mar 27  2017 K25uwsgi9090 -> ../init.d/uwsgi9090
lrwxrwxrwx 1 root root 15 May  3  2016 K50aegis -> ../init.d/aegis
lrwxrwxrwx 1 root root 20 May  3  2016 K50netconsole -> ../init.d/netconsole
lrwxrwxrwx 1 root root 22 Jun 21  2017 K80cloudmonitor -> ../init.d/cloudmonitor
lrwxrwxrwx 1 root root 17 May  3  2016 K90network -> ../init.d/network
lrwxrwxrwx 1 root root 23 Oct 19 08:00 S01nfstruncate -> /etc/init.d/nfstruncate    #需要刪除

找到所有的檔案連結刪除:

[[email protected] rc0.d]# find / -name "S01nfs*"
/etc/rc.d/rc1.d/S01nfstruncate
/etc/rc.d/rc2.d/S01nfstruncate
/etc/rc.d/rc4.d/S01nfstruncate
/etc/rc.d/rc3.d/S01nfstruncate
/etc/rc.d/rc6.d/S01nfstruncate
/etc/rc.d/rc5.d/S01nfstruncate
/etc/rc.d/rc0.d/S01nfstruncate
find: ‘/proc/4796’: No such file or directory
find: ‘/proc/5488’: No such file or directory
[[email protected] rc0.d]# 
[[email protected] rc0.d]# find / -name "S01nfs*"|xargs rm -f

6、再top觀察CPU,確認不再無故飆高,防毒任務就完成了。

以上內容,轉載地址:http://blog.51cto.com/10950710/2123114

 

------------------------------------------------------

------------------------------------------------------

關於我,前往個人域名

期望和大家一起學習,共同進步,共勉

歡迎交流問題,可加個人QQ 469580884

或者,加我的群號 751925591,一起探討交流問題

不講虛的,只做實幹家

Talk is cheap,show me the code