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.

Análisis de VPC Flow Logs en GCP: detectar la exfiltración

VPC Flow Logs de Google Cloud en una investigación: campos, muestreo, salida por IP externa y cruce de las IP del atacante con el tráfico de VM.

Publicado el 6 min de lectura

En resumen. VPC Flow Logs es el único registro de Google Cloud que muestra lo que una VM comprometida envió por la red. Solo existe en las subredes donde se habilitó de antemano, está muestreado y los bytes son estimaciones. Sume bytes_sent por IP de destino externa cuando quien informa es su VM, mire los principales destinos durante la ventana del incidente y, sobre todo, cruce las IP del atacante de los registros de auditoría con los interlocutores de los flujos: una IP que llamó a sus API y habló con sus VM une el plano de control con el plano de datos.

Los registros de auditoría le dicen lo que se hizo a través de las API de Google Cloud. Los datos que lee un proceso dentro de una VM (un volcado de base de datos, archivos de un disco, secretos en memoria) y que salen por HTTPS nunca aparecen ahí. Los registros de flujo cubren ese hueco, con límites que debe dejar claros en el informe.

Qué contiene un registro de flujo

Los registros de flujo se escriben en projects/PROJECT/logs/compute.googleapis.com%2Fvpc_flows con un jsonPayload. La referencia de registros de Google enumera los campos; estos son los que sostienen la investigación:

CampoUso
connection.src_ip, src_port, dest_ip, dest_port, protocolLa 5-tupla
start_time, end_timeLa ventana de agregación del registro
bytes_sent, packets_sentVolumen estimado del origen al destino
reporterSRC o DEST: la VM de qué lado informó del flujo
src_instance, dest_instanceNombre de la VM, zona y proyecto cuando el extremo es una VM
src_location, dest_locationPara las IP públicas: ASN, país, región, ciudad

Tres propiedades de la descripción general de VPC Flow Logs de Google condicionan todo lo demás:

  • Muestreo: la frecuencia de muestreo principal es dinámica y no configurable; la secundaria es del 50 % por defecto en las configuraciones hechas mediante la API de Compute Engine. Los bytes y paquetes se estiman a partir de los paquetes muestreados.
  • Agregación: cada registro cubre un intervalo (5 segundos por defecto, configurable hasta 15 minutos).
  • Sin contenido: solo metadatos.

Y una más, de la práctica: los registros de flujo solo existen donde alguien los habilitó (por subred, red u organización) antes del incidente. La retención por defecto en Cloud Logging es de 30 días.

La dirección importa: lea el campo reporter

Un flujo entre dos de sus VM puede registrarse dos veces, una por cada lado. Un flujo entre su VM e Internet solo lo registra su VM. Para medir la salida:

  • quédese con los registros donde reporter = SRC y src_instance está informado (su VM es la emisora), y
  • dest_ip es una dirección pública (no RFC 1918, ni los rangos de Private Google Access que utilice).

Después sume bytes_sent por dest_ip. La parte alta de esa lista, limitada a la ventana del incidente, es su lista de candidatos a exfiltración. dest_location.asn y country ayudan a distinguir una CDN de un VPS.

Correlacionar con los registros de auditoría

El uso más potente de los registros de flujo es la correlación. Los registros de auditoría le dan las IP del atacante (requestMetadata.callerIp) desde el lado de la API. Si la misma IP aparece en los registros de flujo:

  • Entrante al puerto 22 después de un setMetadata que añade ssh-keys y un reset de la VM: el atacante inició sesión con la clave que inyectó. Vea abuso de Compute Engine.
  • Saliente por el 443 desde la VM, muchos registros, volumen creciente: una puerta trasera de un script de inicio que llama a casa, o datos que salen. MITRE T1071 para comando y control, T1048 para exfiltración por otro protocolo.

Ese vínculo, IP del lado de la API igual a interlocutor del lado de la red, convierte dos historias parciales en una sola cronología.

Consultar los registros de flujo

Logs Explorer sirve para un primer vistazo:

logName:"compute.googleapis.com%2Fvpc_flows"
jsonPayload.connection.dest_ip="203.0.113.66"

Para el volumen por destino a lo largo de un mes, enrute los registros de flujo a BigQuery y agréguelos allí, o expórtelos en JSON (vea Tipos de Cloud Audit Logs explicados; las vías de exportación son idénticas) y cárguelos en el analizador junto con los registros de auditoría.

Qué hace el analizador con los registros de flujo

El analizador agrega los registros de flujo en el navegador y produce:

  • Pestaña Flujos VPC: total de registros y de bytes, bytes enviados a direcciones de Internet y los flujos más grandes (origen, destino, puerto, bytes, registros).
  • Entidades IP: para cada IP de origen de llamadas, los bytes enviados a ella y recibidos de ella según los registros de flujo.
  • flow_large_egress (media, exfiltración, T1048): al menos 1 GiB enviado desde sus VM a una misma IP pública.
  • flow_ioc_match (alta, comando y control, T1071): una IP detrás de un hallazgo de auditoría de gravedad alta (o una clave usada desde una IP nueva) también intercambió tráfico con sus VM. El objetivo se lee así: 203.0.113.66 ↔ etl-worker-1 (1.9 GiB out, 47.1 KiB in).

Ambos alimentan la correlación de cadena de ataque. En el caso práctico ficticio, la coincidencia de flujos es lo que demuestra que la puerta trasera del script de inicio llegó a ejecutarse.

Límites que hay que indicar en el informe

  • Sin registros de flujo, no hay conclusión. Si la subred tenía los registros de flujo desactivados, «ninguna salida grande» no significa nada.
  • Estimaciones. Dé los volúmenes como aproximados, con la salvedad del muestreo.
  • Puntos ciegos por diseño. El tráfico que nunca sale por una interfaz registrada (por ejemplo, a través de un proxy, o copiado mediante las API de Google en lugar de la red) necesita otras pruebas: el artículo sobre exfiltración de GCS y BigQuery cubre las copias del lado de la API.
  • Infraestructura compartida. Un atacante que usa un rango de IP de un proveedor cloud puede compartirlo con servicios legítimos; confírmelo con los horarios y los puertos.

Antes del próximo incidente

Habilite los registros de flujo en las subredes que alojan cargas de trabajo sensibles, mantenga una frecuencia de muestreo secundaria que pueda permitirse y envíelos a un almacenamiento a largo plazo junto con los registros de auditoría. Usar VPC Flow Logs explica la configuración.

Preguntas frecuentes

¿Muestran los VPC Flow Logs el contenido del tráfico?

No. VPC Flow Logs solo registra metadatos de los flujos: IP y puertos de origen y destino, protocolo, bytes y paquetes estimados, el lado que informa y datos de la VM y de ubicación. No hay contenido.

¿Son exactos los recuentos de bytes de VPC Flow Logs?

No. Google describe bytes_sent y packets_sent como estimaciones basadas en paquetes muestreados y recomienda agregar en periodos más largos o sobre varios recursos para ganar precisión. Úselos para clasificar destinos y dimensionar una exfiltración, no como una cifra exacta.

Lecturas recomendadas

Artículos relacionados

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.