Skip to content

Esta herramienta no está afiliada a Google LLC ni está respaldada ni patrocinada por Google LLC. Google Cloud y Google Cloud Platform son marcas comerciales de Google LLC. Los demás nombres son marcas comerciales de sus respectivos propietarios.

cloudaudit.googleapis.com · vpc_flows

¿Se ha comprometido nuestro proyecto de Google Cloud?

Suelte sus Cloud Audit Logs y VPC Flow Logs y obtenga un veredicto, la cronología del incidente y una lista de remediación. Análisis en su navegador con WebAssembly: no se sube nada.

Suelte aquí su exportación de registros de Google Cloud

Cloud Audit Logs (Admin Activity, Data Access, System Event, Policy Denied) y VPC Flow Logs: descargas JSON del Explorador de registros, archivos de un sink copiados desde Cloud Storage (carpetas completas o ZIP), salida de gcloud logging read, exportaciones JSON de BigQuery. Archivos .json, .jsonl y .gz.

El ejemplo es un incidente ficticio (empresa, personas, claves y direcciones IP inventadas): una clave de cuenta de servicio filtrada, roles/owner para una cuenta de Gmail, una puerta trasera con startup-script, un bucket hecho público y un sink de registros eliminado.

Análisis en su navegador con WebAssembly: no se sube nada.

Cómo obtener sus registros

De cero a un archivo soltado aquí en unos dos minutos. Empiece por la primera pestaña; las demás cubren la consola, los sinks existentes y dónde vive cada registro.

  1. Recopile los registros
  2. Suelte aquí el archivo, la carpeta o el ZIP
  3. Analizado en su navegador: no se sube nada

Recomendado

Requisitos: Rol Logs Viewer (roles/logging.viewer) en el proyecto, más Private Logs Viewer (roles/logging.privateLogViewer) para incluir los registros Data Access. Nada que instalar.

  1. En la consola de Google Cloud, seleccione el proyecto afectado y abra Cloud Shell (el botón >_ de la barra superior).

  2. Pegue esto para exportar los últimos 30 días de registros de auditoría y VPC Flow Logs en un único archivo JSON comprimido:

    gcloud logging read 'logName:"cloudaudit.googleapis.com" OR logName:"vpc_flows"' --freshness=30d --format=json | gzip > gcp-logs.json.gz

  3. Descárguelo en su ordenador (o ⋮ Más → Descargar en Cloud Shell) y suelte aquí gcp-logs.json.gz:

    cloudshell download gcp-logs.json.gz

  4. Opcional: los registros de la organización (cambios de IAM y de políticas de la organización hechos sobre la propia organización) se guardan aparte. Sustituya ORG_ID (vea gcloud organizations list), descargue también ese archivo y suelte ambos juntos:

    gcloud logging read 'logName:"cloudaudit.googleapis.com" OR logName:"vpc_flows"' --organization=ORG_ID --freshness=30d --format=json | gzip > gcp-org-logs.json.gz

Trampas habituales

  • Exporte ya: Data Access, Policy Denied y VPC Flow Logs se conservan 30 días (Admin Activity 400), y un atacante con rol Owner puede borrar registros y sinks. Aumente --freshness (hasta 400d) para ir más atrás.
  • Los registros Data Access están desactivados por defecto en la mayoría de los servicios y exportarlos requiere el rol Private Logs Viewer: sin ellos, las lecturas de datos son invisibles.
  • Descargue JSON, nunca CSV (no se lee), y tenga en cuenta el límite de 10 000 entradas por descarga de la consola. Todas las marcas de tiempo están en UTC.

§ 01

Qué hace esta herramienta

GCP Forensics responde a la primera pregunta de un incidente en la nube: ¿se ha comprometido nuestro proyecto de Google Cloud, y cómo? Lee los Cloud Audit Logs —el registro de quién hizo qué y dónde que Google Cloud guarda para cada llamada a la API— y los VPC Flow Logs, y aplica detecciones escritas a partir de cómo se desarrollan las intrusiones reales en Google Cloud.

Obtiene un veredicto (Limpio, Sospechoso o Comprometido) con sus motivos, los hallazgos con sus técnicas MITRE ATT&CK y evidencias, una cronología del incidente, un pivote sobre identidades, claves de cuenta de servicio, direcciones IP, proyectos y recursos, y una lista de remediación priorizada.

Todo se ejecuta en su navegador: un analizador en Rust compilado a WebAssembly lee los archivos en streaming dentro de un Web Worker. Sus registros, que contienen correos, IP y nombres de recursos, nunca salen de su equipo.

§ 02

