# GWS - Google Platforms Phishing

{{#include ../../../banners/hacktricks-training.md}}

## Generic Phishing Methodology

{{#ref}}
https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html
{{#endref}}

## Google Groups Phishing

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

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

<figure><img src="../../../images/image (5) (1).png" alt=""><figcaption></figcaption></figure>

## Google Chat Phishing

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

<figure><img src="../../../images/image (6).png" alt=""><figcaption></figcaption></figure>

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

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

## Google Doc Phishing

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

<figure><img src="../../../images/image (7).png" alt=""><figcaption></figcaption></figure>

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

## Google Calendar Phishing

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

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

<figure><img src="../../../images/image (8).png" alt=""><figcaption></figcaption></figure>

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

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

## App Scripts Redirect Phishing

[https://script.google.com/](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](https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec)にアクセスすると、次のようになります：

<figure><img src="../../../images/image (4) (1).png" alt=""><figcaption></figcaption></figure>

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

## App Scripts OAuth フィッシング

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

{{#ref}}
gws-app-scripts.md
{{#endref}}

## OAuth アプリ フィッシング

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

> [!NOTE]
> Googleは、アプリケーションが信頼されていないことを警告する醜いプロンプトをいくつかのケースで表示し、Workspace管理者はOAuthアプリケーションの受け入れを防ぐことさえできます。

**Google**は、ユーザーの代わりに**さまざまなGoogleサービス**（Gmail、Drive、GCPなど）と**対話**できるアプリケーションを作成することを許可しています。

他のユーザーの代わりに**行動する**アプリケーションを作成する際、開発者は**GCP内にOAuthアプリ**を作成し、アプリがユーザーデータにアクセスするために必要なスコープ（権限）を指定する必要があります。\
**ユーザー**がその**アプリケーション**を**使用**したい場合、彼らは**スコープ**で指定されたデータへのアクセスを**受け入れる**ように**促されます**。

これは、非技術的なユーザーを**機密情報にアクセスするアプリケーション**の使用に**フィッシング**する非常に魅力的な方法です。彼らは結果を理解していないかもしれません。しかし、組織のアカウントでは、これを防ぐ方法があります。

### 未確認アプリのプロンプト

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

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

- プライベートデータにアクセスできるスコープを使用するアプリ（Gmail、Drive、GCP、BigQueryなど）
- 100人未満のユーザーを持つアプリ（100人以上のアプリは、未確認プロンプトを表示しないためにレビューが必要です）

### 興味深いスコープ

[**こちら**](https://developers.google.com/identity/protocols/oauth2/scopes)で、すべての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](https://console.cloud.google.com/apis/credentials/oauthclient)にアクセスし、同意画面を設定するをクリックします。
2. 次に、**ユーザータイプ**が**内部**（組織内の人のみ）か**外部**かを尋ねられます。ニーズに合った方を選択してください。
- 内部は、すでに組織のユーザーを侵害しており、別のユーザーをフィッシングするためにこのアプリを作成している場合に興味深いかもしれません。
3. アプリに**名前**、**サポートメール**（自分を少し匿名化するためにgooglegroupメールを設定できることに注意）、**ロゴ**、**承認されたドメイン**、および**更新用の別のメール**を付けます。
4. **OAuthスコープ**を**選択**します。
- このページは、非機密の権限、機密の権限、および制限された権限に分かれています。新しい権限を追加するたびに、そのカテゴリに追加されます。要求された権限に応じて、ユーザーに対してこれらの権限がどれほど機密であるかを示す異なるプロンプトが表示されます。
- **`admin.directory.user.readonly`**と**`cloud-platform`**は機密の権限です。
5. **テストユーザーを追加します**。アプリのステータスがテスト中の間、これらのユーザーのみがアプリにアクセスできるため、**フィッシングするメールを追加することを確認してください**。

次に、**以前に作成したOAuthクライアントID**を使用して**Webアプリケーションの資格情報を取得します**：

1. [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient)に戻ると、今回は異なるオプションが表示されます。
2. **Webアプリケーションの資格情報を作成する**を選択します。
3. 必要な**Javascriptオリジン**と**リダイレクトURI**を設定します。
- テスト用に**`http://localhost:8000/callback`**のようなものを両方に設定できます。
4. アプリケーションの**資格情報**を取得します。

最後に、**OAuthアプリケーションの資格情報を使用するWebアプリケーションを実行します**。例は[https://github.com/carlospolop/gcp_oauth_phishing_example](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でログインボタンをクリックすると、次のようなメッセージが表示されます：

<figure><img src="../../../images/image (333).png" alt=""><figcaption></figcaption></figure>

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

{{#ref}}
../../gcp-security/gcp-persistence/gcp-non-svc-persistence.md
{{#endref}}

#### `glcoud`の使用

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

{{#ref}}
../../gcp-security/gcp-privilege-escalation/gcp-clientauthconfig-privesc.md
{{#endref}}

## 参考文献

- [https://www.youtube-nocookie.com/embed/6AsVUS79gLw](https://www.youtube-nocookie.com/embed/6AsVUS79gLw) - Matthew Bryant - Hacking G Suite: The Power of Dark Apps Script Magic
- [https://www.youtube.com/watch?v=KTVHLolz6cE](https://www.youtube.com/watch?v=KTVHLolz6cE) - Mike Felch and Beau Bullock - OK Google, How do I Red Team GSuite?

{{#include ../../../banners/hacktricks-training.md}}
