Linux Redis自動化挖礦感染蠕蟲分析及安全建議

歡迎你們前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~html

自從Redis未受權問題獲取Linux系統root權限的攻擊方法的披露後,因爲其易用性,利用該問題入侵Linux服務進行挖礦、掃描等的黑客行爲一直層出不窮;而在衆多利用該問題入侵服務器進行黑產行爲的案例中,其中就存在一類利用該問題進行挖礦而且會利用pnscan自動掃描感染其餘機器;該類攻擊一直存在,不過在近期又呈現數量增長的趨勢,在最近捕獲到屢次,咱們針對其作下具體的分析linux

1、 背景

自從Redis未受權問題獲取Linux系統root權限的攻擊方法的披露後,因爲其易用性,利用該問題入侵Linux服務進行挖礦、掃描等的黑客行爲一直層出不窮;而在衆多利用該問題入侵服務器進行黑產行爲的案例中,其中就存在一類利用該問題進行挖礦而且會利用pnscan自動掃描感染其餘機器;該類攻擊一直存在,不過在近期又呈現數量增長的趨勢,在最近捕獲到屢次,咱們針對其作下具體的分析。git

2、 漏洞說明

首先針對利用的漏洞作個說明,Redis 默認狀況下,會綁定在 0.0.0.0:6379,在沒有利用防火牆進行屏蔽的狀況下,將會將Redis服務暴露到公網上,若是在沒有開啓認證的狀況下,能夠致使任意用戶在能夠訪問目標服務器的狀況下未受權訪問Redis以及讀取Redis的數據。攻擊者在未受權訪問Redis的狀況下利用Redis的相關方法,能夠成功將本身的公鑰寫入目標服務器的 ~/.ssh 文件夾的authotrized_keys 文件中,進而能夠直接登陸目標服務器;若是Redis服務是以root權限啓動,能夠利用該問題直接得到服務器root權限。相關漏洞詳情能夠參考:https://www.seebug.org/vuldb/ssvid-89715github

通過在ZoomEye和SHODAN檢索,能夠發現分別衆多Redis服務開放在公網上,這些服務均可能成爲攻擊目標。redis

img

img

3、 入侵分析

img

通過對捕獲的事件進行分析,咱們發現整個入侵流程大概是包含如下幾個環節:數據庫

  1. 掃描開放6379端口的Linux服務器(後續感染掃描網段爲1.0.0.0/16到224.255.0.0/16)
  2. 經過redis-cli嘗試鏈接Redis並執行預置在.dat文件裏的利用命令將Redis的數據文件修改成/var/spool/cron/root,而後經過在Redis中插入數據,將下載執行腳本的動做寫入crontab任務
  3. 經過腳本實現以上的相關行爲,完成植入並啓動挖礦程序
  4. 再編譯安裝pnscan,繼續掃描感染下一個目標

4、 腳本分析

整個入侵利用以及後續的感染的實現,最主要的功能都是基於經過Redis問題寫入crontab任務中下載執行的.cmd腳原本實現的,經過對它的分析,咱們基本可以獲得整個流程的全部細節,這是一個base腳本,咱們經過解讀來分析下它的相關功能。緩存

img

這部分代碼只要是用做重複執行的判斷,將.mxff0文件做爲標記文件,若是存在該文件則表明機器上已執行腳本,直接退出,不然寫.mxff0文件並進行下一步動做;安全

img

設置預置動做,在腳本退出後刪除相關文件和腳本自身;服務器

img

這部分主要是修改系統的配置,開頭兩行爲關閉SELINUX;而後清空/var/spool/cron,進而判斷系統DNS服務器是否存在8.8.8.8,沒有則添加;接着清空系統tmp目錄和刪除相關文件;同時清空系統緩存,而最後修改/etc/security/limits.conf來更新系統的資源限制;微信

img

這裏再進一步的增長iptables限制6379端口只容許本地訪問,同時kill相關包含挖礦、redis客戶端、爬蟲等進程,這裏的目的也比較簡單,避免被其餘黑客再次入侵,同時清除可能其餘黑客入侵啓動的進程;

