GWS - Google Platforms Phishing

Support HackTricks

Metodología Genérica de Phishing

Phishing en Google Groups

Aparentemente, por defecto, en workspace los miembros pueden crear grupos y invitar personas a ellos. Luego puedes modificar el correo que se enviará al usuario agregando algunos enlaces. El correo vendrá de una dirección de google, por lo que parecerá legítimo y la gente podría hacer clic en el enlace.

También es posible establecer la dirección FROM como el correo del grupo de Google para enviar más correos 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 a todos los miembros del grupo (que fueron añadidos sin ningún consentimiento)

Phishing en Google Chat

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

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

Puedes ver cómo funcionó 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 en un comentario mencionar algún correo (como @user@gmail.com). Google enviaba un correo a esa dirección de correo notificando que fueron mencionados en el documento. Hoy en día, esto no funciona, pero si le das al correo de la víctima acceso al documento, Google enviará un correo indicando eso. Este es el mensaje que aparece cuando mencionas a alguien:

Las víctimas pueden tener mecanismos de protección que no permiten que los correos indicando que un documento externo fue compartido con ellos lleguen a su correo.

Phishing en Google Calendar

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 minutos 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 relacionado con phishing (e incluso cambiar el nombre asociado con tu correo).

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 en True que las personas han aceptado el evento e incluso crear comentarios en su nombre.

Phishing de Redirección de Scripts de Aplicación

Es posible crear un script en 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:

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 a medida que se cargue el contenido dentro de un iframe.

Phishing de App Scripts OAuth

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

Phishing de Apps OAuth

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

Ten en cuenta que Google presenta un aviso poco atractivo advirtiendo que la aplicación no es de confianza en varios casos y los administradores de Workspace incluso pueden prevenir 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 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 podrían no entender las consecuencias. Sin embargo, en cuentas de organizaciones, hay formas de prevenir que esto ocurra.

Aviso de Aplicación No Verificada

Como se mencionó, Google siempre presentará un aviso 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 un aviso indicando que es peligrosa y dificultando más que el usuario otorgue los permisos a la aplicación.

Este aviso aparece en aplicaciones que:

  • Usan cualquier scope que puede acceder a datos privados (Gmail, Drive, GCP, BigQuery...)

  • Aplicaciones con menos de 100 usuarios (aplicaciones > 100 también necesitan un proceso de revisión para dejar de mostrar el aviso de no verificada)

Scopes Interesantes

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

  • cloud-platform: Ver y gestionar 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, URLs 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 en 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 phishing a otro.

  1. Da un nombre a la aplicación, un correo electrónico de soporte (ten en cuenta que puedes establecer un correo electrónico de grupo de Google para intentar anonimizarte un poco más), un logo, dominios autorizados y otro correo electrónico para actualizaciones.

  2. 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.

  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 electrónico que vas a estar phishing.

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

  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. Establece los orígenes de Javascript y URIs de redirección necesarios.

  • Puedes establecer 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 Iniciar sesión con Google, se te pedirá un mensaje como este:

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

Usando glcoud

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

Referencias

Apoya a HackTricks

Last updated