轉(zhuǎn):Linux服務(wù)器清除隱藏的挖礦病毒

突然間服務(wù)器登陸補(bǔ)上,在后臺(tái)系統(tǒng)一查發(fā)現(xiàn)cpu使用率一直都是100%。重啟服務(wù)器登陸后發(fā)現(xiàn)top命令查不出什么東西,最后終于找到了這篇解決方案了。不得不說,這種病毒實(shí)在是太惡心了!記錄一下這個(gè)問題,防止以后再出現(xiàn)手足無措,也給大家提個(gè)醒。同時(shí)非常感謝原文作者!
原文:http://blog.51cto.com/10950710/2123114

排查過程:

1、top查看,找占CPU高的進(jìn)程:

阿里云機(jī)器清除隱藏的挖礦程序

通過按照CPU占比降序查看,除了少數(shù)幾個(gè)進(jìn)程占CPU,并沒有發(fā)現(xiàn)可疑程序


阿里云機(jī)器清除隱藏的挖礦程序

占用CPU高的挖礦程序應(yīng)該是隱藏在某個(gè)地方了,

2、使用命令ps -aux --sort=-pcpu|head -10查找,果然找到了這個(gè)程序:

[root@dbserver ~]# 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]
阿里云機(jī)器清除隱藏的挖礦程序

解決過程:

1、首先殺掉上面這個(gè)占CPU高的xfsdatad進(jìn)程:

[root@dbserver ~]# kill -9 14454

再使用top查看CPU,馬上就降下來了:


阿里云機(jī)器清除隱藏的挖礦程序

2、清理定時(shí)任務(wù)
挖礦程序一般都設(shè)置了定時(shí)任務(wù)啟動(dòng)腳本程序,查看定時(shí)任務(wù),crontab -l查看是找不到的。得看/etc/crontab文件。果然有任務(wù)在啟動(dòng)程序腳本 /usr/lib/libiacpkmn.so.3

[root@dbserver 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
[root@dbserver bin]# 

刪除掉定時(shí)任務(wù),防止再次啟動(dòng)腳本

3、刪除腳本文件/usr/lib/libiacpkmn.so.3
根據(jù)定時(shí)任務(wù)中暴露的可疑文件所在路徑/usr/lib/libiacpkmn.so.3,徹底刪除該腳本文件 rm -f /usr/lib/libiacpkmn.so.3 。
結(jié)果顯示文件是被加了鎖的,使用root用戶去刪除、mv、chmo/chown改權(quán)限,或者清空文件,任何操作都會(huì)報(bào)Permission denied(沒權(quán)限):

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

因此需要確認(rèn)文件是否枷鎖,lsattr命令查看,發(fā)現(xiàn)有一個(gè) i 權(quán)限:
lsattr 命令介紹
發(fā)現(xiàn) I 權(quán)限如下:
不能被刪除、改名、設(shè)定連結(jié)、寫入或新增數(shù)據(jù);

[root@dbserver lib]# lsattr libiacpkmn.so.3
----i--------e-- libiacpkmn.so.3

使用命令撤銷i權(quán)限:

[root@dbserver lib]# chattr -i libiacpkmn.so.3 

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

然后再檢查文件權(quán)限,就沒有i權(quán)限了。再刪除文件成功:

[root@dbserver lib]# lsattr libiacpkmn.so.3
-------------e-- libiacpkmn.so.3
[root@dbserver lib]# rm -f libiacpkmn.so.3
[root@dbserver lib]# 
[root@dbserver ~]# find / -name "libiacpkmn.so.3"      #查找文件,確認(rèn)已經(jīng)刪除OK
[root@dbserver ~]#     

4、同樣的方法刪除殘留文件nfstruncate
查找挖礦程序根源所在地 已知 PID 14454。同時(shí)根據(jù) ps -anx查詢到的端口號(hào)查詢端口14454,
cd /proc/14454
ls -a 查詢到/etc/ 目錄存在啟動(dòng)文件nfstruncate
exe -> /etc/rc.d/init.d/nfstruncate #這個(gè)nfstruncate 文件,也需要?jiǎng)h除

[root@dbserver lib]# find  / -name "nfstruncate"     #查找出來這個(gè)文件有兩個(gè),都刪除
/etc/rc.d/init.d/nfstruncate
/usr/bin/nfstruncate
[root@dbserver lib]#  cd /etc/rc.d/init.d/
[root@dbserver init.d]# chattr -i nfstruncate 
[root@dbserver init.d]# rm -rf nfstruncate 
[root@dbserver bin]# 
[root@dbserver init.d]# cd /usr/bin/
[root@dbserver bin]# chattr -i nfstruncate 
[root@dbserver bin]# rm -rf nfstruncate 
[root@dbserver bin]# 
[root@dbserver ~]# find / -name "nfstruncate"   #查找文件,確認(rèn)已經(jīng)刪除OK
[root@dbserver bin]# 

補(bǔ)記:
在后面的一次殺毒中,/proc/pid/目錄下面的exe指向的是另一個(gè)文件:

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

但是/etc/rc.d/init.d/目錄和/usr/bin/下面也都存在nfstruncate文件。因此不僅要?jiǎng)h除 /usr/lib/libiacpkmn.so.3,也要?jiǎng)h除/etc/rc.d/init.d/nfstruncate和/usr/bin/nfstruncate。三個(gè)文件都得清理干凈。

5、清除/etc/rc.d/目錄下的S01nfstruncate文件鏈接,在rc0.d-rc6.d目錄下都存在S01nfstruncate文件,全部刪除。*
查看/etc/rc0.d目錄下的文件鏈接S01nfstruncate:

[root@dbserver 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    #需要?jiǎng)h除

找到所有的文件鏈接刪除:

[root@dbserver 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
[root@dbserver rc0.d]# 
[root@dbserver rc0.d]# find / -name "S01nfs*"|xargs rm -f

6、再top觀察CPU,確認(rèn)不再無故飆高,殺毒任務(wù)就完成了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 6,356評(píng)論 0 10
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢(mèng)閱讀 100,837評(píng)論 9 468
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,360評(píng)論 2 33
  • 1.Linux下如何用命令查看實(shí)時(shí)日志(完整命令) tail -f 路徑.log查看前多少行 tai-200f 路...
    qianyewhy閱讀 2,562評(píng)論 0 11
  • 在我決定開始早起的前幾天,簡(jiǎn)直是對(duì)自己的折磨,每天天還不亮就要從溫暖的被窩中爬出來,迷迷糊糊地到書房去看書。 有多...
    lily_眀芬閱讀 301評(píng)論 0 2

友情鏈接更多精彩內(nèi)容