GWS - Google Platforms Phishing

Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Metodología Genérica de Phishing

Phishing en Grupos de Google

Aparentemente, de forma predeterminada, en los miembros de workspace pueden crear grupos e invitar a personas a ellos. Luego puedes modificar el correo electrónico que se enviará al usuario agregando algunos enlaces. El correo electrónico vendrá de una dirección de Google, por lo que parecerá legítimo y es posible que las personas hagan clic en el enlace.

También es posible establecer la dirección FROM como el correo electrónico del grupo de Google para enviar más correos electrónicos a los usuarios dentro del grupo, como en la siguiente imagen donde se creó el grupo google--support@googlegroups.com y se envió un correo electrónico a todos los miembros del grupo (que fueron agregados sin consentimiento alguno)

Phishing en Google Chat

Es posible iniciar un chat con una persona solo teniendo su dirección de correo electrónico o enviar una invitación para hablar. Además, es posible crear un Espacio que puede tener cualquier nombre (por ejemplo, "Soporte de Google") e invitar miembros a él. Si aceptan, podrían pensar que están hablando con el Soporte de Google:

Sin embargo, en mis pruebas, los miembros invitados ni siquiera recibieron una invitación.

Puedes ver cómo funcionaba esto en el pasado en: https://www.youtube.com/watch?v=KTVHLolz6cE&t=904s

Phishing en Google Docs

En el pasado era posible crear un documento aparentemente legítimo y luego en un comentario mencionar algún correo electrónico (como @usuario@gmail.com). Google enviaba un correo electrónico a esa dirección de correo notificando que fueron mencionados en el documento. Hoy en día, esto ya no funciona, pero si das acceso al documento al correo de la víctima, Google enviará un correo electrónico indicándolo. Este es el mensaje que aparece cuando mencionas a alguien:

Las víctimas podrían tener un mecanismo de protección que no permita que los correos electrónicos que indican que se compartió un documento externo con ellos lleguen a su correo electrónico.

Phishing en Google Calendar

Puedes crear un evento de calendario y agregar tantas direcciones de correo electrónico de la empresa que estás atacando como desees. Programa este evento de calendario en 5 o 15 minutos desde el momento actual. Haz que el evento parezca legítimo y agrega un comentario y un título indicando que necesitan leer algo (con el enlace de phishing).

Este es el aviso que aparecerá en el navegador con un título de reunión "Despidiendo Personas", por lo que podrías establecer un título más parecido al phishing (e incluso cambiar el nombre asociado con tu correo electrónico).

Para que parezca menos sospechoso:

  • Configúralo para que los destinatarios no puedan ver a las otras personas invitadas

  • NO envíes correos electrónicos 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, utilizando la API, puedes establecer como Verdadero que las personas han aceptado el evento e incluso crear comentarios en su nombre.

Phishing de Redirección en Scripts de Aplicaciones

Es posible crear un script en https://script.google.com/ y exponerlo como una aplicación web accesible por todos que utilizará el dominio legítimo script.google.com. Luego, con un 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:

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

Por ejemplo, al acceder a https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec verás:

Ten en cuenta que aparecerá una advertencia ya que el contenido se carga dentro de un iframe.

Phishing de OAuth de App Scripts

Es posible crear App Scripts adjuntos a documentos para intentar obtener acceso al token OAuth de las víctimas, para obtener más información consulta:

pageGWS - App Scripts

Phishing de Aplicaciones OAuth

Cualquiera de las técnicas anteriores podría ser utilizada para hacer que el usuario acceda a una aplicación OAuth de Google que solicitará al usuario cierto acceso. Si el usuario confía en la fuente, podría confiar en la aplicación (incluso si está solicitando permisos de alto nivel).

Ten en cuenta que Google presenta una molesta advertencia indicando que la aplicación no es de confianza en varios casos y los administradores de Workspace incluso pueden evitar que las personas acepten aplicaciones OAuth.

Google permite crear aplicaciones que pueden interactuar en nombre de los usuarios con varios servicios de Google: Gmail, Drive, GCP...

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 alcances (permisos) que la aplicación necesita para acceder a los datos de los usuarios. Cuando un usuario desea utilizar esa aplicación, se le pedirá que acepte que la aplicación tendrá acceso a sus datos especificados en los alcances.

