AWS - CloudWatch Enum

Support HackTricks

CloudWatch

CloudWatch recopila datos de monitoreo y operación en forma de registros/métricas/eventos proporcionando una vista unificada de los recursos de AWS, aplicaciones y servicios. Los eventos de registro de CloudWatch tienen una limitación de tamaño de 256KB en cada línea de registro. Puede establecer alarmas de alta resolución, visualizar registros y métricas lado a lado, tomar acciones automatizadas, solucionar problemas y descubrir información para optimizar aplicaciones.

Puede monitorear, por ejemplo, registros de CloudTrail. Los eventos que se monitorean:

Key concepts

Namespaces

Un namespace es un contenedor para métricas de CloudWatch. Ayuda a categorizar e aislar métricas, facilitando su gestión y análisis.

  • Ejemplos: AWS/EC2 para métricas relacionadas con EC2, AWS/RDS para métricas de RDS.

Metrics

Las métricas son puntos de datos recopilados a lo largo del tiempo que representan el rendimiento o la utilización de los recursos de AWS. Las métricas pueden ser recopiladas de servicios de AWS, aplicaciones personalizadas o integraciones de terceros.

  • Ejemplo: CPUUtilization, NetworkIn, DiskReadOps.

Dimensions

Las dimensiones son pares clave-valor que son parte de las métricas. Ayudan a identificar de manera única una métrica y proporcionan contexto adicional, siendo 30 el número máximo de dimensiones que se pueden asociar con una métrica. Las dimensiones también permiten filtrar y agregar métricas en función de atributos específicos.

  • Ejemplo: Para instancias de EC2, las dimensiones pueden incluir InstanceId, InstanceType y AvailabilityZone.

Statistics

Las estadísticas son cálculos matemáticos realizados sobre los datos de métricas para resumirlos a lo largo del tiempo. Las estadísticas comunes incluyen Promedio, Suma, Mínimo, Máximo y Conteo de Muestras.

  • Ejemplo: Calcular la utilización promedio de CPU durante un período de una hora.

Units

Las unidades son el tipo de medida asociado con una métrica. Las unidades ayudan a proporcionar contexto y significado a los datos de la métrica. Las unidades comunes incluyen Porcentaje, Bytes, Segundos, Conteo.

  • Ejemplo: CPUUtilization podría medirse en Porcentaje, mientras que NetworkIn podría medirse en Bytes.

CloudWatch Features

Dashboard

Los Dashboards de CloudWatch proporcionan vistas personalizables de sus métricas de AWS CloudWatch. Es posible crear y configurar dashboards para visualizar datos y monitorear recursos en una sola vista, combinando diferentes métricas de varios servicios de AWS.

Características Clave:

  • Widgets: Bloques de construcción de dashboards, incluyendo gráficos, texto, alarmas y más.

  • Personalización: El diseño y el contenido se pueden personalizar para adaptarse a necesidades específicas de monitoreo.

Ejemplo de Caso de Uso:

  • Un solo dashboard que muestra métricas clave para todo su entorno de AWS, incluyendo instancias de EC2, bases de datos RDS y buckets de S3.

Metric Stream and Metric Data

Metric Streams en AWS CloudWatch le permiten transmitir continuamente métricas de CloudWatch a un destino de su elección en casi tiempo real. Esto es particularmente útil para monitoreo avanzado, análisis y dashboards personalizados utilizando herramientas fuera de AWS.

Los Datos de Métricas dentro de Metric Streams se refieren a las mediciones o puntos de datos reales que se están transmitiendo. Estos puntos de datos representan varias métricas como la utilización de CPU, el uso de memoria, etc., para los recursos de AWS.

Ejemplo de Caso de Uso:

  • Enviar métricas en tiempo real a un servicio de monitoreo de terceros para análisis avanzado.

  • Archivar métricas en un bucket de Amazon S3 para almacenamiento a largo plazo y cumplimiento.

Alarm

