Amazon Web Services ブログ
Amazon S3 を標的としたランサムウェアの構造分析
このブログは 2023 年 2 月 6 日に Megan O’Neil (Principal Specialist Solutions Architect)、Karthik Ram (Senior Solutions Architect)、Kyle Dickinson (Sr. Security Solution Architect) によって執筆された内容を日本語化したものです。原文はこちらを参照してください。
ランサムウェアによる被害は過去数年で大幅に増加し、世界中から注目を集めています。従来のランサムウェアは、主にサーバーやデータベース、共有ファイルシステムなどのインフラストラクチャリソースに影響を与えていました。しかし、Amazon Simple Storage Service (Amazon S3) に保存されたデータを標的とするような、あまり馴染みのない事案もあります。ランサムウェア攻撃を未然に防ぎ、そして早期に特定して復旧対処できるように実施すべき重要な対策があります。このブログのゴールは、ランサムウェアから保護するために使用できる AWS のサービスと機能について学び、攻撃が発生した場合の調査方法を理解していただくことです。
ランサムウェアは、悪意のある攻撃者が組織から金銭を要求するために使用できるマルウェアの一種です。攻撃者は、未修正のソフトウェアの脆弱性を悪用や、弱いクレデンシャルを不正利用、過去に意図せず漏洩したクレデンシャルの使用やソーシャルエンジニアリングなどさまざまな手段を使って、ターゲットのデータやシステムへの不正アクセスを試みます。ランサムウェア攻撃が発生すると、正当な組織がデータやシステムにアクセスできなくなり、デジタル資産の安全な返還と引き換えに身代金が要求されます。攻撃者が正規のアクセスを制限または無効化する手段には、a) 暗号化または削除、b) アクセス制御の変更、c) ネットワークベースの DoS (Denial of Service) 攻撃などがあります。場合によっては、データアクセスが暗号化キーの提供やデータの返却によって復旧した後、データのコピーを持つ攻撃者から、そのデータを販売したり公開したりしないことを約束する二重の身代金要求がされることもあります。
次のセクションでは、Amazon S3 でのランサムウェア発生時の対応における 4 つの重要なフェーズ、検知、対応、復旧、保護について説明します。
観測できたアクティビティ
AWS Customer Incident Response Team (CIRT) が観測するところによると、Amazon S3 内のデータを標的とするランサムウェア攻撃の最も一般的な原因は、AWS Identity and Access Management (IAM) アクセスキーの漏洩です。他の要因としては、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにアタッチされた IAM インスタンスプロファイルとアクセス許可を持つアプリケーションに欠陥があり、そのインスタンスが Instance Metadata Service Version 1 (IMDSv1) を使用している場合です。この場合、不正なユーザーが Amazon EC2 インスタンスの IAM インスタンスプロファイルから AWS Security Token Service (STS) セッション キーを使用して、Amazon S3 バケット内のオブジェクトを人質に取ることができる可能性があります。この記事では、最も一般的なシナリオである、IAM アクセスキーの漏洩に焦点を当てます。
検出
攻撃者がクレデンシャルを入手した後、IAM プリンシパル に付与されているアクセス権限を把握するために、AWS API を繰り返し実行します。悪意のある者はこれを複数の方法で行うことができ、さまざまなアクティビティが発生する可能性があります。このアクティビティは、エラーが発生する API 呼び出しの増加により、セキュリティチームに警告を発する可能性があります。一方で、悪意のある者の目的が Amazon S3 オブジェクトの身代金要求である場合、API 呼び出しは Amazon S3 に特化したものになります。利用される IAM プリンシパルにおいて Amazon S3 へのアクセスが許可されている場合、s3:ListBuckets、s3:GetBucketLocation、s3:GetBucketPolicy、s3:GetBucketAcl などの API アクションの増加が見られる可能性があります。
分析
このセクションでは、ランサムウェアイベントをより詳細に分析するのに役立つログとメトリクスデータについて説明します。
ランサムウェア攻撃が Amazon S3 に保存されたデータを標的とする場合、多くの場合、Amazon S3 バケットに保存されているオブジェクトが悪意のある攻撃者によってコピーされることなく削除されます。これは、オブジェクトが暗号化されるランサムウェア攻撃というよりも、データ破壊イベントに近いものです。
この操作を記録するログがいくつかあります。Amazon S3 データに対する AWS CloudTrail イベントログの有効化ができます。これにより、特定のオブジェクトに対して実行された読み取りや削除の操作を確認できます。
さらに、ランサムウェア事案の前に Amazon S3 の Amazon CloudWatch メトリクス を有効化していた場合は、BytesDownloaded メトリクスの合計を使って、異常な転送スパイクを把握できます。
別の観点では、region-DataTransfer-Out-Bytes メトリクスを使うことです。これは、Amazon S3 からインターネットへ転送されたデータ量を示します。このメトリクスはデフォルトで有効になっており、Amazon S3 の AWS 課金と使用状況レポートに関連付けられています。
詳細については、AWS CIRT チームの インシデント対応プレイブック: Amazon S3 のランサムウェア対応、および GitHub リポジトリの AWS カスタマープレイブックで公開されている他の対応フレームワークを参照してください。
対応
次に、IAM アクセスキーが漏洩した場合の対応方法について説明します。ビジネスへの影響に基づいて、それらのクレデンシャルをすべて置き換えるために 2 つ目のアクセスキーセットの作成を検討します。これにより、侵害されたアクセスキーを非アクティブ化しても、正当なシステムが中断されることはありません。アクセスキーの無効化は、IAM コンソールまたはインシデント対応計画に基づいた自動化ツールを通じて実施します。同時に、将来参照できるように、インシデントの詳細な記録をセキュアで非公開のインシデント対応文書内に保存する必要もあります。アクティビティが IAM ロールまたは一時的な資格情報の使用に関連している場合は、追加のステップとしてアクティブなセッションを取り消す必要があります。これを行うには、IAM コンソールでアクティブセッションの取り消しを選択し、その時点以前にロールを引き受けたユーザーへのアクセスを拒否するポリシーを付加します。その後、露出したアクセスキーを削除できます。
さらに、AWS CloudTrail のダッシュボードとイベント履歴 (90 日間のログが参照可能) を使用して、侵害された IAM ユーザーまたはロールによるアクティビティを確認できます。この分析により、悪意のある攻撃者が作成した可能性のある永続的なアクセスを示すことができます。また、IAM コンソールを使用して、4 時間ごとに更新される IAM 認証情報レポートを確認し、アクセスキーの最終使用時間、ユーザーの作成時間、パスワードの最終使用時間などのアクティビティを確認できます。あるいは、Amazon Athena を使用して、AWS CloudTrail ログを照会し、同じ情報を取得することもできます。以下の Amazon Athena クエリは、Amazon Resource Names (ARN) で指定した IAM ユーザーにおける、特定期間内のアクティビティを取得するものです。
復旧
悪意のある行為者からのアクセスを削除した後、データを復旧するための複数のオプションがあります。これについては次のセクションで説明します。Amazon S3 には現在 undelete 機能がなく、データ削除後の復旧機能がないことに注意してください。
Amazon S3 バージョニング機能
Amazon S3 バケットでバージョニングを使用することで、同じバケット内にオブジェクトの複数のバージョンを保持できます。これにより、リカバリプロセス中に特定のバージョンを復元できます。Amazon S3 バージョニング機能を使用すると、バケットに保存されたすべてのオブジェクトのすべてのバージョンを保存、取得、復元できます。つまり、意図しないユーザーアクションによる削除や上書きやアプリケーションの障害からより簡単に復旧できます。たとえば、オブジェクトを削除すると、Amazon S3 はオブジェクトを完全に削除するのではなく、削除マーカーを挿入します。以前のバージョンはバケット内に残り、非最新バージョンになります。これにより、必要に応じて以前のバージョンを復元できます。バージョン管理はデフォルトでは有効になっておらず、同じオブジェクトの複数のコピーを保持するため、追加のストレージコストがかかります。コストの詳細については、Amazon S3 の料金を参照してください。
AWS Backup の利用
AWS Backup を使用すると、Amazon S3 データのコピーを別のアクセス認証情報の下で作成および保管し、復元プロセス中にデータを復元できるようになります。AWS Backup は複数の AWS サービスに対する集中的なバックアップを提供するため、1 か所でバックアップを管理できます。Amazon S3 に対する AWS Backup では、過去 35 日間のいつでも任意の時点に復元可能な継続的バックアップと、無期限を含む指定期間データを保持可能な定期的バックアップ、2 つのオプションがあります。詳細は、Amazon S3 に対する AWS Backup をご覧ください。
保護
このセクションでは、AWS で利用可能ないくつかの予防的セキュリティ対策について説明します。
Amazon S3 オブジェクトロック
Amazon S3 バケットに対して Amazon S3 オブジェクトロックを有効にすることで、オブジェクトの変更や削除に対するさらなる保護レイヤーを追加できます。Amazon S3 オブジェクトロックを使用すると、write-once-read-many (WORM) を使ってオブジェクトを保存し、一定期間または無期限にオブジェクトが削除または上書きされるのを防ぐことができます。
AWS Backup ボールトロック
Amazon S3 オブジェクトロックが Amazon S3 オブジェクトに追加の保護を提供するのと同様に、AWS Backup を使用する場合は、AWS Backup ボールトロックを有効にすることを検討できます。これにより、バックアップボールトに保存および作成されるすべてのバックアップに対して、同じ WORM 設定が適用されます。AWS Backup ボールトロック は、AWS アカウントのルートユーザーによる誤った削除操作やマルウェアによる削除操作を防ぐのに役立ちます。
Amazon S3 インベントリ
組織内で Amazon S3 に保存されているオブジェクトの機密性を確実に理解するために、最も重要で機密性の高いデータを Amazon S3 全体で棚卸しし、データを保護し復旧を可能にするための適切なバケット設定が行われていることを確認します。Amazon S3 インベントリを使用すると、Amazon S3 バケット内のオブジェクトと、暗号化ステータス、レプリケーションステータス、オブジェクトロック情報などの既存の構成を把握できます。またリソースタグを使用して、Amazon S3 内のオブジェクトの分類と所有者にラベルを付けることで、特定の Amazon S3 バケットに保存されているオブジェクトの機密性に合わせた自動アクションとコントロールを適用できます。
MFA 削除
別の予防的な対策として、Amazon S3 バージョニングを有効化している場合多要素認証 (MFA) 削除を適用することができます。MFA 削除は追加のセキュリティを提供し、削除操作を開始するユーザーに MFA デバイスの物理的または仮想的な所有を MFA コードで証明させることで、誤ったオブジェクト削除を防ぐのに役立ちます。これにより、削除操作に対するセキュリティレイヤーが追加されます。
一時的な認証情報に IAM ロールを使用する
多くのランサムウェア事案は、IAM アクセスキーの漏洩から発生するため、AWS では長期的な IAM アクセスキーを使用するのではなく、一時的な認証情報を提供する IAM ロールを使用することをお勧めしています。これには、AWS にアクセスする開発者に対して ID フェデレーションを使用すること、システム間アクセスに IAM ロールを使用すること、ハイブリッドアクセスに IAM Roles Anywhere を使用することが含まれます。ほとんどのユースケースでは、IAM アクセスキーを使用する必要はありません。今こそ、IAM アクセスキーの使用を環境から排除するための監査と作業を行う良い機会です。以下の手順を検討してください。
- すべての AWS アカウント一覧を作成し、IAM ユーザー、認証情報が最後にローテーションされた時期と最後に使用された時期、および付加されたポリシーを特定します。
- すべての AWS アカウントのルートアクセスキーを無効化して削除します。
- 認証情報をローテーションさせ、ユーザーに MFA を適用します。
- 一時的なロールベースのアクセスを活用するように再設計します。例えば、IAM ロールや IAM Roles Anywhere を使用します。
- 付加されたポリシーにおいて、ワイルドカードを削除するなど、最小限のアクセス許可であることを確認します。
顧客管理の AWS KMS 鍵によるサーバー側の暗号化
別の保護策として、AWS Key Management Service (SSE-KMS) を使用したサーバー側の暗号化を実装し、カスタマー管理の鍵を使用して Amazon S3 オブジェクトを暗号化することができます。カスタマー管理の鍵を使用すると、バケット内のデータを暗号化および復号化できるユーザーを指定するキーポリシーを適用する必要があり、これによりデータを保護するための追加のアクセス制御メカニズムが提供されます。また、AWS KMS 鍵を一元的に管理し、鍵の使用時期と使用者の証跡を監査することができます。
Amazon S3 に対する Amazon GuardDuty の保護
Amazon GuardDuty に対する Amazon S3 保護を有効にできます。Amazon S3 保護により、Amazon GuardDuty はオブジェクトレベルの API 操作を監視し、バケットのデータに対する潜在的なセキュリティリスクを特定します。これには、異常な API アクティビティと Amazon S3 内のデータに関する異常な動作に関する検出結果が含まれ、セキュリティイベントの早期発見に役立ちます。
結論
この投稿では、Amazon S3 に保存されたデータを標的とするランサムウェア攻撃について学びました。事前に対策を講じることで、潜在的なランサムウェア攻撃を迅速に特定し、その後セキュリティインシデントのリスクを軽減するための追加の保護対策を講じることができます。
この投稿に関する質問がある場合は、Security, Identity and Compliance re:Post で新しいスレッドを開始するか、AWS サポートに問い合わせてください。
AWS セキュリティニュースをさらに見たい方は、Xをフォローしてください。