随着虚拟货币市场的疯狂炒作之下,“矿业”已经成为额外的收入来源,越来越多的人参与其中。其攻击者会利用爆破弱口令、未授权漏洞、Jenkins、Redis、weblogic等中间件的漏洞发起攻击,利用成功的服务器将通过下载恶意木马脚本进行挖矿牟利,导致耗尽本地服务器资源影响正常业务运行。
2019年末,安识科技阿波罗主机安全管理平台捕获到一款自变异挖矿木马,该木马会改变自身hash或者将自身大量复制到不同的路径下且后台运行起来以躲避清理。
该木马有多个版本演变并会下载多个恶意文件执行恶意行为,我们将该木马命名为Axlist,Axlist这个木马是一个典型的挖矿木马,会通过wget、curl 下载恶意shell脚本并本地运行,写入定时任务、替换常用命令、添加ssh密钥、将系统所有js文件写入Coinhive JavaScript Miner 挖矿代码,不仅如此还会将恶意文件注入系统进程,从而实现区块连数字货币挖矿的攻击。
在此,安识科技安全应急响应团队对该事件所使用的恶意挖矿木马脚本进行具体的技术分析并提供修复建议、安全防护建议。
样本MD5:51db03**********bc085e6387ba42
ash.sh
分析得到木马主要行为总结:
覆写挖矿脚本计划任务
添加SSH凭证授权密钥后门
检测其他挖矿程序并结束进程
最后清空系统日志文件,清理入侵痕迹。
1、清除当前文件锁进程,将当前恶意脚本进程写入/tmp/lock.fiile单实例运行并优先调度。
2、清除计划任务添加SSH授权Key后门
3、为了避免其他恶意程序抢资源、清理其他恶意程序如kworker34、moneropool、ddg等挖矿程序。
4、killsusproc函数,清理自身挖矿进程,并且杀掉CPU 大于40%的进程。
5、生成临时tmp文件夹,查询axlist恶意挖矿进程名是否运行如果没有下载名为axlist的脚本在临时tmp文件夹中锁定该文件并运行挖矿脚本。
6、设置定时任务
定时执行从http://1x.xx.xx4.x3:7xx0/ash.sh 下载shell脚本
7、修改防火墙删除系统日志文件,清理入侵痕迹。
stratum协议是矿机与矿池之间的通讯协议。矿池软件与钱包之间的通讯是bitcoinrpc接口。
8、最后下载运行bsh.sh
研究发现这个变种的作者每周都更新代码,进行藏匿,截止发稿的ash/bsh/rsh都已经使用压缩进行隐藏部分代码。
通过ash.sh
样本下载执行bsh.sh恶意shell脚本文件
bsh.sh
主要功能为清除端口扫描进程、安装连接redis服务的相关软件如下所示:
卸载删除阿里云安骑士和腾讯主机安全产品
下载编译masscan和pnscan端口扫描器, bsh.sh 脚本最后再下载并且运行rsh.sh脚本
运行的恶意进程在阿波罗主机上能明显看到
且能收到阿波罗主机安全平台自动化病毒木马告警:
rsh.sh主要流程大概如下几个环节:
扫描开放6379端口的redis服务
通过redis-cli尝试连接Redis并执行预置在.dat文件里的利用命令将Redis的数据文件修改为/var/spool/cron/root,然后通过在Redis中插入数据,将下载执行脚本的动作写入crontab任务
通过计划任务下载ash.sh 脚本实现以上相关行为,完成并启动挖矿程序
.dat计划任务
通过调用pnscan和masscan扫描当前C/子段和192.168.0.0/16 172.16.0.0/16 116.62.0.0/16 116.232.0.0/16 116.128.0.0/16 116.163.0.0/16中开放6379端口且为Linux系统的目标,然后通过弱口令后者未授权的方式连接目标服务器的Redis服务,执行.dat中的命令,下载ash.sh挖矿脚本。
这里,Pnscan 2a 3100 a 24 340d 0 a 696 e 666 f 0d 0a
转换内容 `*1rn$4rnINFOrn'
的-W参数值是向目标Redis服务发送请求,以获得Redis服务器的各种信息和统计值,然后通过-R参数值6f 73 3a 4c 69 6e 75 78
(转换内容是os:Linux
) 确定Linux系统 。
最后扫描本机16段ip开放6379端口的服务
入侵的主要原因是Redis没未授权访问问题,所以如果要限制入侵的入口,需要加强Redis服务,以防止黑客通过这种方式入侵和植入挖矿蠕虫。
1、如果没有必要,请修改绑定项,不要将Redis绑定到0.0.0.0,并避免在外部网络中打开Redis服务。如果仅仅是本地通信,请确保监听在本地。这种方式缓 解了redis的风险。在/etc/redis/redis.conf中配置如下:
bind 127.0.0.1
2、如果需要其他机器访问,或者设置了slave模式,需添加相应的防火墙设置。命令如下
iptables -A INPUT -s x.x.x.x -p tcp --dport 6379 -j ACCEPT
3、redis默认没有开启密码认证,打开/etc/redis/redis.conf配置文件, (requirepass 密码)可设置认证密 码,保存redis.conf,重启redis(/etc/init.d/redis-server restart)之后,需要执行(auth 密码)。示例如 下:
redis-cli -h 192.168.10.212
redis 192.168.10.212:6379> keys * (error) ERR operation not permitted
redis 192.168.10.212:6379> auth password!@# OK ~~~
4、在不影响业务的情况下,不要以root用户身份启动Redis服务。同时,建议修改默认的6379端口。大多数针对Redis未授权问题的入侵都是针对默认端口的。
5、常态化关注组件安全状态,定期进行自动化和人工安全检查,使得安全工作常态化和可视化,出现应急类需求可联系安识科技应急响应团队。
安识科技应急响应服务
全力升级优化产品服务
全息监测安全风险和威胁情报,
关注客户业务动态
7*24小时,为您的安全保驾护航
应急热线:021-3332 8652
本文作者:安识科技
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/124178.html