AWS - CloudTrail Enum
CloudTrail
AWS CloudTrail registra y monitorea la actividad dentro de tu entorno de AWS. Captura registros detallados de eventos, incluyendo quién hizo qué, cuándo y desde dónde, para todas las interacciones con los recursos de AWS. Esto proporciona un rastro de auditoría de cambios y acciones, ayudando en el análisis de seguridad, auditorías de cumplimiento y seguimiento de cambios de recursos. CloudTrail es esencial para comprender el comportamiento de usuarios y recursos, mejorar las posturas de seguridad y garantizar el cumplimiento normativo.
Cada evento registrado contiene:
El nombre de la API llamada:
eventName
El servicio llamado:
eventSource
La hora:
eventTime
La dirección IP:
SourceIPAddress
El método del agente:
userAgent
. Ejemplos:Signing.amazonaws.com - Desde la Consola de Administración de AWS
console.amazonaws.com - Usuario raíz de la cuenta
lambda.amazonaws.com - AWS Lambda
Los parámetros de la solicitud:
requestParameters
Los elementos de respuesta:
responseElements
Los eventos se escriben en un nuevo archivo de registro aproximadamente cada 5 minutos en un archivo JSON, son retenidos por CloudTrail y finalmente, los archivos de registro son entregados a S3 aproximadamente 15 minutos después. Los registros de CloudTrail pueden ser agregados entre cuentas y regiones. CloudTrail permite utilizar integridad de archivos de registro para poder verificar que sus archivos de registro no han cambiado desde que CloudTrail los entregó. Crea un hash SHA-256 de los registros dentro de un archivo de resumen. Se crea un hash sha-256 de los nuevos registros cada hora. Al crear un Trail, los selectores de eventos te permitirán indicar el trail para registrar: eventos de gestión, datos o de análisis.
Los registros se guardan en un bucket S3. Por defecto se utiliza el cifrado en el lado del servidor (SSE-S3) para que AWS descifre el contenido para las personas que tienen acceso a él, pero para mayor seguridad puedes utilizar SSE con KMS y tus propias claves.
Los registros se almacenan en un bucket S3 con este formato de nombre:
BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD
Siendo el BucketName:
aws-cloudtrail-logs-<accountid>-<random>
Ejemplo:
aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/
Dentro de cada carpeta, cada registro tendrá un nombre siguiendo este formato: AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz
Convención de Nomenclatura de Archivos de Registro
Además, los archivos de resumen (para verificar la integridad del archivo) estarán dentro del mismo bucket en:
Agregar Registros de Múltiples Cuentas
Crea un Trail en la cuenta de AWS donde deseas que se entreguen los archivos de registro
Aplica permisos al bucket S3 de destino permitiendo el acceso entre cuentas para CloudTrail y permite el acceso a cada cuenta de AWS que lo necesite
Crea un nuevo Trail en las otras cuentas de AWS y selecciona usar el bucket creado en el paso 1
Sin embargo, aunque puedes guardar todos los registros en el mismo bucket S3, no puedes agregar los registros de CloudTrail de múltiples cuentas en un CloudWatch Logs perteneciente a una sola cuenta de AWS.
Recuerda que una cuenta puede tener diferentes Trails de CloudTrail habilitados almacenando los mismos (o diferentes) registros en diferentes buckets.
Cloudtrail de todas las cuentas de la organización en 1
Al crear un CloudTrail, es posible indicar activar cloudtrail para todas las cuentas en la organización y obtener los registros en solo 1 bucket:
De esta manera puedes configurar fácilmente CloudTrail en todas las regiones de todas las cuentas y centralizar los registros en 1 cuenta (que debes proteger).
Verificación de Archivos de Registro
Puedes verificar que los registros no han sido alterados ejecutando
Registros a CloudWatch
CloudTrail puede enviar automáticamente registros a CloudWatch para que pueda configurar alertas que le avisen cuando se realicen actividades sospechosas. Tenga en cuenta que para permitir que CloudTrail envíe los registros a CloudWatch, es necesario crear un rol que permita esa acción. Si es posible, se recomienda utilizar el rol predeterminado de AWS para realizar estas acciones. Este rol permitirá a CloudTrail:
CreateLogStream: Esto permite crear flujos de registros de CloudWatch Logs
PutLogEvents: Entregar registros de CloudTrail a flujos de registros de CloudWatch Logs
Historial de Eventos
El Historial de Eventos de CloudTrail le permite inspeccionar en una tabla los registros que se han registrado:
Insights
CloudTrail Insights analiza automáticamente eventos de gestión de escritura de senderos de CloudTrail y le alerta sobre actividades inusuales. Por ejemplo, si hay un aumento en los eventos TerminateInstance
que difiere de los baselines establecidos, lo verá como un evento de Insight. Estos eventos hacen que encontrar y responder a actividades de API inusuales sea más fácil que nunca.
Los insights se almacenan en el mismo bucket que los registros de CloudTrail en: BucketName/AWSLogs/AccountID/CloudTrail-Insight
Seguridad
Integridad de Archivos de Registro de CloudTrail |
|
Detener el acceso no autorizado |
|
Prevenir la eliminación de archivos de registro |
|
Asesor de Acceso
El Asesor de Acceso de AWS se basa en los últimos 400 días de registros de CloudTrail de AWS para recopilar sus conocimientos. CloudTrail captura un historial de llamadas a la API de AWS y eventos relacionados realizados en una cuenta de AWS. El Asesor de Acceso utiliza estos datos para mostrar cuándo se accedió por última vez a los servicios. Al analizar los registros de CloudTrail, el Asesor de Acceso puede determinar a qué servicios de AWS ha accedido un usuario IAM o un rol y cuándo ocurrió ese acceso. Esto ayuda a los administradores de AWS a tomar decisiones informadas sobre refinar permisos, ya que pueden identificar servicios que no se han accedido durante períodos prolongados y potencialmente reducir permisos demasiado amplios basados en patrones de uso reales.
Por lo tanto, el Asesor de Acceso informa sobre los permisos innecesarios que se otorgan a los usuarios para que el administrador pueda eliminarlos
Acciones
Enumeración
Inyección de CSV
Es posible realizar una inyección de CSV dentro de CloudTrail que ejecutará código arbitrario si los registros se exportan en CSV y se abren con Excel. El siguiente código generará una entrada de registro con un nombre de Trail incorrecto que contiene la carga útil:
Para obtener más información sobre las Inyecciones CSV, visita la página:
Para obtener más información sobre esta técnica específica, visita https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/
Bypass de Detección
Bypass de HoneyTokens
Los HoneyTokens se crean para detectar la filtración de información sensible. En el caso de AWS, son claves de AWS cuyo uso se monitorea, si algo activa una acción con esa clave, entonces alguien debe haber robado esa clave.
Sin embargo, esta monitorización se realiza a través de CloudTrail, y hay algunos servicios de AWS que no envían registros a CloudTrail (encuentra la lista aquí). Algunos de esos servicios responderán con un error que contiene el ARN del rol de la clave si alguien no autorizado (la clave de HoneyToken) intenta acceder.
De esta manera, un atacante puede obtener el ARN de la clave sin activar ningún registro. En el ARN, el atacante puede ver el ID y el nombre de la cuenta de AWS, es fácil saber los ID y nombres de las cuentas de las empresas de HoneyToken, de esta manera un atacante puede identificar si el token es un HoneyToken.
Detección de HoneyTokens
Pacu detecta si una clave pertenece a Canarytokens, SpaceCrab, SpaceSiren:
Si
canarytokens.org
aparece en el nombre del rol o el ID de cuenta534261010715
aparece en el mensaje de error.Probándolos más recientemente, están utilizando la cuenta
717712589309
y todavía tienen la cadenacanarytokens.com
en el nombre.Si
SpaceCrab
aparece en el nombre del rol en el mensaje de error.SpaceSiren utiliza uuids para generar nombres de usuario:
[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}
Si el nombre parece generado aleatoriamente, hay altas probabilidades de que sea un HoneyToken.
Ten en cuenta que todas las API públicas descubiertas que no estaban creando registros de CloudTrail ahora están arregladas, por lo que tal vez necesites encontrar las tuyas...
O puedes obtener el ID de cuenta del codificado dentro de la clave de acceso como se explica aquí y verificar el ID de cuenta con tu lista de cuentas de AWS de Honeytokens:
Para obtener más información, consulta la investigación original.
Accediendo a Infraestructura de Terceros
Algunos servicios de AWS generarán infraestructura como Bases de Datos o clústeres de Kubernetes (EKS). Un usuario que se comunique directamente con esos servicios (como la API de Kubernetes) no utilizará la API de AWS, por lo que CloudTrail no podrá ver esta comunicación.
Por lo tanto, un usuario con acceso a EKS que haya descubierto la URL de la API de EKS podría generar un token localmente y comunicarse directamente con el servicio de la API sin ser detectado por CloudTrail.
Más información en:
pageAWS - EKS Post ExploitationModificando la Configuración de CloudTrail
Eliminar trails
Detener rastreos
Deshabilitar el registro multi-región
Deshabilitar el registro por Selectores de Eventos
Modificación de la configuración del Bucket
Eliminar el bucket S3
Cambiar la política del bucket para denegar cualquier escritura desde el servicio CloudTrail
Agregar una política de ciclo de vida al bucket S3 para eliminar objetos
Deshabilitar la clave KMS utilizada para cifrar los registros de CloudTrail
Ransomware de CloudTrail
Ransomware de S3
Podrías generar una clave asimétrica y hacer que CloudTrail cifre los datos con esa clave y eliminar la clave privada para que el contenido de CloudTrail no pueda ser recuperado. Básicamente, esto es un ransomware de S3-KMS explicado en:
pageAWS - S3 Post ExploitationRansomware de KMS
Esta es una forma más sencilla de realizar el ataque anterior con diferentes requisitos de permisos:
pageAWS - KMS Post ExploitationReferencias
Última actualización