1. 程式人生 > 其它 >Linux伺服器中了挖礦木馬怎麼辦?-挖礦木馬自助清理手冊

Linux伺服器中了挖礦木馬怎麼辦?-挖礦木馬自助清理手冊

什麼是挖礦木馬

挖礦木馬會佔用CPU進行超頻運算,從而佔用主機大量的CPU資源,嚴重影響伺服器上的其他應用的正常執行。黑客為了得到更多的算力資源,一般都會對全網進行無差別掃描,同時利用SSH爆破和漏洞利用等手段攻擊主機。部分挖礦木馬還具備蠕蟲化的特點,在主機被成功入侵之後,挖礦木馬還會向內網滲透,並在被入侵的伺服器上持久化駐留以獲取最大收益。整體的攻擊流程大致如下圖所示:

二. 挖礦木馬中招特徵

挖礦木馬會在使用者不知情的情況下利用主機的算力進行挖礦,最明顯的特徵就是主機的CPU被大量消耗,檢視雲主機CPU佔用率的方法有兩種:

1. 控制檯例項監控

2. 主機執行TOP命令

如下圖所示,通過執行top命令,即可在返回結果中看到當時系統的CPU佔用率。

top -c

如果您的主機CPU佔用率居高不下,那麼主機很有可能已經被植入了挖礦木馬,會影響伺服器上的其他應用的正常執行,需要立刻上機排查。

三. 清理挖礦木馬

1. 及時隔離主機

部分帶有蠕蟲功能的挖礦木馬在取得主機的控制權後,會繼續對公網的其他主機,或者以當前主機作為跳板機對同一區域網內的其他主機進行橫向滲透,所以在發現主機被植入挖礦木馬後,在不影響業務正常執行的前提下,應該及時隔離受感染的主機,然後進行下一步分析和清除工作。

騰訊雲主機可以通過設定安全組隔離主機,具體參考如下連結:https://cloud.tencent.com/document/product/215/20089

2. 阻斷異常網路通訊

挖礦木馬不僅會連線礦池,還有可能會連線黑客的C2伺服器,接收並執行C2指令、投遞其他惡意木馬,所以需要及時進行網路阻斷。

(1)檢查主機防火牆當前生效的iptables規則中是否存在業務範圍之外的可疑地址和埠,它們可能是挖礦木馬的礦池或C2地址

iptables -L -n

(2)從iptables規則中清除可疑地址和埠

vi /etc/sysconfig/iptables

(3)阻斷挖礦木馬的網路通訊

iptables -A INPUT -s 可疑地址 -j DROP
iptables -A OUTPUT -d 可疑地址 -j DROP

3. 清除計劃任務

大部分挖礦木馬會通過在受感染主機中寫入計劃任務實現持久化,如果僅僅只是清除挖礦程序,無法將其根除,到了預設的時間點,系統會通過計劃任務從黑客的C2伺服器重新下載並執行挖礦木馬。

挖礦木馬常見的計劃任務通常是下載並執行sh指令碼,如下圖所示:

可以通過執行如下命令檢視是否存在可疑定時任務,若有,則先儲存相關記錄用於後續分析,再進行刪除:

檢視系統當前使用者的計劃任務:

crontab -l

檢視系統特定使用者的計劃任務:

crontab -u username -l

檢視其他計劃任務檔案:

cat /etc/crontab
cat /var/spool/cron
cat /etc/anacrontab
cat /etc/cron.d/
cat /etc/cron.daily/
cat /etc/cron.hourly/
cat /etc/cron.weekly/
cat /etc/cron.monthly/
cat /var/spool/cron/

4. 清除啟動項

除了計劃任務,挖礦木馬通過新增啟動項同樣能實現持久化。可以使用如下命令檢視開機啟動項中是否有異常的啟動服務。

CentOS7以下版本:

chkconfig –list

CentOS7及以上版本:

systemctl list-unit-files

如果發現有惡意啟動項,可以通過如下命令進行關閉:

CentOS7以下版本:

chkconfig 服務名 off

CentOS7及以上版本:

systemctl disable 服務名

另外,還需要仔細排查以下目錄及檔案,及時刪除可疑的啟動項:

/usr/lib/systemd/system
/usr/lib/systemd/system/multi-user.target.wants
/etc/rc.local
/etc/inittab
/etc/rc0.d/
/etc/rc1.d/
/etc/rc2.d/
/etc/rc3.d/
/etc/rc4.d/
/etc/rc5.d/
/etc/rc6.d/
/etc/rc.d/

排查的時候,可以按照檔案修改時間來排序,重點排查近期被建立服務項。如下圖所示,系統近期被建立了一個名為bot.service的服務,該服務在系統啟動時會啟動/etc/kinsing這個木馬檔案,需要關閉bot服務,並刪除/etc/kinsing檔案。

5. 清除預載入so

通過配置/etc/ld.so.preload,可以自定義程式執行前優先載入的動態連結庫,部分木馬通過修改該檔案,新增惡意so檔案,從而實現挖礦程序的隱藏等惡意功能。

