AWS - CloudWatch Enum

Support HackTricks

CloudWatch

CloudWatch raccoglie dati di monitoraggio e operativi sotto forma di log/metriche/eventi, fornendo una visione unificata delle risorse AWS, delle applicazioni e dei servizi. Gli eventi di log di CloudWatch hanno 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:

Concetti chiave

Namespaces

Uno spazio dei nomi è 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 misurato in Percentuale, mentre NetworkIn potrebbe essere misurato in Byte.

Caratteristiche di CloudWatch

Dashboard

Le dashboard di CloudWatch 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 principali:

  • 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:

  • Una singola dashboard che mostra metriche chiave per l'intero ambiente AWS, incluse le istanze EC2, i database RDS e i bucket S3.

Flusso di metriche e dati metrici

I flussi di metriche 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 le dashboard personalizzate utilizzando strumenti al di fuori di AWS.

I dati metrici all'interno dei flussi di metriche 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

Gli allarmi di CloudWatch 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

I 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 appare.

  • 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 applicativo.

Regole di insight e regole di insight gestite

Le 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 in base alle quali devono essere intraprese azioni. Queste regole possono aiutarti a identificare anomalie o comportamenti insoliti nelle prestazioni e nell'utilizzo delle tue risorse.

Le 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.

Log di CloudWatch

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 gruppo di log) e possono essere esportati.

Elementi:

Gruppo di log

Una collezione di flussi di log che condividono le stesse impostazioni di retention, monitoraggio e controllo degli accessi

Flusso di log

Una sequenza di eventi di log che condividono la stessa fonte

Filtri di sottoscrizione

Definiscono un modello di filtro che corrisponde agli eventi in un particolare gruppo di log, inviandoli a un flusso Kinesis Data Firehose, a un flusso Kinesis o a una funzione Lambda

Monitoraggio ed eventi di CloudWatch

CloudWatch base aggrega i dati ogni 5 minuti (quello dettagliato 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 consentano 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). Puoi scaricarlo dall'interno dell'EC2 o installarlo automaticamente utilizzando AWS Systems Manager selezionando il pacchetto AWS-ConfigureAWSPackage

  • Configura e avvia l'agente CloudWatch

Un gruppo di log ha molti flussi. Un flusso ha molti eventi. E all'interno di ciascun flusso, gli eventi sono garantiti in ordine.

Enumerazione

# 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 critici di prestazioni, 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 anch'esso 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.

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 un'istanza EC2 specifica, 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 a più del 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 Datapoints to Alarm a 8640, sarebbe necessario che l'utilizzo della CPU fosse superiore al 99% ogni 10 secondi per tutto il periodo di 24 ore per attivare un allarme.

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

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 allerta per distrarre e confondere gli amministratori, o silenziare allerta genuine per nascondere attività malevole in corso o guasti critici del sistema.

  • Se utilizzi SetAlarmState su un allerta composita, l'allerta composita non è garantita a tornare al suo stato reale. Torna al suo stato reale solo una volta che uno dei suoi allerta figli cambia stato. Viene anche rivalutata se aggiorni la sua configurazione.

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 allarmi, soppressione di allarmi genuini 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.

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.

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

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

cloudwatch:DeleteDashboards, cloudwatch:PutDashboard

Un attaccante sarebbe in grado di 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.

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. Cancellando 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.

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 su 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.

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 eliminare 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, mascherando problemi reali.

  • Interruzione del monitoraggio: Eliminando 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.

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:

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.

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.

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 degli accessi basate su tag.

Riferimenti

Supporta HackTricks

Last updated