AWS - CloudWatch Enum

Support HackTricks

CloudWatch

CloudWatch collecte des données de surveillance et opérationnelles sous forme de journaux/métriques/événements fournissant une vue unifiée des ressources AWS, des applications et des services. Les événements de journal CloudWatch ont une limite de taille de 256 Ko par ligne de journal. Il peut définir des alarmes à haute résolution, visualiser les journaux et les métriques côte à côte, prendre des actions automatisées, résoudre des problèmes et découvrir des informations pour optimiser les applications.

Vous pouvez surveiller par exemple les journaux de CloudTrail. Les événements qui sont surveillés :

  • Changements dans les groupes de sécurité et les NACL

  • Démarrage, arrêt, redémarrage et terminaison des instances EC2

  • Changements dans les politiques de sécurité au sein de IAM et S3

  • Tentatives de connexion échouées à la console de gestion AWS

  • Appels API ayant entraîné un échec d'autorisation

Concepts clés

Espaces de noms

Un espace de noms est un conteneur pour les métriques CloudWatch. Il aide à catégoriser et isoler les métriques, facilitant leur gestion et leur analyse.

  • Exemples : AWS/EC2 pour les métriques liées à EC2, AWS/RDS pour les métriques RDS.

Métriques

Les métriques sont des points de données collectés au fil du temps qui représentent la performance ou l'utilisation des ressources AWS. Les métriques peuvent être collectées à partir des services AWS, des applications personnalisées ou des intégrations tierces.

  • Exemple : CPUUtilization, NetworkIn, DiskReadOps.

Dimensions

Les dimensions sont des paires clé-valeur qui font partie des métriques. Elles aident à identifier de manière unique une métrique et fournissent un contexte supplémentaire, avec un maximum de 30 dimensions pouvant être associées à une métrique. Les dimensions permettent également de filtrer et d'agréger les métriques en fonction d'attributs spécifiques.

  • Exemple : Pour les instances EC2, les dimensions peuvent inclure InstanceId, InstanceType et AvailabilityZone.

Statistiques

Les statistiques sont des calculs mathématiques effectués sur les données de métriques pour les résumer au fil du temps. Les statistiques courantes incluent Moyenne, Somme, Minimum, Maximum et Compte d'échantillons.

  • Exemple : Calculer la moyenne d'utilisation du CPU sur une période d'une heure.

Unités

Les unités sont le type de mesure associé à une métrique. Les unités aident à fournir un contexte et une signification aux données de métriques. Les unités courantes incluent Pourcentage, Octets, Secondes, Compte.

  • Exemple : CPUUtilization peut être mesuré en Pourcentage, tandis que NetworkIn peut être mesuré en Octets.

Fonctionnalités de CloudWatch

Tableau de bord

Les tableaux de bord CloudWatch fournissent des vues personnalisables de vos métriques AWS CloudWatch. Il est possible de créer et de configurer des tableaux de bord pour visualiser les données et surveiller les ressources dans une vue unique, combinant différentes métriques de divers services AWS.

Fonctionnalités clés :

  • Widgets : Éléments constitutifs des tableaux de bord, y compris des graphiques, du texte, des alarmes, et plus encore.

  • Personnalisation : La mise en page et le contenu peuvent être personnalisés pour répondre à des besoins de surveillance spécifiques.

Exemple de cas d'utilisation :

  • Un tableau de bord unique affichant les métriques clés pour l'ensemble de votre environnement AWS, y compris les instances EC2, les bases de données RDS et les compartiments S3.

Flux de métriques et données de métriques

Les flux de métriques dans AWS CloudWatch vous permettent de diffuser en continu les métriques CloudWatch vers une destination de votre choix en quasi temps réel. Cela est particulièrement utile pour la surveillance avancée, l'analyse et les tableaux de bord personnalisés utilisant des outils en dehors d'AWS.

Les données de métriques à l'intérieur des flux de métriques font référence aux mesures réelles ou aux points de données qui sont diffusés. Ces points de données représentent diverses métriques comme l'utilisation du CPU, l'utilisation de la mémoire, etc., pour les ressources AWS.

Exemple de cas d'utilisation :

  • Envoi de métriques en temps réel à un service de surveillance tiers pour une analyse avancée.

  • Archivage des métriques dans un compartiment Amazon S3 pour un stockage à long terme et la conformité.

Alarme

