Files

4.9 KiB
Raw Blame History

AWS - S3 ポストエクスプロイテーション

{{#include ../../../../banners/hacktricks-training.md}}

S3

For more information check:

{{#ref}} ../../aws-services/aws-s3-athena-and-glacier-enum.md {{#endref}}

機密情報

バケット内で読み取り可能な状態の機密情報が見つかることがあります。たとえば、terraform state に含まれる秘密情報などです。

Pivoting

Different platforms could be using S3 to store sensitive assets.
For example, airflow could be storing DAGs code in there, or web pages could be directly served from S3. 書き込み権限を持つ攻撃者は、バケット内の code を改変して他のプラットフォームへ pivot したり、JSファイルを変更してアカウントを takeover したりする可能性があります。

S3 Ransomware

このシナリオでは、attacker creates a KMS (Key Management Service) key in their own AWS account または別の侵害されたアカウント内に作成した KMS キーを使用します。攻撃者はこの key を世界中の誰でも利用できるようにして、任意の AWS ユーザー、ロール、またはアカウントがこのキーでオブジェクトを暗号化できるようにします。ただし、オブジェクトの復号はできません。

攻撃者はターゲットの S3 bucket を特定し、様々な方法でそこへの書き込み権限を取得します。これはバケットの設定不備により公開されている場合や、攻撃者が AWS 環境自体へアクセスを得た場合などが考えられます。攻撃者は通常、PII、PHI、ログ、バックアップなどの機密情報を含むバケットを標的にします。

ターゲットのバケットがランサムウェアの対象になり得るかを判断するため、攻撃者はその設定を確認します。これには S3 Object Versioning が有効かどうか、multi-factor authentication delete (MFA delete) が有効かどうかの確認が含まれます。Object Versioning が有効でない場合、攻撃者は作業を進められます。Object Versioning が有効で MFA delete が無効であれば、攻撃者は Object Versioning を無効化 できます。両方とも有効であれば、そのバケットをランサムウェア化するのはより困難になります。

攻撃者は AWS API を使って、バケット内の各オブジェクトを自分の KMS キーで暗号化したコピーに置き換えます。これによりバケット内のデータが事実上暗号化され、キーがなければアクセス不能になります。

さらに圧力をかけるため、攻撃者は攻撃で使用した KMS キーの削除をスケジュールすることがあります。これにより、キーが削除されデータが永久に失われる前にターゲットに 7 日間の復旧猶予を与えます。

最後に、攻撃者は通常 "ransom-note.txt" という名前の最終ファイルをアップロードし、ファイルの回収方法についての指示を記載します。このファイルは暗号化せずにアップロードされ、ターゲットの注意を引きランサムウェア攻撃を知らせる目的があります。

s3:RestoreObject

s3:RestoreObject 権限を持つ攻撃者は Glacier や Deep Archive にアーカイブされたオブジェクトを復活させ、一時的にアクセス可能にできます。これにより、通常は手の届かない履歴的なアーカイブデータ(バックアップ、スナップショット、ログ、証明書、古いシークレットなど)の回収や流出が可能になります。攻撃者がこの権限を読み取り権限(例: s3:GetObjectと組み合わせると、機密データの完全なコピーを取得できます。

aws s3api restore-object \
--bucket <BUCKET_NAME> \
--key <OBJECT_KEY> \
--restore-request '{
"Days": <NUMBER_OF_DAYS>,
"GlacierJobParameters": { "Tier": "Standard" }
}'

s3:Delete*

s3:Delete* 権限を持つ攻撃者はオブジェクト、バージョン、バケット全体を削除でき、バックアップを破壊し、即時かつ不可逆的なデータ損失、証拠の破壊、バックアップやリカバリに関連するアーティファクトの改ざんや破損を引き起こす可能性があります。

# Delete an object from a bucket
aws s3api delete-object \
--bucket <BUCKET_NAME> \
--key <OBJECT_KEY>

# Delete a specific version
aws s3api delete-object \
--bucket <BUCKET_NAME> \
--key <OBJECT_KEY> \
--version-id <VERSION_ID>

# Delete a bucket
aws s3api delete-bucket \
--bucket <BUCKET_NAME>

詳しくは check the original research.

{{#include ../../../../banners/hacktricks-training.md}}