GWS - Google Platforms Phishing

AWSハッキングの学習と練習:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングの学習と練習:HackTricks Training GCP Red Team Expert (GRTE)

HackTricksのサポート

一般的なフィッシング手法

Google Groups フィッシング

見たところ、デフォルトでは、ワークスペースのメンバーはグループを作成 し、人々を招待することができます。その後、ユーザーに送信されるメールを変更して、いくつかのリンクを追加できます。メールはGoogleアドレスから送信されるため、正規に見え、人々はリンクをクリックするかもしれません。

また、FROMアドレスをGoogleグループのメールアドレスとして設定して、グループのメンバー全員にメールを送信することも可能です。次の画像のように、グループ**google--support@googlegroups.com**が作成され、グループのメンバー全員にメールが送信されました(同意なしに追加されたメンバー)。

Google Chat フィッシング

電子メールアドレスを持っている人とチャットを開始するか、トークの招待を送信することができるかもしれません。さらに、任意の名前(例:「Googleサポート」)を持つスペースを作成し、メンバーを招待することが可能です。彼らが承諾すれば、Googleサポートと話していると思うかもしれません。

ただし、私のテストでは招待されたメンバーは招待状を受け取らなかった。

これが過去にどのように機能したかを確認できます:https://www.youtube.com/watch?v=KTVHLolz6cE&t=904s

Google Doc フィッシング

過去には、見かけ上正当なドキュメントを作成し、コメントで**@user@gmail.com**のような電子メールを言及することが可能でした。Googleはその電子メールアドレスにメールを送信して、そのドキュメントで言及されたことを通知しました。 現在はこれは機能しませんが、被害者にドキュメントへのアクセス権を与えると、Googleはそのことを通知するメールを送信します。これは、誰かを言及するときに表示されるメッセージです:

被害者は、外部ドキュメントが共有されたことを示すメールが届かないようにする保護メカニズムを持っているかもしれません。

Google Calendar フィッシング

企業の電子メールアドレスを持っているだけで、カレンダーイベントを作成し、現在の時間から5分または15分後にそのカレンダーイベントをスケジュールすることができます。イベントを正規に見せ、コメントとタイトルを追加して、何かを読む必要があることを示すフィッシングリンクを含む)。

これは、ブラウザに表示される「人員削減」という会議タイトルのアラートです。したがって、よりフィッシングらしいタイトルを設定できます(電子メールに関連付けられた名前を変更することさえできます)。

疑わしいと思われないようにするためには:

  • 受信者が招待された他の招待状を見ることができないように設定してください

  • イベントに関してメール通知を送信しないようにしてください。そのため、人々は5分後の会議についての警告と、そのリンクを読む必要があることだけを見ることになります。

  • APIを使用して、人々がイベントを受け入れたことをTrueに設定し、彼らの代わりにコメントを作成することさえできるようです。

App Scripts リダイレクトフィッシング

https://script.google.com/でスクリプトを作成し、誰でもアクセスできるWebアプリケーションとして公開し、**script.google.com**の正規ドメインを使用することが可能です。 次のようなコードを使用すると、攻撃者はこのページで任意のコンテンツを読み込むスクリプトを作成できます。

function doGet() {
return HtmlService.createHtmlOutput('<meta http-equiv="refresh" content="0;url=https://cloud.hacktricks.xyz/pentesting-cloud/workspace-security/gws-google-platforms-phishing#app-scripts-redirect-phishing">')
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}

たとえば、https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec にアクセスすると、次のようになります:

コンテンツがiframe内に読み込まれるため、警告が表示されることに注意してください。

アプリスクリプトOAuthフィッシング

被害者のOAuthトークンにアクセスしようとするために、文書にアタッチされたアプリスクリプトを作成することが可能です。詳細については、次を確認してください:

GWS - App Scripts

OAuthアプリケーションフィッシング

前述のいずれかのテクニックを使用して、ユーザーにGoogle OAuthアプリケーションにアクセスさせ、ユーザーにいくつかのアクセスを要求することができます。ユーザーがソース信頼すると、そのアプリケーション信頼するかもしれません(たとえ高い権限が求められていても)。

Googleは、アプリケーションが信頼されていないことを警告する不格好なプロンプトを表示し、ワークスペース管理者はOAuthアプリケーションを受け入れることを防ぐことさえできます。

Googleは、ユーザーを代表して複数のGoogleサービス(Gmail、Drive、GCPなど)とやり取りできるアプリケーションを作成することを許可しています。 他のユーザーを代表して動作するアプリケーションを作成する場合、開発者はGCP内でOAuthアプリを作成し、ユーザーデータにアクセスするために必要なスコープ(権限)を指定する必要があります。 ユーザーがそのアプリケーション使用したい場合、そのアプリケーションがスコープで指定されたデータにアクセスすることを承認するように求められます

これは、非技術者をフィッシングして、機密情報にアクセスするアプリケーションを使用させる非常に魅力的な方法ですが、組織アカウントでは、これを防ぐ方法があります。

未検証アプリプロンプト

前述のように、Googleは常にユーザーにアプリケーションに代わって許可する権限を受け入れるように求めるプロンプトを表示します。ただし、アプリケーションが危険と見なされる場合、Googleは最初にそのアプリケーションが危険であることを示すプロンプトを表示し、ユーザーにアプリに権限を与えることをより困難にします。

このプロンプトは、次のようなアプリで表示されます:

  • プライベートデータにアクセスできるスコープを使用するアプリ(Gmail、Drive、GCP、BigQueryなど)

  • 100人未満のユーザーを持つアプリ(100人以上の場合、未検証プロンプトを表示しないようにするためにレビュープロセスも必要)

興味深いスコープ

こちら で、すべてのGoogle OAuthスコープのリストを見つけることができます。

  • cloud-platform: Google Cloud Platformサービス全体でデータを表示および管理します。GCPでユーザーを偽装できます。

  • admin.directory.user.readonly: 組織のGSuiteディレクトリを表示およびダウンロードします。すべてのユーザーの名前、電話、カレンダーURLを取得します。

OAuthアプリを作成する

OAuthクライアントIDを作成を開始します

  1. https://console.cloud.google.com/apis/credentials/oauthclient に移動し、同意画面を構成するをクリックします。

  2. 次に、ユーザータイプ内部(組織内の人のみ)か外部かを尋ねられます。必要に応じて選択します

  • 内部は、組織のユーザーをすでに侵害しており、別のユーザーをフィッシングするためにこのアプリを作成している場合に興味があります。

  1. アプリに名前サポートメール(自分をより匿名化しようとしてgooglegroupメールを設定できることに注意してください)、ロゴ承認されたドメイン更新用の別のメールを指定します。

  2. OAuthスコープ選択します。

  • このページは、非機密権限、機密権限、制限された権限に分かれています。新しい権限を追加するたびに、そのカテゴリに追加されます。要求された権限に応じて、異なるプロンプトがユーザーに表示され、これらの権限がどれほど機密性が高いかを示します。

  • admin.directory.user.readonlycloud-platform は機密権限です。

  1. テストユーザーを追加します。 アプリのステータスがテスト中である限り、これらのユーザーだけがアプリにアクセスできるようになるため、フィッシングするメールアドレスを追加することを忘れないでください。

それでは、以前に作成したOAuthクライアントIDを使用して、Webアプリケーションの資格情報を取得しましょう:

  1. https://console.cloud.google.com/apis/credentials/oauthclient に戻り、今回は異なるオプションが表示されます。

  2. Webアプリケーションの資格情報を作成するように選択します

  3. 必要なJavascript起源リダイレクトURIを設定します

  • テスト用に http://localhost:8000/callback のようなものを両方に設定できます

  1. アプリケーションの資格情報を取得します

最後に、OAuthアプリケーションの資格情報を使用するWebアプリケーションを実行しましょう。https://github.com/carlospolop/gcp_oauth_phishing_example に例があります。

git clone ttps://github.com/carlospolop/gcp_oauth_phishing_example
cd gcp_oauth_phishing_example
pip install flask requests google-auth-oauthlib
python3 app.py --client-id "<client_id>" --client-secret "<client_secret>"

http://localhost:8000 に移動し、Google ボタンをクリックしてください。次のようなメッセージが表示されます:

アプリケーションは簡単に使用できる アクセスとリフレッシュトークン を表示します。これらのトークンの使用方法についての詳細は次を確認してください:

GCP - Non-svc Persistance

glcoud を使用する

Web コンソールの代わりに gcloud を使用して何かを行うことが可能です。次を確認してください:

GCP - ClientAuthConfig Privesc

参考文献

AWS ハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCP ハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)

HackTricks のサポート

Last updated