Esta es una forma muy atractiva de phishing para usuarios no técnicos que utilizan aplicaciones que acceden a información sensible porque podrían no entender las consecuencias. Sin embargo, en cuentas de organizaciones, hay formas de evitar que esto suceda.

Advertencia de Aplicación no Verificada

Como se mencionó, Google siempre presentará una advertencia al usuario para aceptar los permisos que están otorgando a la aplicación en su nombre. Sin embargo, si la aplicación se considera peligrosa, Google mostrará primero una advertencia indicando que es peligrosa y haciendo más difícil que el usuario otorgue los permisos a la aplicación.

Esta advertencia aparece en aplicaciones que:

  • Utilizan cualquier alcance que pueda acceder a datos privados (Gmail, Drive, GCP, BigQuery...)

  • Aplicaciones con menos de 100 usuarios (para aplicaciones > 100 también se necesita un proceso de revisión para dejar de mostrar la advertencia de no verificación)

Alcances Interesantes

Aquí puedes encontrar una lista de todos los alcances de OAuth de Google.

  • cloud-platform: Ver y administrar tus datos en los servicios de Google Cloud Platform. Puedes suplantar al usuario en GCP.

  • admin.directory.user.readonly: Ver y descargar el directorio de GSuite de tu organización. Obtener nombres, teléfonos, URL de calendario de todos los usuarios.

Crear una Aplicación OAuth

Comienza creando un ID de cliente OAuth

  1. Ve a https://console.cloud.google.com/apis/credentials/oauthclient y haz clic en configurar la pantalla de consentimiento.

  2. Luego, se te preguntará si el tipo de usuario es interno (solo para personas de tu organización) o externo. Selecciona el que se ajuste a tus necesidades

  • Interno puede ser interesante si ya has comprometido a un usuario de la organización y estás creando esta aplicación para hacer phishing a otro.

  1. Da un nombre a la aplicación, un correo de soporte (nota que puedes configurar un correo de googlegroup para intentar anonimizarte un poco más), un logotipo, dominios autorizados y otro correo para actualizaciones.

  2. Selecciona los alcances OAuth.

  • Esta página está dividida en permisos no sensibles, permisos sensibles y permisos restringidos. Cada vez que agregas un nuevo permiso se agrega en su categoría. Dependiendo de los permisos solicitados, aparecerán diferentes advertencias al usuario indicando qué tan sensibles son estos permisos.

  • Tanto admin.directory.user.readonly como cloud-platform son permisos sensibles.

  1. 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 al que vas a hacer phishing.

Ahora obtengamos credenciales para una aplicación web utilizando el ID de cliente OAuth creado anteriormente:

  1. Regresa a https://console.cloud.google.com/apis/credentials/oauthclient, esta vez aparecerá una opción diferente.

  2. Selecciona crear credenciales para una aplicación web

  3. Configura los orígenes de Javascript y las URI de redireccionamiento necesarios

  • Puedes configurar en ambos algo como http://localhost:8000/callback para pruebas

  1. Obtén las credenciales de tu aplicación

Finalmente, ejecutemos una aplicación web que utilizará las credenciales de la aplicación OAuth. Puedes encontrar un ejemplo en https://github.com/carlospolop/gcp_oauth_phishing_example.

git clone ttps://github.com/carlospolop/gcp_oauth_phishing_example
cd gcp_oauth_phishing_example
pip install flask requests google-auth-oauthlib
python3 app.py --client-id "<client_id>" --client-secret "<client_secret>"

Ve a http://localhost:8000, haz clic en el botón de Iniciar sesión con Google, se te solicitará un mensaje como este:

La aplicación mostrará el token de acceso y de actualización que se pueden utilizar fácilmente. Para obtener más información sobre cómo utilizar estos tokens, consulta:

pageGCP - Non-svc Persistance

Usando gcloud

Es posible hacer algo utilizando gcloud en lugar de la consola web, consulta:

pageGCP - ClientAuthConfig Privesc

Referencias

Aprende a hackear AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización