AWS - CloudWatch Enum

Support HackTricks

CloudWatch

CloudWatch збирає моніторингові та операційні дані у формі журналів/метрик/подій, надаючи уніфікований огляд ресурсів AWS, додатків та сервісів. Подія журналу CloudWatch має обмеження розміру 256KB на кожен рядок журналу. Він може встановлювати сигнали високої роздільної здатності, візуалізувати журнали та метрики поруч, виконувати автоматизовані дії, усувати проблеми та виявляти інсайти для оптимізації додатків.

Ви можете моніторити, наприклад, журнали з CloudTrail. Події, які моніторяться:

  • Зміни в групах безпеки та NACL

  • Запуск, зупинка, перезавантаження та завершення роботи EC2 інстансів

  • Зміни в політиках безпеки в IAM та S3

  • Невдалі спроби входу до консолі управління AWS

  • Виклики API, які призвели до невдалої авторизації

Key concepts

Namespaces

Простір імен - це контейнер для метрик CloudWatch. Він допомагає категоризувати та ізолювати метрики, спрощуючи їх управління та аналіз.

  • Приклади: AWS/EC2 для метрик, пов'язаних з EC2, AWS/RDS для метрик RDS.

Metrics

Метрики - це точки даних, зібрані з часом, які представляють продуктивність або використання ресурсів AWS. Метрики можуть бути зібрані з сервісів AWS, користувацьких додатків або інтеграцій сторонніх розробників.

  • Приклад: CPUUtilization, NetworkIn, DiskReadOps.

Dimensions

Виміри - це пари ключ-значення, які є частиною метрик. Вони допомагають унікально ідентифікувати метрику та надають додатковий контекст, при цьому 30 - це максимальна кількість вимірів, які можуть бути асоційовані з метрикою. Виміри також дозволяють фільтрувати та агрегувати метрики на основі конкретних атрибутів.

  • Приклад: Для EC2 інстансів виміри можуть включати InstanceId, InstanceType та AvailabilityZone.

Statistics

Статистика - це математичні обчислення, виконані над даними метрик для їх узагальнення з часом. Загальні статистичні показники включають середнє, суму, мінімум, максимум та кількість вибірок.

  • Приклад: Обчислення середнього використання ЦП за період в одну годину.

Units

Одиниці - це тип вимірювання, пов'язаний з метрикою. Одиниці допомагають надати контекст і значення даним метрик. Загальні одиниці включають відсотки, байти, секунди, кількість.

  • Приклад: CPUUtilization може вимірюватися в відсотках, тоді як NetworkIn може вимірюватися в байтах.

CloudWatch Features

Dashboard

CloudWatch Dashboards надають настроювані перегляди ваших метрик AWS CloudWatch. Можна створювати та налаштовувати інформаційні панелі для візуалізації даних та моніторингу ресурсів в одному огляді, поєднуючи різні метрики з різних сервісів AWS.

Ключові функції:

  • Віджети: Будівельні блоки інформаційних панелей, включаючи графіки, текст, сигнали та інше.

  • Налаштування: Макет та вміст можуть бути налаштовані відповідно до конкретних потреб моніторингу.

Приклад використання:

  • Одна інформаційна панель, що показує ключові метрики для вашого всього середовища AWS, включаючи EC2 інстанси, бази даних RDS та S3 контейнери.

Metric Stream and Metric Data

Metric Streams в AWS CloudWatch дозволяють вам безперервно транслювати метрики CloudWatch до обраного вами місця призначення в майже реальному часі. Це особливо корисно для розширеного моніторингу, аналітики та користувацьких інформаційних панелей з використанням інструментів поза AWS.

Дані метрик всередині Metric Streams відносяться до фактичних вимірювань або точок даних, які транслюються. Ці точки даних представляють різні метрики, такі як використання ЦП, використання пам'яті тощо, для ресурсів AWS.

Приклад використання:

  • Надсилання реальних метрик до стороннього сервісу моніторингу для розширеного аналізу.

  • Архівування метрик в контейнері Amazon S3 для довгострокового зберігання та відповідності.

Alarm

CloudWatch Alarms моніторять ваші метрики та виконують дії на основі попередньо визначених порогів. Коли метрика перевищує поріг, сигнал може виконати одну або кілька дій, таких як надсилання сповіщень через SNS, активація політики автоматичного масштабування або виконання функції AWS Lambda.

