Linux伺服器發現挖礦病毒(crypto和pnscan)導致CPU爆滿100的詳細解決方法

arisono發表於2021-05-20

木馬攻擊問題由來闡述

我買了三年的阿里雲伺服器(在 阿里雲官網買的),已經使用了一年多了,平時拿來搭建網站,有時也拿來學習技術和開發測試,一直使用很穩定。直到近期我伺服器上安裝了docker並部署了springboot+mysql+nginx專案,就被攻擊了。但就在今年的5月14號,我的伺服器被木馬攻擊,然後被拿去挖礦了。我伺服器的cpu持續維持在CPU100%. 後果是直接導致我網站無法正常請求和響應。而且Linux伺服器的root許可權被竊取了。
駭客在伺服器/root/.ssh目錄下生成了連root使用者也無法刪除的ssh金鑰檔案(本質就是利用chattr命令加了特殊許可權),可以免密碼登入。這樣的後果就是,我的伺服器的控制權被別人控制了。是可忍熟不可忍,必須解決。

我是第一次遇見這種噁心的問題,也不知道駭客們是怎麼盯上我的伺服器的,也許我是無目的的攻擊受害者。作為建站老鳥以及程式設計師的我,硬著頭皮也得解決。因為我是搞前端方面的,所以Linux方面的技能都是我業餘時間學習。所以這次問題的解決經過還是挺考驗學習能力的。

大致過程分為兩大步:

  • 第一步:清除木馬後門(ssh免登入金鑰)

  • 第二步:殺死木馬程式以及清除木馬檔案(挖礦病毒crypto和蠕蟲病毒pnscan)

我用到的工具

  • 阿里雲伺服器: 阿里雲伺服器,國內第一大雲品牌,當初是用它來入門學習程式設計技術的。當然用到它了,要不然中病毒的受害者是誰呢。當然不是說買了阿里雲的伺服器才會中毒,因為病毒中毒是因為你Linux安全意識和使用不當造成的。這次我是因為docker使用或者純碎因為ssh暴力破解有關係。所以你換其它家的雲伺服器,比如 騰訊雲伺服器,也一樣存在被攻擊的可能。事後,我們必須去學點基礎的安全防護技巧。

  • 寶塔皮膚:寶塔皮膚是很重要的工具,這裡就不多說了,入門和使用教程彙總參考: 寶塔皮膚安裝和入門教程彙總

  • FinalShell客戶端: 下載地址 該客戶端可以安裝之後更新到最新版本。

  • chattr原始碼檔案一份(C程式):需要編譯chattr檔案,破解病毒的chattr附加的特殊屬性i 。我再文章中已經給了原始碼地址,自己去下載使用。Linux系統可以敲命令列去編譯c程式原始碼檔案。

第一步:刪除免登入ssh金鑰檔案(木馬後門)

1、先下載C檔案( ), 上傳到伺服器的任意目錄

2、編譯,cc chattr,得到檔案a.out,把名字改成chattr
這一步出現了一個錯誤: collect2: fatal error: cannot find 'ld' compilation terminated.
解決方法是(兩條命令):

 yum -y install binutils 
 ln -s /usr/bin/ld.gold /usr/bin/x86_64-nptl-linux-gnu-ld.gold

參考資料: 執行gcc出現collect2: fatal error: cannot find ‘ld’

3、執行編譯好的檔案,把被篡改的檔案去掉不可修改的隱藏屬性, ./chattr -ia /usr/bin/chattr 編譯檔案執行命令是:”./chattr” 使用指令 ./a.out 執行該程式
參考資料: Linux環境編譯執行C語言程式

4、再把編譯好的檔案,放回/usr/bin/。這一步我沒有選擇覆蓋chattr檔案,我選擇的是先刪除 rm -f chattr 檔案,然後執行安裝命令: yum install e2fsprogs 安裝chattr和lsattr. 然後就可以正常的修改和刪除/root/.ssh/目錄下的金鑰檔案了。幹掉駭客的root許可權。

chattr檔案目錄: /usr/bin/chattr
ssh金鑰檔案目錄:/root/.ssh
編譯chattr檔案原始碼目錄:/root (這個目錄可以隨意選)

編譯安裝chattr之後,就可以正常使用chattr命令了

#檢視檔案屬性
lsattr authorized_keys
# 去除a屬性
chattr -a  authorized_keys
# 去除i屬性
chattr -i  authorized_keys
# 去除e屬性
chattr -e  authorized_keys

沒有修改特殊屬性的檔案 許可權是600 。root使用者無法刪除和修改。透過上面的chattr命令一一去除特殊屬性,就可以正常修改和刪除金鑰檔案了。

金鑰檔案裡面的內容已經被我清空了。這兩個檔案終於可以修改了。

參考教程:

第二步:殺病毒crypto和pnscan病毒程式

查詢CPU100耗盡的原因

挖礦病毒crypto和pnscan 入侵linux主機,留有/root/.ssh/金鑰免登入後門。

第1步:清除root免登入許可權。這一步我們已經做好了。

第2步:刪除挖礦病毒crypto和pnscan檔案。

crypto檔案目錄位置: /urs/share/
pnscan檔案目錄位置: /usr/local/bin

如果木馬檔案不在這兩個位置,可以使用命令來查詢:
whereis pnscan 和  whereis crypto 這命令會顯示檔案所在的Linux路徑

這兩個病毒相關檔案,可以直接用rm -f 檔名 直接刪除乾淨。它們沒有加chattr特殊許可權。