Las Alarmas de CloudWatch monitorean sus métricas y realizan acciones basadas en umbrales predefinidos. Cuando una métrica supera un umbral, la alarma puede realizar una o más acciones, como enviar notificaciones a través de SNS, activar una política de autoescalado o ejecutar una función de AWS Lambda.

Componentes Clave:

  • Umbral: El valor en el que se activa la alarma.

  • Períodos de Evaluación: El número de períodos sobre los cuales se evalúan los datos.

  • Puntos de Datos para la Alarma: El número de períodos con un umbral alcanzado necesario para activar la alarma.

  • Acciones: Lo que sucede cuando se activa el estado de la alarma (por ejemplo, notificar a través de SNS).

Ejemplo de Caso de Uso:

  • Monitorear la utilización de CPU de la instancia de EC2 y enviar una notificación a través de SNS si supera el 80% durante 5 minutos consecutivos.

Anomaly Detectors

Los Detectores de Anomalías utilizan aprendizaje automático para detectar automáticamente anomalías en sus métricas. Puede aplicar la detección de anomalías a cualquier métrica de CloudWatch para identificar desviaciones de patrones normales que podrían indicar problemas.

Componentes Clave:

  • Entrenamiento del Modelo: CloudWatch utiliza datos históricos para entrenar un modelo y establecer cómo se ve el comportamiento normal.

  • Banda de Detección de Anomalías: Una representación visual del rango esperado de valores para una métrica.

Ejemplo de Caso de Uso:

  • Detectar patrones inusuales de utilización de CPU en una instancia de EC2 que podrían indicar una brecha de seguridad o un problema de aplicación.

Insight Rules and Managed Insight Rules

Las Reglas de Insight le permiten identificar tendencias, detectar picos u otros patrones de interés en sus datos de métricas utilizando expresiones matemáticas poderosas para definir las condiciones bajo las cuales se deben tomar acciones. Estas reglas pueden ayudarle a identificar anomalías o comportamientos inusuales en el rendimiento y la utilización de sus recursos.

Las Reglas de Insight Administradas son reglas de insight preconfiguradas proporcionadas por AWS. Están diseñadas para monitorear servicios específicos de AWS o casos de uso comunes y se pueden habilitar sin necesidad de una configuración detallada.

Ejemplo de Caso de Uso:

  • Monitoreo del Rendimiento de RDS: Habilitar una regla de insight administrada para Amazon RDS que monitorea indicadores clave de rendimiento como la utilización de CPU, el uso de memoria y el I/O de disco. Si alguna de estas métricas supera los umbrales operativos seguros, la regla puede activar una alerta o una acción de mitigación automatizada.

CloudWatch Logs

Permite agregar y monitorear registros de aplicaciones y sistemas de servicios de AWS (incluyendo CloudTrail) y de aplicaciones/sistemas (CloudWatch Agent se puede instalar en un host). Los registros pueden ser almacenados indefinidamente (dependiendo de la configuración del Grupo de Registros) y pueden ser exportados.

Elementos:

Grupo de Registros

Una colección de flujos de registros que comparten la misma retención, monitoreo y configuraciones de control de acceso

Flujo de Registros

Una secuencia de eventos de registro que comparten la misma fuente

Filtros de Suscripción

Definen un patrón de filtro que coincide con eventos en un grupo de registros particular, enviándolos a un flujo de Kinesis Data Firehose, flujo de Kinesis o una función Lambda

CloudWatch Monitoring & Events

CloudWatch básico agrega datos cada 5 minutos (el detallado lo hace cada 1 minuto). Después de la agregación, verifica los umbrales de las alarmas en caso de que necesite activar una. En ese caso, CloudWatch puede estar preparado para enviar un evento y realizar algunas acciones automáticas (funciones de AWS Lambda, temas de SNS, colas de SQS, flujos de Kinesis)

Agent Installation

