GCP - Compute Instances

Tip

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

Apoya a HackTricks

Información Básica

Google Cloud Compute Instances son máquinas virtuales personalizables en la infraestructura de nube de Google, que ofrecen potencia de computación escalable y bajo demanda para una amplia gama de aplicaciones. Proporcionan características como despliegue global, almacenamiento persistente, opciones flexibles de SO e integraciones sólidas de red y seguridad, lo que las convierte en una opción versátil para alojar sitios web, procesar datos y ejecutar aplicaciones de manera eficiente en la nube.

VM Confidencial

Las VMs confidenciales utilizan características de seguridad basadas en hardware ofrecidas por la última generación de procesadores AMD EPYC, que incluyen cifrado de memoria y virtualización cifrada segura. Estas características permiten que la VM proteja los datos procesados y almacenados dentro de ella, incluso del sistema operativo host y del hipervisor.

Para ejecutar una VM confidencial puede ser necesario cambiar cosas como el tipo de la máquina, la interfaz de red, la imagen del disco de arranque.

Disco y Cifrado de Disco

Es posible seleccionar el disco a utilizar o crear uno nuevo. Si seleccionas uno nuevo puedes:

  • Seleccionar el tamaño del disco
  • Seleccionar el SO
  • Indicar si deseas eliminar el disco cuando se elimine la instancia
  • Cifrado: Por defecto se utilizará una clave gestionada por Google, pero también puedes seleccionar una clave de KMS o indicar clave en bruto a utilizar.

Desplegar Contenedor

Es posible desplegar un contenedor dentro de la máquina virtual.
Es posible configurar la imagen a utilizar, establecer el comando a ejecutar dentro, argumentos, montar un volumen y variables de entorno (¿información sensible?) y configurar varias opciones para este contenedor como ejecutar como privilegiado, stdin y pseudo TTY.

Cuenta de Servicio

Por defecto, se utilizará la cuenta de servicio predeterminada de Compute Engine. El correo electrónico de esta cuenta de servicio es como: <proj-num>-compute@developer.gserviceaccount.com
Esta cuenta de servicio tiene rol de Editor sobre todo el proyecto (altos privilegios).

Y los alcances de acceso predeterminados son los siguientes:

Sin embargo, es posible otorgarle cloud-platform con un clic o especificar personalizados.

Firewall

Es posible permitir tráfico HTTP y HTTPS.

Redes

  • Reenvío de IP: Es posible habilitar el reenvío de IP desde la creación de la instancia.
  • Nombre de host: Es posible darle a la instancia un nombre de host permanente.
  • Interfaz: Es posible agregar una interfaz de red.

Seguridad Extra

Estas opciones aumentarán la seguridad de la VM y se recomiendan:

  • Arranque seguro: El arranque seguro ayuda a proteger tus instancias de VM contra malware y rootkits a nivel de arranque y de kernel.
  • Habilitar vTPM: El Módulo de Plataforma de Confianza Virtual (vTPM) valida la integridad de arranque y pre-arranque de tu VM invitada, y ofrece generación y protección de claves.
  • Supervisión de integridad: La supervisión de integridad te permite monitorear y verificar la integridad de arranque en tiempo de ejecución de tus instancias de VM protegidas utilizando informes de Stackdriver. Requiere que vTPM esté habilitado.

Acceso a la VM

La forma común de habilitar el acceso a la VM es permitiendo ciertas claves públicas SSH para acceder a la VM.
Sin embargo, también es posible habilitar el acceso a la VM a través del servicio os-config utilizando IAM. Además, es posible habilitar 2FA para acceder a la VM utilizando este servicio.
Cuando este servicio está habilitado, el acceso a través de claves SSH está deshabilitado.

Metadatos

Es posible definir automatización (userdata en AWS) que son comandos de shell que se ejecutarán cada vez que la máquina se encienda o reinicie.

También es posible agregar valores clave-valor de metadatos adicionales que serán accesibles desde el punto final de metadatos. Esta información se utiliza comúnmente para variables de entorno y scripts de inicio/apagado. Esto se puede obtener utilizando el método describe de un comando en la sección de enumeración, pero también podría recuperarse desde dentro de la instancia accediendo al punto final de metadatos.

# view project metadata
curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"

# view instance metadata
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"

Además, el token de autenticación para la cuenta de servicio adjunta y información general sobre la instancia, la red y el proyecto también estarán disponibles desde el punto final de metadatos. Para más información, consulta:

Cloud SSRF - HackTricks

Cifrado

Se utiliza por defecto una clave de cifrado gestionada por Google, pero se puede configurar una clave de cifrado gestionada por el cliente (CMEK). También puedes configurar qué hacer cuando se revoca la CMEK utilizada: Notificar o apagar la VM.

Tip

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

Apoya a HackTricks