Ключові компоненти:

  • Поріг: Значення, при якому сигнал спрацьовує.

  • Періоди оцінки: Кількість періодів, протягом яких дані оцінюються.

  • Точки даних для сигналу: Кількість періодів з досягнутим порогом, необхідна для активації сигналу.

  • Дії: Що відбувається, коли спрацьовує стан сигналу (наприклад, сповіщення через SNS).

Приклад використання:

  • Моніторинг використання ЦП EC2 інстанса та надсилання сповіщення через SNS, якщо воно перевищує 80% протягом 5 послідовних хвилин.

Anomaly Detectors

Anomaly Detectors використовують машинне навчання для автоматичного виявлення аномалій у ваших метриках. Ви можете застосувати виявлення аномалій до будь-якої метрики CloudWatch, щоб виявити відхилення від нормальних патернів, які можуть вказувати на проблеми.

Ключові компоненти:

  • Навчання моделі: CloudWatch використовує історичні дані для навчання моделі та встановлення того, як виглядає нормальна поведінка.

  • Діапазон виявлення аномалій: Візуальне представлення очікуваного діапазону значень для метрики.

Приклад використання:

  • Виявлення незвичайних патернів використання ЦП в EC2 інстансі, які можуть вказувати на порушення безпеки або проблему з додатком.

Insight Rules and Managed Insight Rules

Insight Rules дозволяють вам виявляти тенденції, виявляти сплески або інші патерни інтересу у ваших даних метрик, використовуючи потужні математичні вирази для визначення умов, за яких повинні бути вжиті дії. Ці правила можуть допомогти вам виявити аномалії або незвичайну поведінку у продуктивності та використанні ваших ресурсів.

Managed Insight Rules - це попередньо налаштовані правила виявлення, надані AWS. Вони призначені для моніторингу конкретних сервісів AWS або загальних випадків використання та можуть бути активовані без необхідності детальної конфігурації.

Приклад використання:

  • Моніторинг продуктивності RDS: Увімкніть кероване правило виявлення для Amazon RDS, яке моніторить ключові показники продуктивності, такі як використання ЦП, використання пам'яті та диск I/O. Якщо будь-яка з цих метрик перевищує безпечні операційні пороги, правило може активувати сповіщення або автоматизовану дію пом'якшення.

CloudWatch Logs

Дозволяє агрегувати та моніторити журнали з додатків та систем з сервісів AWS (включаючи CloudTrail) та з додатків/систем (CloudWatch Agent може бути встановлений на хост). Журнали можуть зберігатися безстроково (залежно від налаштувань групи журналів) і можуть бути експортовані.

Елементи:

Група журналів

Збірка потоків журналів, які мають однакові налаштування зберігання, моніторингу та контролю доступу

Потік журналу

Послідовність журнальних подій, які мають одне джерело

Фільтри підписки

Визначають шаблон фільтра, який відповідає подіям у певній групі журналів, надсилають їх до потоку Kinesis Data Firehose, потоку Kinesis або функції Lambda

CloudWatch Monitoring & Events

CloudWatch базовий агрегує дані кожні 5 хвилин ( детальний робить це кожну 1 хвилину). Після агрегації він перевіряє пороги сигналів на випадок, якщо потрібно активувати один. У цьому випадку CloudWatch може бути готовий надіслати подію та виконати деякі автоматичні дії (функції AWS Lambda, теми SNS, черги SQS, потоки Kinesis)

Agent Installation

Ви можете встановити агенти всередині ваших машин/контейнерів, щоб автоматично надсилати журнали назад до CloudWatch.

  • Створіть роль та прикріпіть її до інстанса з дозволами, що дозволяють CloudWatch збирати дані з інстансів, крім взаємодії з менеджером систем AWS SSM (CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM)

  • Завантажте та встановіть агент на EC2 інстанс (https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip). Ви можете завантажити його зсередини EC2 або встановити автоматично, використовуючи AWS System Manager, вибравши пакет AWS-ConfigureAWSPackage

  • Налаштуйте та запустіть CloudWatch Agent

Група журналів має багато потоків. Потік має багато подій. І всередині кожного потоку події гарантовано будуть в порядку.

