mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-15 14:23:16 -08:00
Translated ['.github/pull_request_template.md', 'src/README.md', 'src/pe
This commit is contained in:
@@ -4,9 +4,9 @@
|
||||
|
||||
## Puntos de Entrada
|
||||
|
||||
### Phishing en Plataformas de Google y Aplicaciones OAuth
|
||||
### Phishing en Plataformas de Google y Apps de OAuth
|
||||
|
||||
Verifica cómo podrías usar diferentes plataformas de Google como Drive, Chat, Grupos... para enviar al víctima un enlace de phishing y cómo realizar un phishing de Google OAuth en:
|
||||
Verifica cómo podrías usar diferentes plataformas de Google como Drive, Chat, Grupos... para enviar al objetivo un enlace de phishing y cómo realizar un phishing de Google OAuth en:
|
||||
|
||||
{{#ref}}
|
||||
gws-google-platforms-phishing/
|
||||
@@ -14,7 +14,7 @@ gws-google-platforms-phishing/
|
||||
|
||||
### Password Spraying
|
||||
|
||||
Para probar contraseñas con todos los correos electrónicos que encontraste (o que has generado basándote en un patrón de nombre de correo electrónico que podrías haber descubierto), podrías usar una herramienta como [**https://github.com/ustayready/CredKing**](https://github.com/ustayready/CredKing) (aunque parece no estar mantenida) que utilizará lambdas de AWS para cambiar la dirección IP.
|
||||
Para probar contraseñas con todos los correos electrónicos que encontraste (o que has generado basándote en un patrón de nombre de correo que podrías haber descubierto), podrías usar una herramienta como [**https://github.com/ustayready/CredKing**](https://github.com/ustayready/CredKing) (aunque parece no estar mantenida) que utilizará lambdas de AWS para cambiar la dirección IP.
|
||||
|
||||
## Post-Explotación
|
||||
|
||||
@@ -34,9 +34,9 @@ Lee más sobre las diferentes técnicas para pivotar entre GWS y GCP en:
|
||||
|
||||
## GWS <--> GCPW | GCDS | Sincronización de Directorios (AD & EntraID)
|
||||
|
||||
- **GCPW (Proveedor de Credenciales de Google para Windows)**: Este es el inicio de sesión único que Google Workspaces proporciona para que los usuarios puedan iniciar sesión en sus PC con Windows usando **sus credenciales de Workspace**. Además, esto **almacenará tokens para acceder a Google Workspace** en algunos lugares de la PC.
|
||||
- **GCDS (Sincronización de Directorio de Google Cloud)**: Esta es una herramienta que se puede usar para **sincronizar tus usuarios y grupos de directorio activo a tu Workspace**. La herramienta requiere las **credenciales de un superusuario de Workspace y un usuario privilegiado de AD**. Por lo tanto, podría ser posible encontrarla dentro de un servidor de dominio que estaría sincronizando usuarios de vez en cuando.
|
||||
- **Sincronización de Directorio de Administrador**: Permite sincronizar usuarios de AD y EntraID en un proceso sin servidor desde [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
|
||||
- **GCPW (Google Credential Provider for Windows)**: Este es el inicio de sesión único que Google Workspaces proporciona para que los usuarios puedan iniciar sesión en sus PCs con Windows usando **sus credenciales de Workspace**. Además, esto **almacenará tokens para acceder a Google Workspace** en algunos lugares de la PC.
|
||||
- **GCDS (Google Cloud Directory Sync)**: Esta es una herramienta que se puede usar para **sincronizar tus usuarios y grupos de Active Directory a tu Workspace**. La herramienta requiere las **credenciales de un superusuario de Workspace y un usuario privilegiado de AD**. Por lo tanto, podría ser posible encontrarla dentro de un servidor de dominio que esté sincronizando usuarios de vez en cuando.
|
||||
- **Sincronización de Directorio de Admin**: Permite sincronizar usuarios de AD y EntraID en un proceso sin servidor desde [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
|
||||
|
||||
{{#ref}}
|
||||
gws-workspace-sync-attacks-gcpw-gcds-gps-directory-sync-with-ad-and-entraid/
|
||||
@@ -56,7 +56,7 @@ gws-persistence.md
|
||||
- Cambiar la contraseña del usuario
|
||||
- Generar nuevos códigos de respaldo de 2FA
|
||||
- Eliminar contraseñas de aplicaciones
|
||||
- Eliminar aplicaciones OAuth
|
||||
- Eliminar aplicaciones de OAuth
|
||||
- Eliminar dispositivos de 2FA
|
||||
- Eliminar reenvíos de correo electrónico
|
||||
- Eliminar filtros de correos electrónicos
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# GWS - Google Platforms Phishing
|
||||
# GWS - Phishing en Plataformas de Google
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -41,7 +41,7 @@ Hoy en día, esto no funciona, pero si **le das al correo de la víctima acceso
|
||||
|
||||
Puedes **crear un evento de calendario** y agregar tantas direcciones de correo de la empresa que estás atacando como tengas. Programa este evento de calendario en **5 o 15 min** desde el tiempo actual. Haz que el evento parezca legítimo y **pon un comentario y un título indicando que necesitan leer algo** (con el **enlace de phishing**).
|
||||
|
||||
Esta es la alerta que aparecerá en el navegador con un título de reunión "Despedir Personas", por lo que podrías establecer un título más parecido al phishing (e incluso cambiar el nombre asociado con tu correo).
|
||||
Esta es la alerta que aparecerá en el navegador con un título de reunión "Despedir Personas", por lo que podrías establecer un título más parecido a phishing (e incluso cambiar el nombre asociado con tu correo).
|
||||
|
||||
<figure><img src="../../../images/image (8).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -49,11 +49,11 @@ Para que parezca menos sospechoso:
|
||||
|
||||
- Configúralo para que **los receptores no puedan ver a las otras personas invitadas**
|
||||
- **NO envíes correos notificando sobre el evento**. Entonces, las personas solo verán su advertencia sobre una reunión en 5 minutos y que necesitan leer ese enlace.
|
||||
- Aparentemente, usando la API puedes establecer como **True** que **las personas** han **aceptado** el evento e incluso crear **comentarios en su nombre**.
|
||||
- Aparentemente, usando la API puedes establecer en **True** que **las personas** han **aceptado** el evento e incluso crear **comentarios en su nombre**.
|
||||
|
||||
## Phishing de Redirección de Scripts de Aplicaciones
|
||||
## Phishing de Redirección con App Scripts
|
||||
|
||||
Es posible crear un script en [https://script.google.com/](https://script.google.com/) y **exponerlo como una aplicación web accesible por todos** que utilizará el dominio legítimo **`script.google.com`**.\
|
||||
Es posible crear un script en [https://script.google.com/](https://script.google.com/) y **exponerlo como una aplicación web accesible por todos** que usará el dominio legítimo **`script.google.com`**.\
|
||||
Con algún código como el siguiente, un atacante podría hacer que el script cargue contenido arbitrario en esta página sin dejar de acceder al dominio:
|
||||
```javascript
|
||||
function doGet() {
|
||||
@@ -89,7 +89,7 @@ Cualquiera de las técnicas anteriores podría usarse para hacer que el usuario
|
||||
Al crear una aplicación para **actuar en nombre de otros usuarios**, el desarrollador necesita crear una **aplicación OAuth dentro de GCP** e indicar los scopes (permisos) que la aplicación necesita para acceder a los datos de los usuarios.\
|
||||
Cuando un **usuario** quiere **usar** esa **aplicación**, se le **pedirá** que **acepte** que la aplicación tendrá acceso a sus datos especificados en los scopes.
|
||||
|
||||
Esta es una forma muy jugosa de **phishing** a usuarios no técnicos para que usen **aplicaciones que acceden a información sensible** porque pueden no entender las consecuencias. Sin embargo, en cuentas de organizaciones, hay formas de prevenir que esto suceda.
|
||||
Esta es una forma muy atractiva de **phishing** a usuarios no técnicos para que usen **aplicaciones que acceden a información sensible** porque pueden no entender las consecuencias. Sin embargo, en cuentas de organizaciones, hay formas de prevenir que esto suceda.
|
||||
|
||||
### Aviso de Aplicación No Verificada
|
||||
|
||||
@@ -118,7 +118,7 @@ Este aviso aparece en aplicaciones que:
|
||||
4. **Selecciona** los **scopes de OAuth**.
|
||||
- Esta página está dividida en permisos no sensibles, permisos sensibles y permisos restringidos. Cada vez que agregas un nuevo permiso, se añade a su categoría. Dependiendo de los permisos solicitados, aparecerán diferentes avisos al usuario indicando cuán sensibles son estos permisos.
|
||||
- Tanto **`admin.directory.user.readonly`** como **`cloud-platform`** son permisos sensibles.
|
||||
5. **Agrega los usuarios de prueba.** Mientras el estado de la aplicación sea de prueba, solo estos usuarios podrán acceder a la aplicación, así que asegúrate de **agregar el correo electrónico que vas a phishing**.
|
||||
5. **Agrega los usuarios de prueba.** Mientras el estado de la aplicación sea de prueba, solo estos usuarios podrán acceder a la aplicación, así que asegúrate de **agregar el correo electrónico que vas a estar phishing**.
|
||||
|
||||
Ahora obtengamos **credenciales para una aplicación web** usando el **ID de Cliente OAuth creado previamente**:
|
||||
|
||||
@@ -156,6 +156,6 @@ Es posible hacer algo usando gcloud en lugar de la consola web, consulta:
|
||||
## Referencias
|
||||
|
||||
- [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 y Beau Bullock - OK Google, ¿Cómo hago un Red Team en GSuite?
|
||||
- [https://www.youtube.com/watch?v=KTVHLolz6cE](https://www.youtube.com/watch?v=KTVHLolz6cE) - Mike Felch y Beau Bullock - OK Google, ¿Cómo hago Red Team GSuite?
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -57,7 +57,7 @@ Para crear un proyecto independiente desde Apps Script:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Crear un proyecto independiente utilizando la herramienta de línea de comandos clasp</summary>
|
||||
<summary>Crear un proyecto independiente usando la herramienta de línea de comandos clasp</summary>
|
||||
|
||||
`clasp` es una herramienta de línea de comandos que te permite crear, extraer/empujar y desplegar proyectos de Apps Script desde una terminal.
|
||||
|
||||
@@ -69,7 +69,7 @@ Consulta la [guía de Interfaz de Línea de Comandos usando `clasp`](https://dev
|
||||
|
||||
### Crear Google Sheet con App Script
|
||||
|
||||
Comienza creando un App Script, mi recomendación para este escenario es crear una Google Sheet e ir a **`Extensiones > App Scripts`**, esto abrirá un **nuevo App Script para ti vinculado a la hoja**.
|
||||
Comienza creando un App Script, mi recomendación para este escenario es crear una Google Sheet y ir a **`Extensiones > App Scripts`**, esto abrirá un **nuevo App Script vinculado a la hoja**.
|
||||
|
||||
### Filtrar token
|
||||
|
||||
@@ -78,7 +78,7 @@ Para dar acceso al token de OAuth necesitas hacer clic en **`Servicios +` y agre
|
||||
- **AdminDirectory**: Acceso a usuarios y grupos del directorio (si el usuario tiene suficientes permisos)
|
||||
- **Gmail**: Para acceder a los datos de gmail
|
||||
- **Drive**: Para acceder a los datos de drive
|
||||
- **Google Sheets API**: Para que funcione con el disparador
|
||||
- **Google Sheets API**: Para que funcione con el trigger
|
||||
|
||||
Para cambiar tú mismo los **alcances necesarios** puedes ir a la configuración del proyecto y habilitar: **`Mostrar archivo de manifiesto "appsscript.json" en el editor`.**
|
||||
```javascript
|
||||
@@ -147,7 +147,7 @@ Permisos solicitados para ejecutar el App Script:
|
||||
|
||||
### Crear Trigger
|
||||
|
||||
Una vez que se lea la App, haz clic en **⏰ Triggers** para crear un trigger. Como **función** a ejecutar elige **`getToken`**, se ejecuta en la implementación **`Head`**, en la fuente del evento selecciona **`From spreadsheet`** y en el tipo de evento selecciona **`On open`** o **`On edit`** (según tus necesidades) y guarda.
|
||||
Una vez que se lea la App, haz clic en **⏰ Triggers** para crear un trigger. Como **función** a ejecutar elige **`getToken`**, se ejecuta en la implementación **`Head`**, en la fuente del evento selecciona **`From spreadsheet`** y el tipo de evento selecciona **`On open`** o **`On edit`** (según tus necesidades) y guarda.
|
||||
|
||||
Ten en cuenta que puedes verificar los **ejecutores de los App Scripts en la pestaña de Ejecuciones** si deseas depurar algo.
|
||||
|
||||
@@ -163,7 +163,7 @@ Para **activar** el **App Script**, la víctima necesita conectarse con **Acceso
|
||||
> [!CAUTION]
|
||||
> Si alguien **compartió contigo un documento con App Scripts y un trigger usando el Head** del App Script (no una implementación fija), puedes modificar el código del App Script (agregando por ejemplo las funciones de robo de token), acceder a él, y el **App Script se ejecutará con los permisos del usuario que compartió el documento contigo**! (ten en cuenta que el token OAuth del propietario tendrá como ámbitos de acceso los que se dieron cuando se creó el trigger).
|
||||
>
|
||||
> Una **notificación será enviada al creador del script indicando que alguien modificó el script** (¿Qué tal usar permisos de gmail para generar un filtro y prevenir la alerta?)
|
||||
> Se **enviará una notificación al creador del script indicando que alguien modificó el script** (¿Qué tal usar permisos de gmail para generar un filtro y prevenir la alerta?)
|
||||
|
||||
> [!TIP]
|
||||
> Si un **atacante modifica los ámbitos del App Script**, las actualizaciones **no se aplicarán** al documento hasta que se cree un **nuevo trigger** con los cambios. Por lo tanto, un atacante no podrá robar el token del propietario creador con más ámbitos que los que estableció en el trigger que creó.
|
||||
@@ -171,7 +171,7 @@ Para **activar** el **App Script**, la víctima necesita conectarse con **Acceso
|
||||
### Copiar en lugar de compartir
|
||||
|
||||
Cuando creas un enlace para compartir un documento, se crea un enlace similar a este: `https://docs.google.com/spreadsheets/d/1i5[...]aIUD/edit`\
|
||||
Si **cambias** el final **"/edit"** por **"/copy"**, en lugar de acceder, Google te preguntará si deseas **generar una copia del documento:**
|
||||
Si **cambias** el final **"/edit"** por **"/copy"**, en lugar de acceder a él, Google te preguntará si deseas **generar una copia del documento:**
|
||||
|
||||
<figure><img src="../../../images/image (335).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -179,7 +179,7 @@ Si el usuario lo copia y accede, tanto el **contenido del documento como los App
|
||||
|
||||
### Compartir como Aplicación Web
|
||||
|
||||
Ten en cuenta que también es posible **compartir un App Script como una aplicación web** (en el Editor del App Script, implementar como una aplicación web), pero aparecerá una alerta como esta:
|
||||
Ten en cuenta que también es posible **compartir un App Script como una Aplicación Web** (en el Editor del App Script, implementar como una Aplicación Web), pero aparecerá una alerta como esta:
|
||||
|
||||
<figure><img src="../../../images/image (337).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -202,16 +202,16 @@ curl -H "Authorization: Bearer $OAUTH_TOKEN" \
|
||||
|
||||
Una opción para la persistencia sería **crear un documento y agregar un disparador para la función getToken** y compartir el documento con el atacante para que cada vez que el atacante abra el archivo, **exfiltre el token de la víctima.**
|
||||
|
||||
También es posible crear un App Script y hacer que se dispare cada X tiempo (como cada minuto, hora, día...). Un atacante que ha **comprometido credenciales o una sesión de una víctima podría establecer un disparador de tiempo de App Script y filtrar un token OAuth muy privilegiado cada día**:
|
||||
También es posible crear un App Script y hacer que se dispare cada X tiempo (como cada minuto, hora, día...). Un atacante que ha **comprometido credenciales o una sesión de una víctima podría establecer un disparador de tiempo de App Script y filtrar un token OAuth muy privilegiado todos los días**:
|
||||
|
||||
Solo crea un App Script, ve a Disparadores, haz clic en Agregar Disparador y selecciona como fuente de evento Basado en tiempo y selecciona las opciones que mejor se adapten a ti:
|
||||
|
||||
<figure><img src="../../../images/image (336).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
> [!CAUTION]
|
||||
> Esto creará un correo electrónico de alerta de seguridad y un mensaje push a tu móvil alertando sobre esto.
|
||||
> Esto generará un correo electrónico de alerta de seguridad y un mensaje push a tu móvil alertando sobre esto.
|
||||
|
||||
### Bypass de Aviso No Verificado de Documento Compartido
|
||||
### Bypass de Aviso No Verificado en Documento Compartido
|
||||
|
||||
Además, si alguien **compartió** contigo un documento con **acceso de editor**, puedes generar **App Scripts dentro del documento** y el **PROPIETARIO (creador) del documento será el propietario del App Script**.
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ Revisa tu filtro actual (para eliminarlos) en [https://mail.google.com/mail/u/0/
|
||||
|
||||
- Crea **una dirección de reenvío para reenviar información sensible** (o todo) - Necesitas acceso manual.
|
||||
- Crea una dirección de reenvío en [https://mail.google.com/mail/u/2/#settings/fwdandpop](https://mail.google.com/mail/u/2/#settings/fwdandpop)
|
||||
- La dirección receptora necesitará confirmar esto
|
||||
- La dirección receptora deberá confirmar esto
|
||||
- Luego, configura para reenviar todos los correos mientras mantienes una copia (recuerda hacer clic en guardar cambios):
|
||||
|
||||
<figure><img src="../../images/image (332).png" alt=""><figcaption></figcaption></figure>
|
||||
@@ -41,12 +41,12 @@ También es posible crear filtros y reenviar solo correos específicos a la otra
|
||||
|
||||
## Contraseñas de aplicaciones
|
||||
|
||||
Si lograste **comprometer una sesión de usuario de Google** y el usuario tenía **2FA**, puedes **generar** una [**contraseña de aplicación**](https://support.google.com/accounts/answer/185833?hl=en) (sigue el enlace para ver los pasos). Ten en cuenta que **las contraseñas de aplicación ya no son recomendadas por Google y son revocadas** cuando el usuario **cambia su contraseña de Google Account.**
|
||||
Si lograste **comprometer una sesión de usuario de Google** y el usuario tenía **2FA**, puedes **generar** una [**contraseña de aplicación**](https://support.google.com/accounts/answer/185833?hl=en) (sigue el enlace para ver los pasos). Ten en cuenta que **Google ya no recomienda las contraseñas de aplicación y se revocan** cuando el usuario **cambia su contraseña de Google Account.**
|
||||
|
||||
**Incluso si tienes una sesión abierta, necesitarás conocer la contraseña del usuario para crear una contraseña de aplicación.**
|
||||
|
||||
> [!NOTE]
|
||||
> Las contraseñas de aplicación **solo pueden ser utilizadas con cuentas que tienen la Verificación en 2 Pasos** activada.
|
||||
> Las contraseñas de aplicación **solo se pueden usar con cuentas que tienen la Verificación en 2 Pasos** activada.
|
||||
|
||||
## Cambiar 2-FA y similar
|
||||
|
||||
@@ -54,7 +54,7 @@ También es posible **desactivar 2-FA o inscribir un nuevo dispositivo** (o núm
|
||||
**También es posible generar claves de acceso (agregar tu propio dispositivo), cambiar la contraseña, agregar números móviles para teléfonos de verificación y recuperación, cambiar el correo electrónico de recuperación y cambiar las preguntas de seguridad).**
|
||||
|
||||
> [!CAUTION]
|
||||
> Para **evitar que las notificaciones push de seguridad** lleguen al teléfono del usuario, podrías **cerrar sesión en su smartphone** (aunque eso sería raro) porque no puedes volver a iniciar sesión desde aquí.
|
||||
> Para **evitar que las notificaciones push de seguridad** lleguen al teléfono del usuario, podrías **desconectar su smartphone** (aunque eso sería raro) porque no puedes volver a iniciar sesión desde aquí.
|
||||
>
|
||||
> También es posible **localizar el dispositivo.**
|
||||
|
||||
@@ -62,8 +62,8 @@ También es posible **desactivar 2-FA o inscribir un nuevo dispositivo** (o núm
|
||||
|
||||
## Persistencia a través de aplicaciones OAuth
|
||||
|
||||
Si has **comprometido la cuenta de un usuario**, puedes simplemente **aceptar** otorgar todos los permisos posibles a una **aplicación OAuth**. El único problema es que Workspace puede configurarse para **no permitir aplicaciones OAuth externas y/o internas no revisadas.**\
|
||||
Es bastante común que las organizaciones de Workspace no confíen por defecto en aplicaciones OAuth externas, pero confíen en las internas, así que si tienes **suficientes permisos para generar una nueva aplicación OAuth** dentro de la organización y las aplicaciones externas están deshabilitadas, créala y **usa esa nueva aplicación OAuth interna para mantener la persistencia**.
|
||||
Si has **comprometido la cuenta de un usuario,** puedes simplemente **aceptar** otorgar todos los permisos posibles a una **aplicación OAuth**. El único problema es que Workspace puede configurarse para **no permitir aplicaciones OAuth externas y/o internas no revisadas.**\
|
||||
Es bastante común que las organizaciones de Workspace no confíen por defecto en las aplicaciones OAuth externas, pero confíen en las internas, así que si tienes **suficientes permisos para generar una nueva aplicación OAuth** dentro de la organización y las aplicaciones externas están prohibidas, créala y **usa esa nueva aplicación OAuth interna para mantener la persistencia**.
|
||||
|
||||
Consulta la siguiente página para más información sobre aplicaciones OAuth:
|
||||
|
||||
@@ -73,7 +73,7 @@ gws-google-platforms-phishing/
|
||||
|
||||
## Persistencia a través de delegación
|
||||
|
||||
Puedes **delegar la cuenta** a una cuenta diferente controlada por el atacante (si se te permite hacer esto). En las **Organizaciones** de Workspace, esta opción debe estar **habilitada**. Puede estar deshabilitada para todos, habilitada para algunos usuarios/grupos o para todos (generalmente solo está habilitada para algunos usuarios/grupos o completamente deshabilitada).
|
||||
Puedes simplemente **delegar la cuenta** a una cuenta diferente controlada por el atacante (si se te permite hacer esto). En las **Organizaciones** de Workspace, esta opción debe estar **habilitada**. Puede estar deshabilitada para todos, habilitada para algunos usuarios/grupos o para todos (generalmente solo está habilitada para algunos usuarios/grupos o completamente deshabilitada).
|
||||
|
||||
<details>
|
||||
|
||||
@@ -86,7 +86,7 @@ Como administrador de tu organización (por ejemplo, tu trabajo o escuela), cont
|
||||
- Agregar un asistente administrativo como delegado en tu cuenta de Gmail para que pueda leer y enviar correos electrónicos en tu nombre.
|
||||
- Agregar un grupo, como tu departamento de ventas, en Grupos como delegado para dar acceso a todos a una cuenta de Gmail.
|
||||
|
||||
Los usuarios solo pueden delegar acceso a otro usuario en la misma organización, independientemente de su dominio o unidad organizativa.
|
||||
Los usuarios solo pueden delegar acceso a otro usuario en la misma organización, independientemente de su dominio o su unidad organizativa.
|
||||
|
||||
#### Límites y restricciones de delegación
|
||||
|
||||
@@ -104,7 +104,7 @@ Los usuarios solo pueden delegar acceso a otro usuario en la misma organización
|
||||
|
||||
Inicia sesión usando una _cuenta de administrador_, no tu cuenta actual CarlosPolop@gmail.com
|
||||
|
||||
2. En la consola de administración, ve a Menú  **Aplicaciones****Google Workspace****Gmail****Configuración del usuario**.
|
||||
2. En la consola de administración, ve a Menú  **Aplicaciones****Google Workspace****Gmail****Configuración de usuario**.
|
||||
3. Para aplicar la configuración a todos, deja seleccionada la unidad organizativa superior. De lo contrario, selecciona una [unidad organizativa](https://support.google.com/a/topic/1227584) secundaria.
|
||||
4. Haz clic en **Delegación de correo**.
|
||||
5. Marca la casilla **Permitir a los usuarios delegar acceso a su buzón a otros usuarios en el dominio**.
|
||||
@@ -122,7 +122,7 @@ Los cambios pueden tardar hasta 24 horas, pero generalmente ocurren más rápido
|
||||
|
||||
Después de activar la delegación, tus usuarios van a la configuración de Gmail para asignar delegados. Los delegados pueden leer, enviar y recibir mensajes en nombre del usuario.
|
||||
|
||||
Para más detalles, dirige a los usuarios a [Delegar y colaborar en correos electrónicos](https://support.google.com/a/users/answer/138350).
|
||||
Para más detalles, dirige a los usuarios a [Delegar y colaborar en el correo electrónico](https://support.google.com/a/users/answer/138350).
|
||||
|
||||
</details>
|
||||
|
||||
@@ -177,6 +177,6 @@ gws-google-platforms-phishing/gws-app-scripts.md
|
||||
## Referencias
|
||||
|
||||
- [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 y Beau Bullock - OK Google, ¿Cómo hago un Red Team en GSuite?
|
||||
- [https://www.youtube.com/watch?v=KTVHLolz6cE](https://www.youtube.com/watch?v=KTVHLolz6cE) - Mike Felch y Beau Bullock - OK Google, ¿Cómo hago un Red Team GSuite?
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
|
||||
## Google Groups Privesc
|
||||
|
||||
Por defecto en workspace un **grupo** puede ser **accedido libremente** por cualquier miembro de la organización.\
|
||||
Por defecto, en Workspace un **grupo** puede ser **accedido libremente** por cualquier miembro de la organización.\
|
||||
Workspace también permite **otorgar permisos a grupos** (incluso permisos de GCP), así que si los grupos pueden ser unidos y tienen permisos adicionales, un atacante puede **abusar de ese camino para escalar privilegios**.
|
||||
|
||||
Potencialmente necesitas acceso a la consola para unirte a grupos que permiten ser unidos por cualquier persona en la org. Revisa la información de los grupos en [**https://groups.google.com/all-groups**](https://groups.google.com/all-groups).
|
||||
Potencialmente necesitas acceso a la consola para unirte a grupos que permiten ser unidos por cualquier persona en la organización. Verifica la información de los grupos en [**https://groups.google.com/all-groups**](https://groups.google.com/all-groups).
|
||||
|
||||
### Acceso a la información de Grupos de Mail
|
||||
### Acceso a la información de correo de grupos
|
||||
|
||||
Si lograste **comprometer una sesión de usuario de google**, desde [**https://groups.google.com/all-groups**](https://groups.google.com/all-groups) puedes ver el historial de correos enviados a los grupos de correo de los que el usuario es miembro, y podrías encontrar **credenciales** u otros **datos sensibles**.
|
||||
Si lograste **comprometer una sesión de usuario de Google**, desde [**https://groups.google.com/all-groups**](https://groups.google.com/all-groups) puedes ver el historial de correos enviados a los grupos de correo de los que el usuario es miembro, y podrías encontrar **credenciales** u otros **datos sensibles**.
|
||||
|
||||
## GCP <--> GWS Pivoting
|
||||
|
||||
@@ -21,13 +21,13 @@ Si lograste **comprometer una sesión de usuario de google**, desde [**https://g
|
||||
|
||||
## Takeout - Descargar Todo lo que Google Sabe sobre una cuenta
|
||||
|
||||
Si tienes una **sesión dentro de la cuenta de google de la víctima** puedes descargar todo lo que Google guarda sobre esa cuenta desde [**https://takeout.google.com**](https://takeout.google.com/u/1/?pageId=none)
|
||||
Si tienes una **sesión dentro de la cuenta de Google de la víctima**, puedes descargar todo lo que Google guarda sobre esa cuenta desde [**https://takeout.google.com**](https://takeout.google.com/u/1/?pageId=none)
|
||||
|
||||
## Vault - Descargar todos los datos de Workspace de los usuarios
|
||||
|
||||
Si una organización tiene **Google Vault habilitado**, podrías acceder a [**https://vault.google.com**](https://vault.google.com/u/1/) y **descargar** toda la **información**.
|
||||
|
||||
## Descarga de Contactos
|
||||
## Descarga de contactos
|
||||
|
||||
Desde [**https://contacts.google.com**](https://contacts.google.com/u/1/?hl=es&tab=mC) puedes descargar todos los **contactos** del usuario.
|
||||
|
||||
@@ -41,9 +41,9 @@ En [**https://mail.google.com/chat**](https://mail.google.com/chat) puedes acced
|
||||
|
||||
## Minería de Google Drive
|
||||
|
||||
Al **compartir** un documento puedes **especificar** las **personas** que pueden acceder a él una por una, **compartirlo** con toda tu **empresa** (**o** con algunos **grupos** específicos) generando un enlace.
|
||||
Al **compartir** un documento puedes **especificar** las **personas** que pueden acceder a él una por una, **compartirlo** con toda tu **empresa** (**o** con algunos **grupos** específicos) generando un **enlace**.
|
||||
|
||||
Al compartir un documento, en la configuración avanzada también puedes **permitir que las personas busquen** este archivo (por **defecto** esto está **deshabilitado**). Sin embargo, es importante notar que una vez que los usuarios ven un documento, es buscable por ellos.
|
||||
Al compartir un documento, en la configuración avanzada también puedes **permitir que las personas busquen** este archivo (por **defecto** esto está **deshabilitado**). Sin embargo, es importante notar que una vez que los usuarios ven un documento, este es buscable por ellos.
|
||||
|
||||
Por simplicidad, la mayoría de las personas generarán y compartirán un enlace en lugar de agregar a las personas que pueden acceder al documento una por una.
|
||||
|
||||
@@ -69,6 +69,6 @@ También puedes encontrar correos buscando a través de todas las facturas del u
|
||||
## Referencias
|
||||
|
||||
- [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 y Beau Bullock - OK Google, ¿Cómo hago Red Team GSuite?
|
||||
- [https://www.youtube.com/watch?v=KTVHLolz6cE](https://www.youtube.com/watch?v=KTVHLolz6cE) - Mike Felch y Beau Bullock - OK Google, ¿Cómo hago un Red Team en GSuite?
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -9,7 +9,7 @@ Este es el inicio de sesión único que Google Workspaces proporciona para que l
|
||||
> [!TIP]
|
||||
> Tenga en cuenta que [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) es capaz de detectar **GCPW**, obtener información sobre la configuración y **incluso tokens**.
|
||||
|
||||
Encuentre más información sobre esto en:
|
||||
Encuentra más información sobre esto en:
|
||||
|
||||
{{#ref}}
|
||||
gcpw-google-credential-provider-for-windows.md
|
||||
@@ -19,12 +19,12 @@ gcpw-google-credential-provider-for-windows.md
|
||||
|
||||
Esta es una herramienta que se puede usar para **sincronizar sus usuarios y grupos de Active Directory con su Workspace** (y no al revés en el momento de escribir esto).
|
||||
|
||||
Es interesante porque es una herramienta que requerirá las **credenciales de un superusuario de Workspace y un usuario privilegiado de AD**. Por lo tanto, podría ser posible encontrarla dentro de un servidor de dominio que estaría sincronizando usuarios de vez en cuando.
|
||||
Es interesante porque es una herramienta que requerirá las **credenciales de un superusuario de Workspace y un usuario privilegiado de AD**. Por lo tanto, podría ser posible encontrarla dentro de un servidor de dominio que esté sincronizando usuarios de vez en cuando.
|
||||
|
||||
> [!TIP]
|
||||
> Tenga en cuenta que [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) es capaz de detectar **GCDS**, obtener información sobre la configuración y **incluso las contraseñas y credenciales encriptadas**.
|
||||
|
||||
Encuentre más información sobre esto en:
|
||||
Encuentra más información sobre esto en:
|
||||
|
||||
{{#ref}}
|
||||
gcds-google-cloud-directory-sync.md
|
||||
@@ -34,22 +34,22 @@ gcds-google-cloud-directory-sync.md
|
||||
|
||||
Este es el binario y servicio que Google ofrece para **mantener sincronizadas las contraseñas de los usuarios entre el AD** y Workspace. Cada vez que un usuario cambia su contraseña en el AD, se establece en Google.
|
||||
|
||||
Se instala en `C:\Program Files\Google\Password Sync` donde puede encontrar el binario `PasswordSync.exe` para configurarlo y `password_sync_service.exe` (el servicio que seguirá ejecutándose).
|
||||
Se instala en `C:\Program Files\Google\Password Sync` donde puedes encontrar el binario `PasswordSync.exe` para configurarlo y `password_sync_service.exe` (el servicio que seguirá ejecutándose).
|
||||
|
||||
> [!TIP]
|
||||
> Tenga en cuenta que [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) es capaz de detectar **GPS**, obtener información sobre la configuración y **incluso las contraseñas y credenciales encriptadas**.
|
||||
|
||||
Encuentre más información sobre esto en:
|
||||
Encuentra más información sobre esto en:
|
||||
|
||||
{{#ref}}
|
||||
gps-google-password-sync.md
|
||||
{{#endref}}
|
||||
|
||||
## Sincronización de Directorios de Administrador
|
||||
## Sincronización de Directorios de Admin
|
||||
|
||||
La principal diferencia entre esta forma de sincronizar usuarios con GCDS es que GCDS se realiza manualmente con algunos binarios que necesita descargar y ejecutar, mientras que **la Sincronización de Directorios de Administrador es sin servidor** gestionada por Google en [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
|
||||
La principal diferencia entre esta forma de sincronizar usuarios con GCDS es que GCDS se realiza manualmente con algunos binarios que necesitas descargar y ejecutar, mientras que **la Sincronización de Directorios de Admin es sin servidor** gestionada por Google en [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
|
||||
|
||||
Encuentre más información sobre esto en:
|
||||
Encuentra más información sobre esto en:
|
||||
|
||||
{{#ref}}
|
||||
gws-admin-directory-sync.md
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
|
||||
## Información Básica
|
||||
|
||||
Esta es una herramienta que se puede usar para **sincronizar tus usuarios y grupos de Active Directory con tu Workspace** (y no al revés en el momento de escribir esto).
|
||||
Esta es una herramienta que se puede utilizar para **sincronizar tus usuarios y grupos de Active Directory con tu Workspace** (y no al revés en el momento de escribir esto).
|
||||
|
||||
Es interesante porque es una herramienta que requerirá las **credenciales de un superusuario de Workspace y un usuario privilegiado de AD**. Por lo tanto, podría ser posible encontrarla dentro de un servidor de dominio que estaría sincronizando usuarios de vez en cuando.
|
||||
Es interesante porque es una herramienta que requerirá las **credenciales de un superusuario de Workspace y un usuario privilegiado de AD**. Por lo tanto, podría ser posible encontrarla dentro de un servidor de dominio que esté sincronizando usuarios de vez en cuando.
|
||||
|
||||
> [!NOTE]
|
||||
> Para realizar un **MitM** al binario **`config-manager.exe`** solo agrega la siguiente línea en el archivo `config.manager.vmoptions`: **`-Dcom.sun.net.ssl.checkRevocation=false`**
|
||||
> Para realizar un **MitM** al binario **`config-manager.exe`**, simplemente agrega la siguiente línea en el archivo `config.manager.vmoptions`: **`-Dcom.sun.net.ssl.checkRevocation=false`**
|
||||
|
||||
> [!TIP]
|
||||
> Ten en cuenta que [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) es capaz de detectar **GCDS**, obtener información sobre la configuración y **incluso las contraseñas y credenciales encriptadas**.
|
||||
@@ -20,7 +20,7 @@ También ten en cuenta que GCDS no sincronizará contraseñas de AD a Workspace.
|
||||
|
||||
### GCDS - Tokens de Disco y Credenciales de AD
|
||||
|
||||
El binario `config-manager.exe` (el binario principal de GCDS con GUI) almacenará las credenciales de Active Directory configuradas, el token de actualización y el acceso por defecto en un **archivo xml** en la carpeta **`C:\Program Files\Google Cloud Directory Sync`** en un archivo llamado **`Untitled-1.xml`** por defecto. Aunque también podría guardarse en los `Documentos` del usuario o en **cualquier otra carpeta**.
|
||||
El binario `config-manager.exe` (el binario principal de GCDS con GUI) almacenará las credenciales de Active Directory configuradas, el token de actualización y el acceso por defecto en un **archivo xml** en la carpeta **`C:\Program Files\Google Cloud Directory Sync`** en un archivo llamado **`Untitled-1.xml`** por defecto. Aunque también podría guardarse en los `Documents` del usuario o en **cualquier otra carpeta**.
|
||||
|
||||
Además, el registro **`HKCU\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\ui`** dentro de la clave **`open.recent`** contiene las rutas a todos los archivos de configuración abiertos recientemente (xmls). Así que es posible **verificarlo para encontrarlos**.
|
||||
|
||||
@@ -49,7 +49,7 @@ La información más interesante dentro del archivo sería:
|
||||
<authCredentialsEncrypted>XMmsPMGxz7nkpChpC7h2ag==</authCredentialsEncrypted>
|
||||
[...]
|
||||
```
|
||||
Nota cómo el **refresh** **token** y la **contraseña** del usuario están **encriptados** usando **AES CBC** con una clave y un IV generados aleatoriamente almacenados en **`HKEY_CURRENT_USER\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util`** (donde sea que la biblioteca Java **`prefs`** almacene las preferencias) en las claves de cadena **`/Encryption/Policy/V2.iv`** y **`/Encryption/Policy/V2.key`** almacenadas en base64.
|
||||
Tenga en cuenta cómo el **refresh** **token** y la **contraseña** del usuario están **encriptados** utilizando **AES CBC** con una clave y un IV generados aleatoriamente almacenados en **`HKEY_CURRENT_USER\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util`** (donde sea que la biblioteca Java **`prefs`** almacene las preferencias) en las claves de cadena **`/Encryption/Policy/V2.iv`** y **`/Encryption/Policy/V2.key`** almacenadas en base64.
|
||||
|
||||
<details>
|
||||
|
||||
@@ -150,7 +150,7 @@ Write-Host "Decrypted Password: $decryptedPassword"
|
||||
</details>
|
||||
|
||||
> [!NOTE]
|
||||
> Tenga en cuenta que es posible verificar esta información revisando el código java de **`DirSync.jar`** en **`C:\Program Files\Google Cloud Directory Sync`** buscando la cadena `exportkeys` (ya que ese es el parámetro cli que el binario `upgrade-config.exe` espera para volcar las claves).
|
||||
> Tenga en cuenta que es posible verificar esta información revisando el código java de **`DirSync.jar`** desde **`C:\Program Files\Google Cloud Directory Sync`** buscando la cadena `exportkeys` (ya que ese es el parámetro cli que el binario `upgrade-config.exe` espera para volcar las claves).
|
||||
|
||||
En lugar de usar el script de powershell, también es posible usar el binario **`:\Program Files\Google Cloud Directory Sync\upgrade-config.exe`** con el parámetro `-exportKeys` y obtener la **Key** y **IV** del registro en hex y luego simplemente usar algún cyberchef con AES/CBC y esa clave e IV para descifrar la información.
|
||||
|
||||
@@ -235,7 +235,7 @@ Remove-Item -Path $dumpFolder -Recurse -Force
|
||||
```
|
||||
</details>
|
||||
|
||||
### GCDS - Generando tokens de acceso a partir de tokens de actualización
|
||||
### GCDS - Generación de tokens de acceso a partir de tokens de actualización
|
||||
|
||||
Usando el token de actualización, es posible generar tokens de acceso utilizando este y el ID de cliente y el secreto de cliente especificados en el siguiente comando:
|
||||
```bash
|
||||
@@ -245,7 +245,7 @@ curl -s --data "client_id=118556098869.apps.googleusercontent.com" \
|
||||
--data "refresh_token=1//03gQU44mwVnU4CDHYE736TGMSNwF-L9IrTuikNFVZQ3sBxshrJaki7QvpHZQMeANHrF0eIPebz0dz0S987354AuSdX38LySlWflI" \
|
||||
https://www.googleapis.com/oauth2/v4/token
|
||||
```
|
||||
### GCDS - Scopes
|
||||
### GCDS - Alcances
|
||||
|
||||
> [!NOTE]
|
||||
> Tenga en cuenta que incluso teniendo un token de actualización, no es posible solicitar ningún alcance para el token de acceso, ya que solo puede solicitar los **alcances admitidos por la aplicación donde está generando el token de acceso**.
|
||||
@@ -280,7 +280,7 @@ rm /tmp/valid_scopes.txt
|
||||
```
|
||||
</details>
|
||||
|
||||
Y este es el resultado que obtuve en el momento de la escritura:
|
||||
Y esta es la salida que obtuve en el momento de la escritura:
|
||||
```
|
||||
https://www.googleapis.com/auth/admin.directory.group
|
||||
https://www.googleapis.com/auth/admin.directory.orgunit
|
||||
@@ -321,6 +321,6 @@ curl -X POST \
|
||||
# You could also change the password of a user for example
|
||||
```
|
||||
> [!CAUTION]
|
||||
> No es posible otorgar al nuevo usuario el rol de Super Admin porque el **token de actualización no tiene suficientes alcances** para otorgar los privilegios requeridos.
|
||||
> No es posible otorgar al nuevo usuario el rol de Super Amin porque el **token de actualización no tiene suficientes alcances** para otorgar los privilegios requeridos.
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -28,12 +28,12 @@ scope=https://www.google.com/accounts/OAuthLogin
|
||||
&device_type=chrome
|
||||
```
|
||||
> [!NOTE]
|
||||
> Fue posible realizar un MitM instalando `Proxifier` en el PC, sobrescribiendo el binario `utilman.exe` con un `cmd.exe` y ejecutando las **funciones de accesibilidad** en la página de inicio de sesión de Windows, lo que ejecutará un **CMD** desde el cual puedes **lanzar y configurar el Proxifier**.\
|
||||
> Fue posible realizar un MitM instalando `Proxifier` en el PC, sobrescribiendo el binario `utilman.exe` con un `cmd.exe` y ejecutando las **funciones de accesibilidad** en la página de inicio de sesión de Windows, lo que ejecutará un **CMD** desde el cual puedes **iniciar y configurar el Proxifier**.\
|
||||
> No olvides **bloquear el tráfico QUICK UDP** en `Proxifier` para que se degrade a comunicación TCP y puedas verlo.
|
||||
>
|
||||
> También configura en "Servicios y otros usuarios" ambas opciones e instala el certificado CA de Burp en Windows.
|
||||
|
||||
Además, al agregar las claves `enable_verbose_logging = 1` y `log_file_path = C:\Public\gcpw.log` en **`HKLM:\SOFTWARE\Google\GCPW`** es posible hacer que almacene algunos registros.
|
||||
Además, al agregar las claves `enable_verbose_logging = 1` y `log_file_path = C:\Public\gcpw.log` en **`HKLM:\SOFTWARE\Google\GCPW`**, es posible hacer que almacene algunos registros.
|
||||
|
||||
### GCPW - Huella digital
|
||||
|
||||
@@ -102,7 +102,7 @@ Además, el archivo **`C:\ProgramData\Google\Credential Provider\Policies\<sid>\
|
||||
|
||||
## GCPW - Obtener Tokens
|
||||
|
||||
### GCPW - Tokens de Refresh del Registro
|
||||
### GCPW - Refresh Tokens del Registro
|
||||
|
||||
Dentro del registro **`HKCU:\SOFTWARE\Google\Accounts`** podría ser posible encontrar algunas cuentas con el **`refresh_token`** encriptado dentro. El método **`ProtectedData.Unprotect`** puede desencriptarlo fácilmente.
|
||||
|
||||
@@ -160,8 +160,6 @@ Get-RegistryKeysAndDecryptTokens -keyPath $_.PSPath
|
||||
Get-RegistryKeysAndDecryptTokens -keyPath $baseKey
|
||||
```
|
||||
</details>
|
||||
|
||||
Ejemplo de salida:
|
||||
```
|
||||
Path: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\SOFTWARE\Google\Accounts\100402336966965820570Decrypted refresh_token: 1//03gQU44mwVnU4CDHYE736TGMSNwF-L9IrTuikNFVZQ3sBxshrJaki7QvpHZQMeANHrF0eIPebz0dz0S987354AuSdX38LySlWflI
|
||||
```
|
||||
@@ -169,12 +167,12 @@ Como se explica en [**este video**](https://www.youtube.com/watch?v=FEQxHRRP_5I)
|
||||
|
||||
### GCPW - Tokens de actualización de disco
|
||||
|
||||
El archivo **`%LocalAppData%\Google\Chrome\User Data\Local State`** almacena la clave para descifrar los **`refresh_tokens`** ubicados dentro de los **perfiles de Google Chrome** del usuario, como:
|
||||
El archivo **`%LocalAppData%\Google\Chrome\User Data\Local State`** almacena la clave para descifrar los **`refresh_tokens`** ubicados dentro de los **perfiles de Google Chrome** del usuario como:
|
||||
|
||||
- `%LocalAppData%\Google\Chrome\User Data\Default\Web Data`
|
||||
- `%LocalAppData%\Google\Chrome\Profile*\Default\Web Data`
|
||||
|
||||
Es posible encontrar algún **código en C#** que accede a estos tokens de manera descifrada en [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe).
|
||||
Es posible encontrar algún **código en C#** accediendo a estos tokens de manera descifrada en [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe).
|
||||
|
||||
Además, la encriptación se puede encontrar en este código: [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)
|
||||
|
||||
@@ -309,7 +307,7 @@ curl -s --data "client_id=77185425430.apps.googleusercontent.com" \
|
||||
--data "refresh_token=1//03gQU44mwVnU4CDHYE736TGMSNwF-L9IrTuikNFVZQ3sBxshrJaki7QvpHZQMeANHrF0eIPebz0dz0S987354AuSdX38LySlWflI" \
|
||||
https://www.googleapis.com/oauth2/v4/token
|
||||
```
|
||||
### GCPW - Scopes
|
||||
### GCPW - Alcances
|
||||
|
||||
> [!NOTE]
|
||||
> Tenga en cuenta que incluso teniendo un token de actualización, no es posible solicitar ningún alcance para el token de acceso, ya que solo puede solicitar los **alcances admitidos por la aplicación donde está generando el token de acceso**.
|
||||
@@ -320,7 +318,7 @@ Por defecto, GCPW no tendrá acceso como el usuario a todos los posibles alcance
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Script de Bash para fuerza bruta de alcances</summary>
|
||||
<summary>Script Bash para fuerza bruta de alcances</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"
|
||||
@@ -463,7 +461,7 @@ https://www.googleapis.com/auth/wallet.chrome
|
||||
```
|
||||
</details>
|
||||
|
||||
Ten en cuenta que el más interesante posiblemente sea:
|
||||
Tenga en cuenta que el más interesante es posiblemente:
|
||||
```c
|
||||
// OAuth2 scope for access to all Google APIs.
|
||||
const char kAnyApiOAuth2Scope[] = "https://www.googleapis.com/auth/any-api";
|
||||
@@ -762,7 +760,7 @@ curl -X POST \
|
||||
|
||||
**Google Workspace Vault** es un complemento para Google Workspace que proporciona herramientas para la retención de datos, búsqueda y exportación de los datos de su organización almacenados en los servicios de Google Workspace como Gmail, Drive, Chat y más.
|
||||
|
||||
- Un **Asunto** en Google Workspace Vault es un **contenedor** que organiza y agrupa toda la información relacionada con un caso específico, investigación o asunto legal. Sirve como el centro principal para gestionar **Retenciones**, **Búsquedas** y **Exportaciones** relacionadas con ese tema en particular.
|
||||
- Un **Asunto** en Google Workspace Vault es un **contenedor** que organiza y agrupa toda la información relacionada con un caso específico, investigación o asunto legal. Sirve como el centro principal para gestionar **Retenciones**, **Búsquedas** y **Exportaciones** relacionadas con ese problema en particular.
|
||||
- Una **Retención** en Google Workspace Vault es una **acción de preservación** aplicada a usuarios o grupos específicos para **prevenir la eliminación o alteración** de sus datos dentro de los servicios de Google Workspace. Las retenciones aseguran que la información relevante permanezca intacta y sin modificar durante la duración de un caso legal o investigación.
|
||||
```bash
|
||||
# List matters
|
||||
@@ -805,11 +803,11 @@ Luego busca el secreto como `Chrome-GCPW-<sid>` como en la imagen:
|
||||
|
||||
<figure><img src="../../../images/telegram-cloud-photo-size-4-6044191430395675441-x.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Luego, con un **token de acceso** con el alcance `https://www.google.com/accounts/OAuthLogin`, es posible solicitar la clave privada para descifrar la contraseña:
|
||||
Luego, con un **access token** con el alcance `https://www.google.com/accounts/OAuthLogin`, es posible solicitar la clave privada para descifrar la contraseña:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Script para obtener la contraseña en texto claro dado el token de acceso, la contraseña encriptada y el id de recurso</summary>
|
||||
<summary>Script para obtener la contraseña en texto claro dado el access token, la contraseña encriptada y el id de recurso</summary>
|
||||
```python
|
||||
import requests
|
||||
from base64 import b64decode
|
||||
@@ -887,8 +885,8 @@ decrypt_password(access_token, lsa_secret)
|
||||
|
||||
Es posible encontrar los componentes clave de esto en el código fuente de Chromium:
|
||||
|
||||
- Dominio de API: [https://github.com/search?q=repo%3Achromium%2Fchromium%20%22devicepasswordescrowforwindows-pa%22\&type=code](https://github.com/search?q=repo%3Achromium%2Fchromium%20%22devicepasswordescrowforwindows-pa%22&type=code)
|
||||
- Endpoint de API: [https://github.com/chromium/chromium/blob/21ab65accce03fd01050a096f536ca14c6040454/chrome/credential_provider/gaiacp/password_recovery_manager.cc#L70](https://github.com/chromium/chromium/blob/21ab65accce03fd01050a096f536ca14c6040454/chrome/credential_provider/gaiacp/password_recovery_manager.cc#L70)
|
||||
- Dominio de la API: [https://github.com/search?q=repo%3Achromium%2Fchromium%20%22devicepasswordescrowforwindows-pa%22\&type=code](https://github.com/search?q=repo%3Achromium%2Fchromium%20%22devicepasswordescrowforwindows-pa%22&type=code)
|
||||
- Endpoint de la API: [https://github.com/chromium/chromium/blob/21ab65accce03fd01050a096f536ca14c6040454/chrome/credential_provider/gaiacp/password_recovery_manager.cc#L70](https://github.com/chromium/chromium/blob/21ab65accce03fd01050a096f536ca14c6040454/chrome/credential_provider/gaiacp/password_recovery_manager.cc#L70)
|
||||
|
||||
## Referencias
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ Para configurar este binario (y servicio), es necesario **darle acceso a un prin
|
||||
|
||||
- Iniciar sesión a través de **OAuth** con Google y luego **almacenará un token en el registro (encriptado)**
|
||||
- Solo disponible en Controladores de Dominio con GUI
|
||||
- Proporcionando algunas **credenciales de Cuenta de Servicio de GCP** (archivo json) con permisos para **gestionar los usuarios de Workspace**
|
||||
- Proporcionar algunas **credenciales de Cuenta de Servicio de GCP** (archivo json) con permisos para **gestionar los usuarios de Workspace**
|
||||
- Muy mala idea, ya que esas credenciales nunca expiran y podrían ser mal utilizadas
|
||||
- Muy mala idea dar acceso a una SA sobre workspace, ya que la SA podría ser comprometida en GCP y sería posible pivotar a Workspace
|
||||
- Google lo requiere para dominios controlados sin GUI
|
||||
@@ -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 - Alcances
|
||||
|
||||
> [!NOTE]
|
||||
> Tenga en cuenta que incluso teniendo un refresh token, no es posible solicitar ningún scope para el access token, ya que solo puede solicitar los **scopes admitidos por la aplicación donde está generando el access token**.
|
||||
> Tenga en cuenta que incluso teniendo un token de actualización, no es posible solicitar ningún alcance para el token de acceso, ya que solo puede solicitar los **alcances admitidos por la aplicación donde está generando el token de acceso**.
|
||||
>
|
||||
> Además, el refresh token no es válido en todas las aplicaciones.
|
||||
> Además, el token de actualización no es válido en todas las aplicaciones.
|
||||
|
||||
Por defecto, GPS no tendrá acceso como el usuario a todos los posibles scopes de OAuth, por lo que utilizando el siguiente script podemos encontrar los scopes que se pueden usar con el `refresh_token` para generar un `access_token`:
|
||||
Por defecto, GPS no tendrá acceso como el usuario a todos los posibles alcances de OAuth, por lo que utilizando el siguiente script podemos encontrar los alcances que se pueden usar con el `refresh_token` para generar un `access_token`:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Bash script to brute-force scopes</summary>
|
||||
<summary>Script Bash para fuerza bruta de alcances</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"
|
||||
@@ -172,11 +172,11 @@ rm /tmp/valid_scopes.txt
|
||||
```
|
||||
</details>
|
||||
|
||||
Y esta es la salida que obtuve en el momento de la escritura:
|
||||
Y esta es la salida que obtuve en el momento de la redacción:
|
||||
```
|
||||
https://www.googleapis.com/auth/admin.directory.user
|
||||
```
|
||||
¿Cuál es el mismo que obtienes si no indicas ningún alcance?
|
||||
El mismo que obtienes si no indicas ningún alcance.
|
||||
|
||||
> [!CAUTION]
|
||||
> Con este alcance podrías **modificar la contraseña de un usuario existente para escalar privilegios**.
|
||||
|
||||
@@ -6,28 +6,28 @@
|
||||
|
||||
La principal diferencia entre esta forma de sincronizar usuarios con GCDS es que GCDS se realiza manualmente con algunos binarios que necesitas descargar y ejecutar, mientras que **la Sincronización del Directorio de Administradores es sin servidor** gestionada por Google en [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
|
||||
|
||||
En el momento de escribir esto, este servicio está en beta y admite 2 tipos de sincronización: Desde **Active Directory** y desde **Azure Entra ID:**
|
||||
En el momento de escribir esto, este servicio está en beta y soporta 2 tipos de sincronización: Desde **Active Directory** y desde **Azure Entra ID:**
|
||||
|
||||
- **Active Directory:** Para configurar esto, necesitas dar **acceso a Google a tu entorno de Active Directory**. Y como Google solo tiene acceso a redes de GCP (a través de **conectores VPC**), necesitas crear un conector y luego hacer que tu AD esté disponible desde ese conector al tenerlo en VMs en la red de GCP o usando Cloud VPN o Cloud Interconnect. Luego, también necesitas proporcionar **credenciales** de una cuenta con acceso de lectura sobre el directorio y un **certificado** para contactar a través de **LDAPS**.
|
||||
- **Azure Entra ID:** Para configurar esto, solo es necesario **iniciar sesión en Azure con un usuario con acceso de lectura** sobre la suscripción de Entra ID en un pop-up mostrado por Google, y Google mantendrá el token con acceso de lectura sobre Entra ID.
|
||||
- **Active Directory:** Para configurar esto necesitas dar **acceso a Google a tu entorno de Active Directory**. Y como Google solo tiene acceso a redes de GCP (a través de **conectores VPC**), necesitas crear un conector y luego hacer que tu AD esté disponible desde ese conector teniendo VMs en la red de GCP o usando Cloud VPN o Cloud Interconnect. Luego, también necesitas proporcionar **credenciales** de una cuenta con acceso de lectura sobre el directorio y un **certificado** para contactar a través de **LDAPS**.
|
||||
- **Azure Entra ID:** Para configurar esto solo es necesario **iniciar sesión en Azure con un usuario con acceso de lectura** sobre la suscripción de Entra ID en un pop-up mostrado por Google, y Google mantendrá el token con acceso de lectura sobre Entra ID.
|
||||
|
||||
Una vez configurado correctamente, ambas opciones permitirán **sincronizar usuarios y grupos a Workspace**, pero no permitirán configurar usuarios y grupos desde Workspace a AD o EntraID.
|
||||
Una vez configuradas correctamente, ambas opciones permitirán **sincronizar usuarios y grupos a Workspace**, pero no permitirán configurar usuarios y grupos desde Workspace a AD o EntraID.
|
||||
|
||||
Otras opciones que permitirá durante esta sincronización son:
|
||||
|
||||
- Enviar un correo electrónico a los nuevos usuarios para iniciar sesión
|
||||
- Enviar un correo electrónico a los nuevos usuarios para que inicien sesión
|
||||
- Cambiar automáticamente su dirección de correo electrónico a la utilizada por Workspace. Así que si Workspace está usando `@hacktricks.xyz` y los usuarios de EntraID usan `@carloshacktricks.onmicrosoft.com`, se utilizará `@hacktricks.xyz` para los usuarios creados en la cuenta.
|
||||
- Seleccionar los **grupos que contienen los usuarios** que serán sincronizados.
|
||||
- Seleccionar **grupos** para sincronizar y crear en Workspace (o indicar que se sincronicen todos los grupos).
|
||||
|
||||
### De AD/EntraID -> Google Workspace (& GCP)
|
||||
|
||||
Si logras comprometer un AD o EntraID, tendrás control total sobre los usuarios y grupos que se van a sincronizar con Google Workspace.\
|
||||
Si logras comprometer un AD o EntraID tendrás control total sobre los usuarios y grupos que se van a sincronizar con Google Workspace.\
|
||||
Sin embargo, ten en cuenta que las **contraseñas** que los usuarios podrían estar usando en Workspace **podrían ser las mismas o no**.
|
||||
|
||||
#### Atacando usuarios
|
||||
|
||||
Cuando ocurre la sincronización, podría sincronizar **todos los usuarios de AD o solo los de una OU específica** o solo los **usuarios miembros de grupos específicos en EntraID**. Esto significa que para atacar a un usuario sincronizado (o crear uno nuevo que se sincronice), primero necesitarás averiguar qué usuarios están siendo sincronizados.
|
||||
Cuando ocurre la sincronización, podría sincronizar **todos los usuarios de AD o solo los de una OU específica** o solo los **usuarios miembros de grupos específicos en EntraID**. Esto significa que para atacar a un usuario sincronizado (o crear uno nuevo que se sincronice) primero necesitarás averiguar qué usuarios están siendo sincronizados.
|
||||
|
||||
- Los usuarios podrían estar **reutilizando la contraseña o no de AD o EntraID**, pero esto significa que necesitarás **comprometer las contraseñas de los usuarios para iniciar sesión**.
|
||||
- Si tienes acceso a los **correos** de los usuarios, podrías **cambiar la contraseña de Workspace de un usuario existente**, o **crear un nuevo usuario**, esperar hasta que se sincronice y configurar la cuenta.
|
||||
@@ -45,13 +45,13 @@ Si sabes qué grupos de Azure están siendo **asignados permisos en Workspace o
|
||||
|
||||
Hay otra opción para abusar de grupos privilegiados existentes en Workspace. Por ejemplo, el grupo `gcp-organization-admins@<workspace.email>` generalmente tiene altos privilegios sobre GCP.
|
||||
|
||||
Si la sincronización de, por ejemplo, EntraID, a Workspace está **configurada para reemplazar el dominio** del objeto importado **con el correo electrónico de Workspace**, será posible para un atacante crear el grupo `gcp-organization-admins@<entraid.email>` en EntraID, agregar un usuario en este grupo y esperar hasta que ocurra la sincronización de todos los grupos.\
|
||||
Si la sincronización de, por ejemplo, EntraID a Workspace está **configurada para reemplazar el dominio** del objeto importado **con el correo de Workspace**, será posible para un atacante crear el grupo `gcp-organization-admins@<entraid.email>` en EntraID, agregar un usuario en este grupo y esperar hasta que ocurra la sincronización de todos los grupos.\
|
||||
**El usuario será agregado en el grupo `gcp-organization-admins@<workspace.email>` escalando privilegios en GCP.**
|
||||
|
||||
### De Google Workspace -> AD/EntraID
|
||||
|
||||
Ten en cuenta que Workspace requiere credenciales con acceso de solo lectura sobre AD o EntraID para sincronizar usuarios y grupos. Por lo tanto, no es posible abusar de Google Workspace para realizar ningún cambio en AD o EntraID. Así que **esto no es posible** en este momento.
|
||||
|
||||
Tampoco sé dónde almacena Google las credenciales de AD o el token de EntraID y no **puedes recuperarlos reconfigurando la sincronización** (no aparecen en el formulario web, necesitas darlos nuevamente). Sin embargo, desde la web podría ser posible abusar de la funcionalidad actual para **listar usuarios y grupos**.
|
||||
Tampoco sé dónde almacena Google las credenciales de AD o el token de EntraID y **no puedes recuperarlos reconfigurando la sincronización** (no aparecen en el formulario web, necesitas darlos nuevamente). Sin embargo, desde la web podría ser posible abusar de la funcionalidad actual para **listar usuarios y grupos**.
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user