AWS - CloudTrail Enum
CloudTrail
AWS CloudTrail записує та моніторить активність у вашому середовищі AWS. Він захоплює детальні журнали подій, включаючи хто що зробив, коли і звідки, для всіх взаємодій з ресурсами AWS. Це забезпечує аудит змін та дій, допомагаючи в аналізі безпеки, аудиті відповідності та відстеженні змін ресурсів. CloudTrail є важливим для розуміння поведінки користувачів та ресурсів, підвищення рівня безпеки та забезпечення відповідності нормативним вимогам.
Кожна зареєстрована подія містить:
Назву викликаного API:
eventName
Викликаний сервіс:
eventSource
Час:
eventTime
IP-адресу:
SourceIPAddress
Метод агента:
userAgent
. Приклади:Signing.amazonaws.com - З AWS Management Console
console.amazonaws.com - Root користувач облікового запису
lambda.amazonaws.com - AWS Lambda
Параметри запиту:
requestParameters
Елементи відповіді:
responseElements
Події записуються у новий лог-файл приблизно кожні 5 хвилин у JSON-файл, вони зберігаються CloudTrail і, нарешті, лог-файли доставляються до S3 приблизно через 15 хвилин після цього. Логи CloudTrail можуть бути агреговані між обліковими записами та регіонами. CloudTrail дозволяє використовувати цілісність лог-файлів, щоб мати можливість перевірити, що ваші лог-файли залишилися незмінними з моменту їх доставки CloudTrail. Він створює SHA-256 хеш логів у файлі дайджесту. SHA-256 хеш нових логів створюється щогодини. При створенні Trail селектори подій дозволять вам вказати, які події логувати: управління, дані або інсайти.
Логи зберігаються у S3 бакеті. За замовчуванням використовується серверне шифрування (SSE-S3), тому AWS розшифрує вміст для тих, хто має доступ до нього, але для додаткової безпеки ви можете використовувати SSE з KMS та власними ключами.
Логи зберігаються у S3 бакеті з таким форматом імені:
BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD
BucketName:
aws-cloudtrail-logs-<accountid>-<random>
Приклад:
aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/
Всередині кожної папки кожен лог матиме ім'я за таким форматом: AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz
Convention Naming Log File
Крім того, файли дайджесту (для перевірки цілісності файлів) будуть у тому ж бакеті:
Агрегування логів з кількох облікових записів
Створіть Trail в обліковому записі AWS, куди ви хочете доставляти лог-файли
Застосуйте дозволи до цільового S3 бакету, дозволяючи доступ між обліковими записами для CloudTrail і дозволяючи кожному обліковому запису AWS, який потребує доступу
Створіть новий Trail в інших облікових записах AWS і виберіть використання створеного бакету на кроці 1
Однак, навіть якщо ви можете зберігати всі логи в одному S3 бакеті, ви не можете агрегувати логи CloudTrail з кількох облікових записів у CloudWatch Logs, що належать одному обліковому запису AWS.
Пам'ятайте, що обліковий запис може мати різні Trails з CloudTrail увімкнені, зберігаючи ті ж (або різні) логи в різних бакетах.
Cloudtrail з усіх облікових записів організації в один
При створенні CloudTrail, можна вказати активувати cloudtrail для всіх облікових записів в організації та отримувати логи в один бакет:
Таким чином, ви можете легко налаштувати CloudTrail у всіх регіонах всіх облікових записів і централізувати логи в одному обліковому записі (який ви повинні захистити).
Перевірка лог-файлів
Ви можете перевірити, що логи не були змінені, запустивши
Logs to CloudWatch
CloudTrail може автоматично надсилати логи до CloudWatch, щоб ви могли налаштувати сповіщення, які попереджатимуть вас про підозрілу активність. Зверніть увагу, що для того, щоб дозволити CloudTrail надсилати логи до CloudWatch, необхідно створити роль, яка дозволяє цю дію. Якщо можливо, рекомендується використовувати стандартну роль AWS для виконання цих дій. Ця роль дозволить CloudTrail:
CreateLogStream: Це дозволяє створювати потоки логів CloudWatch Logs
PutLogEvents: Доставляти логи CloudTrail до потоку логів CloudWatch Logs
Event History
CloudTrail Event History дозволяє вам переглядати в таблиці логи, які були записані:
Insights
CloudTrail Insights автоматично аналізує події управління записами з CloudTrail trails і сповіщає вас про незвичну активність. Наприклад, якщо є збільшення подій TerminateInstance
, яке відрізняється від встановлених базових ліній, ви побачите це як подію Insight. Ці події роблять пошук і реагування на незвичну активність API легшим ніж будь-коли.
Інсайти зберігаються в тому ж бакеті, що і логи CloudTrail в: BucketName/AWSLogs/AccountID/CloudTrail-Insight
Security
CloudTrail Log File Integrity |
|
Stop unauthorized access |
|
Prevent log files from being deleted |
|
Access Advisor
AWS Access Advisor покладається на останні 400 днів логів AWS CloudTrail для збору своїх інсайтів. CloudTrail фіксує історію викликів AWS API та пов'язаних подій, здійснених в обліковому записі AWS. Access Advisor використовує ці дані, щоб показати, коли сервіси були востаннє використані. Аналізуючи логи CloudTrail, Access Advisor може визначити, які сервіси AWS користувач або роль IAM використовували і коли це відбулося. Це допомагає адміністраторам AWS приймати обґрунтовані рішення щодо уточнення дозволів, оскільки вони можуть ідентифікувати сервіси, які не використовувалися протягом тривалого часу, і потенційно зменшити надмірно широкі дозволи на основі реальних шаблонів використання.
Таким чином, Access Advisor інформує про непотрібні дозволи, надані користувачам, щоб адміністратор міг їх видалити
Actions
Enumeration
CSV Injection
Можливо виконати CSV ін'єкцію всередині CloudTrail, яка виконає довільний код, якщо логи будуть експортовані в CSV і відкриті в Excel. Наступний код згенерує запис журналу з поганою назвою Trail, що містить корисне навантаження:
Для отримання додаткової інформації про CSV Injections перегляньте сторінку:
Для отримання додаткової інформації про цю конкретну техніку перегляньте https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/
Обхід Виявлення
HoneyTokens обхід
Honeyokens створені для виявлення ексфільтрації конфіденційної інформації. У випадку AWS, це AWS ключі, використання яких моніториться, якщо щось викликає дію з цим ключем, то хтось повинен був вкрасти цей ключ.
Однак, Honeytokens, такі як створені Canarytokens, SpaceCrab, SpaceSiren або використовують впізнаване ім'я облікового запису, або використовують той самий AWS account ID для всіх своїх клієнтів. Тому, якщо ви можете отримати ім'я облікового запису та/або account ID без створення будь-якого логу в Cloudtrail, ви могли б дізнатися, чи є ключ honeytoken чи ні.
Pacu має деякі правила для виявлення, чи належить ключ до Canarytokens, SpaceCrab, SpaceSiren:
Якщо
canarytokens.org
з'являється в імені ролі або account ID534261010715
з'являється в повідомленні про помилку.Під час тестування їх більш недавно, вони використовують account
717712589309
і все ще мають рядокcanarytokens.com
в імені.Якщо
SpaceCrab
з'являється в імені ролі в повідомленні про помилку.SpaceSiren використовує uuids для генерації імен користувачів:
[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}
Якщо ім'я виглядає як випадково згенероване, є велика ймовірність, що це HoneyToken.
Отримання account ID з Key ID
Ви можете отримати Account ID з закодованого всередині access key, як пояснено тут і перевірити account ID зі своїм списком Honeytokens AWS accounts:
Check more information in the orginal research.
Не генерувати лог
Найефективніша техніка насправді дуже проста. Просто використовуйте ключ, який ви щойно знайшли, щоб отримати доступ до якогось сервісу всередині вашого власного облікового запису атакуючого. Це змусить CloudTrail генерувати лог всередині ВАШОГО ВЛАСНОГО облікового запису AWS, а не всередині облікового запису жертви.
Справа в тому, що вихідні дані покажуть вам помилку, яка вказує на ID облікового запису та ім'я облікового запису, тому ви зможете побачити, чи це Honeytoken.
AWS сервіси без логів
У минулому були деякі AWS сервіси, які не надсилають логи до CloudTrail (знайдіть список тут). Деякі з цих сервісів відповідатимуть з помилкою, що містить ARN ролі ключа, якщо хтось неавторизований (ключ honeytoken) спробує отримати до нього доступ.
Таким чином, атакуючий може отримати ARN ключа без створення жодного логу. В ARN атакуючий може побачити ID облікового запису AWS та ім'я, легко дізнатися ID та імена облікових записів компаній HoneyToken, тому таким чином атакуючий може визначити, чи є токен HoneyToken.
Зверніть увагу, що всі публічні API, які не створювали логи CloudTrail, тепер виправлені, тому, можливо, вам доведеться знайти свої власні...
Для отримання додаткової інформації перегляньте оригінальне дослідження.
Доступ до сторонньої інфраструктури
Деякі сервіси AWS створюють інфраструктуру, таку як бази даних або кластери Kubernetes (EKS). Користувач, який безпосередньо спілкується з цими сервісами (наприклад, API Kubernetes), не використовуватиме AWS API, тому CloudTrail не зможе побачити це спілкування.
Таким чином, користувач з доступом до EKS, який виявив URL API EKS, може згенерувати токен локально і безпосередньо спілкуватися з API сервісом без виявлення CloudTrail.
Більше інформації в:
AWS - EKS Post ExploitationЗміна конфігурації CloudTrail
Видалення трас
Зупинити trails
Вимкнути багаторегіональний логінг
Вимкнення логування за допомогою селекторів подій
У першому прикладі, один селектор подій надається як JSON-масив з одним об'єктом. "ReadWriteType": "ReadOnly"
вказує, що селектор подій повинен захоплювати лише події тільки для читання (тому CloudTrail insights не буде перевіряти події запису, наприклад).
Ви можете налаштувати селектор подій відповідно до ваших конкретних вимог.
Видалення логів через політику життєвого циклу S3
Зміна конфігурації Bucket
Видалити S3 bucket
Змінити політику bucket, щоб заборонити будь-які записи від сервісу CloudTrail
Додати політику життєвого циклу до S3 bucket для видалення об'єктів
Вимкнути kms ключ, який використовується для шифрування логів CloudTrail
Cloudtrail ransomware
S3 ransomware
Ви можете згенерувати асиметричний ключ і змусити CloudTrail шифрувати дані з цим ключем і видалити приватний ключ, щоб вміст CloudTrail не міг бути відновлений. Це, по суті, S3-KMS ransomware, пояснено в:
AWS - S3 Post ExploitationKMS ransomware
Це найпростіший спосіб виконати попередню атаку з різними вимогами до дозволів:
AWS - KMS Post ExploitationПосилання
Last updated