img

清除相關登陸日誌、命令操做歷史;

img

img

這一長串的內容主要目的是下載並編譯安裝pnscan,從內容中咱們能夠看到對於不一樣操做系統的判斷而後安裝依賴的相關模塊,而後纔是從github下載pnscan的源碼進行編譯安裝;至於爲何採用編譯安裝的形式,猜想是出於兼容不一樣系統以及每次編譯生成的pnscan的MD5都不同,避免造成固定特徵;

img

這部分主要是下載挖礦程序並重命名爲.gpg,增長執行權限,執行後刪除,同時從新上傳到https://transfer.sh/ 獲取新的連接;

img

而這部份內容主要是生成新的.dat文件,包含將原來.cmd腳本里的裏挖礦程序的下載地址替換爲上一步上傳到https://transfer.sh/ 獲得的新地址,還有Redis利用的相關語句;

img

而步主要是調用pnscan去掃描子網段1.0.0.0/16到224.255.0.0/16中開放6379端口而且操做系統爲Linux的目標,而後利用redis-cli執行.dat中的命令,進行下個目標的感染;這裏pnscan的-W參數值'2a 31 0d 0a 24 34 0d 0a 69 6e 66 6f 0d 0a'轉換後內容'*1\r\n$4\r\nINFO\r\n',是向目標Redis服務發送請求獲取Redis服務器的各類信息和統計數值,再經過-R參數值'6f 73 3a 4c 69 6e 75 78'(轉換後內容爲os:Linux)判斷是否Linux系統。

img

最後就是收尾工做,清除相關日誌和命令執行歷史,同時在腳本退出的時候會觸發腳本一開始用trap預置的動做,會作刪除操做,刪除相關文件和腳本自身(rm -rf m* .cmd tmp.* .r .dat $0)。經過對腳本的解讀,咱們基本已經清楚整個蠕蟲的行爲和入侵流程,也就是咱們開始所描述的流程。

另外,經過閱讀腳本,咱們發現雖然整個入侵流程並非多複雜,但腳本其實有不少」工程化」的細節考慮,不得不讓人驚歎入侵者的」考慮周到」:

利用.mxff0文件作重複執行檢驗,避免腳本的重複執行

爲了增長成功性,一些環境的預處理:

  1. 關閉SELINUX
  2. 增長8.8.8.8的DNS
  3. 清空tmp目錄
  4. 清空系統緩存
  5. 修改系統資源限制

痕跡清除

  1. 利用trap預置動做好在腳本執行完成後刪除相關文件和腳本自身
  2. 重複清除相關登陸等日誌和命令執行歷史

同行預防

  1. 利用iptables避免Redis服務開放在公網上從而致使再次被入侵
  2. 清除同行可能遺留的入侵行爲,kill相關進程

系統兼容性

  1. 判斷操做系統,針對性的執行相關命令,安裝依賴包,最大限度的提升pnscan編譯安裝的成功率
  2. 關閉SELINUX,經過setenforce和修改/etc/sysconfig/selinux兩種手段實現
  3. 寫入Crontab裏的下載並執行腳本的任務,經過curl、wget、lynx三種方式實現
  4. Pnscan掃描增長操做系統判斷,減小沒有必要的感染嘗試

特徵去除,存活延續

  1. Pnscan採用安裝編譯的方式,既提升在不一樣系統下的兼容性,也避免造成固定的MD5特徵
  2. 利用https://transfer.sh 中轉,每一次感染均生成新的鏈接,避免固定連接造成固定特徵
  3. 下載到系統的相關文件均採用隨機生成的文件名 正是因爲入侵者種種的」考慮周到」使得他的入侵感染的成功率可以達到的必定的層度。

5、安全建議

病毒清理和系統恢復

