AWS - GuardDuty Enum

Reading time: 10 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

GuardDuty

Згідно з документацією: GuardDuty поєднує машинне навчання, виявлення аномалій, моніторинг мережі та виявлення шкідливих файлів, використовуючи як AWS, так і провідні джерела третіх сторін для захисту робочих навантажень і даних на AWS. GuardDuty здатний аналізувати десятки мільярдів подій з кількох джерел даних AWS, таких як журнали подій AWS CloudTrail, журнали Flow Amazon Virtual Private Cloud (VPC), журнали аудиту та системного рівня Amazon Elastic Kubernetes Service (EKS) та журнали запитів DNS.

Amazon GuardDuty виявляє незвичну активність у ваших облікових записах, аналізує безпекову значущість активності та надає контекст, у якому вона була викликана. Це дозволяє відповідальному особі визначити, чи варто витрачати час на подальше розслідування.

Сповіщення з'являються в консолі GuardDuty (90 днів) та CloudWatch Events.

warning

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

Приклад Виявлень

  • Розвідка: Активність, що вказує на розвідку зловмисника, така як незвична активність API, підозрілі спроби входу в базу даних, внутрішнє сканування портів VPC, незвичні шаблони невдалих запитів на вхід або проби незаблокованих портів з відомого поганого IP.
  • Компрометація інстанції: Активність, що вказує на компрометацію інстанції, така як майнінг криптовалюти, активність командного та контрольного (C&C) доступу, шкідливе ПЗ, що використовує алгоритми генерації доменів (DGA), вихідна активність відмови в обслуговуванні, незвично високий обсяг мережевого трафіку, незвичні мережеві протоколи, вихідна комунікація інстанції з відомим шкідливим IP, тимчасові облікові дані Amazon EC2, що використовуються зовнішньою IP-адресою, та ексфільтрація даних за допомогою DNS.
  • Компрометація облікового запису: Загальні шаблони, що вказують на компрометацію облікового запису, включають виклики API з незвичної геолокації або анонімного проксі, спроби відключити ведення журналів AWS CloudTrail, зміни, що послаблюють політику паролів облікового запису, незвичні запуски інстанцій або інфраструктури, розгортання інфраструктури в незвичному регіоні, крадіжка облікових даних, підозріла активність входу в базу даних та виклики API з відомих шкідливих IP-адрес.
  • Компрометація бакету: Активність, що вказує на компрометацію бакету, така як підозрілі шаблони доступу до даних, що вказують на зловживання обліковими даними, незвична активність API Amazon S3 з віддаленого хоста, несанкціонований доступ до S3 з відомих шкідливих IP-адрес та виклики API для отримання даних у бакетах S3 від користувача без попередньої історії доступу до бакету або викликані з незвичного місця. Amazon GuardDuty постійно моніторить і аналізує події даних AWS CloudTrail S3 (наприклад, GetObject, ListObjects, DeleteObject), щоб виявляти підозрілу активність у всіх ваших бакетах Amazon S3.
Інформація про Виявлення

Резюме виявлення:

  • Тип виявлення
  • Серйозність: 7-8.9 Висока, 4-6.9 Середня, 01-3.9 Низька
  • Регіон
  • ID облікового запису
  • ID ресурсу
  • Час виявлення
  • Який список загроз був використаний

Тіло містить цю інформацію:

  • Впливовий ресурс
  • Дія
  • Актор: IP-адреса, порт і домен
  • Додаткова інформація

Усі Виявлення

Отримайте список усіх виявлень GuardDuty за адресою: https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html

Багато Облікових Записів

За Запрошенням

Ви можете запросити інші облікові записи до іншого облікового запису AWS GuardDuty, щоб кожен обліковий запис моніторився з одного GuardDuty. Головний обліковий запис повинен запросити облікові записи учасників, а потім представник облікового запису учасника повинен прийняти запрошення.

Через Організацію

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

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

Перерахування

bash
# Get Org config
aws guardduty list-organization-admin-accounts #Get Delegated Administrator
aws guardduty describe-organization-configuration --detector-id <id>

# Check external invitations
aws guardduty list-invitations
aws guardduty get-invitations-count

# Detector Information
aws guardduty list-detectors # 1 detector per account with GuardDuty
aws guardduty get-detector --detector-id <id> # Get detector info
aws guardduty get-master-account --detector-id <id>

# Get filters
aws guardduty list-filters --detector-id <id> # Check filters
aws guardduty get-filter --detector-id <id> --filter-name <name>

