AWS GuardDuty扩展威胁检测揭秘针对EC2和ECS的加密挖矿活动

本文详细介绍了AWS GuardDuty如何通过扩展威胁检测功能,发现并分析了一个利用泄露的IAM凭证,在Amazon EC2和Amazon ECS上部署加密挖矿软件的复杂攻击活动,并提供了相关的入侵指标和缓解建议。

Amazon GuardDuty和我们的自动化安全监控系统识别出一个始于2025年11月2日的持续加密货币(加密)挖矿活动。该操作利用被盗用的AWS身份和访问管理(IAM)凭证,针对Amazon Elastic Container Service(Amazon ECS)和Amazon Elastic Compute Cloud(Amazon EC2)。GuardDuty扩展威胁检测能够关联这些数据源中的信号,以生成一个关键严重性的攻击序列发现。利用亚马逊云科技(AWS)海量先进的威胁情报能力和现有检测机制,GuardDuty主动识别出这一持续活动,并迅速向客户发出威胁警报。AWS正在分享相关的发现和缓解指南,以帮助客户针对这一持续活动采取适当行动。 需要注意的是,这些行为并非利用了AWS服务中的漏洞,而是使用了未经授权的用户以非预期方式使用的有效凭证。尽管这些行为发生在责任共担模型的客户域内,AWS仍然建议客户采取一系列步骤来检测、预防或减少此类活动的影响。

理解加密挖矿活动

最近检测到的加密挖矿活动采用了一种新颖的持久化技术,旨在破坏事件响应并延长挖矿操作。这一持续活动最初是当GuardDuty安全工程师发现相似的攻击技术被用于多个AWS客户账户时发现的,这表明这是一场针对使用被盗IAM凭证的客户的协调性攻击活动。 威胁攻击者从一个外部托管提供商处操作,快速枚举了Amazon EC2服务配额和IAM权限,然后在Amazon EC2和Amazon ECS上部署加密挖矿资源。在攻击者获得初始访问权限的10分钟内,加密矿机就已开始运行。 在此攻击中观察到的一个关键技术是使用ModifyInstanceAttribute API并将disable API termination设置为true,这迫使受害者在删除受影响资源之前重新启用API终止功能。禁用实例终止保护为事件响应者增加了额外的考量因素,并可能破坏自动化的补救控制。攻击者通过脚本同时使用多种计算服务,并结合新兴的持久化技术,代表了加密挖矿持久化方法论的进步,安全团队应予以关注。 GuardDuty的多项检测能力通过EC2域/IP威胁情报、异常检测和扩展威胁检测EC2攻击序列,成功地识别了恶意活动。GuardDuty扩展威胁检测能够将信号关联为AttackSequence:EC2/CompromisedInstanceGroup发现。

入侵指标

安全团队应监控以下指标以识别此加密挖矿活动。威胁攻击者会频繁修改其战术和技术,因此这些指标可能随时间演变:

  • 恶意容器镜像 – 2025年10月29日创建的Docker Hub镜像yenik65958/secret,已被拉取超过100,000次,被用于将加密矿机部署到容器化环境。此恶意镜像包含一个用于加密挖矿的SBRMiner-MULTI二进制文件。该特定镜像已从Docker Hub撤下,但威胁攻击者可能以不同名称部署类似镜像。
  • 自动化和工具 – 指示基于Python自动化脚本的AWS SDK for Python(Boto3)用户代理模式在整个攻击链中被使用。
  • 加密挖矿域名asia[.]rplant[.]xyzeu[.]rplant[.]xyzna[.]rplant[.]xyz
  • 基础设施命名模式 – 自动伸缩组遵循特定的命名约定:Spot实例为SPOT-us-east-1-G*-*,按需实例为OD-us-east-1-G*-*,其中G表示组号。

攻击链分析

该加密挖矿活动遵循了跨越多个阶段的系统性攻击进程。本文中的敏感字段被赋予了虚构值以保护个人身份信息。

图1:加密货币挖矿活动示意图

初始访问、发现和攻击准备

攻击始于从一个异常网络和位置使用具有管理员权限的被盗IAM用户凭证,这触发了GuardDuty异常检测发现。在发现阶段,攻击者系统地探测客户AWS环境,以了解他们可以部署哪些资源。他们检查了Amazon EC2服务配额(GetServiceQuota)以确定可以启动多少个实例,然后通过多次调用启用了DryRun标志的RunInstances API来测试其权限。 DryRun标志是一种有意的侦察策略,允许攻击者验证其IAM权限而无需实际启动实例,从而避免产生费用并减少其检测足迹。该技术表明威胁攻击者在行动之前验证了其部署加密挖矿基础设施的能力。不常在环境中使用DryRun标志的组织应考虑监控此API模式,将其作为泄露的早期预警指标。可以将AWS CloudTrail日志与Amazon CloudWatch警报、Amazon EventBridge或您的第三方工具配合使用,以针对这些可疑API模式发出警报。 威胁攻击者调用了两个API来创建IAM角色作为其攻击基础设施的一部分:用于为自动伸缩组创建角色的CreateServiceLinkedRole,以及用于为AWS Lambda创建角色的CreateRole。然后,他们将AWSLambdaBasicExecutionRole策略附加到Lambda角色上。这两个角色对攻击的影响和持久化阶段至关重要。