Les alarmes CloudWatch surveillent vos métriques et effectuent des actions basées sur des seuils prédéfinis. Lorsqu'une métrique dépasse un seuil, l'alarme peut effectuer une ou plusieurs actions telles que l'envoi de notifications via SNS, le déclenchement d'une politique d'auto-scaling ou l'exécution d'une fonction AWS Lambda.

Composants clés :

  • Seuil : La valeur à laquelle l'alarme se déclenche.

  • Périodes d'évaluation : Le nombre de périodes sur lesquelles les données sont évaluées.

  • Points de données à alerter : Le nombre de périodes avec un seuil atteint nécessaire pour déclencher l'alarme.

  • Actions : Ce qui se passe lorsqu'un état d'alarme est déclenché (par exemple, notifier via SNS).

Exemple de cas d'utilisation :

  • Surveiller l'utilisation du CPU d'une instance EC2 et envoyer une notification via SNS si elle dépasse 80 % pendant 5 minutes consécutives.

Détecteurs d'anomalies

Les détecteurs d'anomalies utilisent l'apprentissage automatique pour détecter automatiquement les anomalies dans vos métriques. Vous pouvez appliquer la détection d'anomalies à n'importe quelle métrique CloudWatch pour identifier les écarts par rapport aux modèles normaux qui pourraient indiquer des problèmes.

Composants clés :

  • Entraînement du modèle : CloudWatch utilise des données historiques pour entraîner un modèle et établir à quoi ressemble un comportement normal.

  • Bande de détection d'anomalies : Une représentation visuelle de la plage de valeurs attendue pour une métrique.

Exemple de cas d'utilisation :

  • Détecter des modèles d'utilisation du CPU inhabituels dans une instance EC2 qui pourraient indiquer une violation de sécurité ou un problème d'application.

Règles d'insight et règles d'insight gérées

Les règles d'insight vous permettent d'identifier des tendances, de détecter des pics ou d'autres modèles d'intérêt dans vos données de métriques en utilisant des expressions mathématiques puissantes pour définir les conditions sous lesquelles des actions doivent être prises. Ces règles peuvent vous aider à identifier des anomalies ou des comportements inhabituels dans la performance et l'utilisation de vos ressources.

Les règles d'insight gérées sont des règles d'insight préconfigurées fournies par AWS. Elles sont conçues pour surveiller des services AWS spécifiques ou des cas d'utilisation courants et peuvent être activées sans nécessiter de configuration détaillée.

Exemple de cas d'utilisation :

  • Surveillance des performances RDS : Activer une règle d'insight gérée pour Amazon RDS qui surveille les indicateurs de performance clés tels que l'utilisation du CPU, l'utilisation de la mémoire et les I/O de disque. Si l'une de ces métriques dépasse des seuils opérationnels sûrs, la règle peut déclencher une alerte ou une action d'atténuation automatisée.

Journaux CloudWatch

Permet de regrouper et surveiller les journaux des applications et des systèmes des services AWS (y compris CloudTrail) et des applications/systèmes (L'agent CloudWatch peut être installé sur un hôte). Les journaux peuvent être stockés indéfiniment (selon les paramètres du groupe de journaux) et peuvent être exportés.

Éléments :

Surveillance et événements CloudWatch

CloudWatch de base agrège les données toutes les 5 minutes (la détaillée le fait toutes les 1 minute). Après l'agrégation, il vérifie les seuils des alarmes au cas où il faudrait en déclencher une. Dans ce cas, CloudWatch peut être préparé à envoyer un événement et à effectuer certaines actions automatiques (fonctions AWS lambda, sujets SNS, files d'attente SQS, flux Kinesis)

Installation de l'agent

Vous pouvez installer des agents à l'intérieur de vos machines/conteneurs pour envoyer automatiquement les journaux à CloudWatch.

  • Créer un rôle et l'attacher à l'instance avec des autorisations permettant à CloudWatch de collecter des données des instances en plus d'interagir avec AWS Systems Manager SSM (CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM)

  • Télécharger et installer l'agent sur l'instance EC2 (https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip). Vous pouvez le télécharger depuis l'intérieur de l'EC2 ou l'installer automatiquement en utilisant AWS Systems Manager en sélectionnant le package AWS-ConfigureAWSPackage

  • Configurer et démarrer l'agent CloudWatch

Un groupe de journaux a plusieurs flux. Un flux a plusieurs événements. Et à l'intérieur de chaque flux, les événements sont garantis d'être dans l'ordre.

Énumération