Enumeration

# 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

Зловмисник з цими дозволами може суттєво підірвати інфраструктуру моніторингу та сповіщення організації. Видаляючи існуючі тривоги, зловмисник може вимкнути критично важливі сповіщення, які повідомляють адміністраторів про критичні проблеми з продуктивністю, порушення безпеки або операційні збої. Крім того, створюючи або модифікуючи метричні тривоги, зловмисник також може вводити адміністраторів в оману з фальшивими сповіщеннями або заглушати законні тривоги, ефективно маскуючи злочинні дії та запобігаючи своєчасним реакціям на реальні інциденти.

Крім того, з дозволом cloudwatch:PutCompositeAlarm зловмисник зможе створити цикл або петлю складних тривог, де складна тривога A залежить від складної тривоги B, а складна тривога B також залежить від складної тривоги A. У цьому сценарії неможливо видалити будь-яку складну тривогу, яка є частиною циклу, оскільки завжди залишається складна тривога, яка залежить від тієї тривоги, яку ви хочете видалити.

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

Наступний приклад показує, як зробити метричний сигнал неефективним:

  • Цей метричний сигнал контролює середнє використання ЦП конкретного EC2 екземпляра, оцінює метрику кожні 300 секунд і вимагає 6 періодів оцінки (всього 30 хвилин). Якщо середнє використання ЦП перевищує 60% принаймні в 4 з цих періодів, сигнал спрацює і надішле сповіщення на вказану тему SNS.

  • Змінивши поріг на більше ніж 99%, встановивши період на 10 секунд, періоди оцінки на 8640 (оскільки 8640 періодів по 10 секунд дорівнюють 1 дню), і точки даних для сигналу на 8640, буде необхідно, щоб використання ЦП перевищувало 99% кожні 10 секунд протягом всього 24-годинного періоду, щоб спрацював сигнал.

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

Потенційний вплив: Відсутність сповіщень про критичні події, потенційні непомічені проблеми, хибні сповіщення, придушення справжніх сповіщень і потенційно пропущені виявлення реальних інцидентів.

cloudwatch:DeleteAlarmActions, cloudwatch:EnableAlarmActions , cloudwatch:SetAlarmState

Видаляючи дії сповіщення, зловмисник може запобігти спрацьовуванню критичних сповіщень і автоматизованих відповідей, коли досягається стан тривоги, наприклад, сповіщення адміністраторів або запуск автоматичного масштабування. Неправильне увімкнення або повторне увімкнення дій сповіщення також може призвести до несподіваних поведінок, або шляхом повторної активації раніше вимкнених дій, або шляхом зміни того, які дії спрацьовують, що може викликати плутанину і неправильне реагування на інциденти.

Крім того, зловмисник з відповідними правами може маніпулювати станами тривоги, маючи можливість створювати хибні тривоги, щоб відволікати і плутати адміністраторів, або приглушувати справжні тривоги, щоб приховати триваючі шкідливі дії або критичні збої системи.

  • Якщо ви використовуєте SetAlarmState на складній тривозі, складна тривога не гарантує повернення до свого фактичного стану. Вона повертається до свого фактичного стану лише після зміни стану будь-якої з її дочірніх тривог. Вона також переоцінюється, якщо ви оновлюєте її конфігурацію.

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

Потенційний вплив: Відсутність сповіщень про критичні події, потенційні непомічені проблеми, хибні сповіщення, подавлення справжніх сповіщень і потенційно пропущені виявлення реальних інцидентів.

cloudwatch:DeleteAnomalyDetector, cloudwatch:PutAnomalyDetector

Зловмисник зможе скомпрометувати можливість виявлення та реагування на незвичайні патерни або аномалії в метрик даних. Видаляючи існуючі детектори аномалій, зловмисник може відключити критичні механізми сповіщення; а створюючи або модифікуючи їх, він зможе або неправильно налаштувати, або створити хибнопозитивні сповіщення, щоб відволікти або перевантажити моніторинг.

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

Наступний приклад показує, як зробити детектор аномалій метрики неефективним. Цей детектор аномалій метрики моніторить середнє використання ЦП конкретного EC2 екземпляра, і просто додавши параметр “ExcludedTimeRanges” з бажаним часовим діапазоном, буде достатньо, щоб забезпечити, що детектор аномалій не аналізує або не сповіщає про жодні релевантні дані протягом цього періоду.

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