Amazon ECS影响

威胁攻击者首先在环境中创建了数十个ECS集群,有时一次攻击中超过50个ECS集群。然后,他们调用了RegisterTaskDefinition,并指定了一个恶意的Docker Hub镜像yenik65958/secret:user。攻击者使用相同的字符串创建集群后,创建了一个服务,利用任务定义在ECS AWS Fargate节点上启动加密挖矿。以下是RegisterTaskDefinition API请求参数的示例,其中CPU最大分配为16,384个单元。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
{
    "dryrun": false,
    "requiresCompatibilities": ["FARGATE"],
    "cpu": 16384,
    "containerDefinitions": [
        {
            "name": "a1b2c3d4e5",
            "image": "yenik65958/secret:user",
            "cpu": 0,
            "command": []
        }
    ],
    "networkMode": "awsvpc",
    "family": "a1b2c3d4e5",
    "memory": 32768
}

使用此任务定义,威胁攻击者调用CreateService以启动期望数量为10的ECS Fargate任务。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
{
    "dryrun": false,
    "capacityProviderStrategy": [
        {
            "capacityProvider": "FARGATE",
            "weight": 1,
            "base": 0
        },
        {
            "capacityProvider": "FARGATE_SPOT",
            "weight": 1,
            "base": 0
        }
    ],
    "desiredCount": 10
}

图2:恶意镜像中的加密货币挖矿脚本内容

恶意镜像(yenik65958/secret:user)被配置为在部署后执行run.shrun.sh运行randomvirel挖矿算法,并连接到矿池:asia|eu|na[.]rplant[.]xyz:17155。标志nproc --all表示脚本应使用所有处理器核心。

Amazon EC2影响

攻击者创建了两个启动模板(CreateLaunchTemplate)和14个自动伸缩组(CreateAutoScalingGroup),这些组配置了激进的伸缩参数,包括最大实例数为999和期望容量为20。以下来自CreateLaunchTemplate的请求参数示例显示提供了UserData,指示实例开始加密挖矿。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
{
    "CreateLaunchTemplateRequest": {
        "LaunchTemplateName": "T-us-east-1-a1b2",
        "LaunchTemplateData": {
            "UserData": "<sensitiveDataRemoved>",
            "ImageId": "ami-1234567890abcdef0",
            "InstanceType": "c6a.4xlarge"
        },
        "ClientToken": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
    }
}

威胁攻击者创建了同时使用Spot实例和按需实例的自动伸缩组,以充分利用两种Amazon EC2服务配额并最大化资源消耗。 Spot实例组

  • 针对高性能GPU和机器学习(ML)实例(g4dng5g5p3p4dinf1
  • 配置为0%按需分配和容量优化策略
  • 设置为从20个实例扩展到999个实例

按需实例组

  • 针对计算、内存和通用实例(c5c6ir5r5nm5am5m5n
  • 配置为100%按需分配
  • 同样设置为从20个实例扩展到999个实例

在耗尽自动伸缩配额后,攻击者直接使用RunInstances启动了额外的EC2实例,以消耗剩余的EC2实例配额。

持久化

在此活动中观察到的一个有趣技术是威胁攻击者对所有已启动的EC2实例使用ModifyInstanceAttribute来禁用API终止。尽管实例终止保护可以防止意外终止实例,但它增加了事件响应能力的额外考量,并可能破坏自动化的补救控制。以下示例显示了API ModifyInstanceAttribute的请求参数。

1
2
3
4
5
6
{
    "disableApiTermination": {
        "value": true
    },
    "instanceId": "i-1234567890abcdef0"
}

在所有挖矿工作负载部署完成后,攻击者创建了一个Lambda函数,其配置绕过了IAM身份验证并创建了一个公共Lambda端点。威胁攻击者随后向Lambda函数添加了一个权限,允许该主体调用该函数。以下示例显示了CreateFunctionUrlConfigAddPermission的请求参数。 CreateFunctionUrlConfig

1
2
3
4
{
    "authType": "NONE",
    "functionName": "generate-service-a1b2c3d4"
}

AddPermission

1
2
3
4
5
6
7
{
    "functionName": "generate-service-a1b2c3d4",
    "functionUrlAuthType": "NONE",
    "principal": "*",
    "statementId": "FunctionURLAllowPublicAccess",
    "action": "lambda:InvokeFunctionUrl"
}

威胁攻击者通过创建一个IAM用户user-x1x2x3x4并附加IAM策略AmazonSESFullAccessCreateUserAttachUserPolicy)结束了持久化阶段。他们还在该用户创建了访问密钥和登录配置文件(CreateAccessKeyCreateLoginProfile)。基于附加到该用户的SES角色,似乎威胁攻击者正在尝试进行Amazon Simple Email Service(Amazon SES)钓鱼攻击。 为防止创建公共Lambda URL,组织可以部署服务控制策略(SCP),拒绝创建或更新具有AuthType为“NONE”的Lambda URL。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "lambda:CreateFunctionUrlConfig",
                "lambda:UpdateFunctionUrlConfig"
            ],
            "Resource": "arn:aws:lambda:*:*:function/*",
            "Condition": {
                "StringEquals": {
                    "lambda:FunctionUrlAuthType": "NONE"
                }
            }
        }
    ]
}

