ata
发布于 2023-08-26 / 299 阅读
0
0

记一次 VPS 被黑掉拉进僵尸网络

事情是这样的:因业务中 CI 的步骤较多,且自己的 VPS 的性能比 GitHub(免费版)提供的环境要好,故把 VPS 配置成了 self-hosted runner。

今天下午偶然发现 CI 的耗时比以往长了一倍,登上服务器调查原因,发现大部分 CPU 被一个名为 kswapd0 的进程消耗掉了。上网查了一下 kswapd0 CPU 占用高的问题,没什么特别的收获,于是又查了一下第二个进程 blitz64,好家伙,似乎是一个恶意进程。

gitea 这个用户是给 Gitea 用的,口令比较简单,且忘了 ban 掉公网 SSH 登录,估计是被扫到端口暴力破解了。切换到 gitea 用户继续排查,发现它创建了很多连接(下图已经是清理过一遍的进程列表,先前有大量被 blitz64 唤起的 httpd 进程)

幸好我没有给 gitea sudo 权限,攻击者的爪子应该伸不长。使用 kill -9 -u gitea 杀掉了这个用户创建的所有进程,然后继续排查痕迹。

发现用户目录下有一个名为 .configrc5 的文件夹,/tmp 目录下也有 .X291-unix 文件夹。后者下面没有什么东西(除了一个 dota3.tar.gz,不知这个名字是否有意),前者除了几个用于发垃圾请求的文件夹外还有个 cron.d 文件,就执行 crontab -l 看了一眼,果然攻击者想用 crontab 定时更新和拉起服务。

$ crontab -l    
5 6 * * 0 /home/gitea/.configrc5/a/upd>/dev/null 2>&1
@reboot /home/gitea/.configrc5/a/upd>/dev/null 2>&1
5 8 * * 0 /home/gitea/.configrc5/b/sync>/dev/null 2>&1
@reboot /home/gitea/.configrc5/b/sync>/dev/null 2>&1
0 0 */3 * * /tmp/.X291-unix/.rsync/c/aptitude>/dev/null 2>&1

删除了 crontab 配置、清理掉 .configrc5 文件夹,又想起来看了一眼 .ssh 文件夹,发现攻击者还加了个 authorized_keys 方便后续登录,🐮

至此告一段落。处理措施:改密码,清查用户目录,禁止用户 SSH 登录。

后来还被 VPS 提供商关机了,因为他们收到了其它服务商的 abuse 投诉。当然协商后解决了。


评论