Потенційний вплив: Прямий ефект у виявленні незвичних патернів або загроз безпеці.

cloudwatch:DeleteDashboards, cloudwatch:PutDashboard

Зловмисник зможе скомпрометувати можливості моніторингу та візуалізації організації, створюючи, змінюючи або видаляючи її інформаційні панелі. Ці дозволи можуть бути використані для видалення критичної видимості продуктивності та стану систем, зміни інформаційних панелей для відображення неправильних даних або приховування шкідливих дій.

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

Потенційний вплив: Втрата видимості моніторингу та оманлива інформація.

cloudwatch:DeleteInsightRules, cloudwatch:PutInsightRule ,cloudwatch:PutManagedInsightRule

Правила інсайту використовуються для виявлення аномалій, оптимізації продуктивності та ефективного управління ресурсами. Видаляючи існуючі правила інсайту, зловмисник може усунути критичні можливості моніторингу, залишаючи систему сліпою до проблем з продуктивністю та загроз безпеці. Крім того, зловмисник може створювати або змінювати правила інсайту, щоб генерувати оманливі дані або приховувати злочинні дії, що призводить до неправильних діагностик і неналежних реакцій з боку команди операцій.

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>

Потенційний вплив: Важкість виявлення та реагування на проблеми з продуктивністю та аномалії, помилкове прийняття рішень та потенційне приховування злочинних дій або збоїв системи.

cloudwatch:DisableInsightRules, cloudwatch:EnableInsightRules

Вимкнувши критично важливі правила інсайтів, зловмисник може ефективно осліпити організацію щодо ключових показників продуктивності та безпеки. Навпаки, увімкнувши або налаштувавши оманливі правила, можна створити хибні дані, створити шум або приховати злочинну діяльність.

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

Потенційний вплив: Плутанина серед команди операцій, що призводить до затримки у відповідях на реальні проблеми та непотрібних дій на основі хибних сповіщень.

cloudwatch:DeleteMetricStream , cloudwatch:PutMetricStream , cloudwatch:PutMetricData

Зловмисник з правами cloudwatch:DeleteMetricStream , cloudwatch:PutMetricStream зможе створювати та видаляти потоки даних метрик, що компрометує безпеку, моніторинг та цілісність даних:

  • Створення шкідливих потоків: Створення потоків метрик для відправки чутливих даних до несанкціонованих місць.

  • Маніпуляція ресурсами: Створення нових потоків метрик з надмірними даними може створити багато шуму, викликаючи неправильні сповіщення, маскуючи справжні проблеми.

  • Порушення моніторингу: Видаляючи потоки метрик, зловмисники порушать безперервний потік моніторингових даних. Таким чином, їхні шкідливі дії будуть ефективно приховані.

Аналогічно, з правом cloudwatch:PutMetricData буде можливим додавати дані до потоку метрик. Це може призвести до DoS через кількість неправильних даних, що додаються, роблячи його абсолютно непотрібним.

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

Приклад додавання даних, що відповідають 70% використання ЦП на даному EC2 екземплярі:

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

Потенційний вплив: Порушення потоку даних моніторингу, що впливає на виявлення аномалій та інцидентів, маніпуляцію ресурсами та збільшення витрат через створення надмірних потоків метрик.

cloudwatch:StopMetricStreams, cloudwatch:StartMetricStreams

Зловмисник контролював би потік даних метрик, що підлягають впливу (кожен потік даних, якщо немає обмежень на ресурси). З дозволом cloudwatch:StopMetricStreams зловмисники могли б приховати свої злочинні дії, зупинивши критично важливі потоки метрик.

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

Потенційний вплив: Порушення потоку даних моніторингу, що вплине на виявлення аномалій та інцидентів.

cloudwatch:TagResource, cloudwatch:UntagResource

Зловмисник зможе додавати, змінювати або видаляти теги з ресурсів CloudWatch (в даний час лише тривоги та правила Contributor Insights). Це може порушити політики контролю доступу вашої організації на основі тегів.

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

Потенційний вплив: Порушення політик контролю доступу на основі тегів.

Посилання

Support HackTricks

Last updated