使用GuardDuty的检测方法

GuardDuty采用多层检测方法,利用威胁情报、异常检测以及最近推出的针对EC2和ECS的扩展威胁检测功能,在识别攻击链的所有阶段方面被证明非常有效。 接下来,我们将详细介绍这些功能,以及您可以如何部署它们来检测此类攻击。您可以启用GuardDuty基础保护计划,以接收有关本文所述此类加密挖矿活动的警报。为了进一步增强检测能力,我们强烈建议启用GuardDuty运行时监控,该功能将把发现覆盖范围扩展到Amazon EC2、Amazon ECS和Amazon Elastic Kubernetes Service(Amazon EKS)上的系统级事件。

GuardDuty EC2发现

针对Amazon EC2的威胁情报发现是GuardDuty基础保护计划的一部分,该计划将提醒您注意涉及您实例的可疑网络行为。这些行为可能包括暴力破解尝试、连接到恶意或加密域名以及其他可疑行为。利用第三方威胁情报和内部威胁情报,包括主动威胁防御和MadPot,GuardDuty通过以下发现提供对本文中指标的检测:CryptoCurrency:EC2/BitcoinTool.BCryptoCurrency:EC2/BitcoinTool.B!DNS

GuardDuty IAM发现

涵盖多个战术类别(PrivilegeEscalationImpactDiscovery)的IAMUser/AnomalousBehavior发现展示了GuardDuty的机器学习能力,可以检测偏离正常用户行为的情况。在本文描述的事件中,被盗凭证被检测到是因为威胁攻击者从一个异常网络和位置使用它们,并调用了对该账户而言不寻常的API。

GuardDuty运行时监控

GuardDuty运行时监控是扩展威胁检测攻击序列关联的一个重要组成部分。运行时监控提供主机级信号,例如操作系统可见性,并通过分析系统和容器级别的指示恶意进程执行的日志来扩展检测覆盖范围,包括在工作负载上执行加密挖矿程序。CryptoCurrency:Runtime/BitcoinTool.B!DNSCryptoCurrency:Runtime/BitcoinTool.B发现检测到与加密相关域名和IP的网络连接,而Impact:Runtime/CryptoMinerExecuted发现则检测正在运行的进程是否与加密货币挖矿活动相关。

GuardDuty扩展威胁检测

在2025年re:Invent大会上推出的AttackSequence:EC2/CompromisedInstanceGroup发现代表了GuardDuty中扩展威胁检测能力的最新成果之一。此功能利用AI和ML算法,自动关联跨多个数据源的安全信号,以检测EC2资源组的复杂攻击模式。尽管针对EC2的AttackSequence已包含在GuardDuty基础保护计划中,但我们强烈建议启用运行时监控。运行时监控提供来自计算环境的关键洞察和信号,能够检测可疑的主机级活动并改进攻击序列的关联。对于AttackSequence:ECS/CompromisedCluster攻击序列,需要运行时监控来关联容器级活动。

监控和补救建议

为防范类似的加密挖矿攻击,AWS客户应优先实施强身份和访问管理控制。使用临时凭证代替长期访问密钥,对所有用户强制执行多因素认证(MFA),并对IAM主体应用最小权限原则,将访问权限限制在仅所需的权限。您可以使用AWS CloudTrail记录跨AWS服务的事件,并将日志合并到单个账户中,以便安全团队访问和监控。要了解更多信息,请参阅CloudTrail文档中的“从多个账户接收CloudTrail日志文件”。 确认GuardDuty已在所有账户和区域启用,并启用运行时监控以获得全面的覆盖范围。将GuardDuty与AWS Security Hub和Amazon EventBridge或第三方工具集成,以启用自动响应工作流并快速补救高严重性发现。实施容器安全控制,包括镜像扫描策略和监控ECS任务定义中异常的CPU分配请求。最后,为加密挖矿攻击建立特定的事件响应程序,包括处理禁用了API终止的实例的文档化步骤——这是攻击者用来使补救工作复杂化的一项技术。 如果您认为您的AWS账户受到了加密挖矿活动的影响,请参考GuardDuty文档中的补救步骤:“补救潜在被盗用的AWS凭证”,“补救潜在被盗用的EC2实例”和“补救潜在被盗用的ECS集群”。 要了解最新的技术动态,请访问AWS的“威胁技术目录”。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计