我把這幾個要刪除的病毒檔案全部下載到了window電腦上。就是為了截圖給大家,要刪除哪些檔案。注意pnscan病毒目錄和crypto病毒目錄不在一塊,我是下載到window才統一放到一個目錄的。

我在自己的阿里雲伺服器上刪除了這兩個病毒相關檔案(crypto是5個檔案,pnscan是1個檔案),這一步就算完成了。

第3步:殺crypto和pnscan兩個程式,cpu就會降下來。而不是百分百耗盡。

用 top 命令查出cpu佔用高的程式。很明顯能發現是crypto和pnscan兩個程式cpu佔用高。
crypto程式可能會偽裝其它名字,需要仔細發現。pnsan程式有可能會殺不死,需要先刪除兩個病毒檔案,才去殺病毒程式,效果會更好。

# Linux執行top查詢cpu程式佔用情況top

小技巧:這次我沒有用finalshell來操作這些命令,因為cpu佔用100的情況下,寫命令列也很卡,而且無法看到Linux目錄檢視。所以我用寶塔皮膚的終端來寫ssh命令,主要是能看到Linux檔案目錄檢視。

透過top命令可以清晰的檢視到病毒程式的高cpu佔用率。記住它們的程式pid

# 殺死兩個病毒程式,伺服器CPU恢復正常。這是關鍵的一步操作
sudo kill -9 27220 24131

你執行上面的kill命令也會出現kill沒有許可權而執行失敗的錯誤提示。毫無疑問,linux系統的關鍵命令都被加了chattr特殊屬性,需要去除它的i屬性,去除之後,才執行上面的殺病毒程式命令。殺完病毒程式之後,再用top命令去監控,發現沒有了cpu高佔用率的程式之後,可以去觀察寶塔皮膚和其它FinalShell客戶端,會顯示cpu執行正常的。

# 找到kill路徑
whereis kill# lsattr檢視特殊屬性lsattr /usr/bin/kill# chattr去除附加特殊屬性 ichattr -i /usr/bin/kill# chmod賦許可權chmod 755 /usr/bin/kill
# 現在你就可以正常去執行kill命令了。

寶塔皮膚ssh命令終端展示:

[root@iZuf6bm7y86rsciyk4lvriZ ~]# lsattr /bin/kill----i--------e-- /bin/kill[root@iZuf6bm7y86rsciyk4lvriZ ~]# chattr -i /usr/bin/kill[root@iZuf6bm7y86rsciyk4lvriZ ~]# lsattr /usr/bin/kill-------------e-- /usr/bin/kill[root@iZuf6bm7y86rsciyk4lvriZ ~]# chmod +x /usr/bin/kill[root@iZuf6bm7y86rsciyk4lvriZ ~]# lsattr /usr/bin/kill-------------e-- /usr/bin/kill[root@iZuf6bm7y86rsciyk4lvriZ ~]# sudo ls -l /bin/kill---xr-xr-x. 1 root root 33608 Apr  1  2020 /bin/kill

FinalShell終端命令展示:

[root@iZuf6bm7y86rsciyk4lvriZ ~]# whereis kill
kill: /usr/bin/kill /usr/share/man/man1/kill.1.gz[root@iZuf6bm7y86rsciyk4lvriZ ~]# lattr /usr/bin/kill-bash: lattr: 未找到命令[root@iZuf6bm7y86rsciyk4lvriZ ~]# lsattr /usr/bin/kill-------------e-- /usr/bin/kill[root@iZuf6bm7y86rsciyk4lvriZ ~]# chattr -i /usr/bin/kill[root@iZuf6bm7y86rsciyk4lvriZ ~]# chmod 755 /usr/bin/kill[root@iZuf6bm7y86rsciyk4lvriZ ~]#

其中用到的命令:netstat 也會遇到和kill命令類似的問題。解決方法類似:

[root@iz8vb8rrw7wiwqtau1dp8jz bin]# netstat -nltp-bash: /usr/bin/netstat: Permission denied[root@iz8vb8rrw7wiwqtau1dp8jz bin]# chmod 755 /usr/bin/netstat
chmod: changing permissions of ‘/usr/bin/netstat’: Operation not permitted[root@iz8vb8rrw7wiwqtau1dp8jz bin]# lsattr /usr/bin/netstat-------i------e-- /usr/bin/netstat[root@iz8vb8rrw7wiwqtau1dp8jz bin]# chattr -i /usr/bin/netstat[root@iz8vb8rrw7wiwqtau1dp8jz bin]# chmod 755 /usr/bin/netstat
# 用 netstat命令檢視埠情況。netstat命令附帶屬性可以查資料[root@iz8vb8rrw7wiwqtau1dp8jz bin]# netstat -nltp
Active Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      
[root@iz8vb8rrw7wiwqtau1dp8jz bin]#

在殺了病毒程式之後,CPU終於恢復到正常水平,終於成功了,好開心啊,因為過程還是比較曲折的。

FinalShell客戶端顯示cpu正常。

寶塔皮膚顯示cpu執行正常。

總結:經過這次安全事件,我應該去學點基礎的安全防護技巧,比如,不能用root使用者操作Linux系統,不能用賬戶和密碼登入賬戶,禁用它,然後用ssh金鑰登入。比如使用相關的安全工具去防護它。

參考教程:


原文出處: https://www.yundashi168.com/272.html


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

相關文章