檢查/etc/ld.so.preload(該檔案預設為空),清除異常的動態連結庫。可以執行`> /etc/ld.so.preload`命令進行清除。

6. 清除SSH公鑰

挖礦木馬通常還會在~/.ssh/authoruzed_keys檔案中寫入黑客的SSH公鑰,這樣子就算使用者將挖礦木馬清除得一乾二淨,黑客還是可以免密登陸該主機,這也是常見的保持伺服器控制權的手段。

排查~/.ssh/authorized_keys檔案,如果發現可疑的SSH公鑰,直接刪除。

7. 清除挖礦木馬

(1)清除挖礦程序

挖礦木馬最大的特點就是會在使用者不知情的情況下,利用主機的算力進行挖礦,從而消耗主機大量的CPU資源,所以,通過執行如下命令排查系統中佔用大量CPU資源的程序。

top -c
ps -ef

確認相關程序為挖礦程序後,按照如下步驟將其清除:

獲取並記錄挖礦程序的檔案路徑:

ls -l /proc/$PID/exe

殺死挖礦程序:

kill -9 $PID

刪除挖礦程序對應的檔案

(2)清除其它相關惡意程序

惡意程序與外部的C2伺服器進行通訊時,往往會開啟埠進行監聽。執行如下命令,檢視伺服器是否有未被授權的埠被監聽。

netstat -antp
 

若有未授權程序,按照如下步驟將其清除:

獲取並記錄未授權程序的檔案路徑:

ls -l /proc/$PID/exe

殺死未授權程序:

kill -9 $PID

刪除未授權程序對應的檔案

 

還可以通過如下命令排查近期新增的檔案,清除相關木馬

 find /etc -ctime -2 (這裡指定目錄為/etc,獲取近2天內的新增檔案)
 lsof -c kinsing (這裡要檢視檔名為kinsing的相關程序資訊)

8. 風險排查、安全加固

對系統進行風險排查和安全加固,避免挖礦木馬捲土重來,詳情可參考如下連結:https://cloud.tencent.com/document/product/296/9604

四. 常見問題

1. 明明剛剛清理了挖礦木馬,沒過多久就又捲土重來?

很多使用者會反饋挖礦木馬老是清理不乾淨,明明已經Kill了程序,刪除了木馬檔案,沒過多久,CPU佔用率又上來了。究其根本,還是因為清除得不夠徹底。大部分使用者都只是Kill掉挖礦程序和對應檔案,卻沒有清理計劃任務和守護程序。

一般建議先清除計劃任務、啟動項、守護程序,再清除挖礦程序和其他惡意程序。

2. 如何判定可疑程序是否為惡意程序?

如下圖所示,未知程序kinsing監聽本地31458埠,非常可疑,可通過如下方法判定:

(1)執行`ls -al /proc/$PID/exe`確認可疑程序對應的檔案;

(2)若檔案未被刪除,則直接上傳檔案到Virustotal進行檢測,或者計算出檔案對應的md5,使用md5去Virustotal進行查詢;若檔案已被刪除,可執行`cat /proc/$PID/exe > /tmp/t.bin`將程序dump到特定目錄,再上傳檔案到Virustotal或者計算dump檔案對應的md5到Virustotal進行查詢。如果有多款防毒引擎同時檢出,那基本可以判定該程序為惡意程序。

Virustotal地址:https://www.virustotal.com/gui/s

3. 為什麼系統CPU佔用率接近100%,卻看不到是哪個程序導致的?

如下圖所示,系統CPU佔用率接近100%,卻看不到是哪個程序導致的,這種情況一般是因為系統命令被木馬篡改了,從而隱藏了木馬程序的蹤跡,讓使用者無法進行溯源分析。

命令篡改有多種方式,分別如下:

(1)top原始檔被篡改,惡意程序資訊被過濾後返回

通過執行如下命令即可復原:

rm -rf /usr/bin/top && mv /usr/bin/top.original /usr/bin/top

【相關文章】https://blog.csdn.net/chenmozhe22/article/details/112578057

(2)篡改預載入so檔案,ls、top、ps等命令已經被木馬的動態連結庫劫持,無法獲得木馬程序相關的資訊

通過執行如下命令即可復原:

> /etc/ld.so.preload && rm -rf 惡意so檔案路徑

【相關文章】https://cloud.tencent.com/developer/article/1744547

(3)通過其他未知手段篡改系統命令

可分別嘗試如下兩種方案解決:

i.從其他相同版本系統中拷貝命令原始檔到當前系統中進行覆蓋;可使用uname -a命令檢視當前系統版本;

ii.或者安裝busybox來對系統進行排查。busybox是一個集成了300多個最常用Linux命令和工具的軟體,可以使用busybox替代系統命令對系統進行排查;

 yum -y install wget make gcc perl glibc-static ncurses-devel libgcrypt-devel
 wget http://busybox.net/downloads/busybox-1.33.0.tar.bz2
 tar -jxvf busybox-1.33.0.tar.bz2
 cd busybox-1.33.0 && make && make install

【相關文章】https://www.cnblogs.com/angryprogrammer/p/13456681.html

 

持續更新中...