Cómo Exportar los Registros de AWS CloudTrail

Cómo Exportar los Registros de AWS CloudTrail

SOC Prime Team
SOC Prime Team linkedin icon Seguir

Para los últimos 90 días de eventos de gestión, use la consola de CloudTrail (Historial de eventos → Descargar eventos → JSON) o aws cloudtrail lookup-events. Para eventos más antiguos, o para eventos de datos como lecturas de objetos S3, lea los archivos de registro de su rastro en S3. Se encuentran bajo s3://<bucket>/AWSLogs/<account-id>/CloudTrail/<region>/YYYY/MM/DD/.

CloudTrail es el registro de auditoría de su plano de control de AWS: cada inicio de sesión en la consola, cada llamada a la API, cada asunción de rol. En un incidente en la nube, es lo primero que todos piden. Prime Core tiene 262 reglas de detección para CloudTrail, mapeadas a 177 técnicas MITRE ATT&CK. Entre ellas: uso indebido de cuentas en la nube (T1078.004), atacantes apagando el registro en la nube (T1562.008) y robo de datos de almacenamiento en la nube (T1530).

Antes de comenzar

El historial de eventos y los rastros son cosas diferentes. El historial de eventos siempre está activado y es gratuito. Mantiene 90 días de eventos de gestión, por región. Un rastro es algo que se configura: escribe en S3, guarda registros tanto tiempo como desee, y puede incluir eventos de datos. Verifique lo que tiene:

aws cloudtrail describe-trails

aws cloudtrail get-trail-status --name <trail-name>

IsLogging: false en un rastro que debería estar funcionando es un hallazgo en sí mismo.

Las regiones importan. El historial de eventos es por región, y los eventos de servicios globales como IAM suelen encontrarse en us-east-1. Si busca una llamada CreateUser en eu-west-1, no la encontrará.

Permisos. cloudtrail:LookupEvents para el historial de eventos. Para archivos de rastro, s3:ListBucket y s3:GetObject en el bucket, además de kms:Decrypt si el rastro está cifrado con una clave KMS.

Opción 1: Descarga desde la consola

Abra CloudTrail, vaya a Historial de eventos, establezca el rango de tiempo y cualquier filtro (nombre del evento, usuario, recurso), luego elija Descargar eventos → JSON. La descarga respeta sus filtros, así que verifíquelos primero. Cubre solo la región actual.

Opción 2: lookup-events desde la CLI

aws cloudtrail lookup-events --region us-east-1 

  --start-time 2026-10-19T00:00:00Z --end-time 2026-10-20T00:00:00Z

  --output json > ct_use1_1019.json

Dos cosas para saber. Primero, cada resultado envuelve el evento real como un string en CloudTrailEvent. Desenvuélvalo en un evento limpio por línea:

jq -c '.Events[].CloudTrailEvent | fromjson' ct_use1_1019.json > ct_use1_1019.jsonl

Segundo, lookup-events tiene un límite de tasa por cuenta y región, y solo acepta un filtro –lookup-attributes por llamada. Ventanas de tiempo amplias toman tiempo, así que reduzca donde pueda. Para cubrir todas las regiones, haga un bucle sobre aws ec2 describe-regions –query ‘Regions[].RegionName’ –output text.

Opción 3: Archivos de rastro desde S3

Esta es la ruta para el historial más allá de 90 días y para eventos de datos:

aws s3 cp s3://my-trail-bucket/AWSLogs/123456789012/CloudTrail/eu-west-1/2026/10/19/ ./ct/ --recursive

gunzip ./ct/*.json.gz

jq -c '.Records[]' ./ct/*.json > ct_euw1_1019.jsonl

Cada archivo contiene un array Records, y la línea jq los aplana todos en un evento por línea. Los rastros de organización agregan el ID de la organización a la ruta: AWSLogs/<org-id>/<account-id>/CloudTrail/…. Si utiliza CloudTrail Lake, puede ejecutar SQL sobre sus eventos y guardar los resultados en su lugar.

Qué buscar

EventoPor qué importa
Inicio de sesión en consolaVerifique additionalEventData.MFAUsed, fallos e IPs de origen que no reconozca
CreateUser, CreateAccessKey, AttachUserPolicyNuevas identidades y claves: persistencia clásica y escalada de privilegios
StopLogging, DeleteTrail, PutEventSelectorsAlguien reduciendo lo que CloudTrail ve
Asumir rol desde fuentes extrañasMovimiento lateral entre roles y cuentas
Ráfagas de errorCode: AccessDeniedReconocimiento con credenciales robadas
GetSecretValue, ráfagas de GetObjectAcceso a datos; GetObject aparece solo si los eventos de datos S3 están activados

Cargar, sanitizar y revisar en LogTotal

  1. Cargar. Abrir logtotal.com y soltar el .jsonl (o archivo .json). 
  2. Sanitizar. [what gets masked: account IDs, ARNs, IPs, access key IDs, usernames]. Look it over before you continue.
  3. Revisar. 

Cuando algo sale mal

SíntomaCausa probableFix
lookup-events no devuelve nadaRegión equivocada; los eventos de IAM suelen estar en us-east-1Consultar us-east-1, o hacer un bucle por todas las regiones
Nada anterior a 90 díasRetención del historial de eventosUse los archivos de rastro en S3
No hay eventos GetObjectLos eventos de datos S3 no están habilitados en el rastroEsperado; actívelos para el futuro
AccessDenied leyendo archivos de rastroFalta kms:Decrypt, o la política del bucketCorrija IAM o la política del bucket
ThrottlingExceptionlímite de tasa de lookup-eventsVentanas más pequeñas; deje que la CLI reintente

FAQ

¿El historial de eventos incluye eventos de datos?

No. Solo eventos de gestión. Los eventos de datos existen solo si se configuró un rastro o almacén de eventos para registrarlos.

¿Con qué rapidez aparecen los eventos?

Usualmente dentro de minutos de la llamada a la API. Los archivos de rastro en S3 llegan en lotes, por lo que un evento muy reciente puede no estar aún en un archivo.

Únete a la plataforma Detection as Code de SOC Prime para mejorar la visibilidad de las amenazas más relevantes para tu negocio. Para ayudarte a comenzar y obtener valor inmediato, programa una reunión ahora con los expertos de SOC Prime.