GWS - Google Platforms Phishing

Support HackTricks

Generic Phishing Methodology

Google Groups Phishing

デフォルトでは、workspaceのメンバーはグループを作成でき 、人を招待できます。その後、ユーザーに送信されるメールをリンクを追加して修正できます。メールはGoogleのアドレスから送信されるため正当なものに見え、人々はリンクをクリックするかもしれません。

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

Google Chat Phishing

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

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

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

Google Doc Phishing

過去には、見た目上正当な文書を作成し、コメントでいくつかのメール(例:@user@gmail.com)を言及することが可能でした。Googleは、そのメールアドレスに文書で言及されたことを通知するメールを送信しました。 現在では、これは機能しませんが、被害者に文書へのアクセスを与えると、Googleはその旨を示すメールを送信します。これが誰かを言及したときに表示されるメッセージです:

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

Google Calendar Phishing

カレンダーイベントを作成し、攻撃している会社のメールアドレスをできるだけ多く追加できます。このカレンダーイベントを現在の時間から5分または15分後にスケジュールします。イベントを正当なものに見せ、何かを読む必要があることを示すコメントとタイトルを付けますフィッシングリンク付き)。

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

疑わしく見えないようにするために:

  • 受信者が他の招待された人を見えないように設定する

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

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

App Scripts Redirect Phishing

https://script.google.com/でスクリプトを作成し、誰でもアクセスできるウェブアプリケーションとして公開することが可能で、正当なドメイン**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内に読み込まれると、警告が表示されることに注意してください。

App Scripts OAuth フィッシング

ドキュメントに添付されたApp Scriptsを作成して、被害者のOAuthトークンへのアクセスを試みることが可能です。詳細については、次を確認してください:

OAuth アプリ フィッシング

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

Googleは、アプリケーションが信頼されていないことを警告する醜いプロンプトをいくつかのケースで表示し、Workspace管理者は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でログインボタンをクリックすると、次のようなメッセージが表示されます:

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

glcoudの使用

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

参考文献

HackTricksをサポートする

Last updated