Puede instalar agentes dentro de sus máquinas/contenedores para enviar automáticamente los registros de vuelta a CloudWatch.

  • Crear un rol y adjuntarlo a la instancia con permisos que permitan a CloudWatch recopilar datos de las instancias además de interactuar con el administrador de sistemas de AWS SSM (CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM)

  • Descargar e instalar el agente en la instancia de EC2 (https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip). Puede descargarlo desde dentro de la EC2 o instalarlo automáticamente usando AWS System Manager seleccionando el paquete AWS-ConfigureAWSPackage

  • Configurar y iniciar el Agente de CloudWatch

Un grupo de registros tiene muchos flujos. Un flujo tiene muchos eventos. Y dentro de cada flujo, los eventos están garantizados en orden.

Enumeration

# Dashboards #

## Returns a list of the dashboards of your account
aws cloudwatch list-dashboards

## Retrieves the details of the specified dashboard
aws cloudwatch get-dashboard --dashboard-name <value>

# Metrics #

## Returns a list of the specified metric
aws cloudwatch list-metrics [--namespace <value>] [--metric-name <value>] [--dimensions <value>] [--include-linked-accounts | --no-include-linked-accounts]

## Retrieves metric data (this operation can include a CloudWatch Metrics Insights query, and one or more metric math functions)
aws cloudwatch get-metric-data --metric-data-queries <value> --start-time <value> --end-time <value>

## Retrieves statistics for the specified metric and namespace over a range of time
aws cloudwatch get-metric-statistics --namespace <value> --metric-name <value> [--dimensions <value>] --start-time <value> --end-time <value> --period <value>

## Returns a list of the metric streams of your account
aws cloudwatch list-metric-streams

## Retrieves information about the specified metric stream
aws cloudwatch get-metric-stream --name <value>

## Retrieve snapshots of the specified metric widgets
aws cloudwatch get-metric-widget-image --metric-widget <value>

# Alarms #

## Retrieves the specified alarm
aws cloudwatch describe-alarms [--alarm-names <value>] [--alarm-name-prefix <value>] [--alarm-types <value>] [--state-value <value>]

## Retrieves the alarms history, even for deleted alarms
aws cloudwatch describe-alarm-history [--alarm-name <value>] [--alarm-types <value>] [--history-item-type <ConfigurationUpdate | StateUpdate | Action>] [--start-date <value>] [--end-date <value>]

## Retrieves standard alarms based on the specified metric
aws cloudwatch escribe-alarms-for-metric --metric-name <value> --namespace <value> [--dimensions <value>]

# Anomaly Detections #

## Lists the anomaly detection models that you have created in your account
aws cloudwatch describe-anomaly-detectors [--namespace <value>] [--metric-name <value>] [--dimensions <value>]

## Lists all the Contributor Insight rules in your account
aws cloudwatch describe-insight-rules

## Retrieves the data collected over a time range for a given Contributor Insight rule
aws cloudwatch get-insight-rule-report --rule-name <value> --start-time <value> --end-time <value> --period <value>

## Lists managed Contributor Insights rules in your account for a specified resource
aws cloudwatch list-managed-insight-rules --resource-arn <value>

# Tags #

## Lists the tags associated with the specified CloudWatch resources
aws cloudwatch list-tags-for-resource --resource-arn <value>

# CloudWatch Logs #
aws logs tail "<log_group_name>" --followaws logs get-log-events --log-group-name "<log_group_name>" --log-stream-name "<log_stream_name>" --output text > <output_file>

# CloudWatch Events #
aws events list-rules
aws events describe-rule --name <name>aws events list-targets-by-rule --rule <name>aws events list-archives
aws events describe-archive --archive-name <name>aws events list-connections
aws events describe-connection --name <name>aws events list-endpoints
aws events describe-endpoint --name <name>aws events list-event-sources
aws events describe-event-source --name <name>aws events list-replays
aws events list-api-destinations
aws events list-event-buses

Post-Exploitation / Bypass

cloudwatch:DeleteAlarms,cloudwatch:PutMetricAlarm , cloudwatch:PutCompositeAlarm