# 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 attaquant avec ces permissions pourrait considérablement compromettre l'infrastructure de surveillance et d'alerte d'une organisation. En supprimant des alarmes existantes, un attaquant pourrait désactiver des alertes cruciales qui notifient les administrateurs de problèmes de performance critiques, de violations de sécurité ou de pannes opérationnelles. De plus, en créant ou en modifiant des alarmes métriques, l'attaquant pourrait également induire les administrateurs en erreur avec de fausses alertes ou faire taire des alarmes légitimes, masquant ainsi efficacement des activités malveillantes et empêchant des réponses rapides à des incidents réels.

De plus, avec la permission cloudwatch:PutCompositeAlarm, un attaquant serait en mesure de créer une boucle ou un cycle d'alarmes composites, où l'alarme composite A dépend de l'alarme composite B, et l'alarme composite B dépend également de l'alarme composite A. Dans ce scénario, il n'est pas possible de supprimer une alarme composite qui fait partie du cycle car il y a toujours une alarme composite qui dépend de cette alarme que vous souhaitez supprimer.

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>] ]

L'exemple suivant montre comment rendre une alarme de métrique inefficace :

  • Cette alarme de métrique surveille l'utilisation moyenne du CPU d'une instance EC2 spécifique, évalue la métrique toutes les 300 secondes et nécessite 6 périodes d'évaluation (30 minutes au total). Si l'utilisation moyenne du CPU dépasse 60 % pendant au moins 4 de ces périodes, l'alarme se déclenchera et enverra une notification au sujet SNS spécifié.

  • En modifiant le seuil pour qu'il soit supérieur à 99 %, en réglant la période à 10 secondes, les périodes d'évaluation à 8640 (puisque 8640 périodes de 10 secondes équivalent à 1 jour), et les points de données à alarme à 8640 également, il serait nécessaire que l'utilisation du CPU soit supérieure à 99 % toutes les 10 secondes pendant toute la période de 24 heures pour déclencher une alarme.

{
"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"
}

Impact potentiel : Manque de notifications pour des événements critiques, problèmes potentiellement non détectés, fausses alertes, suppression d'alertes authentiques et détections potentiellement manquées d'incidents réels.

cloudwatch:DeleteAlarmActions, cloudwatch:EnableAlarmActions, cloudwatch:SetAlarmState

En supprimant les actions d'alarme, l'attaquant pourrait empêcher des alertes critiques et des réponses automatisées d'être déclenchées lorsqu'un état d'alarme est atteint, comme notifier les administrateurs ou déclencher des activités d'auto-scaling. Activer ou réactiver des actions d'alarme de manière inappropriée pourrait également entraîner des comportements inattendus, soit en réactivant des actions précédemment désactivées, soit en modifiant les actions qui sont déclenchées, ce qui pourrait causer de la confusion et une mauvaise orientation dans la réponse aux incidents.

De plus, un attaquant ayant la permission pourrait manipuler les états d'alarme, étant capable de créer de fausses alarmes pour distraire et confondre les administrateurs, ou de faire taire de véritables alarmes pour cacher des activités malveillantes en cours ou des pannes critiques du système.

  • Si vous utilisez SetAlarmState sur une alarme composite, l'alarme composite n'est pas garantie de revenir à son état réel. Elle ne revient à son état réel que lorsque l'un de ses alarmes enfants change d'état. Elle est également réévaluée si vous mettez à jour sa configuration.

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>]

Impact potentiel : Manque de notifications pour des événements critiques, problèmes potentiellement non détectés, fausses alertes, suppression d'alertes authentiques et détections potentiellement manquées d'incidents réels.

cloudwatch:DeleteAnomalyDetector, cloudwatch:PutAnomalyDetector

Un attaquant pourrait compromettre la capacité de détection et de réponse à des modèles ou des anomalies inhabituels dans les données métriques. En supprimant des détecteurs d'anomalies existants, un attaquant pourrait désactiver des mécanismes d'alerte critiques ; et en les créant ou en les modifiant, il pourrait soit mal configurer, soit créer de faux positifs afin de distraire ou de submerger la surveillance.

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>]

L'exemple suivant montre comment rendre un détecteur d'anomalies de métriques inefficace. Ce détecteur d'anomalies de métriques surveille l'utilisation moyenne du CPU d'une instance EC2 spécifique, et il suffirait d'ajouter le paramètre “ExcludedTimeRanges” avec la plage horaire souhaitée pour s'assurer que le détecteur d'anomalies n'analyse ni n'alerte sur des données pertinentes pendant cette période.

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

