GCP - Compute Enum

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

Otras formas de apoyar a HackTricks:

GCP VPC y Networking

Aprende cómo funciona esto en:

pageGCP - VPC & Networking

Enumeración

# List networks
gcloud compute networks list
gcloud compute networks describe <network>

# List subnetworks
gcloud compute networks subnets list
gcloud compute networks subnets get-iam-policy <name> --region <region>
gcloud compute networks subnets describe <name> --region <region>

# List FW rules in networks
gcloud compute firewall-rules list --format="table(
name,
network,
direction,
priority,
sourceRanges.list():label=SRC_RANGES,
destinationRanges.list():label=DEST_RANGES,
allowed[].map().firewall_rule().list():label=ALLOW,
denied[].map().firewall_rule().list():label=DENY,
sourceTags.list():label=SRC_TAGS,
sourceServiceAccounts.list():label=SRC_SVC_ACCT,
targetTags.list():label=TARGET_TAGS,
targetServiceAccounts.list():label=TARGET_SVC_ACCT,
disabled
)"

# List Hierarchical Firewalls
gcloud compute firewall-policies list  (--folder <value>| --organization <value>)
gcloud compute firewall-policies describe <fw_policy>
gcloud compute firewall-policies list-rules <fw_policy>

# Get Firewalls of each region
gcloud compute network-firewall-policies list
## Get final FWs applied in a region
gcloud compute network-firewall-policies get-effective-firewalls --network=<vpc_name> --region <region>

Puedes encontrar fácilmente instancias de cómputo con reglas de firewall abiertas en https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_firewall_enum

Instancias de Cómputo

Esta es la forma en que puedes ejecutar máquinas virtuales dentro de GCP. Consulta esta página para obtener más información:

pageGCP - Compute Instances

Enumeración

# Get list of zones
# It's interesting to know which zones are being used
gcloud compute regions list | grep -E "NAME|[^0]/"

# List compute instances & get info
gcloud compute instances list
gcloud compute instances describe <instance name>
gcloud compute instances get-iam-policy <instance> --zone=ZONE
gcloud compute instances get-screenshot <instance name> # Instace must have "Display Device" enabled
gcloud compute instances os-inventory list-instances # Get OS info of instances (OS Config agent is running on instances)


# Enumerate disks
gcloud compute disks list
gcloud compute disks describe <disk>
gcloud compute disks get-iam-policy <disk>

Para obtener más información sobre cómo SSH o modificar los metadatos de una instancia para escalar privilegios, consulta esta página:

pageGCP - local privilege escalation ssh pivoting

Escalada de Privilegios

En la siguiente página, puedes ver cómo abusar de los permisos de cómputo para escalar privilegios:

pageGCP - Compute Privesc

Enumeración sin Autenticación

pageGCP - Compute Unauthenticated Enum

Post Explotación

pageGCP - Compute Post Exploitation

Persistencia

pageGCP - Compute Persistence

Registros de la Consola Serie

Los Registros de la Consola Serie de Compute Engine son una característica que te permite ver y diagnosticar los registros de arranque y del sistema operativo de tus instancias de máquinas virtuales.

Los Registros de la Consola Serie proporcionan una vista de bajo nivel del proceso de arranque de la instancia, incluidos mensajes del kernel, scripts de inicio y otros eventos del sistema que ocurren durante el arranque. Esto puede ser útil para depurar problemas de arranque, identificar configuraciones incorrectas o errores de software, o solucionar problemas de conectividad de red.

Estos registros pueden exponer información sensible de los registros del sistema que un usuario con privilegios bajos normalmente no vería, pero con los permisos IAM apropiados podrías leerlos.

Puedes utilizar el siguiente comando gcloud para consultar los registros del puerto serie (el permiso requerido es compute.instances.getSerialPortOutput):

gcloud compute instances get-serial-port-output <instance-name>

Administrador de configuración del sistema operativo

Puedes utilizar el servicio de administración de configuración del sistema operativo para implementar, consultar y mantener configuraciones consistentes (estado deseado y software) para tu instancia de VM (VM). En Compute Engine, debes utilizar políticas de invitado para mantener configuraciones de software consistentes en una VM.

La característica de administración de configuración del sistema operativo te permite definir políticas de configuración que especifican qué paquetes de software deben instalarse, qué servicios deben habilitarse y qué archivos o configuraciones deben estar presentes en tus VM. Puedes utilizar un enfoque declarativo para gestionar la configuración de software de tus VM, lo que te permite automatizar y escalar tu proceso de administración de configuración de forma más sencilla.

Esto también permite iniciar sesión en las instancias a través de permisos de IAM, por lo que es muy útil para escalada de privilegios y pivoteo.

Para habilitar os-config en todo un proyecto o en una instancia, solo necesitas establecer la clave de metadatos enable-oslogin en true en el nivel deseado. Además, puedes establecer el metadato enable-oslogin-2fa en true para habilitar la autenticación de dos factores.

Cuando lo habilitas al crear una instancia, las claves de metadatos se establecerán automáticamente.

Más sobre 2fa en OS-config, solo se aplica si el usuario es un usuario, si es un SA (como el SA de computación) no requerirá nada adicional.

Enumeración

gcloud compute os-config patch-deployments list
gcloud compute os-config patch-deployments describe <patch-deployment>

gcloud compute os-config patch-jobs list
gcloud compute os-config patch-jobs describe <patch-job>

Imágenes

Imágenes Personalizadas

Las imágenes personalizadas de computación pueden contener detalles sensibles u otras configuraciones vulnerables que puedes explotar.

Cuando se crea una imagen, puedes elegir 3 tipos de cifrado: Usando una clave gestionada por Google (predeterminada), una clave de KMS, o una clave sin procesar proporcionada por el cliente.

Enumeración

Puedes consultar la lista de imágenes no estándar en un proyecto con el siguiente comando:

gcloud compute machine-images list
gcloud compute machine-images describe <name>
gcloud compute machine-images get-iam-policy <name>

Luego puedes exportar los discos virtuales de cualquier imagen en varios formatos. El siguiente comando exportaría la imagen test-image en formato qcow2, lo que te permitiría descargar el archivo y construir una VM localmente para una investigación más detallada:

gcloud compute images export --image test-image \
--export-format qcow2 --destination-uri [BUCKET]

# Execute container inside a docker
docker run --rm -ti gcr.io/<project-name>/secret:v1 sh

Escalación de privilegios

Verifique la sección de escalación de privilegios de las Instancias de Cómputo.

Plantillas de Instancia Personalizadas

Una plantilla de instancia define propiedades de la instancia para ayudar a implementar configuraciones consistentes. Estas pueden contener los mismos tipos de datos sensibles que los metadatos personalizados de una instancia en ejecución. Puede utilizar los siguientes comandos para investigar:

# List the available templates
gcloud compute instance-templates list

# Get the details of a specific template
gcloud compute instance-templates describe [TEMPLATE NAME]

Puede ser interesante saber qué disco están utilizando las nuevas imágenes, pero estas plantillas generalmente no contendrán información sensible.

Instantáneas

Las instantáneas son copias de seguridad de discos. Tenga en cuenta que esto no es lo mismo que clonar un disco (otra función disponible). La instantánea utilizará el mismo cifrado que el disco del que se tomó.

Enumeración

gcloud compute snapshots list
gcloud compute snapshots describe <snapshot>
gcloud compute snapshots get-iam-policy <snapshot>

Escalada de Privilegios

Ver la sección de escalada de privilegios de las instancias de cómputo.

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