AWS - CloudWatch Enum

Apoya a HackTricks

CloudWatch

CloudWatch recopila datos de monitoreo y operativos 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 configurar 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. Eventos que se monitorean:

Conceptos clave

Espacios de nombres

Un espacio de nombres es un contenedor para métricas de CloudWatch. Ayuda a categorizar y 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.

Métricas

Las métricas son puntos de datos recopilados con el tiempo que representan el rendimiento o la utilización de recursos de AWS. Las métricas pueden recopilarse de servicios de AWS, aplicaciones personalizadas o integraciones de terceros.

  • Ejemplo: CPUUtilization, NetworkIn, DiskReadOps.

Dimensiones

Las dimensiones son pares clave-valor que forman parte de las métricas. Ayudan a identificar de forma única una métrica y proporcionan contexto adicional, pudiendo asociarse hasta 30 dimensiones con una métrica. Las dimensiones también permiten filtrar y agregar métricas en función de atributos específicos.

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

Estadísticas

Las estadísticas son cálculos matemáticos realizados en datos de métricas para resumirlos con el tiempo. Las estadísticas comunes incluyen Promedio, Suma, Mínimo, Máximo y Recuento de muestras.

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

Unidades

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, Cuenta.

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

Funcionalidades de CloudWatch

Tablero

Los Tableros de CloudWatch proporcionan vistas personalizables de las métricas de AWS CloudWatch. Es posible crear y configurar tableros 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 los tableros, incluyendo gráficos, texto, alarmas y más.

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

Ejemplo de caso de uso:

  • Un único tablero que muestra métricas clave para todo su entorno de AWS, incluidas instancias EC2, bases de datos RDS y buckets S3.

Flujo de Métricas y Datos de Métricas

Los Flujos de Métricas en AWS CloudWatch te permiten transmitir continuamente métricas de CloudWatch a un destino de tu elección en tiempo casi real. Esto es particularmente útil para monitoreo avanzado, análisis y tableros personalizados utilizando herramientas fuera de AWS.

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

Ejemplo de caso de uso:

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

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

Alarma

Las Alarmas de CloudWatch monitorean tus 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 escalado automático 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 durante 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 un estado de alarma (por ejemplo, notificar a través de SNS).

Ejemplo de caso de uso:

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

Detectores de Anomalías

Los Detectores de Anomalías utilizan aprendizaje automático para detectar automáticamente anomalías en tus métricas. Puedes 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 EC2 que podrían indicar una brecha de seguridad o un problema de aplicación.

Reglas de Insight y Reglas de Insight Administradas

Las Reglas de Insight te permiten identificar tendencias, detectar picos u otros patrones de interés en tus datos de métricas utilizando expresiones matemáticas potentes para definir las condiciones bajo las cuales se deben tomar acciones. Estas reglas pueden ayudarte a identificar anomalías o comportamientos inusuales en el rendimiento y la utilización de tus 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 la E/S 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.

Registros de CloudWatch

Permite agregar y monitorear registros de aplicaciones y sistemas de servicios de AWS (incluido CloudTrail) y de aplicaciones/sistemas (el Agente de CloudWatch se puede instalar en un host). Los registros pueden almacenarse indefinidamente (según la configuración del Grupo de Registros) y pueden exportarse.

Elementos:

Grupo de Registros

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

Secuencia 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 específico, los envían a un flujo de Kinesis Data Firehose, un flujo de Kinesis o una función de Lambda

### Monitoreo y Eventos de CloudWatch

CloudWatch básico agrega datos cada 5 min (el detallado lo hace cada 1 min). 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 AWS Lambda, temas SNS, colas SQS, flujos de Kinesis)

Instalación del Agente

Puedes instalar agentes dentro de tus 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 y AmazonEC2RoleforSSM)

  • Descargar e instalar el agente en la instancia EC2 (https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip). Puedes 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 de estar en orden.

Enumeración

# 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-Explotación / Eludir

cloudwatch:DeleteAlarms,cloudwatch:PutMetricAlarm , cloudwatch:PutCompositeAlarm

Un atacante con estos permisos podría socavar significativamente la infraestructura de monitoreo y alerta de una organización. Al eliminar alarmas existentes, un atacante podría desactivar alertas cruciales que notifican a los administradores sobre problemas críticos de rendimiento, violaciones de seguridad o fallas operativas. Además, al crear o modificar alarmas métricas, el atacante también podría confundir 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 se desea 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étricas sea ineficaz:

  • Esta alarma de métricas monitorea la utilización promedio de la 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 la 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 superior al 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 Alarmar también en 8640, sería necesario que la utilización de la CPU esté 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, posibles problemas no detectados, alertas falsas, supresión de alertas genuinas y posiblemente detección perdida de incidentes reales.

cloudwatch:DeleteAlarmActions, cloudwatch:EnableAlarmActions , cloudwatch:SetAlarmState

Al eliminar acciones de alarma, el atacante podría evitar que se activen alertas críticas y respuestas automatizadas cuando se alcance un estado de alarma, como notificar a los administradores o activar actividades de escalado automático. Habilitar o volver a habilitar acciones de alarma de manera inapropiada también podría provocar comportamientos inesperados, ya sea reactivando acciones previamente deshabilitadas o modificando qué acciones se activan, lo que podría causar confusión y desorientación en la respuesta a incidentes.

Además, un atacante con los permisos adecuados podría manipular estados de alarma, pudiendo crear alarmas falsas para distraer y confundir a los administradores, o silenciar alarmas genuinas para ocultar actividades maliciosas en curso o fallas críticas del sistema.

  • Si utilizas SetAlarmState en una alarma compuesta, no se garantiza que la alarma compuesta vuelva a su estado real. Vuelve a su estado real solo una vez que alguna de sus alarmas secundarias cambie de estado. También se reevalúa 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, posibles problemas no detectados, alertas falsas, supresión de alertas genuinas y posiblemente detección perdida 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 métricos. Al eliminar detectores de anomalías existentes, un atacante podría deshabilitar mecanismos críticos de alerta; y al crear o modificarlos, podría mal configurarlos o crear falsos positivos para distraer o abrumar el monitoreo.

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 la CPU de una instancia EC2 específica, y simplemente agregando 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 de control. Estos permisos podrían ser aprovechados para eliminar la visibilidad crítica sobre el rendimiento y la salud de los sistemas, alterar los paneles de control para mostrar datos incorrectos u 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 el 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 u ocultar actividades maliciosas, lo que llevaría a diagnósticos incorrectos y respuestas inapropiadas por parte 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 errónea y posiblemente ocultar actividades maliciosas o fallos del sistema.

cloudwatch:DisableInsightRules, cloudwatch:EnableInsightRules

Al deshabilitar reglas críticas de insight, un atacante podría dejar ciega a la organización respecto a métricas clave de rendimiento y seguridad. Por otro lado, al habilitar o configurar reglas engañosas, podría ser posible generar datos falsos, crear ruido u ocultar actividades maliciosas.

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 tardías 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 sería capaz de crear y eliminar flujos de datos métricos, comprometiendo la seguridad, monitorización e integridad de los datos:

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

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

  • Disrupción de la monitorización: Al eliminar flujos métricos, 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 métrico. Esto podría llevar a un DoS debido a la cantidad de datos incorrectos agregados, volvié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 métricos excesivos.

cloudwatch:StopMetricStreams, cloudwatch:StartMetricStreams

Un atacante podría controlar el flujo de los flujos de datos métricos 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 métricos críticos.

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

Impacto Potencial: Interrupció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 políticas de control de acceso basadas en etiquetas.

Referencias

Apoya a HackTricks

Last updated