GCP - Cloud Shell Persistence
Cloud Shell
Para más información, consulta:
GCP - Cloud Shell EnumPuerta 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:
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).
Dicha instancia mantendrá su directorio de inicio durante al menos 120 días si no hay actividad.
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:
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:
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 comprometer potencialmente 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:
Cómo se establece la conexión SSH
Básicamente, se utilizan estas 3 llamadas a la API:
https://content-cloudshell.googleapis.com/v1/users/me/environments/default:addPublicKey [POST] (te hará agregar tu clave pública que creaste localmente)
https://content-cloudshell.googleapis.com/v1/users/me/environments/default:start [POST] (te hará iniciar la instancia)
https://content-cloudshell.googleapis.com/v1/users/me/environments/default [GET] (te dirá la dirección IP de la nube de Google)
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
Last updated