Amazon Web Services ブログ

Amazon GuardDuty 拡張脅威検出が Amazon EC2 と Amazon ECS を標的とした暗号通貨マイニングキャンペーンを検出

本ブログは 2025 年 12 月 16 日に公開された AWS Blog “GuardDuty Extended Threat Detection uncovers cryptomining campaign on Amazon EC2 and Amazon ECS” を翻訳したものです。

Amazon GuardDuty と AWS の自動セキュリティ監視システムは、2025 年 11 月 2 日に開始された暗号通貨マイニングキャンペーンを検出しました。この攻撃は、侵害された AWS Identity and Access Management (IAM) 認証情報を使用して、Amazon Elastic Container Service (Amazon ECS)Amazon Elastic Compute Cloud (Amazon EC2) を標的としています。GuardDuty 拡張脅威検出は、これらのデータソース全体のシグナルを相関させ、重大度がクリティカルの攻撃シーケンスの検出結果を生成しました。Amazon Web Services (AWS) の大規模で高度な脅威インテリジェンス機能と既存の検出メカニズムを活用し、GuardDuty はこの進行中のキャンペーンをプロアクティブに特定し、お客様に脅威を迅速に通知しました。AWS は、お客様がこの進行中のキャンペーンに対して適切な対策を講じられるよう、関連する検出結果と緩和策のガイダンスを共有しています。

重要な点として、これらのアクションは AWS サービスの脆弱性を悪用するものではなく、正規の認証情報が侵害され、本来の所有者が意図しない方法で攻撃者に悪用されることで発生します。これらのアクションは責任共有モデルにおけるお客様の責任範囲で発生しますが、AWS はこのようなアクティビティを検出、防止、または影響を軽減するためにお客様が実施できる手順を推奨しています。

暗号通貨マイニングキャンペーンの概要

今回検出された暗号通貨マイニングキャンペーンでは、インシデントレスポンスを妨害し、マイニング活動を長期化させるように設計された新たな永続化手法が使用されていました。GuardDuty のセキュリティエンジニアが、複数の AWS カスタマーアカウントで類似した攻撃手法が使用されていることを発見し、このキャンペーンを特定しました。これは、侵害された IAM 認証情報を使用してお客様を標的とした組織的なキャンペーンであることを示しています。

脅威アクターは外部のホスティングプロバイダーを拠点として、Amazon EC2 のサービスクォータと IAM 権限を素早く列挙した後、Amazon EC2 と Amazon ECS 全体に暗号通貨マイニングリソースをデプロイしました。脅威アクターが初期アクセスを取得してから 10 分以内に、暗号通貨マイナーが稼働を開始しました。

この攻撃で観測された主要な手法は、ModifyInstanceAttribute を使用して 終了保護 (DisableApiTermination) を true に設定することでした。これにより、被害者は影響を受けたリソースを削除する前に終了保護を無効にする必要があります。インスタンス終了保護を有効にすることで、インシデント対応者にとって追加の考慮事項が生じ、自動修復コントロールが妨害される可能性があります。脅威アクターが複数のコンピューティングサービスをスクリプト化して使用し、新たな永続化手法と組み合わせたことは、セキュリティチームが認識すべき暗号通貨マイニングの永続化手法の進化を示しています。

GuardDuty の複数の検出機能は、EC2 ドメイン/IP 脅威インテリジェンス、異常検出、および拡張脅威検出の EC2 攻撃シーケンスを通じて、悪意のあるアクティビティを的確に特定しました。GuardDuty 拡張脅威検出は、シグナルを AttackSequence:EC2/CompromisedInstanceGroup の検出結果として相関させることができました。

侵害の痕跡 (IoC)

セキュリティチームは、この暗号通貨マイニングキャンペーンを特定するために、以下の IoC を監視する必要があります。脅威アクターは戦術と手法を頻繁に変更するため、これらの指標は時間の経過とともに変化する可能性があります。

  • 悪意のあるコンテナイメージ: 2025 年 10 月 29 日に作成され、10 万回以上プルされた Docker Hub イメージ yenik65958/secret が、コンテナ化された環境に暗号通貨マイナーをデプロイするために使用されました。この悪意のあるイメージには、暗号通貨マイニング用の SBRMiner-MULTI バイナリが含まれていました。この特定のイメージは Docker Hub から削除されましたが、脅威アクターは別の名前で類似のイメージをデプロイする可能性があります
  • 自動化とツール: 攻撃チェーン全体で、Python ベースの自動化スクリプトを示す AWS SDK for Python (Boto3) のユーザーエージェントパターンが使用されました
  • 暗号通貨マイニングドメイン: asia[.]rplant[.]xyzeu[.]rplant[.]xyz、および na[.]rplant[.]xyz
  • インフラストラクチャの命名パターン: Auto Scaling グループは特定の命名規則に従っていました。スポットインスタンスの場合は SPOT-us-east-1-G*-*、オンデマンドインスタンスの場合は OD-us-east-1-G*-* で、G はグループ番号を示します

攻撃チェーンの分析

この暗号通貨マイニングキャンペーンは、複数のフェーズにわたって体系的な攻撃の進行をたどりました。本ブログでは、個人を特定できる情報 (PII) を保護するため、機密フィールドには架空の値を使用しています。

暗号通貨マイニングキャンペーンの図

図 1: 暗号通貨マイニングキャンペーンの図

初期アクセス、偵察、攻撃準備

攻撃は、異常なネットワークとロケーションから管理者相当の権限を持つ侵害された IAM ユーザー認証情報で開始され、GuardDuty の異常検出の検出結果がトリガーされました。偵察フェーズでは、攻撃者はお客様の AWS 環境を体系的に調査し、どのようなリソースをデプロイできるかを把握しました。攻撃者は Amazon EC2 のサービスクォータ (GetServiceQuota) を確認して起動可能なインスタンス数を特定し、次に DryRun フラグを有効にして RunInstances API を複数回呼び出すことで権限をテストしました。

DryRun フラグは、実際にインスタンスを起動することなく IAM 権限を検証できる意図的な偵察手法でした。これにより、コストを回避し、検出される可能性を低減しています。この手法は、脅威アクターが行動を起こす前に暗号通貨マイニングインフラストラクチャをデプロイする能力を検証していたことを示しています。通常 DryRun フラグを使用しない組織は、この API パターンを侵害の早期警告指標として監視することを検討してください。AWS CloudTrail ログは、Amazon CloudWatch アラームAmazon EventBridge、またはサードパーティツールと組み合わせて、これらの疑わしい API パターンに対するアラートを設定できます。

脅威アクターは、攻撃インフラストラクチャの一部として IAM ロールを作成するために 2 つの API を呼び出しました。Auto Scaling グループ用のロールを作成するための CreateServiceLinkedRole と、AWS Lambda 用のロールを作成するための CreateRole です。その後、Lambda ロールに AWSLambdaBasicExecutionRole ポリシーをアタッチしました。これら 2 つのロールは、攻撃の影響と永続化フェーズに不可欠でした。

Amazon ECS への影響

脅威アクターはまず、環境全体で数十の ECS クラスターを作成し、1 回の攻撃で 50 を超える ECS クラスターを作成することもありました。次に、悪意のある Docker Hub イメージ yenik65958/secret:user を使用して RegisterTaskDefinition を呼び出しました。クラスター作成時と同じ文字列を使用して、攻撃者はタスク定義を使用してサービスを作成し、AWS Fargate で実行される ECS タスク上で暗号通貨マイニングを開始しました。以下は、最大 CPU 割り当て 16,384 ユニットを指定した RegisterTaskDefinition の API リクエストパラメータの例です。

