云服务器挖矿新姿势?挖矿也知道不能竭泽而渔了。

916 阅读5分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情

这篇文章主要记录一下我的云服务器被挖矿的经历,包括全部的探索过程和处理流程。在我遥远的记忆里,以往看到别人被攻击都是云服务器cpu使用率直接拉到百分百的,这个挖矿程序只给我拉到百分之五十,让我一度以为这不是挖矿程序,看来挖矿脚本也越来越狡猾了,知道不能竭泽而渔干一票就跑了。

问题初现

双十一打折的时候,我买了个华为云的云服务器。之前在上面部署过任务,但是最近已经把任务都停掉了。不过我最近想着再部署个任务上去,结果发现出了大问题了。 image.png

谁家好服务器能在空闲时cpu使用率干到50%?

image.png

摸索问题

初次定论:被攻击了

于是我赶紧打开xshell,准备看看这个货到底在干啥。首先是我最熟悉的top

image.png

可以看到使用率在49.5%接近50%,然后tasks那里显示只有一个任务在执行。 就是下面的列表所有的进程占用率加起来都没1%。啥情况嘞?

然后我看到这么一篇文章。 image.png

有一说一,有点吓人。

1673431093333.png

接下来继续排查原因呗。

  1. 试了下ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu这个命令,也没有那个占用率很高的进程 image.png

  2. 查了下topps命令的更改时间。时间也是能对应上的,毕竟在2016年,最近没有更改。所以可能,大概率不是命令被篡改的问题。 image.png

显然本人也是个linux的菜鸡实在不知道怎么解决这个问题。所以就继续搜呗,还能怎么办?一百多块钱不要了啊。

  1. 在我继续面向度娘改bug的时候,我看到这么一篇文章。里面的精华部分是这样的。虽然我没用过pstreeexecsnoop但是我关注的重点是应用不停的再重启。 image.png

巧了,我一下子就想到之前我把chatgpt对接到微信用的就是这里的数据库。chatgpt对接微信全流程 - 掘金 (juejin.cn)

这个东西在1.7就已经不运行了,日志也就截止在这里。很可能,就是这个程序在一直重启,一直在占用cpu资源。 image.png

可能没被攻击:先处理go程序

但是,我得坦白一件事。我不会go语言的程序中断。我刚查了才知道java有个jps而,go有个gops

但是吧,我甚至连gops安装go get -u github.com/google/gops报错都不知道怎么处理。初次来看是版本问题。 image.png 那我就直接下载这个1.17版本的呗,之前我的下载语句是

wget https://golang.google.cn/dl/go1.16.7.linux-amd64.tar.gz

现在直接改成

wget https://golang.google.cn/dl/go1.17.0.linux-amd64.tar.gz

他还给我报错,wget命令没找到? image.png

不知道啥情况,感觉现在这个机器一团乱麻。明明查得到,结果用不了。 image.png

那能怎么办?一百多块钱呢,总不能不要了吧。

  • 先卸载 yum remove wget

  • 再安装 yum -y install wget

总感觉今天诸事不顺呢。 image.png

wget没问题了,现在是没有1.17.0这个版本。只能去官网找找看了。以下的版本都可以。我直接把上面的下载语句的.0删掉。

image.png 下载后解压(记得在这之前先把app目录下的go删掉rm -rf go)

tar -xvzf go1.17.linux-amd64.tar.gz -C /root/app

查看go version,环境换了昂。 image.png

运行上面的下载gops的语句go get -u github.com/google/gops

尝试干掉go:白忙活

image.png

干掉这两个进程之后,很遗憾,cpu使用率还是照旧。说明不是这个问题。

image.png

我突然想起来,我的服务器上还有两个东西,mysql和redis。虽然目前没有应用去用到他们。不过干掉试试看,万一呢?

尝试干掉redis:白忙活

pkill redis

尝试干掉mysql:白忙活

image.png

阶段性总结:应该就是被攻击了

他奶奶滴,看来mysqlredis不用的时候不占cpu使用率。大家不用踩坑了。目前的cpu使用率还是这个样子。而我的服务器好像没有可以停止的程序了。 image.png

我觉得我的思路走岔了,我应该直接找那唯一一个running的task。

查了下,topps是死活查不出来。为此我新安装了个命令htop

yum install htop

直接执行htop,终于看到这个占cpu使用率50%的进程。

image.png

一个运行了15小时,一个运行了72小时。看来时间还不长。

我看到了程序的command描述,好家伙一个zzh一个hash。完美符合挖矿程序的特征。主要还是看到了这个老哥的博客。 记录一次服务器被入侵(恶意挖矿)的问题_键盘歌唱家的博客

把那几个多出来的进程,kil掉就行了。cpu使用率回归正常。 image.png

探查原因

虽然这个问题表面上解决了,但是不法组织肯定有手段进来一次,肯定有手段进来第二次。所以我得看看我的服务器账户有什么问题没有。

用户登录记录

image.png

从用户登录来看,只有我自己登录了。但是黑客嘛,肯定有点手段的,不可能在登录记录留下来。

查看定时任务

image.png

emmm。黑客也没留个定时任务。

删除挖矿脚本

image.png

刚才我们定位到挖矿脚本就是这两个。所以直接用rm -rf zzh zzhs删除即可

image.png

zzhs比较好删除,但是zzh这个shell脚本还是有点问题。 处理这个我参考了两篇文章 【Linux被攻击】关于Linux攻击文件在etc目录下无法删除,不能进行任何操作(Operation not permitted) - 掘金 (juejin.cn)

记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案 - 掘金 (juejin.cn)

最终的解决流程

  1. 直接用chattr改变这个zzh的属性没用
  2. chmodchattr加执行权限
  3. rm -rf zzh zzhs删除
  4. 确认删除成功 image.png

总结

这次被挖矿很可能是我在学redis做东西的时候没设密码被人扫描到了。现在已经把redis停了,看看后续会不会出问题吧。