GCP Pentesting
基本情報
GCP環境のペンテストを開始する前に、その動作について知っておくべき基本的なことがいくつかあります。これにより、何をすべきか、どのようにミスコンフィギュレーションを見つけ、それをどのように悪用するかを理解するのに役立ちます。
組織の階層、権限などの基本的な概念は以下で説明されています:
GCP - Basic Information学習用ラボ
GCP ペンテスター/レッドチーム メソドロジー
GCP環境を監査するためには、どのサービスが使用されているか、何が公開されているか、誰が何にアクセスできるか、内部GCPサービスと外部サービスがどのように接続されているかを知ることが非常に重要です。
レッドチームの観点から、GCP環境を侵害する最初のステップは、いくつかのクレデンシャルを取得することです。以下にその方法のいくつかを示します:
github(または類似のもの)でのリーク - OSINT
ソーシャルエンジニアリング(ページWorkspace Securityをチェック)
パスワードの再利用(パスワードリーク)
GCPホストアプリケーションの脆弱性
Server Side Request Forgery メタデータエンドポイントへのアクセス
ローカルファイル読み取り
/home/USERNAME/.config/gcloud/*
C:\Users\USERNAME\.config\gcloud\*
3rdパーティの侵害
内部従業員
または、公開されている認証されていないサービスを侵害することによって:
GCP - Unauthenticated Enum & Accessまたは、レビューを行っている場合、以下のロールを持つクレデンシャルを要求することができます:
GCP - Permissions for a Pentestクレデンシャルを取得した後、そのクレデンシャルが誰に属しているか、および何にアクセスできるかを知る必要があるため、基本的な列挙を行う必要があります:
基本的な列挙
SSRF
GCPメタデータを列挙する方法の詳細については、以下のhacktricksページを参照してください:
Whoami
GCPでは、いくつかのオプションを試して自分が誰であるかを推測することができます:
Org Enumeration
組織の列挙
Principals & IAM Enumeration
十分な権限がある場合、GCPアカウント内の各エンティティの特権を確認することで、自分や他のアイデンティティが何をできるか、そして特権をエスカレートする方法を理解するのに役立ちます。
IAMを列挙するための十分な権限がない場合は、それらをブルートフォースで盗むことで特定することができます。 列挙とブルートフォースの方法については以下を参照してください:
GCP - IAM, Principals & Org Policies Enum資格情報についての情報を得た(そして赤チームであれば検出されていないことを願っています)今、環境で使用されているサービスを特定する時です。 以下のセクションでは、一般的なサービスを列挙する方法をいくつか確認できます。
Services Enumeration
GCPには驚くほど多くのサービスがあります。以下のページでは、基本情報、列挙チートシート、検出を回避する方法、持続性を得る方法、およびその他のポストエクスプロイトトリックについていくつか紹介しています:
GCP - Servicesすべての作業を手動で行う必要はないことに注意してください。この投稿の下部には、自動ツールに関するセクションがあります。
さらに、この段階で認証されていないユーザーに公開されているサービスを発見した場合、それらを悪用できるかもしれません:
GCP - Unauthenticated Enum & AccessPrivilege Escalation, Post Exploitation & Persistence
クラウド資格情報を取得したり、クラウド内で実行されているサービスを侵害したりした場合、最も一般的な方法は、侵害されたアカウントが持つ誤設定された特権を悪用することです。したがって、最初に行うべきことは、自分の特権を列挙することです。
さらに、この列挙中に、「組織」の最高レベルで権限が設定されていることを忘れないでください。
GCP - Privilege EscalationGCP - Post ExploitationGCP - PersistencePublicly Exposed Services
GCPサービスを列挙している間に、いくつかのサービスがインターネットに要素を公開している(VM/コンテナのポート、データベースやキューサービス、スナップショットやバケットなど)ことを発見するかもしれません。 ペンテスター/赤チームとして、常にそれらに機密情報/脆弱性がないか確認する必要があります。これらはAWSアカウントへのさらなるアクセスを提供するかもしれません。
この本では、公開されているGCPサービスの見つけ方とそれらを確認する方法についての情報を見つけることができます。公開されているネットワークサービスの脆弱性を見つける方法については、特定のサービスを検索することをお勧めします:
GCP <--> Workspace Pivoting
一方のプラットフォームでプリンシパルを侵害することで、攻撃者がもう一方を侵害することができるかもしれません。以下を確認してください:
GCP <--> Workspace PivotingAutomatic Tools
GCloudコンソールでは、https://console.cloud.google.com/iam-admin/asset-inventory/dashboardでプロジェクトによって使用されているリソースとIAMを確認できます。
このAPIでサポートされているアセットはここで確認できます:https://cloud.google.com/asset-inventory/docs/supported-asset-types
複数のクラウドで使用できるツールを確認してください。
gcp_scanner: これはGCPリソーススキャナーで、GCP上で特定の資格情報が持つアクセスレベルを特定するのに役立ちます。
gcp_enum: gcloud cliを使用してGCP環境を列挙し、結果をファイルに保存するBashスクリプト。
GCP-IAM-Privilege-Escalation: 高いIAM権限を列挙し、それを悪用してGCPで権限を昇格させるスクリプト(列挙スクリプトを実行できませんでした)。
BF My GCP Permissions: 自分の権限をブルートフォースするスクリプト。
gcloud config & debug
gcloud、gsutil... ネットワークのキャプチャ
gcloud
CLIでパラメータ --log-http
を使用すると、ツールが実行しているリクエストを表示できます。ログからトークン値を削除したくない場合は、gcloud config set log_http_redact_token false
を使用します。
さらに、通信を傍受するには:
OAuth token configure in gcloud
メタデータエンドポイントから流出したサービスアカウントのOAuthトークンを使用するためには、次のようにします:
参考文献
Last updated