Un atacante con estos permisos podría socavar significativamente la infraestructura de monitoreo y alertas de una organización. Al eliminar alarmas existentes, un atacante podría deshabilitar alertas cruciales que notifican a los administradores sobre problemas críticos de rendimiento, brechas de seguridad o fallos operativos. Además, al crear o modificar alarmas métricas, el atacante también podría engañar a los administradores con alertas falsas o silenciar alarmas legítimas, enmascarando efectivamente actividades maliciosas y evitando respuestas oportunas a incidentes reales.

Además, con el permiso cloudwatch:PutCompositeAlarm, un atacante podría crear un bucle o ciclo de alarmas compuestas, donde la alarma compuesta A depende de la alarma compuesta B, y la alarma compuesta B también depende de la alarma compuesta A. En este escenario, no es posible eliminar ninguna alarma compuesta que sea parte del ciclo porque siempre hay una alarma compuesta que depende de esa alarma que deseas eliminar.

aws cloudwatch put-metric-alarm --cli-input-json <value> | --alarm-name <value> --comparison-operator <value> --evaluation-periods <value> [--datapoints-to-alarm <value>] [--threshold <value>] [--alarm-description <value>] [--alarm-actions <value>] [--metric-name <value>] [--namespace <value>] [--statistic <value>] [--dimensions <value>] [--period <value>]
aws cloudwatch delete-alarms --alarm-names <value>
aws cloudwatch put-composite-alarm --alarm-name <value> --alarm-rule <value> [--no-actions-enabled | --actions-enabled [--alarm-actions <value>] [--insufficient-data-actions <value>] [--ok-actions <value>] ]

El siguiente ejemplo muestra cómo hacer que una alarma de métrica sea ineficaz:

  • Esta alarma de métrica monitorea la utilización promedio de CPU de una instancia EC2 específica, evalúa la métrica cada 300 segundos y requiere 6 períodos de evaluación (30 minutos en total). Si la utilización promedio de CPU supera el 60% durante al menos 4 de estos períodos, la alarma se activará y enviará una notificación al tema SNS especificado.

  • Al modificar el umbral para que sea más del 99%, establecer el período en 10 segundos, los períodos de evaluación en 8640 (ya que 8640 períodos de 10 segundos equivalen a 1 día), y los puntos de datos a alarma en 8640 también, sería necesario que la utilización de CPU estuviera por encima del 99% cada 10 segundos durante todo el período de 24 horas para activar una alarma.

{
"Namespace": "AWS/EC2",
"MetricName": "CPUUtilization",
"Dimensions": [
{
"Name": "InstanceId",
"Value": "i-01234567890123456"
}
],
"AlarmActions": [
"arn:aws:sns:us-east-1:123456789012:example_sns"
],
"ComparisonOperator": "GreaterThanThreshold",
"DatapointsToAlarm": 4,
"EvaluationPeriods": 6,
"Period": 300,
"Statistic": "Average",
"Threshold": 60,
"AlarmDescription": "CPU Utilization of i-01234567890123456 over 60%",
"AlarmName": "EC2 instance i-01234567890123456 CPU Utilization"
}

Impacto Potencial: Falta de notificaciones para eventos críticos, problemas potencialmente no detectados, alertas falsas, suprimir alertas genuinas y potencialmente detecciones perdidas de incidentes reales.

cloudwatch:DeleteAlarmActions, cloudwatch:EnableAlarmActions, cloudwatch:SetAlarmState

Al eliminar acciones de alarma, el atacante podría prevenir alertas críticas y respuestas automáticas de ser activadas cuando se alcanza un estado de alarma, como notificar a los administradores o activar actividades de autoescalado. Habilitar o re-habilitar acciones de alarma de manera inapropiada también podría llevar a comportamientos inesperados, ya sea reactivando acciones previamente deshabilitadas o modificando qué acciones se activan, lo que podría causar confusión y desvío en la respuesta a incidentes.

