Керування ідентифікацією та доступом (IAM) є основою безпеки в будь-якій хмарній платформі. Неправильні конфігурації або надмірно привілейовані ідентичності є одними з найпоширеніших причин витоку даних у хмарі, що робить IAM основною ціллю як для атак, так і для захисту.
Ця практична лабораторна робота демонструє, як користувач IAM із низькими привілеями може створювати профілі входу в консоль для інших користувачів, чим можна зловживати для ескалації до повних прав адміністратора акаунта.
Зміст
- Про IAM CreateLoginProfile
- Налаштування лабораторії та попередні вимоги
- Частина 1: Налаштування лабораторії IAM
- Створення низькопривілейованого користувача IAM
- Створення високопривілейованого користувача IAM
- Створення групи користувачів із політикою CreateLoginProfile
- Частина 2: Перерахунок та експлуатація
- Перерахунок профілів за допомогою Python-скрипту
- Налаштування та перерахунок профілів за допомогою AWS CLI
- Експлуатація IAM CreateLoginProfile
- Аналіз
- Рекомендації
- Висновок
Про IAM: CreateLoginProfile
CreateLoginProfile в AWS IAM — це дія API, яка створює пароль (профіль входу) для користувача IAM, щоб він міг увійти в Консоль управління AWS (AWS Management Console).
Ви можете використовувати AWS CLI, AWS API або сторінку Користувачі (Users) у консолі IAM, щоб створити пароль для будь-якого користувача IAM.
Налаштування лабораторії:
- Акаунт AWS.
- Віртуальна машина Kali Linux.
Частина 1: Налаштування лабораторії IAM
Нижче наведено інструкції з налаштування середовища. Ми отримаємо доступ до консолі AWS та налаштуємо інтерфейс командного рядка AWS (CLI).
Користувачі:
- lgt_sanjeet: Користувач із низькими привілеями, до якого приєднані ризиковані дозволи.
- lgt_admin: Високопривілейований користувач із доступом адміністратора.
Назва політики:
- lgt_LoginProfile-PrivEsc
Створення низькопривілейованого користувача IAM
- Перейдіть до IAM > Users, потім натисніть Create user, щоб створити нову ідентичність IAM.

- Вкажіть ім’я користувача (User name, наприклад, lgt_sanjeet) і натисніть Next, щоб перейти до налаштування дозволів.

- У розділі Permissions options виберіть Add user to group (Додати користувача до групи) та натисніть Next.


- Натисніть на створене ім’я користувача, тобто lgt_sanjeet.

- Створіть ключі доступу (Create access key) для цього користувача.

- Виберіть Command Line Interface (CLI) як сценарій використання (use case).

- Поставте галочку у відповідному полі (підтвердження розуміння рекомендацій щодо безпеки) та продовжуйте.


- Тепер завантажте .csv файл, що містить Access Key ID та Secret Access Key. Зберігайте ці облікові дані в безпеці.

Створення високопривілейованого користувача IAM
Тепер створіть потужного користувача IAM. Цей користувач уособлює розширені права, які lgt_sanjeet (низькопривілейований користувач) тимчасово отримає під час нашої демонстрації.
- Перейдіть до IAM > Users, потім натисніть Create user, щоб налаштувати нову ідентичність IAM.

- Вкажіть ім’я користувача lgt_admin і натисніть Next.

- На етапі Set permissions (Встановлення дозволів) виберіть Attach policies directly (Приєднати політики безпосередньо).

-
У розділі Permissions policies знайдіть і виберіть “AdministratorAccess”. Ця політика надає повний контроль практично над усіма сервісами та ресурсами AWS, що робить цього користувача нашою «високопривілейованою» ціллю для лабораторної роботи.
-
Натисніть Next.


Створення групи користувачів із політикою CreateLoginProfile
- По-перше, перейдіть до IAM > User groups > Create group.

- Вкажіть деталі, наприклад, ім’я групи: create-loginprofile-group.

- Після створення групи натисніть на її назву.

- Натисніть Add permissions → Create inline policy (Додати дозволи → Створити вбудовану політику), щоб визначити та приєднати власну політику безпосередньо до групи create-loginprofile-group.