Qué detecta

  • Credenciales robadas: claves de cuenta de servicio creadas o subidas, claves usadas desde IP de Internet y desde IP nuevas, suplantación (actAs, Token Creator), ráfagas de llamadas denegadas.
  • Toma de control de IAM: roles Owner / Editor / administrador de IAM concedidos, cuentas personales gmail.com y dominios desconocidos añadidos a políticas IAM, cambios en políticas de organización y roles personalizados.
  • Abuso de Compute: puertas traseras con startup-script, claves SSH inyectadas en metadatos, OS Login desactivado, instancias con GPU, ráfagas de creación de VM, VM en regiones nunca usadas, cortafuegos abiertos a 0.0.0.0/0.
  • Robo de datos: buckets y otros recursos hechos públicos (allUsers), storage.objects.get masivo, copias de BigQuery a otros proyectos, imágenes e instantáneas compartidas, grandes transferencias a Internet en los VPC Flow Logs.
  • Borrado de rastros: sinks eliminados o modificados, exclusiones, buckets de registros y registros eliminados, auditoría Data Access desactivada, notificaciones de Security Command Center eliminadas, versiones de claves KMS destruidas.
  • Correlación: la misma IP o identidad que pasa de un acceso sospechoso a acciones de toma de control se señala como cadena de ataque crítica.

§ 03

Antes del próximo incidente

¿Recopila los registros del incidente actual? Siga la guía de recopilación bajo la zona de carga.

Para que la próxima investigación tenga las pruebas que necesita:

  • ¿Aún no hay sink? Cree uno ahora (Logging → Enrutador de registros → Crear sink → Cloud Storage) para conservar los próximos eventos aunque se eliminen los registros.
  • Active los registros de auditoría Data Access (IAM y administración → Registros de auditoría) al menos para Cloud Storage, IAM y Secret Manager: sin ellos, el robo de datos es invisible.
  • Envíe los registros de auditoría de toda la organización a un bucket bloqueado en un proyecto aparte que los propietarios de proyecto no puedan modificar.
  • Active los VPC Flow Logs en las subredes sensibles.

§ 04

Limitaciones

  • Ninguna detección no es prueba de ausencia: el veredicto solo cubre los registros que suelte, y los registros Data Access están desactivados por defecto en la mayoría de los servicios.
  • Las heurísticas orientan, no prueban: una clave usada desde la IP de un proveedor de CI o un rol Owner concedido a un consultor pueden ser legítimos. Confirme cada hallazgo con su responsable.
  • Las entradas de auditoría de GKE / API de Kubernetes se derivan a Kubernetes Forensics, y las de Google Workspace a Google Workspace Forensics.
  • Se listan hasta 100 000 eventos rutinarios en la tabla (los señalados siempre se conservan); detecciones y entidades cubren todas las entradas. En exportaciones muy grandes el límite es la memoria del navegador para el resultado, no para la entrada, que se lee en streaming.
  • No se leen las exportaciones Avro / Parquet de BigQuery ni las descargas CSV del Explorador de registros: exporte en JSON.

§ 05

Qué hacer ahora

Si el veredicto es Sospechoso o Comprometido, primero contenga y luego investigue: recorra la lista de remediación de la herramienta (lo más grave primero), preserve los registros y siga las recomendaciones de Google que aparecen abajo.

La lista se genera a partir de sus hallazgos, en la pestaña Remediación de los resultados.

§ 06

Reglas de detección

Las detecciones son datos, no código: cada regla está en rules/gcp.rules.json (condiciones al estilo Sigma sobre campos de LogEntry) para poder revisarla, ajustarla y reutilizarla. Las analíticas con estado y la correlación de cadena de ataque guardan sus umbrales en el mismo archivo.

