# AWS - CloudWatch Enum

{{#include ../../../../banners/hacktricks-training.md}}

## CloudWatch

**CloudWatch** **colleziona** dati di monitoraggio e operativi **sotto forma di log/metriche/eventi**, fornendo una **visione unificata delle risorse AWS**, delle applicazioni e dei servizi.\
CloudWatch Log Event ha una **limitazione di dimensione di 256KB per ogni riga di log**.\
Può impostare **allarmi ad alta risoluzione**, visualizzare **log** e **metriche** affiancati, intraprendere azioni automatiche, risolvere problemi e scoprire informazioni per ottimizzare le applicazioni.

Puoi monitorare, ad esempio, i log di CloudTrail. Gli eventi monitorati includono:

- Modifiche ai Gruppi di Sicurezza e NACL
- Avvio, arresto, riavvio e terminazione delle istanze EC2
- Modifiche alle Politiche di Sicurezza all'interno di IAM e S3
- Tentativi di accesso falliti alla Console di Gestione AWS
- Chiamate API che hanno portato a un'autorizzazione fallita
- Filtri per cercare in cloudwatch: [https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html)

## Concetti chiave

### Namespaces

Un namespace è un contenitore per le metriche di CloudWatch. Aiuta a categorizzare e isolare le metriche, rendendo più facile gestirle e analizzarle.

- **Esempi**: AWS/EC2 per metriche relative a EC2, AWS/RDS per metriche RDS.

### Metriche

Le metriche sono punti dati raccolti nel tempo che rappresentano le prestazioni o l'utilizzo delle risorse AWS. Le metriche possono essere raccolte dai servizi AWS, da applicazioni personalizzate o da integrazioni di terze parti.

- **Esempio**: CPUUtilization, NetworkIn, DiskReadOps.

### Dimensioni

Le dimensioni sono coppie chiave-valore che fanno parte delle metriche. Aiutano a identificare univocamente una metrica e forniscono contesto aggiuntivo, essendo 30 il numero massimo di dimensioni che possono essere associate a una metrica. Le dimensioni consentono anche di filtrare e aggregare le metriche in base a specifici attributi.

- **Esempio**: Per le istanze EC2, le dimensioni potrebbero includere InstanceId, InstanceType e AvailabilityZone.

### Statistiche

Le statistiche sono calcoli matematici eseguiti sui dati delle metriche per riassumerli nel tempo. Le statistiche comuni includono Media, Somma, Minimo, Massimo e ConteggioCampioni.

- **Esempio**: Calcolare la media dell'utilizzo della CPU su un periodo di un'ora.

### Unità

Le unità sono il tipo di misura associato a una metrica. Le unità aiutano a fornire contesto e significato ai dati metrici. Le unità comuni includono Percentuale, Byte, Secondi, Conteggio.

- **Esempio**: CPUUtilization potrebbe essere misurata in Percentuale, mentre NetworkIn potrebbe essere misurata in Byte.

## Caratteristiche di CloudWatch

### Dashboard

**CloudWatch Dashboards** forniscono **viste personalizzabili delle metriche di AWS CloudWatch**. È possibile creare e configurare dashboard per visualizzare i dati e monitorare le risorse in un'unica vista, combinando diverse metriche da vari servizi AWS.

**Caratteristiche chiave**:

- **Widget**: Blocchi di costruzione delle dashboard, inclusi grafici, testo, allarmi e altro.
- **Personalizzazione**: Layout e contenuto possono essere personalizzati per soddisfare esigenze di monitoraggio specifiche.

**Esempio di caso d'uso**:

- Un'unica dashboard che mostra metriche chiave per l'intero ambiente AWS, incluse le istanze EC2, i database RDS e i bucket S3.

### Metric Stream e Dati Metrici

**Metric Streams** in AWS CloudWatch ti consentono di trasmettere continuamente le metriche di CloudWatch a una destinazione a tua scelta in tempo quasi reale. Questo è particolarmente utile per il monitoraggio avanzato, l'analisi e dashboard personalizzati utilizzando strumenti al di fuori di AWS.

**Dati Metrici** all'interno dei Metric Streams si riferiscono alle misurazioni effettive o ai punti dati che vengono trasmessi. Questi punti dati rappresentano varie metriche come l'utilizzo della CPU, l'uso della memoria, ecc., per le risorse AWS.

**Esempio di caso d'uso**:

- Inviare metriche in tempo reale a un servizio di monitoraggio di terze parti per un'analisi avanzata.
- Archiviare metriche in un bucket Amazon S3 per la conservazione a lungo termine e la conformità.

### Allarme

**CloudWatch Alarms** monitorano le tue metriche e intraprendono azioni basate su soglie predefinite. Quando una metrica supera una soglia, l'allarme può eseguire una o più azioni come inviare notifiche tramite SNS, attivare una politica di auto-scaling o eseguire una funzione AWS Lambda.

**Componenti chiave**:

- **Soglia**: Il valore al quale l'allarme si attiva.
- **Periodi di valutazione**: Il numero di periodi su cui i dati vengono valutati.
- **Punti dati per allarme**: Il numero di periodi con una soglia raggiunta necessaria per attivare l'allarme.
- **Azioni**: Cosa succede quando viene attivato uno stato di allarme (ad es., notificare tramite SNS).

**Esempio di caso d'uso**:

- Monitorare l'utilizzo della CPU delle istanze EC2 e inviare una notifica tramite SNS se supera l'80% per 5 minuti consecutivi.

### Rilevatori di anomalie

**Rilevatori di anomalie** utilizzano l'apprendimento automatico per rilevare automaticamente anomalie nelle tue metriche. Puoi applicare il rilevamento delle anomalie a qualsiasi metrica di CloudWatch per identificare deviazioni dai modelli normali che potrebbero indicare problemi.

**Componenti chiave**:

- **Addestramento del modello**: CloudWatch utilizza dati storici per addestrare un modello e stabilire quale comportamento è normale.
- **Banda di rilevamento delle anomalie**: Una rappresentazione visiva dell'intervallo di valori attesi per una metrica.

**Esempio di caso d'uso**:

- Rilevare modelli di utilizzo della CPU insoliti in un'istanza EC2 che potrebbero indicare una violazione della sicurezza o un problema dell'applicazione.

### Regole di Insight e Regole di Insight Gestite

**Regole di Insight** ti consentono di identificare tendenze, rilevare picchi o altri modelli di interesse nei tuoi dati metrici utilizzando **espressioni matematiche potenti** per definire le condizioni sotto le quali devono essere intraprese azioni. Queste regole possono aiutarti a identificare anomalie o comportamenti insoliti nelle prestazioni e nell'utilizzo delle tue risorse.

**Regole di Insight Gestite** sono regole di insight **preconfigurate fornite da AWS**. Sono progettate per monitorare servizi AWS specifici o casi d'uso comuni e possono essere attivate senza necessità di configurazione dettagliata.

**Esempio di caso d'uso**:

- Monitorare le prestazioni di RDS: Abilitare una regola di insight gestita per Amazon RDS che monitora indicatori chiave di prestazione come l'utilizzo della CPU, l'uso della memoria e l'I/O del disco. Se una di queste metriche supera soglie operative sicure, la regola può attivare un avviso o un'azione di mitigazione automatizzata.

### CloudWatch Logs <a href="#cloudwatch-logs" id="cloudwatch-logs"></a>

Consente di **aggregare e monitorare i log delle applicazioni** e dei sistemi dai **servizi AWS** (incluso CloudTrail) e **da app/sistemi** (**CloudWatch Agent** può essere installato su un host). I log possono essere **archiviati indefinitamente** (a seconda delle impostazioni del Log Group) e possono essere esportati.

**Elementi**:
| Term                     | Definizione                                                                                                                                                 |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Log Group**            | Una **collezione di log stream** che condividono le stesse impostazioni di retention, monitoraggio e controllo degli accessi                                   |
| **Log Stream**           | Una sequenza di **eventi di log** che condividono la **stessa fonte**                                                                                      |
| **Subscription Filters** | Definiscono un **modello di filtro che corrisponde agli eventi** in un particolare log group, inviandoli a un flusso Kinesis Data Firehose, a un flusso Kinesis o a una funzione Lambda |

### Monitoraggio e Eventi di CloudWatch

CloudWatch **base** aggrega i dati **ogni 5 minuti** (quella **dettagliata** lo fa **ogni 1 minuto**). Dopo l'aggregazione, **controlla le soglie degli allarmi** nel caso debba attivarne uno.\
In tal caso, CloudWatch può essere preparato a inviare un evento e intraprendere alcune azioni automatiche (funzioni AWS lambda, argomenti SNS, code SQS, flussi Kinesis)

### Installazione dell'Agente

Puoi installare agenti all'interno delle tue macchine/contenitori per inviare automaticamente i log a CloudWatch.

- **Crea** un **ruolo** e **allega** ad esso l'**istanza** con permessi che consentono a CloudWatch di raccogliere dati dalle istanze oltre a interagire con AWS Systems Manager SSM (CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM)
- **Scarica** e **installa** l'**agente** sull'istanza EC2 ([https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip](https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip)). Puoi scaricarlo dall'interno dell'EC2 o installarlo automaticamente utilizzando AWS Systems Manager selezionando il pacchetto AWS-ConfigureAWSPackage
- **Configura** e **avvia** il CloudWatch Agent

Un log group ha molti stream. Uno stream ha molti eventi. E all'interno di ogni stream, gli eventi sono garantiti in ordine.

## Enumerazione
```bash
# 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 attaccante con questi permessi potrebbe compromettere significativamente l'infrastruttura di monitoraggio e allerta di un'organizzazione. Cancellando allarmi esistenti, un attaccante potrebbe disabilitare avvisi cruciali che notificano gli amministratori di problemi di prestazioni critici, violazioni della sicurezza o guasti operativi. Inoltre, creando o modificando allarmi metrici, l'attaccante potrebbe anche fuorviare gli amministratori con falsi avvisi o silenziare allarmi legittimi, mascherando efficacemente attività malevole e impedendo risposte tempestive a incidenti reali.

Inoltre, con il permesso **`cloudwatch:PutCompositeAlarm`**, un attaccante sarebbe in grado di creare un ciclo di allarmi compositi, dove l'allarme composito A dipende dall'allarme composito B, e l'allarme composito B dipende anche dall'allarme composito A. In questo scenario, non è possibile eliminare alcun allarme composito che fa parte del ciclo perché c'è sempre un allarme composito che dipende da quell'allarme che si desidera eliminare.
```bash
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'esempio seguente mostra come rendere inefficace un allarme metrico:

- Questo allarme metrico monitora l'utilizzo medio della CPU di una specifica istanza EC2, valuta la metrica ogni 300 secondi e richiede 6 periodi di valutazione (30 minuti in totale). Se l'utilizzo medio della CPU supera il 60% per almeno 4 di questi periodi, l'allarme si attiverà e invierà una notifica al topic SNS specificato.
- Modificando la soglia per essere superiore al 99%, impostando il periodo a 10 secondi, i periodi di valutazione a 8640 (poiché 8640 periodi di 10 secondi equivalgono a 1 giorno) e i punti dati per l'allarme a 8640, sarebbe necessario che l'utilizzo della CPU fosse superiore al 99% ogni 10 secondi per l'intero periodo di 24 ore per attivare un allarme.

{{#tabs }}
{{#tab name="Original Metric Alarm" }}
```json
{
"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"
}
```
{{#endtab }}

{{#tab name="Modified Metric Alarm" }}
```json
{
"Namespace": "AWS/EC2",
"MetricName": "CPUUtilization",
"Dimensions": [
{
"Name": "InstanceId",
"Value": "i-0645d6d414dadf9f8"
}
],
"AlarmActions": [],
"ComparisonOperator": "GreaterThanThreshold",
"DatapointsToAlarm": 8640,
"EvaluationPeriods": 8640,
"Period": 10,
"Statistic": "Average",
"Threshold": 99,
"AlarmDescription": "CPU Utilization of i-01234567890123456 with 60% as threshold",
"AlarmName": "Instance i-0645d6d414dadf9f8 CPU Utilization"
}
```
{{#endtab }}
{{#endtabs }}

**Impatto Potenziale**: Mancanza di notifiche per eventi critici, potenziali problemi non rilevati, falsi allerta, soppressione di allerta genuine e potenzialmente rilevamenti mancati di incidenti reali.

### **`cloudwatch:DeleteAlarmActions`, `cloudwatch:EnableAlarmActions`, `cloudwatch:SetAlarmState`**

Eliminando le azioni di allerta, l'attaccante potrebbe impedire che vengano attivati avvisi critici e risposte automatiche quando viene raggiunto uno stato di allerta, come notificare gli amministratori o attivare attività di auto-scaling. Abilitare o riabilitare in modo inappropriato le azioni di allerta potrebbe anche portare a comportamenti imprevisti, sia riattivando azioni precedentemente disabilitate sia modificando quali azioni vengono attivate, causando potenzialmente confusione e deviazione nella risposta agli incidenti.

Inoltre, un attaccante con il permesso potrebbe manipolare gli stati di allerta, essendo in grado di creare falsi allarmi per distrarre e confondere gli amministratori, o silenziare allarmi genuini per nascondere attività malevole in corso o gravi guasti di sistema.

- Se utilizzi **`SetAlarmState`** su un allarme composito, l'allarme composito non è garantito a tornare al suo stato effettivo. Torna al suo stato effettivo solo una volta che uno dei suoi allarmi figli cambia stato. Viene anche rivalutato se aggiorni la sua configurazione.
```bash
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>]
```
**Impatto Potenziale**: Mancanza di notifiche per eventi critici, potenziali problemi non rilevati, falsi allerta, soppressione di allerta genuine e potenzialmente rilevamenti mancati di incidenti reali.

### **`cloudwatch:DeleteAnomalyDetector`, `cloudwatch:PutAnomalyDetector`**

Un attaccante sarebbe in grado di compromettere la capacità di rilevare e rispondere a schemi o anomalie insolite nei dati delle metriche. Cancellando i rilevatori di anomalie esistenti, un attaccante potrebbe disabilitare meccanismi di allerta critici; e creando o modificandoli, sarebbe in grado di misconfigurare o creare falsi positivi per distrarre o sopraffare il monitoraggio.
```bash
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'esempio seguente mostra come rendere inefficace un rilevatore di anomalie metriche. Questo rilevatore di anomalie metriche monitora l'utilizzo medio della CPU di un'istanza EC2 specifica, e basta aggiungere il parametro “ExcludedTimeRanges” con l'intervallo di tempo desiderato per garantire che il rilevatore di anomalie non analizzi né avvisi su dati rilevanti durante quel periodo.

{{#tabs }}
{{#tab name="Original Metric Anomaly Detector" }}
```json
{
"SingleMetricAnomalyDetector": {
"Namespace": "AWS/EC2",
"MetricName": "CPUUtilization",
"Stat": "Average",
"Dimensions": [
{
"Name": "InstanceId",
"Value": "i-0123456789abcdefg"
}
]
}
}
```
{{#endtab }}

{{#tab name="Rilevatore di Anomalie con Metriche Modificate" }}
```json
{
"SingleMetricAnomalyDetector": {
"Namespace": "AWS/EC2",
"MetricName": "CPUUtilization",
"Stat": "Average",
"Dimensions": [
{
"Name": "InstanceId",
"Value": "i-0123456789abcdefg"
}
]
},
"Configuration": {
"ExcludedTimeRanges": [
{
"StartTime": "2023-01-01T00:00:00Z",
"EndTime": "2053-01-01T23:59:59Z"
}
],
"Timezone": "Europe/Madrid"
}
}
```
{{#endtab }}
{{#endtabs }}

**Impatto Potenziale**: Effetto diretto nella rilevazione di schemi insoliti o minacce alla sicurezza.

### **`cloudwatch:DeleteDashboards`, `cloudwatch:PutDashboard`**

Un attaccante potrebbe compromettere le capacità di monitoraggio e visualizzazione di un'organizzazione creando, modificando o eliminando i suoi dashboard. Queste autorizzazioni potrebbero essere sfruttate per rimuovere la visibilità critica sulle prestazioni e sulla salute dei sistemi, alterare i dashboard per visualizzare dati errati o nascondere attività malevole.
```bash
aws cloudwatch delete-dashboards --dashboard-names <value>
aws cloudwatch put-dashboard --dashboard-name <value> --dashboard-body <value>
```
**Impatto Potenziale**: Perdita di visibilità di monitoraggio e informazioni fuorvianti.

### **`cloudwatch:DeleteInsightRules`, `cloudwatch:PutInsightRule`, `cloudwatch:PutManagedInsightRule`**

Le regole di insight vengono utilizzate per rilevare anomalie, ottimizzare le prestazioni e gestire le risorse in modo efficace. Eliminando le regole di insight esistenti, un attaccante potrebbe rimuovere capacità di monitoraggio critiche, lasciando il sistema cieco a problemi di prestazioni e minacce alla sicurezza. Inoltre, un attaccante potrebbe creare o modificare regole di insight per generare dati fuorvianti o nascondere attività dannose, portando a diagnosi errate e risposte inappropriate da parte del team operativo.
```bash
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>
```
**Impatto Potenziale**: Difficoltà nel rilevare e rispondere a problemi di prestazioni e anomalie, decisioni errate e potenzialmente nascondere attività malevole o guasti di sistema.

### **`cloudwatch:DisableInsightRules`, `cloudwatch:EnableInsightRules`**

Disabilitando regole di insight critiche, un attaccante potrebbe effettivamente accecare l'organizzazione rispetto a metriche chiave di prestazioni e sicurezza. Al contrario, abilitando o configurando regole fuorvianti, potrebbe essere possibile generare dati falsi, creare rumore o nascondere attività malevole.
```bash
aws cloudwatch disable-insight-rules --rule-names <value>
aws cloudwatch enable-insight-rules --rule-names <value>
```
**Impatto Potenziale**: Confusione tra il team operativo, portando a risposte ritardate a problemi reali e azioni non necessarie basate su falsi allarmi.

### **`cloudwatch:DeleteMetricStream` , `cloudwatch:PutMetricStream` , `cloudwatch:PutMetricData`**

Un attaccante con i permessi **`cloudwatch:DeleteMetricStream`** , **`cloudwatch:PutMetricStream`** sarebbe in grado di creare e cancellare flussi di dati metrici, compromettendo la sicurezza, il monitoraggio e l'integrità dei dati:

- **Creare flussi malevoli**: Creare flussi metrici per inviare dati sensibili a destinazioni non autorizzate.
- **Manipolazione delle risorse**: La creazione di nuovi flussi metrici con dati eccessivi potrebbe produrre molto rumore, causando allarmi errati e mascherando problemi reali.
- **Interruzione del monitoraggio**: Cancellando i flussi metrici, gli attaccanti interromperebbero il flusso continuo di dati di monitoraggio. In questo modo, le loro attività malevole sarebbero efficacemente nascoste.

Allo stesso modo, con il permesso **`cloudwatch:PutMetricData`**, sarebbe possibile aggiungere dati a un flusso metrico. Questo potrebbe portare a un DoS a causa della quantità di dati impropri aggiunti, rendendolo completamente inutile.
```bash
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>]
```
Esempio di aggiunta di dati corrispondenti al 70% di utilizzo della CPU su una determinata istanza EC2:
```bash
aws cloudwatch put-metric-data --namespace "AWS/EC2" --metric-name "CPUUtilization" --value 70 --unit "Percent" --dimensions "InstanceId=i-0123456789abcdefg"
```
**Impatto Potenziale**: Interruzione nel flusso dei dati di monitoraggio, che influisce sulla rilevazione di anomalie e incidenti, manipolazione delle risorse e aumento dei costi a causa della creazione di flussi di metriche eccessivi.

### **`cloudwatch:StopMetricStreams`, `cloudwatch:StartMetricStreams`**

Un attaccante controllerebbe il flusso dei flussi di dati metrici interessati (ogni flusso di dati se non ci sono restrizioni sulle risorse). Con il permesso **`cloudwatch:StopMetricStreams`**, gli attaccanti potrebbero nascondere le loro attività malevole fermando flussi di metriche critiche.
```bash
aws cloudwatch stop-metric-streams --names <value>
aws cloudwatch start-metric-streams --names <value>
```
**Impatto Potenziale**: Interruzione nel flusso dei dati di monitoraggio, influenzando la rilevazione di anomalie e incidenti.

### **`cloudwatch:TagResource`, `cloudwatch:UntagResource`**

Un attaccante sarebbe in grado di aggiungere, modificare o rimuovere tag dalle risorse di CloudWatch (attualmente solo allarmi e regole di Contributor Insights). Questo potrebbe interrompere le politiche di controllo degli accessi della tua organizzazione basate sui tag.
```bash
aws cloudwatch tag-resource --resource-arn <value> --tags <value>
aws cloudwatch untag-resource --resource-arn <value> --tag-keys <value>
```
**Impatto Potenziale**: Interruzione delle politiche di controllo accessi basate su tag.

## Riferimenti

- [https://cloudsecdocs.com/aws/services/logging/cloudwatch/](https://cloudsecdocs.com/aws/services/logging/cloudwatch/#general-info)
- [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatch.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatch.html)
- [https://docs.aws.amazon.com/es_es/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric](https://docs.aws.amazon.com/es_es/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)

{{#include ../../../../banners/hacktricks-training.md}}