- У редакторі політик (Policy Editor) вкажіть дозволи. Створіть політику для однієї ідентичності IAM (користувача, групи або ролі), яка пізніше буде використана як шлях для ескалації привілеїв (escalation path).
- iam:CreateLoginProfile — дозволяє встановити пароль для входу в консоль для користувача IAM, щоб він міг увійти в Консоль управління AWS.
- iam:ListAccessKeys — дозволяє переглядати існуючі ключі доступу для конкретного користувача IAM.
- iam:ListAttachedUserPolicies — показує, які керовані політики приєднані до користувача.
- iam:ListUsers — виводить список усіх користувачів IAM в акаунті.
- iam:ListGroups — виводить список усіх груп IAM в акаунті.
- iam:ListGroupPolicies — виводить назви вбудованих політик, інтегрованих у групу.
- iam:GetGroupPolicy — отримує фактичний JSON-документ вбудованої політики групи.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:CreateLoginProfile",
"iam:ListAccessKeys",
"iam:ListAttachedUserPolicies"
],
"Resource": [
"arn:aws:iam::*:user/Igt_sanjeet",
"arn:aws:iam::*:user/Igt_admin"
]
},
{
"Effect": "Allow",
"Action": [
"iam:ListUsers",
"iam:ListGroups",
"iam:ListGroupPolicies",
"iam:GetGroupPolicy"
],
"Resource": "*"
}
]
}

Ось як виглядає політика в редакторі політик у форматі JSON:

- Вкажіть деталі політики, наприклад її назву lgt_LoginProfile-PrivEsc, і натисніть Create policy (Створити політику).

- Тепер виберіть назву групи в розділі User groups і натисніть Add users (Додати користувачів).

- Виберіть користувача lgt_sanjeet, після чого він стане частиною групи create-loginprofile-group.

Частина 2: Перерахунок та експлуатація (Enumeration and Exploitation)
Сценарій використання CreateLoginProfile
У реальних сценаріях ця функція використовується для онбордингу (створення облікових записів нових співробітників), але в межах лабораторії безпеки вона демонструє, як неправильно налаштовані дозволи можуть призвести до ескалації привілеїв.
Перерахунок профілів за допомогою Python-скрипту
python enumerate-iam.py --access-key AKI*********** --secret-key ISN*************
Цей етап перерахунку за допомогою Python підтвердив, що низькопривілейований користувач lgt_sanjeet може переглядати список користувачів IAM, груп та ключів доступу. Це забезпечує необхідну видимість для ідентифікації та подальшої ескалації в облікові записи з вищими привілеями.

Налаштування та перерахунок профілів за допомогою AWS CLI
Тепер налаштуйте AWS CLI з обліковими даними користувача IAM, щоб безпосередньо взаємодіяти з середовищем AWS з вашої машини Kali.
- Налаштуйте профіль з назвою lgt_sanjeet в AWS CLI.
aws configure --profile Igt_sanjeet
- Призначте Access Key ID, Secret Access Key та регіон за замовчуванням для цього профілю.

- Наступна команда отримає інформацію про ідентифікацію (UserId, Account ID, ARN) для поточного автентифікованого користувача через цей профіль.
aws sts get-caller-identity --profile Igt_sanjeet

- Тут ми спробуємо виконати команду для створення нового користувача.
aws s3 ls --profile Igt_sanjeet
Ця дія буде відхилена (Denied), оскільки жодна політика, заснована на ідентичності, не дозволяє цього.

- Виведіть список усіх груп IAM в акаунті, які профіль lgt_sanjeet має дозвіл бачити.
Ця команда не фільтрує лише ті групи, до яких належить lgt_sanjeet; вона повертає кожну групу в акаунті (якщо це не заблоковано правами доступу).
aws iam list-groups —profile Igt_sanjeet

- Ця команда виведе назви вбудованих політик, приєднаних до групи IAM create-loginprofile-group. Зверніть увагу на вивід, виділений червоною рамкою.
aws iam list-group-policies --group-name create-loginprofile-group --profile Igt_sanjeet

