AWS - CloudWatch Enum

Sostieni HackTricks

CloudWatch

CloudWatch raccoglie dati di monitoraggio e operativi sotto forma di log/metriche/eventi fornendo una visualizzazione unificata delle risorse AWS, delle applicazioni e dei servizi. Gli eventi dei log di CloudWatch hanno un limite di dimensione di 256KB su ogni riga di log. Può impostare allarmi ad alta risoluzione, visualizzare log e metriche affiancati, intraprendere azioni automatizzate, risolvere problemi e scoprire informazioni per ottimizzare le applicazioni.

È possibile monitorare ad esempio i log di CloudTrail. Eventi che vengono monitorati:

Concetti chiave

Namespace

Uno spazio dei nomi è un contenitore per le metriche di CloudWatch. Aiuta a categorizzare e isolare le metriche, facilitando la gestione e l'analisi.

  • Esempi: AWS/EC2 per le metriche correlate a EC2, AWS/RDS per le metriche di 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 da servizi AWS, applicazioni personalizzate o integrazioni di terze parti.

  • Esempio: CPUUtilization, NetworkIn, DiskReadOps.

Dimensioni

Le dimensioni sono coppie chiave-valore che fanno parte delle metriche. Aiutano a identificare in modo univoco 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 ad attributi specifici.

  • 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 Conteggio campioni.

  • Esempio: Calcolare l'utilizzo medio della CPU in un periodo di un'ora.

Unità

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

  • Esempio: CPUUtilization potrebbe essere misurato in Percentuale, mentre NetworkIn potrebbe essere misurato in Byte.

Funzionalità di CloudWatch

Dashboard

I Dashboard di CloudWatch forniscono visualizzazioni personalizzabili delle metriche di AWS CloudWatch. È possibile creare e configurare dashboard per visualizzare dati e monitorare risorse in una singola visualizzazione, combinando diverse metriche da vari servizi AWS.

Caratteristiche principali:

  • Widget: Blocchi di costruzione dei dashboard, inclusi grafici, testo, allarmi e altro.

  • Personalizzazione: Layout e contenuto possono essere personalizzati per adattarsi alle esigenze di monitoraggio specifiche.

Esempio di caso d'uso:

  • Un singolo dashboard che mostra le metriche chiave per l'intero ambiente AWS, inclusi le istanze EC2, i database RDS e i bucket S3.

Flusso di metriche e Dati delle metriche

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

I Dati delle metriche 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 utilizzo della CPU, utilizzo della memoria, ecc., per le risorse AWS.

Esempio di caso d'uso:

  • Invio di metriche in tempo reale a un servizio di monitoraggio di terze parti per un'analisi avanzata.

  • Archiviazione delle metriche in un bucket Amazon S3 per l'archiviazione a lungo termine e la conformità.

Allarme

Gli Allarmi di CloudWatch monitorano le tue metriche e eseguono azioni in base a soglie predefinite. Quando una metrica supera una soglia, l'allarme può eseguire una o più azioni come inviare notifiche tramite SNS, attivare una policy di ridimensionamento automatico o eseguire una funzione AWS Lambda.

Componenti chiave:

  • Soglia: Il valore a cui scatta l'allarme.

  • Periodi di valutazione: Il numero di periodi durante i quali i dati vengono valutati.

  • Punti dati per l'allarme: Il numero di periodi con una soglia raggiunta necessari per attivare l'allarme.

  • Azioni: Cosa succede quando viene attivato uno stato di allarme (ad esempio, notifica tramite SNS).

Esempio di caso d'uso:

  • Monitoraggio dell'utilizzo della CPU dell'istanza EC2 e invio di 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. È possibile 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 sia l'aspetto normale del comportamento.

  • Banda di rilevamento delle anomalie: Una rappresentazione visiva dell'intervallo di valori attesi per una metrica.

Esempio di caso d'uso:

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

Regole Insight e Regole Insight gestite

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

Le Regole Insight gestite sono regole Insight preconfigurate fornite da AWS. Sono progettate per monitorare servizi AWS specifici o casi d'uso comuni e possono essere abilitate senza necessità di configurazioni dettagliate.

