GCP - Compute Instances
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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, y fuertes integraciones 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.
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.
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.
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.
Por defecto, se utilizará la cuenta de servicio predeterminada de Compute Engine. El correo electrónico de esta SA 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:
https://www.googleapis.com/auth/devstorage.read_only -- Acceso de lectura a los buckets :)
https://www.googleapis.com/auth/logging.write
https://www.googleapis.com/auth/monitoring.write
https://www.googleapis.com/auth/servicecontrol
https://www.googleapis.com/auth/service.management.readonly
https://www.googleapis.com/auth/trace.append
Sin embargo, es posible otorgarle cloud-platform
con un clic o especificar personalizados.
Es posible permitir tráfico HTTP y HTTPS.
IP Forwarding: Es posible habilitar el reenvío de IP desde la creación de la instancia.
Hostname: Es posible darle a la instancia un nombre de host permanente.
Interface: Es posible agregar una interfaz de red.
Estas opciones aumentarán la seguridad de la VM y se recomiendan:
Secure boot: Secure boot ayuda a proteger tus instancias de VM contra malware y rootkits a nivel de arranque y de kernel.
Enable 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.
Integrity supervision: 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.
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.
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.
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:
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.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)