- Тепер ця команда отримає та відобразить повний JSON-документ вбудованої політики з назвою lgt_LoginProfile-PrivEsc, яка приєднана до групи create-loginprofile-group. Це дозволяє побачити реальні дозволи замість простої назви політики.
aws iam get-group-policy --group-name create-loginprofile-group --policy-name Igt_LoginProfile-PrivEsc --profile Igt_sanjeet

- Виконання цієї команди виведе список усіх користувачів IAM в акаунті AWS, яких облікові дані профілю lgt_sanjeet мають дозвіл бачити.
aws iam list-users --profile Igt_sanjeet

- Ця команда створює профіль входу в консоль (ім’я користувача + пароль) для користувача IAM lgt_admin.
ПРИМІТКА: Оскільки користувач lgt_admin має політику AdministratorAccess, будь-хто, хто володіє цим паролем, може увійти в консоль AWS як повний адміністратор. У середовищі з неправильною конфігурацією це означає ескалацію привілеїв до рівня адміністратора.
aws iam create-login-profile --user-name Igt_admin --password 'YourStrongP@ssw0rd!' --password-reset-required --profile Igt_sanjeet

Експлуатація IAM CreateLoginProfile
По-перше, відкрийте сторінку входу в консоль AWS. Введіть свій Account ID, ім’я користувача IAM lgt_admin, пароль, який ви щойно встановили за допомогою create-login-profile, і натисніть Sign in (Увійти).

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

У консолі (пошук зверху зліва) введіть S3 і перейдіть до сервісу. Переконайтеся, що ви ввійшли саме як lgt_admin (верхній правий кут).

У розділі General purpose buckets (Кошики загального призначення) виберіть бакет з назвою lgt_bucket.

Натисніть на назву вашого бакета (lgt_bucket), і в розділі Objects (Об’єкти) ви побачите текстовий файл secrets.txt. Натисніть Download, щоб завантажити його.

В AWS CLI (на вашій машині Kali) скористайтеся цією командою, щоб перевірити працездатність профілю адміністратора. Цього разу операція пройде успішно:
ls secrets.txt
Виведіть вміст файлу на екран:
cat secrets.txt

Аналіз
Ця лабораторна робота демонструє, як користувач IAM із початково низькими привілеями (lgt_sanjeet) зловживає дозволом iam:CreateLoginProfile щодо користувача lgt_admin (який уже мав приєднану політику AdministratorAccess). Встановивши пароль для адміністратора, зловмисник отримав прямий доступ до консолі від імені lgt_admin, що призвело до повного захоплення акаунта.
Рекомендації
- Обмежте iam:CreateLoginProfile
Тільки довірені адміністратори повинні мати доступ до цієї дії. Явно забороніть (Deny) цей дозвіл для всіх користувачів, які не є адміністраторами.
- Використовуйте межі дозволів (Permissions Boundaries):
Впровадьте механізми, які не дозволять низькопривілейованим обліковим записам виконувати дії з ескалації привілеїв, навіть якщо їх додано до груп із широкими правами.
- Обмежте права на перерахунок
Мінімізуйте можливість користувачів переглядати список усіх користувачів, груп та політик акаунта.
- Увімкніть MFA для всіх адміністраторів:
Багатофакторна автентифікація є критичним бар’єром, який зупинить атаку, навіть якщо пароль було скомпрометовано або змінено.
- Моніторинг за допомогою CloudTrail:
Налаштуйте алерти на виклики CreateLoginProfile, особливо якщо вони спрямовані на адміністративні облікові записи.
- Дотримуйтесь принципу найменших привілеїв (Least Privilege).
Висновок
Ця лабораторна робота показує, як один неправильно налаштований дозвіл IAM (CreateLoginProfile) може призвести до повної компрометації акаунта в поєднанні з правами на перерахунок. Помилки в конфігурації IAM — це “легка здобич” для зловмисників. Превентивні заходи контролю, детекція та грамотне управління (governance) є критично важливими для зупинки ескалації привілеїв у хмарі.