{   
    "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 タスクを起動しました。

{   
    "dryrun": false,   
    "capacityProviderStrategy": [     
        {       
            "capacityProvider": "FARGATE",       
            "weight": 1,       
            "base": 0     
        },     
        {       
            "capacityProvider": "FARGATE_SPOT",       
            "weight": 1,       
            "base": 0     
        }   
    ],   
    "desiredCount": 10 
}

図 2: 悪意のあるイメージ内の暗号通貨マイニングスクリプトの内容

図 2: 悪意のあるイメージ内の暗号通貨マイニングスクリプトの内容

悪意のあるイメージ (yenik65958/secret:user) は、デプロイ後に run.sh を実行するように設定されていました。run.sh は、マイニングプール asia|eu|na[.]rplant[.]xyz:17155 を使用して randomvirel マイニングアルゴリズムを実行します。nproc --all フラグは、スクリプトがすべてのプロセッサコアを使用することを示しています。

Amazon EC2 への影響

脅威アクターは 2 つの起動テンプレート (CreateLaunchTemplate) と 14 の Auto Scaling グループ (CreateAutoScalingGroup) を作成しました。これらは最大サイズ 999 インスタンス、希望キャパシティ 20 という異常に大きいスケーリングパラメータで設定されていました。以下の CreateLaunchTemplate のリクエストパラメータ例では、インスタンスに暗号通貨マイニングを開始するよう指示する UserData が指定されています。

{   
    "CreateLaunchTemplateRequest": {       
        "LaunchTemplateName": "T-us-east-1-a1b2",       
        "LaunchTemplateData": {           
            "UserData": "<sensitiveDataRemoved>",           
            "ImageId": "ami-1234567890abcdef0",           
            "InstanceType": "c6a.4xlarge"       
        },       
        "ClientToken": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"   
    } 
}

脅威アクターは、スポットインスタンスとオンデマンドインスタンスの両方を使用して Auto Scaling グループを作成し、両方の Amazon EC2 サービスクォータを活用してリソース消費を最大化しました。

スポットインスタンスグループ:

  • 高性能 GPU および機械学習 (ML) インスタンス (g4dn、g5、p3、p4d、inf1) を標的
  • オンデマンド割り当て 0%、キャパシティ最適化戦略で設定
  • 20 から 999 インスタンスにスケールするよう設定

オンデマンドインスタンスグループ:

  • コンピューティング、メモリ、汎用インスタンス (c5、c6i、r5、r5n、m5a、m5、m5n) を標的
  • オンデマンド割り当て 100% で設定
  • 同様に 20 から 999 インスタンスにスケールするよう設定

Auto Scaling クォータを使い果たした後、脅威アクターは RunInstances を使用して追加の EC2 インスタンスを直接起動し、残りの EC2 インスタンスクォータを消費しました。

永続化

このキャンペーンで観測された興味深い手法は、脅威アクターが起動したすべての EC2 インスタンスに対して ModifyInstanceAttribute を使用して 終了保護を有効にしたことです。インスタンス終了保護はインスタンスの誤った終了を防ぐ機能ですが、インシデントレスポンスに追加の手順が必要となり、自動修復コントロールを妨害する可能性があります。以下の例は、ModifyInstanceAttribute API のリクエストパラメータを示しています。

{     
    "disableApiTermination": {         
        "value": true     
    },     
    "instanceId": "i-1234567890abcdef0" 
}

すべてのマイニングワークロードをデプロイした後、脅威アクターは IAM 認証をバイパスしてパブリックな Lambda エンドポイントを作成する設定で Lambda 関数を作成しました。その後、任意のプリンシパルが関数を呼び出すことを許可する権限を Lambda 関数に追加しました。以下の例は、CreateFunctionUrlConfigAddPermission のリクエストパラメータを示しています。

CreateFunctionUrlConfig:

{     
    "authType": "NONE",     
    "functionName": "generate-service-a1b2c3d4" 
}

AddPermission:

{     
    "functionName": "generate-service-a1b2c3d4",     
    "functionUrlAuthType": "NONE",    
    "principal": "*",     
    "statementId": "FunctionURLAllowPublicAccess",     
    "action": "lambda:InvokeFunctionUrl" 
}

脅威アクターは、IAM ユーザー user-x1x2x3x4 を作成し、IAM ポリシー AmazonSESFullAccess をアタッチして永続化段階を完了しました (CreateUserAttachUserPolicy)。また、そのユーザーのアクセスキーとログインプロファイルも作成しました (CreateAccessKeyCreateLoginProfile)。ユーザーにアタッチされた SES ロールから判断すると、脅威アクターは Amazon Simple Email Service (Amazon SES) を使用したフィッシングを試みていた可能性があります。

パブリックな Lambda 関数 URL の作成を防ぐために、組織は AuthType が "NONE" の Lambda 関数 URL の作成または更新を拒否するサービスコントロールポリシー (SCP) をデプロイできます。

{   
    "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 Runtime Monitoring を有効にすることを強くお勧めします。これにより、Amazon EC2、Amazon ECS、および Amazon Elastic Kubernetes Service (Amazon EKS) のシステムレベルのイベントまで検出範囲が拡張されます。

GuardDuty EC2 の検出結果

Amazon EC2 の脅威インテリジェンスの検出結果は GuardDuty 基本保護プランの一部であり、インスタンスに関連する疑わしいネットワーク動作についてアラートを通知します。これらの動作には、ブルートフォース攻撃の試行、悪意のあるドメインや暗号通貨関連ドメインへの接続、その他の疑わしい動作が含まれます。サードパーティの脅威インテリジェンスと、アクティブ脅威防御MadPot を含む内部脅威インテリジェンスを使用して、GuardDuty は以下の検出結果を通じて本ブログで説明した指標を検出します。(CryptoCurrency:EC2/BitcoinTool.B および CryptoCurrency:EC2/BitcoinTool.B!DNS)

GuardDuty IAM の検出結果

複数の戦術カテゴリ (PrivilegeEscalation、Impact、Discovery) にまたがる IAMUser/AnomalousBehavior の検出結果は、通常のユーザー動作からの逸脱を検出する GuardDuty の機械学習機能を示しています。本ブログで説明したインシデントでは、脅威アクターが異常なネットワークとロケーションから認証情報を使用し、アカウントにとって通常とは異なる API を呼び出したため、侵害された認証情報が検出されました。

GuardDuty Runtime Monitoring

GuardDuty Runtime Monitoring は、拡張脅威検出の攻撃シーケンス相関において重要なコンポーネントです。Runtime Monitoring は、オペレーティングシステムの可視性などのホストレベルのシグナルを提供し、ホストおよびコンテナレベルでの悪意のあるプロセス実行を示すシステムレベルのログを分析することで検出範囲を拡張します。これには、ワークロード上での暗号通貨マイニングプログラムの実行も含まれます。CryptoCurrency:Runtime/BitcoinTool.B!DNS および CryptoCurrency:Runtime/BitcoinTool.B の検出結果は、暗号通貨関連のドメインおよび IP へのネットワーク接続を検出し、Impact:Runtime/CryptoMinerExecuted の検出結果は、実行中のプロセスが暗号通貨マイニングアクティビティに関連している場合に検出します。

GuardDuty 拡張脅威検出

AWS re:Invent 2025 でリリースされた AttackSequence:EC2/CompromisedInstanceGroup の検出結果は、GuardDuty の最新の拡張脅威検出機能の 1 つです。この機能は、AI と機械学習アルゴリズムを使用して、複数のデータソースにわたるセキュリティシグナルを自動的に相関させ、EC2 リソースグループの高度な攻撃パターンを検出します。EC2 の AttackSequence 検出結果タイプは GuardDuty 基本保護プランに含まれていますが、Runtime Monitoring を有効にすることを強くお勧めします。Runtime Monitoring は、コンピューティング環境からの重要なインサイトとシグナルを提供し、疑わしいホストレベルのアクティビティの検出と攻撃シーケンスの相関の改善を可能にします。AttackSequence:ECS/CompromisedCluster の攻撃シーケンスでは、コンテナレベルのアクティビティを相関させるために Runtime Monitoring が必要です。

監視と修復の推奨事項

同様の暗号通貨マイニング攻撃から保護するために、お客様は強力な ID およびアクセス管理コントロールを徹底する必要があります。長期的なアクセスキーの代わりに一時的な認証情報を実装し、すべてのユーザーに多要素認証 (MFA) を適用し、IAM プリンシパルに最小権限を適用して必要な権限のみにアクセスを制限してください。AWS CloudTrail を使用して AWS サービス全体のイベントをログに記録し、ログを単一のアカウントに集約することで、セキュリティチームがアクセスして監視できるようにすることができます。詳細については、CloudTrail ドキュメントの複数のアカウントから CloudTrail ログファイルを受信するを参照してください。

すべてのアカウントとリージョンで GuardDuty が有効になっており、包括的なカバレッジのために Runtime Monitoring が有効になっていることを確認してください。GuardDuty を AWS Security Hub および Amazon EventBridge またはサードパーティツールと統合して、自動応答ワークフローと重大度の高い検出結果の迅速な修復を可能にしてください。イメージスキャンポリシーや ECS タスク定義での異常な CPU 割り当てリクエストの監視など、コンテナセキュリティコントロールを実装してください。最後に、暗号通貨マイニング攻撃に対する具体的なインシデントレスポンス手順を確立してください。これには、終了保護が有効化されたインスタンスを処理するための文書化された手順が含まれます。これは、この攻撃者が修復作業を複雑にするために使用した手法です。

AWS アカウントが暗号通貨マイニングキャンペーンの影響を受けたと思われる場合は、GuardDuty ドキュメントの修復手順を参照してください。(侵害された可能性のある AWS 認証情報の修復侵害された可能性のある EC2 インスタンスの修復、および侵害された可能性のある ECS クラスターの修復)

最新の手法について最新情報を入手するには、Threat Technique Catalog for AWS をご覧ください。


本ブログに関するご質問がある場合は、AWS サポートにお問い合わせください。

Kyle Koeller Kyle Koeller

Kyle は GuardDuty チームのセキュリティエンジニアで、脅威検出に注力しています。クラウドの脅威検出とオフェンシブセキュリティに情熱を持ち、CompTIA Security+、PenTest+、CompTIA Network Vulnerability Assessment Professional、SecurityX の認定資格を保有しています。仕事以外の時間は、ジムで過ごしたり、ニューヨーク市を探索したりすることを楽しんでいます。

本ブログは Security Solutions Architect の 中島 章博 が翻訳しました。