作者:jimmy520 ,转自于freebuf。
某日接到客户通知,多台服务器被植入恶意程序,cpu占用率非常高,为了避免客户业务系统受到影响,开始了此次应急处置工作。
经过前期分析排查发现影响系统运行的程序名为warmup。
使用ps -ef 命令查看可疑进程。
发现/root/.warmup/warmup进程为可疑进程,进一步使用微步在线云沙箱分析文件warmup,发现其为恶意文件。
在相同目录下发现多个记录文件。
Alternatives为工具包。
确认为恶意挖矿文件。一开始病毒没有完全清除,服务器一小时重启一次,后来排查。
根据时间判断发现etc下存在多个可疑文件。
发现sysconfig下iptables文件被更改,需要确认。
同时发现timesyns存在更该需要确认。
发现alternatives存在恶意脚本warmup。
发现xtab文件夹中存在挖矿脚本,并发现其中somescript与.somescript为挖矿脚本,其中发现引用多个文件。
确定xtab与cron.hourly下的somescript为恶意文件。
根据代码确定,恶意文件远程地址为http://5.133.65.53/soft/linux/$warmupfile.sh。
根据脚本发现etc/init.d下存在恶意文件warmup。
在warmup中发现其引用。
通过文件生成时间也可判断一下两个文件为恶意文件。
查看其他文件发现根目录同时存在.warmup文件夹与挖矿文件相同。
本次处置业务分为:公众业务平台和领导平台两部分业务。在公众业务平台发现mongo用户密码为mongo是弱口令。由于生产系统未尝试提权root操作。因为只有两台mongodb服务器感染挖矿病毒,大概率为弱口令导致。
领导平台被控制的主机比较多,但是可以重新部署影响范围较小没有充分溯源分析。如需分析可以将虚拟机导出或者登录后充分分析日志。
结论病毒可能通过弱口令或者开源中间件漏洞导致获取root权限从而被放置挖矿病毒。
top命令可以发现warmup进程占用所有cpu资源导致无法正常对外业务,服务器每小时规律性自动重启。运营商态势感知发现挖矿矿池域名。
本次清理病毒为参考运营商提供一份应急报告进行如下操作:
拒绝所有到服务器的22端口访问。
拒绝所有服务器对外部访问。
删除以下文件。
/.warmup
/root/.warmup
/etc/cron.hourly/somescript
/etc/cron.hourly/.somescript
/etc/xtab/somescript
/etc/xtab/.somescript
/etc/init.d/warmup与modules
/etc/alternatives/.warmup下文件与ip.txt
无iptables配置所以删除/etc/sysconfig/iptables与iptables.save文件
关闭以下服务。
systemctl stop xinetd
systemctl disable xinetd
杀死warmup进程。
因为实际上我们发现很难彻底根除病毒残留文件。例如:意外发现系统命令历史文件:/root/.bash_history被设置成了/dev/null的软连接所以无法保存命令历史。
备份数据库中数据。
格式化后重新安装操作系统。
重新部署业务系统。(防止业务系统例如webapp被植入木马后门不能采用服务器上的文件备份)
导入数据库备份。
系统重新上线。
禁止系统、应用业务、中间件弱口令
禁止服务账号如:mongo用户登录操作系统
关闭不必要的服务(端口)
开展上线前漏洞扫描
在系统自带iptables设置正确的控制策略,如难度较大至少边界防火墙设置策略。
对外部的访问:
在边界防火墙上设置正确的访问策略,严格进制服务器对外:互联网和政务网的主动连接,如果必须请至少具体化源和目标地址。
对外提供服务:
只开放业务端口到服务器集群(精确到目标地址和目标端口),如非必要对境外提供服务,请最好设置只允许国内IP地址范围访问业务(中国大陆IP范围和电子政务网IP范围à对外服务的目标服务器地址和业务目标端口)。
微信号:stonefor345