咱們主要參考腳本的相關行爲進行對應的行爲恢復和刪除便可:

  1. 關閉SELINUX,根據系統原環境和業務須要從新開啓SELINUX
  2. 清空了/var/spool/cron,根據原先備份清空恢復
  3. 修改/etc/resolv.conf增長DNS服務8.8.8.8,如無影響可不處理,或者刪除
  4. 修改了系統資源限制(/etc/security/limits.conf),可根據備份狀況恢復
  5. 增長了對6379端口的Iptables規則,若是不影響業務,建議保留
  6. Kill了相關進程,檢查是否包含業務所需進程,根據狀況恢復
  7. 安裝了相關包,具體列表見上文,可根據狀況刪除或者如無影響可保留
  8. 編譯安裝了pnscan,可刪除/usr/local/bin/pnscan
  9. 清除了相關日誌和tmp目錄,對系統無影響,可忽略
  10. 啓動了挖礦進程和pnscan掃描感染,進程:.gpg、pnscan,直接kill

還包含了一些中間文件,雖然腳本包含相關刪除操做,但建議仍是全局查找確認: .mxff0、.x1十二、.gpg、.dat、.cmd、.r.xx.xx.o/l、tmp.xxxx

Redis服務加固

  1. 致使入侵的主要緣由是Redis未受權訪問問題,因此若是要扼制入侵的入口,須要針對Redis服務進行加固,避免黑客經過該途徑進行入侵植入挖礦蠕蟲。
  2. 如無必要,修改bind項,不要將Redis綁定在0.0.0.0上,避免Redis服務開放在外網,能夠經過iptables或者騰訊雲用戶能夠經過安全組限制訪問來源
  3. 在不影響業務的狀況,不要以root啓動Redis服務,同時建議修改默認的6379端口,大部分針對Redis未受權問題的入侵都是針對默認端口進行的
  4. 配置AUTH,增長密碼校驗,這樣即便開放在公網上,若是非弱口令的狀況,黑客也沒法訪問Redis服務進行相關操做
  5. 使用rename-command CONFIG "RENAME_CONFIG"重命名相關命令,這樣黑客即便在鏈接上未受權問題的Redis服務,在不知道命令的狀況下只能獲取相關數據,而沒法進一步利用

其餘建議

  1. 騰訊雲公有云和私有云用戶能夠安裝騰訊雲主機安全產品-雲鏡,在被入侵植入木馬後能夠第一時間得到提示,及時止損
  2. 建議開通雲鏡專業版,能夠提早檢測獲知服務器的安全漏洞,及時修復,避免被利用

6、 附錄

IOCs

  1. 腳本 https://transfer.sh/MIpIA/tmp.9kIguIhkI7
  2. 挖礦程序 https://transfer.sh/MIpIA/tmp.vOYTgmtZge2918ee2b69bc4e6b581c7b25f08434fe
  3. 礦池域名 http://jb.chakpools.com/
  4. 相關文件名 .mxff0、.x1十二、.gpg、.dat、.cmd、.r.xx.xx.o/l、tmp.xxxx

連接

  1. 樣本https://www.virustotal.com/#/file/9756e66c168ec963c58b3d0ca5483927c14a64a99ba718fa9488a52d4d207ed6
  2. Pnscan項目地址 https://github.com/ptrrkssn/pnscan
  3. 漏洞說明 https://www.seebug.org/vuldb/ssvid-89715
  4. 漏洞利用演示 https://v.qq.com/x/page/u0661b9o772.html
  5. 雲鏡產品官網 https://cloud.tencent.com/product/hs

問答

如何避免打開重定向漏洞和安全重定向成功登陸?

相關閱讀

Hadoop Yarn REST API未受權漏洞利用挖礦分析

黑客是如何實現數據庫勒索的 ?

2018雲+將來峯會圓桌面對面:以網絡安全之能,造國之重器


此文已由做者受權騰訊雲+社區發佈,原文連接:https://cloud.tencent.com/developer/article/1142506?fromSource=waitui

歡迎你們前往騰訊雲+社區或關注雲加社區微信公衆號(QcloudCommunity),第一時間獲取更多海量技術實踐乾貨哦~

相關文章
相關標籤/搜索