AWS - CloudWatch Enum

Вивчайте та практикуйте взлом AWS: Школа взлому HackTricks AWS Red Team Expert (ARTE) Вивчайте та практикуйте взлом GCP: Школа взлому HackTricks GCP Red Team Expert (GRTE)

Підтримайте HackTricks

CloudWatch

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

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

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

  • Запуск, зупинка, перезавантаження та припинення екземплярів EC2

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

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

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

Ключові концепції

Простори імен

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

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

Метрики

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

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

Розміри

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

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

Статистика

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

  • Приклад: Розрахунок середнього використання ЦП за період однієї години.

Одиниці

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

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

Особливості CloudWatch

Інформаційна панель

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

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

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

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

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

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

Потік метрик та Дані метрик

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

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

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

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

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

Тривога

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

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

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

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

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

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

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

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

Виявлення аномалій

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

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

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

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

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

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

Правила Insight та Керовані правила Insight

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

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

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

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

Журнали CloudWatch

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

Елементи:

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

Моніторинг та події CloudWatch

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

Встановлення агента

Ви можете встановити агенти всередині ваших машин/контейнерів для автоматичної відправки журналів назад до 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

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

Перелік

# 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

Післяексплуатація / Ухилення

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

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

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

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

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

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>

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

Посилання

Вивчайте та практикуйте взлом AWS: Навчання HackTricks AWS Red Team Expert (ARTE) Вивчайте та практикуйте взлом GCP: Навчання HackTricks GCP Red Team Expert (GRTE)

Підтримайте HackTricks

Last updated