Además, un atacante con el permiso podría manipular los estados de alarma, siendo capaz de crear falsas alarmas para distraer y confundir a los administradores, o silenciar alarmas genuinas para ocultar actividades maliciosas en curso o fallos críticos del sistema.

  • Si usas SetAlarmState en una alarma compuesta, la alarma compuesta no garantiza volver a su estado real. Regresa a su estado real solo una vez que cualquiera de sus alarmas hijas cambie de estado. También se reevaluará si actualizas su configuración.

aws cloudwatch disable-alarm-actions --alarm-names <value>
aws cloudwatch enable-alarm-actions --alarm-names <value>
aws cloudwatch set-alarm-state --alarm-name <value> --state-value <OK | ALARM | INSUFFICIENT_DATA> --state-reason <value> [--state-reason-data <value>]

Impacto Potencial: Falta de notificaciones para eventos críticos, problemas potencialmente no detectados, alertas falsas, suprimir alertas genuinas y potencialmente detecciones perdidas de incidentes reales.

cloudwatch:DeleteAnomalyDetector, cloudwatch:PutAnomalyDetector

Un atacante podría comprometer la capacidad de detección y respuesta a patrones inusuales o anomalías en los datos de métricas. Al eliminar detectores de anomalías existentes, un atacante podría deshabilitar mecanismos críticos de alerta; y al crear o modificarlos, podría desconfigurarlos o crear falsos positivos para distraer o abrumar la supervisión.

aws cloudwatch delete-anomaly-detector [--cli-input-json <value> | --namespace <value> --metric-name <value> --dimensions <value> --stat <value>]
aws cloudwatch put-anomaly-detector [--cli-input-json <value> | --namespace <value> --metric-name <value> --dimensions <value> --stat <value> --configuration <value> --metric-characteristics <value>]

El siguiente ejemplo muestra cómo hacer que un detector de anomalías de métricas sea ineficaz. Este detector de anomalías de métricas monitorea la utilización promedio de CPU de una instancia EC2 específica, y solo al agregar el parámetro “ExcludedTimeRanges” con el rango de tiempo deseado, sería suficiente para asegurar que el detector de anomalías no analice ni alerte sobre ningún dato relevante durante ese período.

{
"SingleMetricAnomalyDetector": {
"Namespace": "AWS/EC2",
"MetricName": "CPUUtilization",
"Stat": "Average",
"Dimensions": [
{
"Name": "InstanceId",
"Value": "i-0123456789abcdefg"
}
]
}
}

Impacto Potencial: Efecto directo en la detección de patrones inusuales o amenazas de seguridad.

cloudwatch:DeleteDashboards, cloudwatch:PutDashboard

Un atacante podría comprometer las capacidades de monitoreo y visualización de una organización al crear, modificar o eliminar sus paneles. Estos permisos podrían ser utilizados para eliminar la visibilidad crítica sobre el rendimiento y la salud de los sistemas, alterar paneles para mostrar datos incorrectos o ocultar actividades maliciosas.

aws cloudwatch delete-dashboards --dashboard-names <value>
aws cloudwatch put-dashboard --dashboard-name <value> --dashboard-body <value>

Impacto Potencial: Pérdida de visibilidad de monitoreo e información engañosa.

cloudwatch:DeleteInsightRules, cloudwatch:PutInsightRule, cloudwatch:PutManagedInsightRule

Las reglas de insight se utilizan para detectar anomalías, optimizar el rendimiento y gestionar recursos de manera efectiva. Al eliminar reglas de insight existentes, un atacante podría eliminar capacidades críticas de monitoreo, dejando al sistema ciego ante problemas de rendimiento y amenazas de seguridad. Además, un atacante podría crear o modificar reglas de insight para generar datos engañosos o ocultar actividades maliciosas, lo que llevaría a diagnósticos incorrectos y respuestas inapropiadas del equipo de operaciones.

aws cloudwatch delete-insight-rules --rule-names <value>
aws cloudwatch put-insight-rule --rule-name <value> --rule-definition <value> [--rule-state <value>]
aws cloudwatch put-managed-insight-rules --managed-rules <value>

Impacto Potencial: Dificultad para detectar y responder a problemas de rendimiento y anomalías, toma de decisiones mal informadas y potencialmente ocultar actividades maliciosas o fallos del sistema.

cloudwatch:DisableInsightRules, cloudwatch:EnableInsightRules

Al deshabilitar reglas de información críticas, un atacante podría cegar efectivamente a la organización sobre métricas clave de rendimiento y seguridad. Por el contrario, al habilitar o configurar reglas engañosas, podría ser posible generar datos falsos, crear ruido u ocultar actividad maliciosa.

aws cloudwatch disable-insight-rules --rule-names <value>
aws cloudwatch enable-insight-rules --rule-names <value>

Impacto Potencial: Confusión entre el equipo de operaciones, lo que lleva a respuestas retrasadas a problemas reales y acciones innecesarias basadas en alertas falsas.

cloudwatch:DeleteMetricStream , cloudwatch:PutMetricStream , cloudwatch:PutMetricData

Un atacante con los permisos cloudwatch:DeleteMetricStream , cloudwatch:PutMetricStream podría crear y eliminar flujos de datos de métricas, comprometiendo la seguridad, la monitorización y la integridad de los datos:

  • Crear flujos maliciosos: Crear flujos de métricas para enviar datos sensibles a destinos no autorizados.

  • Manipulación de recursos: La creación de nuevos flujos de métricas con datos excesivos podría producir mucho ruido, causando alertas incorrectas y enmascarando problemas reales.

  • Interrupción de la monitorización: Al eliminar flujos de métricas, los atacantes interrumpirían el flujo continuo de datos de monitorización. De esta manera, sus actividades maliciosas estarían efectivamente ocultas.

De manera similar, con el permiso cloudwatch:PutMetricData, sería posible agregar datos a un flujo de métricas. Esto podría llevar a un DoS debido a la cantidad de datos inapropiados añadidos, haciéndolo completamente inútil.

aws cloudwatch delete-metric-stream --name <value>
aws cloudwatch put-metric-stream --name <value> [--include-filters <value>] [--exclude-filters <value>] --firehose-arn <value> --role-arn <value> --output-format <value>
aws cloudwatch put-metric-data --namespace <value> [--metric-data <value>] [--metric-name <value>] [--timestamp <value>] [--unit <value>] [--value <value>] [--dimensions <value>]

Ejemplo de agregar datos correspondientes a un 70% de utilización de CPU en una instancia EC2 dada:

aws cloudwatch put-metric-data --namespace "AWS/EC2" --metric-name "CPUUtilization" --value 70 --unit "Percent" --dimensions "InstanceId=i-0123456789abcdefg"

Impacto Potencial: Disrupción en el flujo de datos de monitoreo, afectando la detección de anomalías e incidentes, manipulación de recursos y aumento de costos debido a la creación de flujos de métricas excesivos.

cloudwatch:StopMetricStreams, cloudwatch:StartMetricStreams

Un atacante controlaría el flujo de los flujos de datos de métricas afectados (cada flujo de datos si no hay restricción de recursos). Con el permiso cloudwatch:StopMetricStreams, los atacantes podrían ocultar sus actividades maliciosas deteniendo flujos de métricas críticos.

aws cloudwatch stop-metric-streams --names <value>
aws cloudwatch start-metric-streams --names <value>

Impacto Potencial: Disrupción en el flujo de datos de monitoreo, afectando la detección de anomalías e incidentes.

cloudwatch:TagResource, cloudwatch:UntagResource

Un atacante podría agregar, modificar o eliminar etiquetas de los recursos de CloudWatch (actualmente solo alarmas y reglas de Contributor Insights). Esto podría interrumpir las políticas de control de acceso de su organización basadas en etiquetas.

aws cloudwatch tag-resource --resource-arn <value> --tags <value>
aws cloudwatch untag-resource --resource-arn <value> --tag-keys <value>

Impacto Potencial: Disrupción de las políticas de control de acceso basadas en etiquetas.

Referencias

Support HackTricks

Last updated