gcpwn は、GCP を学ぼうとして私が作成したツールで、新しい GRPC クライアント ライブラリを活用しています。これは、私が作成した多数の列挙モジュールに加え、このツールを GCP テストのワンストップ ショップにするための取り組みとして、GCPBucketBrute などの既存の既知のスタンドアロン ツールとともに、この分野で他の人が行った研究 (例: Rhino Security) を活用したエクスプロイト モジュールで構成されています。 。他のエクスプロイト スクリプトは通常 1 回限りの使用ですが、 GCPwn はモジュールを実行する際にデータと権限の両方を保存し、データを整理し、それを再利用することで侵入テスト/権限の追跡を容易にします。
著者: Scott Weston (@webbinroot)、NetSPI
必要な依存関係: Requirements.txt + Wiki インストール ガイドを参照してください。
依存関係 注: 主に Kali Linux でテストされました。 Dockerfile経由でDockerのインストールが可能
このツールは主に侵入テスター、GCP セキュリティを学習したばかりのユーザー、および一般のセキュリティ研究者を対象としています。
ペンテスターにとって、上に示したように、このツールは通常実行する多くのスクリプトを自動化し、エクスプロイト モジュールの実行を簡単にするためにデータを保存します。
GCP セキュリティを学習したばかりの人にとって、このツールは、個々のサービスを詳しく知りながら、プル リクエストを介して独自のモジュールを簡単に追加できるように設定されています。
セキュリティ研究者向けに、このツールを使用すると大量の GCP API 呼び出しを実行できるようになり、Burp Suite などのローカル ツールを使用してバックグラウンドでツールをプロキシする方法を文書化しました。したがって、すべてのリクエストを記録する burp スイートでenum_all
実行すると、1 つのコマンドですべての異なる Python ライブラリにわたるすべての異なる API エンドポイントを表示できるようになります。誰かがコードを解読し終えることができれば、少なくともそれは環境変数で部分的に動作することができたので希望です:)
https://github.com/NetSPI/gcpwn/wiki で以下の Wiki を確認してください。
インストール手順とフォルダーのセットアップ: 初めて使用するツールのセットアップ方法と使用されるデフォルトのフォルダー
認証管理とトークン情報: ユーザーおよび/またはサービスの資格情報をロードして、資格情報のセットアップを取得します
プロジェクトの管理とリソース データの取得: プロジェクト ID を管理する方法と、SQLite テーブルから列挙されたデータを取得する方法。
モジュールガイド: モジュールの呼び出し方法 + 各モジュールの詳細
モジュールの作成: プル リクエスト経由で独自のモジュールを追加する方法 (進行中 - 目標日 2024 年 9 月 15 日)
Research Head Scratchers : 研究トピック/未解決の質問 (進行中 - 目標日 2024 年 9 月 22 日)
このツールは、デフォルトで「テーブル」標準出力を自動的に設定します。このツールはテーブル、テキスト、CSV をサポートしています。テーブルに問題がある場合は、次のようにグローバル構成を変更できます。
# See global configs global_configs # Set global configs for preferred output global_configs set std-output txt
または、各modules run
コマンドで--txt
、 --table
、および/または--csv
を渡して stdoutput を変更することもできます。
modules run enum_buckets --txt
列挙されたデータは GCPwn のローカル テーブルに保存されます。テーブル出力の実行を確認するには
# See all tables data tables # See all table columns data tables--columns # Get all data back and export to CSV file data --columns column1,column2 --csv [OUTPUT_FILE]
enum_all
モジュールを実行し、続いてcreds info
実行して、新しく列挙された権限を表示します。 process_iam_bindings
モジュールは、ポリシー バインディングを列挙できる場合はその TXT/CSV 概要を提供し、 analyze_vulns
不正なロール/権限にフラグを立てようとします。以下の共通フラグを参照してください。
すべてを列挙します (最も適合するものを選択してください)
# Quickest: Run all enumeration modules + testIAM Permissions modules run enum_all --iam # Longer: Run all enumeration modules + testIAM Permissions including ~9000 for projects/folder/org modules run enum_all --iam --all-permissions # Longer + Downloads: Run all enumeration modules + testIAM Permissions including ~9000 for projects/folder/org + download everyting modules run enum_all --iam --all-permissions --download
enum_all または上記の他のモジュールからすべての IAM ポリシー バインディングを取得し、概要/脆弱性分析を返します。
# Review Permissions User Has Thus Far creds info # Return Policy Summary from IAM Bindings if Applicable modules run process_iam_bindings [--txt] [--csv] # Analyze IAM Bindings + Other Items (like allUsers) if Applicable modules run analyze_vulns [--txt] [--csv]
fwd:cloudsec 2024: https://www.youtube.com/watch?v=opvv9h3Qe0s (「GCPwn: GCP 用侵入テスト ツール - Scott Weston」)
デフコン 32 クラウド ビレッジ: https://www.youtube.com/watch?v=rxXyYo1n9cw
https://www.netspi.com/blog/technical-blog/cloud-pentesting/introduction-to-gcpwn-part-1/
私はクールな新しいものを求めてイシューやプルを監視します。とはいえ、私には日中の仕事があるので、少なくとも 24 時間くらい時間をください :)
小さな問題の場合は、[問題] タブから問題を簡単に修正することをお勧めします。
巨人の肩の上に建てられ、一部のコードとアイデア/研究は以下からインスピレーションを受けてクレジットされました。
Rhino セキュリティ (https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/)
GCPBucketBrute (https://github.com/RhinoSecurityLabs/GCPBucketBrute)
多くの Google ドキュメント (https://cloud.google.com/python/docs/reference)