Esempio di caso d'uso:

  • Monitoraggio delle prestazioni di RDS: Abilita una regola Insight gestita per Amazon RDS che monitora indicatori chiave delle prestazioni come utilizzo della CPU, utilizzo della memoria e I/O del disco. Se una di queste metriche supera le 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 dalle applicazioni e dai sistemi dei servizi AWS (incluso CloudTrail) e dagli app/sistemi (l'Agente CloudWatch 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 raccolta di flussi di log che condividono le stesse impostazioni di conservazione, monitoraggio e controllo dell'accesso

Flusso di log

Una sequenza di eventi di log che condividono la stessa origine

Filtri di sottoscrizione

Definiscono un modello di filtro che corrisponde agli eventi in un particolare gruppo di log, li inviano a uno stream Kinesis Data Firehose, a uno stream 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 in cui sia necessario attivarne uno. In tal caso, CloudWatch può essere preparato per inviare un evento e eseguire alcune azioni automatiche (funzioni AWS Lambda, argomenti SNS, code SQS, flussi Kinesis)

Installazione dell'agente

È possibile installare degli agenti all'interno delle proprie macchine/container per inviare automaticamente i log a CloudWatch.

  • Creare un ruolo e collegarlo all'istanza con le autorizzazioni che consentono a CloudWatch di raccogliere dati dalle istanze oltre che interagire con il gestore di sistemi AWS SSM (CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM)

  • Scaricare e installare l'agente sull'istanza EC2 (https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip). È possibile scaricarlo dall'interno dell'EC2 o installarlo automaticamente utilizzando AWS System Manager selezionando il pacchetto AWS-ConfigureAWSPackage

  • Configurare e avviare l'agente di CloudWatch

Un gruppo di log ha molti flussi. Un flusso ha molti eventi. E all'interno di ciascun flusso, gli eventi sono garantiti di essere 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-Esploitation / Bypass

cloudwatch:DeleteAlarms,cloudwatch:PutMetricAlarm , cloudwatch:PutCompositeAlarm

Un attaccante con queste autorizzazioni potrebbe compromettere significativamente il monitoraggio e l'infrastruttura di allerta di un'organizzazione. Eliminando gli allarmi esistenti, un attaccante potrebbe disattivare avvisi cruciali che notificano agli amministratori problemi di prestazioni critici, violazioni della sicurezza o guasti operativi. Inoltre, creando o modificando allarmi metrici, l'attaccante potrebbe anche ingannare gli amministratori con falsi avvisi o silenziare allarmi legittimi, mascherando efficacemente attività dannose e impedendo risposte tempestive a incidenti reali.

Inoltre, con l'autorizzazione cloudwatch:PutCompositeAlarm, un attaccante sarebbe in grado di creare un loop o 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 ancora 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>] ]

Il seguente esempio 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 (totale di 30 minuti). Se l'utilizzo medio della CPU supera il 60% per almeno 4 di questi periodi, l'allarme verrà attivato 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 anche, 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.

{
"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 allarmi, soppressione di allarmi autentici e possibili mancate rilevazioni di incidenti reali.

cloudwatch:DeleteAlarmActions, cloudwatch:EnableAlarmActions , cloudwatch:SetAlarmState

Eliminando le azioni di allarme, l'attaccante potrebbe impedire che vengano attivate notifiche critiche e risposte automatizzate quando uno stato di allarme viene raggiunto, come ad esempio notificare agli amministratori o attivare attività di ridimensionamento automatico. Abilitare o riabilitare in modo inappropriato le azioni di allarme potrebbe anche portare a comportamenti inaspettati, sia riattivando azioni precedentemente disabilitate o modificando quali azioni vengono attivate, causando potenzialmente confusione e deviazione nella risposta agli incidenti.

Inoltre, un attaccante con le autorizzazioni potrebbe manipolare gli stati di allarme, potendo creare falsi allarmi per distrarre e confondere gli amministratori, o silenziare allarmi autentici per nascondere attività dannose in corso o fallimenti critici di sistema.

  • Se si utilizza SetAlarmState su un allarme composito, non è garantito che l'allarme composito torni al suo stato effettivo. Torna al suo stato effettivo solo una volta che uno qualsiasi dei suoi allarmi figlio cambia stato. Viene inoltre rivalutato se si aggiorna 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 avvisi genuini e possibili mancate rilevazioni di incidenti reali.

cloudwatch:DeleteAnomalyDetector, cloudwatch:PutAnomalyDetector

Un attaccante potrebbe compromettere la capacità di rilevare e rispondere a modelli o anomalie insolite nei dati metrici. Eliminando i rilevatori di anomalie esistenti, un attaccante potrebbe disattivare meccanismi critici di allerta; e creandoli o modificandoli, sarebbe in grado di configurarli in modo errato o creare falsi positivi per distrarre o sovraccaricare 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 una specifica istanza EC2 e semplicemente aggiungendo il parametro "ExcludedTimeRanges" con l'intervallo di tempo desiderato, sarebbe sufficiente per garantire che il rilevatore di anomalie non analizzi o segnali su dati rilevanti durante quel periodo.

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

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

Impatto Potenziale: Effetto diretto nella rilevazione di modelli 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 cruscotti. Queste autorizzazioni potrebbero essere sfruttate per rimuovere una visibilità critica sulle prestazioni e sulla salute dei sistemi, modificare i cruscotti per visualizzare dati incorretti o nascondere attività dannose.

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

Impatto Potenziale: Perdita di visibilità del monitoraggio e informazioni fuorvianti.

cloudwatch:DeleteInsightRules, cloudwatch:PutInsightRule ,cloudwatch:PutManagedInsightRule

Le regole Insight sono utilizzate per rilevare anomalie, ottimizzare le prestazioni e gestire le risorse in modo efficace. Eliminando le regole Insight esistenti, un attaccante potrebbe rimuovere capacità di monitoraggio critiche, lasciando il sistema cieco rispetto ai problemi di prestazioni e alle minacce alla sicurezza. Inoltre, un attaccante potrebbe creare o modificare regole Insight per generare dati fuorvianti o nascondere attività dannose, portando a diagnosi errate e risposte inadeguate 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 ai problemi di performance e anomalie, decisioni errate e potenziale occultamento di attività maligne o guasti di sistema.

cloudwatch:DisableInsightRules, cloudwatch:EnableInsightRules

Disabilitando regole di insight critiche, un attaccante potrebbe accecare efficacemente l'organizzazione rispetto a metriche chiave di performance e sicurezza. Al contrario, abilitando o configurando regole fuorvianti, potrebbe essere possibile generare dati falsi, creare rumore o nascondere attività maligne.

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

Impatto Potenziale: Confusione tra il team delle operazioni, che porta 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 ed eliminare flussi di dati metrici, compromettendo la sicurezza, il monitoraggio e l'integrità dei dati:

  • Creazione di flussi dannosi: Creare flussi metrici per inviare dati sensibili a destinazioni non autorizzate.

  • Manipolazione delle risorse: La creazione di nuovi flussi metrici con dati eccessivi potrebbe generare molto rumore, causando allarmi errati, mascherando problemi reali.

  • Disruzione del monitoraggio: Eliminando flussi metrici, gli attaccanti interromperebbero il flusso continuo dei dati di monitoraggio. In questo modo, le loro attività dannose sarebbero efficacemente nascoste.

Allo stesso modo, con il permesso cloudwatch:PutMetricData, sarebbe possibile aggiungere dati a un flusso metrico. Ciò potrebbe portare a un attacco 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: Disruzione nel flusso dei dati di monitoraggio, impattando la rilevazione di anomalie e incidenti, manipolazione delle risorse e aumento dei costi dovuto alla creazione di flussi metrici eccessivi.

cloudwatch:StopMetricStreams, cloudwatch:StartMetricStreams

Un attaccante potrebbe controllare il flusso dei flussi di dati metrici interessati (ogni flusso di dati se non vi è restrizione delle risorse). Con il permesso cloudwatch:StopMetricStreams, gli attaccanti potrebbero nascondere le loro attività dannose fermando i flussi metrici critici.

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 potrebbe essere in grado di aggiungere, modificare o rimuovere tag dalle risorse CloudWatch (attualmente solo allarmi e regole Contributor Insights). Ciò potrebbe interrompere le politiche di controllo degli accessi dell'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

Sostieni HackTricks

Last updated