Impact potentiel : Effet direct sur la détection de modèles inhabituels ou de menaces à la sécurité.

cloudwatch:DeleteDashboards, cloudwatch:PutDashboard

Un attaquant pourrait compromettre les capacités de surveillance et de visualisation d'une organisation en créant, modifiant ou supprimant ses tableaux de bord. Ces autorisations pourraient être utilisées pour supprimer une visibilité critique sur la performance et la santé des systèmes, modifier les tableaux de bord pour afficher des données incorrectes ou cacher des activités malveillantes.

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

Impact potentiel : Perte de visibilité de surveillance et informations trompeuses.

cloudwatch:DeleteInsightRules, cloudwatch:PutInsightRule, cloudwatch:PutManagedInsightRule

Les règles d'insight sont utilisées pour détecter des anomalies, optimiser les performances et gérer les ressources efficacement. En supprimant les règles d'insight existantes, un attaquant pourrait éliminer des capacités de surveillance critiques, laissant le système aveugle aux problèmes de performance et aux menaces de sécurité. De plus, un attaquant pourrait créer ou modifier des règles d'insight pour générer des données trompeuses ou cacher des activités malveillantes, entraînant des diagnostics incorrects et des réponses inappropriées de l'équipe des opérations.

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>

Impact potentiel : Difficulté à détecter et à répondre aux problèmes de performance et aux anomalies, prise de décision mal informée et potentiel dissimulation d'activités malveillantes ou de pannes système.

cloudwatch:DisableInsightRules, cloudwatch:EnableInsightRules

En désactivant des règles d'insight critiques, un attaquant pourrait effectivement aveugler l'organisation sur des métriques clés de performance et de sécurité. Inversement, en activant ou en configurant des règles trompeuses, il pourrait être possible de générer des données fausses, de créer du bruit ou de cacher une activité malveillante.

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

Impact potentiel : Confusion au sein de l'équipe des opérations, entraînant des réponses retardées aux problèmes réels et des actions inutiles basées sur de fausses alertes.

cloudwatch:DeleteMetricStream , cloudwatch:PutMetricStream , cloudwatch:PutMetricData

Un attaquant avec les permissions cloudwatch:DeleteMetricStream, cloudwatch:PutMetricStream serait capable de créer et de supprimer des flux de données métriques, compromettant la sécurité, la surveillance et l'intégrité des données :

  • Créer des flux malveillants : Créer des flux métriques pour envoyer des données sensibles vers des destinations non autorisées.

  • Manipulation des ressources : La création de nouveaux flux métriques avec des données excessives pourrait produire beaucoup de bruit, entraînant des alertes incorrectes, masquant de véritables problèmes.

  • Perturbation de la surveillance : En supprimant des flux métriques, les attaquants perturberaient le flux continu de données de surveillance. De cette manière, leurs activités malveillantes seraient efficacement cachées.

De même, avec la permission cloudwatch:PutMetricData, il serait possible d'ajouter des données à un flux métrique. Cela pourrait entraîner un DoS en raison de la quantité de données inappropriées ajoutées, le rendant complètement inutile.

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>]

Exemple d'ajout de données correspondant à 70 % d'utilisation du CPU sur une instance EC2 donnée :

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

Impact potentiel : Disruption dans le flux de données de surveillance, impactant la détection des anomalies et des incidents, manipulation des ressources et augmentation des coûts en raison de la création de flux de métriques excessifs.

cloudwatch:StopMetricStreams, cloudwatch:StartMetricStreams

Un attaquant contrôlerait le flux des flux de données de métriques affectés (chaque flux de données s'il n'y a pas de restriction de ressource). Avec la permission cloudwatch:StopMetricStreams, les attaquants pourraient cacher leurs activités malveillantes en arrêtant des flux de métriques critiques.

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

Impact potentiel : Perturbation du flux de données de surveillance, impactant la détection des anomalies et des incidents.

cloudwatch:TagResource, cloudwatch:UntagResource

Un attaquant pourrait ajouter, modifier ou supprimer des balises des ressources CloudWatch (actuellement uniquement des alarmes et des règles Contributor Insights). Cela pourrait perturber les politiques de contrôle d'accès de votre organisation basées sur des balises.

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

Impact potentiel : Perturbation des politiques de contrôle d'accès basées sur des balises.

Références

Soutenir HackTricks

Last updated