此項目是我負責,線上服務器用的是某訊雲的,運行着 Tomcat,MySQL,MongoDB,ActiveMQ 等程序。
排查過程
我以 150+ 的手速立即打開了服務器,看到 Tomcat 掛了,然後順其自然的重啓,啓動過程中直接被 killed,再試試數據庫,同樣沒成功,多次嘗試甚至重啓機器無果。
機智的我打了個 Top,出現以下內容:
這是誰運行的程序?不管三七二十一先殺掉再說,因爲它就是 Tomcat 等程序啓動不了的元兇。
然而並沒有什麼卵用,過一會再看那個東西又跑出來佔 CPU。懷疑是個定時任務:
什麼鬼,是個圖片?立即訪問了一下:
好尷尬,但是心思細膩的我早知道沒這麼簡單,肯定只是僞裝,crul 過去是下面的腳本,過程就是在挖礦:
有興趣的同學想查看以上完整源代碼,命令行運行下面指令(不分操作系統,方便安全無污染):
既然知道它是個定時任務,那就先取消了它,並且看看它是誰在運行:
殺掉,找到存放目錄:
進入臨時目錄:
被我發現配置文件了,先來看看內容:
虎軀一震,發現了不少信息啊,User 是他的 Server 的登錄用戶,下面是密碼,只可惜加密過,應該找不到對方。
算了,大度的我先不和你計較。幹掉這兩個文件後再查看 Top:
解決辦法
找到寄生的目錄,一般都會在 tmp 裏,我這個是在 /var/tmp/。首先把 crontab 幹掉,殺掉進程,再刪除產生的文件。啓動 Tomcat 等程序,大功告成!
等等,這遠遠不夠,考慮到能被拿去挖礦的前提下你的服務器都已經被黑客入侵了,修復漏洞纔對,不然你殺掉進程刪掉文件後,黑客後門進來 history 一敲,都知道你做了啥修復手段。
所以上面辦法治標不治本,我後續做了以下工作:
-
把所有軟件升級到新版本。
-
修改所有軟件默認端口號。
-
打開 ssh/authorized_keys,刪除不認識的密鑰。
-
刪除用戶列表中陌生的帳號。
-
封了他的 ip。
-
SSH 使用密鑰登錄並禁止口令登錄(這個一般是加運維一個人的祕鑰)。
對了,本次遭受攻擊是低版本 ActiveMQ 開放端口 61616 有漏洞,大家記得做優化。
遇到挖礦木馬最好的解決方式:將主機鏡像、找出病毒木馬、分析入侵原因、檢查業務程序、重裝系統、修復漏洞、再重新部署系統。
寫在最後
網友提供的一勞永逸終極解決辦法:把你自己的挖礦腳本掛上去運行,這樣別人就算掛腳本也跑不起來了。