# Findings
aws guardduty list-findings --detector-id <id> # List findings
aws guardduty get-findings --detector-id <id> --finding-ids <id> # Get details about the finding
aws guardduty get-findings-statistics --detector-id <id> --finding-statistic-types <types>

# Get trusted IP addresses
aws guardduty list-ip-sets --detector-id <id>
aws guardduty get-ip-set --detector-id <id>

# Member accounts of the current AWS GuardDuty master account
aws guardduty list-members --detector-id <id>
aws guardduty get-members --detector-id <id> --account-ids <id>
aws guardduty get-member-detectors --detector-id <id> --account-ids <id>

# Continuously export its findings to an Amazon S3 bucket
aws guardduty list-publishing-destinations --detector-id <id>

# Intelligence sets that you have uploaded to GuardDuty
aws guardduty list-threat-intel-sets --detector-id <id>
aws guardduty get-threat-intel-set --detector-id <id> --threat-intel-set-id <id>

GuardDuty Bypass

Загальні рекомендації

Спробуйте дізнатися якомога більше про поведінку облікових даних, які ви збираєтеся використовувати:

  • Час, коли вони використовуються
  • Локації
  • User Agents / Сервіси (Це може бути використано з awscli, webconsole, lambda...)
  • Дозволи, які регулярно використовуються

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

  • Якщо це користувач або роль, доступна користувачем, спробуйте використовувати її в ті ж години, з тієї ж геолокації (навіть з того ж ISP та IP, якщо можливо)
  • Якщо це роль, яку використовує сервіс, створіть той же сервіс в тому ж регіоні і використовуйте його звідти в ті ж часові діапазони
  • Завжди намагайтеся використовувати ті ж дозволи, які використовував цей принципал
  • Якщо вам потрібно використовувати інші дозволи або зловживати дозволом (наприклад, завантажити 1.000.000 файлів журналу cloudtrail), робіть це повільно і з мінімальною кількістю взаємодій з AWS (awscli іноді викликає кілька API для читання перед записом)

Ломання GuardDuty

guardduty:UpdateDetector

З цим дозволом ви можете вимкнути GuardDuty, щоб уникнути сповіщень.

bash
aws guardduty update-detector --detector-id <detector-id> --no-enable
aws guardduty update-detector --detector-id <detector-id> --data-sources S3Logs={Enable=false}

guardduty:CreateFilter

Зловмисники з цим дозволом мають можливість використовувати фільтри для автоматичного архівування знахідок:

bash
aws guardduty create-filter  --detector-id <detector-id> --name <filter-name> --finding-criteria file:///tmp/criteria.json --action ARCHIVE

iam:PutRolePolicy, (guardduty:CreateIPSet|guardduty:UpdateIPSet)

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

bash
aws guardduty update-ip-set --detector-id <detector-id> --activate --ip-set-id <ip-set-id> --location https://some-bucket.s3-eu-west-1.amazonaws.com/attacker.csv

guardduty:DeletePublishingDestination

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

bash
aws guardduty delete-publishing-destination --detector-id <detector-id> --destination-id <dest-id>

caution

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

Приклади обходу специфічних висновків

Зверніть увагу, що існує десятки висновків GuardDuty, однак, як Red Teamer, не всі з них вплинуть на вас, і що краще, у вас є повна документація на кожен з них в https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html, тому ознайомтеся з нею перед виконанням будь-яких дій, щоб не бути спійманим.

Ось кілька прикладів обходу специфічних висновків GuardDuty:

PenTest:IAMUser/KaliLinux

GuardDuty виявляє запити API AWS з загальних інструментів тестування на проникнення та викликає PenTest Finding.
Це виявляється за назвою агента користувача, яка передається в запиті API.
Отже, модифікація агента користувача може запобігти виявленню атаки GuardDuty.

Щоб запобігти цьому, ви можете знайти скрипт session.py у пакеті botocore і змінити агента користувача, або налаштувати Burp Suite як проксі для AWS CLI та змінити агента користувача за допомогою MitM, або просто використовувати ОС, таку як Ubuntu, Mac або Windows, що запобігатиме спрацьовуванню цього сповіщення.

UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration

Витягування облікових даних EC2 з сервісу метаданих та використання їх поза середовищем AWS активує сповіщення UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS. Навпаки, використання цих облікових даних з вашого EC2 екземпляра викликає сповіщення UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS. Проте, використання облікових даних на іншому скомпрометованому EC2 екземплярі в межах того ж облікового запису залишається непоміченим, не викликаючи жодного сповіщення.

tip

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

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks