GWS - Google Platforms Phishing

Reading time: 15 minutes

tip

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

HackTricksをサポートする

Generic Phishing Methodology

Phishing Methodology - HackTricks

Google Groups Phishing

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

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

Google Chat Phishing

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

tip

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

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

Google Doc Phishing

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

tip

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

Google Calendar Phishing

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

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

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

  • 受信者が他の招待された人を見えないように設定する
  • イベントについて通知するメールを送信しない。そうすれば、人々は5分後の会議についての警告と、そのリンクを読む必要があることだけを見ることになります。
  • APIを使用すると、人々がイベントを受け入れたことをTrueに設定し、彼らの代わりにコメントを作成することも可能です。

App Scripts Redirect Phishing

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

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

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

tip

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

App Scripts OAuth フィッシング

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

GWS - App Scripts

OAuth アプリ フィッシング

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

note

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で見つけることができます。

bash
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 - Token Persistence

glcoudの使用

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

GCP - ClientAuthConfig Privesc

参考文献

tip

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

HackTricksをサポートする