Blog遇到了挖矿脚本攻击😅

一大早刚睡醒,打开手机就看到了阿里云发来的告警邮件,服务器正在进行挖矿😳,一下睡意去了大半。

【挖矿处置通知】为避免您的云服务被关停,请尽快清理挖矿活动【挖矿处置通知】为避免您的云服务被关停,请尽快清理挖矿活动

CPU使用率飙升CPU使用率飙升

因为Blog是编译后的静态网站,按理说压根不会遇到被挂马的情况。服务器密码用的也是64位随机大小写数字符号密码,被暴力破解的概率也几近于零,我能想到的情况也就是服务器中一个定时任务(从外部拉取数据到网站内)和两个辅助应用(网站统计、评论区)有可能出现问题。

现在还不是排查问题来源的时机,先把问题解决了吧,去干掉这个挖矿脚本。

一、解决问题

过去对Linux命令不太熟,每次操作都得查询大量博客,去尝试博主们提供的命令行。中途出现了预想外的问题再处理起来也非常麻烦。现在有了AI,处理这些问题就从容的多了,先让AI整理一套排查问题的命令:

豆包整理的排查指南豆包整理的排查指南

按照顺序执行,中途如果有出现看不懂的返回数据,也可以再次询问AI。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 查找占用高的进程
[root ~]# top

# 筛选xmrig进程信息
[root ~]# ps aux | grep -i "xmrig\|xmr\|miner\|挖矿" | grep -v grep
1001 19542 98.7 14.7 309940 266140 ? Sl 02:23 448:52 /tmp/updater-1001/xmrig-6.24.0/xmrig --url pool.supportxmr.com:8080 --user 89e6LJN3AvUWqj9fsauz1kaqv3z2CYvJAfR2vHAoo16LMm3ugMrSComQgEDKKXSz6zFbNB4CVfZQwGdaSx4psNTg873jMKW --pass worker --donate-level 0

# 强制终止
[root ~]# ps aux | grep -i "xmrig\|xmr\|miner" | grep -v grep | awk '{print $2}' | xargs -r kill -9

# 再次查询,确认进程已终止(defunct代表僵尸进程,后续系统会择机释放PID)
[root ~]# ps aux | grep -i xmrig | grep -v grep
1001 19542 98.7 0.0 0 0 ? Z 02:23 450:24 [xmrig] <defunct>

# 终止所有与/tmp/updater-1001目录相关的进程(关键:防止守护脚本重启)
fuser -km /tmp/updater-1001/ 2>/dev/null # -k 终止进程,-m 匹配目录相关所有进程

# 强制删除整个恶意目录(-rf 递归删除,忽略权限)
rm -rf /tmp/updater-1001/

# 验证目录已删除(无输出则成功)
ls -ld /tmp/updater-1001/ 2>/dev/null

当上述步骤检查完毕后,再进行其他检查工作:

  • 检查是否有可疑的系统定时任务;
  • 检查是否有可疑的系统用户;
  • 检查/tmp目录下是否有残留的守护任务;
  • 检查系统中是否有隐匿未删除的挖矿脚本备份;
  • 及时更新修复相关系统漏洞;
  • 对于业务中有暴露风险的accessKey及时注销替换
  • 对于系统中敏感易泄露的应用密码进行替换

处理完成后,CPU使用率恢复到正常水平处理完成后,CPU使用率恢复到正常水平

二、排查来源

一切解决后,我就开始排查这个问题是怎么产生的。我的怀疑目标主要有三个:

  • 定时任务:同步每日油价,用于Blog的自建应用“百公里油耗费用计算器”;
  • Twikoo:网站评论区;
  • Umami:网站访问量统计;

先看定时任务,最近几日运行都是正常的;而且定时脚本是自己写的,功能只是抓取数据之后保存为json文件,没有任何的执行文件功能,不存在安全隐患。

定时任务运行正常定时任务运行正常

再看Twikoo和Umami,于是我去Github查看了他们近期的发版情况,果然出了问题!Umami近一周连发三版,解决Next.js导致的高危服务器漏洞。正巧我的Umami还是2.18.0,在漏洞影响范围内…

Umami近期疯狂更新,正巧是那个Next.js的高危漏洞💀Umami近期疯狂更新,正巧是那个Next.js的高危漏洞💀

后续又有一个发现佐证了我的看法:我在查询服务器是否还有遗漏的xmrig文件时,搜索到了下列路径内容。而这个8c4****536正巧是Umami的容器ID。

1
2
3
4
5
6
[root /]# find / -name "*xmrig*" 2>/dev/null

/var/lib/docker/overlay2/8c4****536/merged/tmp/updater-1001/xmrig-6.24.0
/var/lib/docker/overlay2/8c4****536/merged/tmp/updater-1001/xmrig-6.24.0/xmrig
/var/lib/docker/overlay2/8c4****536/diff/tmp/updater-1001/xmrig-6.24.0
/var/lib/docker/overlay2/8c4****536/diff/tmp/updater-1001/xmrig-6.24.0/xmrig

所以,后续的封堵方案就比较简单了,将Umami的版本升至v2.20.1以上即可(建议升到v2.20.2,因为12月11日Next又爆出了2个高危漏洞😂)。

尾、回旋镖🎯

Next.js这个事,其实我前几天就刷到了。

当时我还发了个朋友圈吐槽 “前端框架搞SSR,终究要把曾经服务端语言踩过的坑,再走一遍。

没想到一周之后,轮到我走一遍了😂

Blog遇到了挖矿脚本攻击😅

作者:有点东西

链接: https://www.youdiandongxi.com/article/server-cryptojacking-log.html

协议:本文采用 CC BY-NC-SA 4.0 隐私协议,转载请注明出处!

评论区