ReglaGravedadTácticaMITRE ATT&CK
Clave de cuenta de servicio creada sa_key_createdMediaPersistenciaT1098.001
Clave pública subida a una cuenta de servicio sa_key_uploadedAltaPersistenciaT1098.001
Clave de cuenta de servicio usada desde una IP pública sa_key_used_externalMediaAcceso inicialT1078.004
Cuenta de servicio creada sa_createdBajaPersistenciaT1136.003
Suplantación de una cuenta de servicio sa_impersonationMediaEscalada de privilegiosT1550.001
Rol de suplantación concedido token_creator_grantedAltaEscalada de privilegiosT1098.003
Rol Owner, Editor o administrador de IAM concedido owner_editor_grantedAltaEscalada de privilegiosT1098.003
Acceso concedido a una cuenta personal de Gmail consumer_account_grantedAltaPersistenciaT1098.003
Owner concedido a una cuenta personal de Gmail owner_to_consumerCríticaEscalada de privilegiosT1098.003
Recurso hecho público (allUsers) public_access_grantedCríticaExfiltraciónT1530T1537
Política de organización modificada org_policy_changedMediaEvasión de defensasT1484
Rol personalizado creado o modificado custom_role_changedBajaEscalada de privilegiosT1098.003
Clave HMAC de Cloud Storage creada hmac_key_createdMediaPersistenciaT1098.001
Script de inicio añadido o modificado startup_script_changedAltaPersistenciaT1037T1651
Clave SSH añadida a los metadatos ssh_key_addedMediaPersistenciaT1098.004
OS Login desactivado o bloqueo de claves SSH modificado oslogin_changedAltaEvasión de defensasT1098.004T1556
Instancia con GPU creada gpu_instance_createdMediaImpactoT1496
Ráfaga de creación de VM instance_burstAltaImpactoT1496
Cortafuegos abierto a Internet firewall_openedMediaEvasión de defensasT1562.007
Descargas masivas de Cloud Storage bulk_object_readsAltaExfiltraciónT1530
Datos de BigQuery copiados a otro proyecto bq_foreign_exportAltaExfiltraciónT1537
Imagen, instantánea o disco compartido image_sharedMediaExfiltraciónT1537
Sink de registros eliminado sink_deletedAltaEvasión de defensasT1562.008
Sink de registros modificado sink_modifiedMediaEvasión de defensasT1562.008
Exclusión de registros creada o modificada log_exclusion_createdMediaEvasión de defensasT1562.008
Bucket de registros eliminado o modificado log_bucket_changedMediaEvasión de defensasT1562.008
Registros eliminados log_deletedAltaEvasión de defensasT1070
Auditoría Data Access desactivada audit_logging_disabledAltaEvasión de defensasT1562.008
Alertas de Security Command Center eliminadas scc_notification_removedAltaEvasión de defensasT1562
Versión de clave KMS destruida kms_key_destroyedAltaImpactoT1485T1486
Proyecto eliminado project_deletedAltaImpactoT1485
Ráfaga de llamadas denegadas permission_denied_burstMediaDescubrimientoT1580T1526
Clave de cuenta de servicio usada desde una IP nueva sa_key_new_ipAltaAcceso inicialT1078.004
Acceso concedido a un dominio desconocido new_external_domainMediaPersistenciaT1098.003
VM creada en una región nunca usada new_zone_instanceMediaEvasión de defensasT1535
Transferencia grande a una IP de Internet flow_large_egressMediaExfiltraciónT1048
IP sospechosa comunicándose con sus VM flow_ioc_matchAltaMando y controlT1071
Cadena de ataque: acceso robado y toma de control attack_chainCríticaImpacto

§ 07

Preguntas frecuentes

¿Se suben mis registros a algún sitio?

No. Su navegador lee los archivos y un módulo WebAssembly los analiza en un Web Worker. No hay procesamiento en el servidor: puede desconectarse de la red una vez cargada la página.

¿Cómo sé si se ha filtrado una clave de cuenta de servicio?

Busque el uso de la clave desde direcciones IP fuera de Google Cloud, sobre todo direcciones nunca usadas antes, seguido de cambios de IAM o enumeración (ráfagas de llamadas denegadas). La herramienta señala las tres cosas y las enlaza en una cadena de ataque. Desactive primero la clave, luego investigue.

¿Qué registros de Google Cloud necesito?

Los registros de auditoría Admin Activity están siempre activos y son gratuitos; muestran los cambios de IAM, Compute, registro y configuración. Los registros Data Access muestran las lecturas de datos (buckets, secretos) pero deben activarse. Los VPC Flow Logs muestran el tráfico de red de las VM. Exporte los tres del periodo sospechoso.

¿Puede leer un bucket de sink completo?

Sí. Copie el bucket con gsutil o gcloud storage y suelte la carpeta (o un ZIP). Los archivos se leen en streaming y el gzip se descomprime en el navegador, así que las exportaciones de varios gigabytes funcionan.

¿Y los registros de GKE y Google Workspace?

Las entradas de auditoría de la API de Kubernetes (serviceName k8s.io) se cuentan y se derivan a Kubernetes Forensics; las de Google Workspace a Google Workspace Forensics. Son herramientas hermanas construidas del mismo modo.

¿Es una herramienta oficial de Google?

No. GCP Forensics es una herramienta independiente, sin relación con Google ni respaldada o patrocinada por Google. Google Cloud es una marca de Google LLC.

Esta herramienta no está afiliada a Google LLC ni está respaldada ni patrocinada por Google LLC. Google Cloud y Google Cloud Platform son marcas comerciales de Google LLC. Los demás nombres son marcas comerciales de sus respectivos propietarios.