iam:ListPolicies, iam:GetPolicy та iam:GetPolicyVersion
iam:ListRoles
iam:ListUsers
iam:ListGroups
iam:ListGroupsForUser
iam:ListAttachedUserPolicies
iam:ListAttachedRolePolicies
iam:ListAttachedGroupPolicies
iam:ListUserPolicies та iam:GetUserPolicy
iam:ListGroupPolicies та iam:GetGroupPolicy
iam:ListRolePolicies та iam:GetRolePolicy
# All IAMs## Retrieves information about all IAM users, groups, roles, and policies## in your Amazon Web Services account, including their relationships to## one another. Use this operation to obtain a snapshot of the configura-## tion of IAM permissions (users, groups, roles, and policies) in your## account.awsiamget-account-authorization-details# List usersawsiamget-user#Get current user informationawsiamlist-usersawsiamlist-ssh-public-keys#User keys for CodeCommitawsiamget-ssh-public-key--user-name<username>--ssh-public-key-id<id>--encodingSSH#Get public key with metadataawsiamlist-service-specific-credentials#Get special permissions of the IAM user over specific servicesawsiamget-user--user-name<username>#Get metadata of user, included permissions boundariesawsiamlist-access-keys#List created access keys## inline policiesawsiamlist-user-policies--user-name<username>#Get inline policies of the userawsiamget-user-policy--user-name<username>--policy-name<policyname>#Get inline policy details## attached policiesawsiamlist-attached-user-policies--user-name<username>#Get policies of user, it doesn't get inline policies# List groupsawsiamlist-groups#Get groupsawsiamlist-groups-for-user--user-name<username>#Get groups of a userawsiamget-group--group-name<name>#Get group name info## inline policiesawsiamlist-group-policies--group-name<username>#Get inline policies of the groupawsiamget-group-policy--group-name<username>--policy-name<policyname>#Get an inline policy info## attached policiesawsiamlist-attached-group-policies--group-name<name>#Get policies of group, it doesn't get inline policies# List rolesawsiamlist-roles#Get rolesawsiamget-role--role-name<role-name>#Get role## inline policiesawsiamlist-role-policies--role-name<name>#Get inline policies of a roleawsiamget-role-policy--role-name<name>--policy-name<name>#Get inline policy details## attached policiesawsiamlist-attached-role-policies--role-name<role-name>#Get policies of role, it doesn't get inline policies# List policiesawsiamlist-policies [--only-attached] [--scope Local]aws iam list-policies-granting-service-access --arn <identity> --service-namespaces <svc> # Get list of policies that give access to the user to the service
## Get policy contentawsiamget-policy--policy-arn<policy_arn>awsiamlist-policy-versions--policy-arn<arn>awsiamget-policy-version--policy-arn<arn:aws:iam::975426262029:policy/list_apigateways>--version-id<VERSION_X># Enumerate providersawsiamlist-saml-providersawsiamget-saml-provider--saml-provider-arn<ARN>awsiamlist-open-id-connect-providersawsiamget-open-id-connect-provider--open-id-connect-provider-arn<ARN># Password Policyawsiamget-account-password-policy# MFAawsiamlist-mfa-devicesawsiamlist-virtual-mfa-devices
Permissions Brute Force
Якщо вас цікавлять ваші власні дозволи, але у вас немає доступу для запиту IAM, ви завжди можете їх брутфорсити.
bf-aws-permissions
Інструмент bf-aws-permissions - це просто bash-скрипт, який буде виконувати всі list*, describe*, get* дії, які він може знайти, використовуючи повідомлення допомоги aws cli, і повертати успішні виконання.
Інструмент bf-aws-perms-simulate може знайти ваші поточні дозволи (або дозволи інших суб'єктів), якщо у вас є дозвіл iam:SimulatePrincipalPolicy
# Ask for permissionspython3aws_permissions_checker.py--profile<AWS_PROFILE> [--arn <USER_ARN>]
Perms2ManagedPolicies
Якщо ви знайшли деякі дозволи, які має ваш користувач, і вважаєте, що вони надаються керованою роллю AWS (а не кастомною). Ви можете використовувати інструмент aws-Perms2ManagedRoles, щоб перевірити всі керовані ролі AWS, які надають дозволи, які ви виявили, що маєте.
# Run example with my profilepython3aws-Perms2ManagedPolicies.py--profilemyadmin--permissions-fileexample-permissions.txt
Можливо "знати", чи надані вам дозволи через керовану роль AWS, якщо ви бачите, що у вас є дозволи на сервіси, які не використовуються, наприклад.
Cloudtrail2IAM
CloudTrail2IAM - це інструмент на Python, який аналізує журнали AWS CloudTrail для витягування та узагальнення дій, виконаних усіма або лише конкретним користувачем чи роллю. Інструмент розбирає кожен журнал cloudtrail з вказаного бакету.
Якщо ви знайдете .tfstate (файли стану Terraform) або файли CloudFormation (це зазвичай файли yaml, розташовані всередині бакету з префіксом cf-templates), ви також можете їх прочитати, щоб знайти конфігурацію aws і дізнатися, які дозволи були надані кому.
enumerate-iam
Щоб використовувати інструмент https://github.com/andresriancho/enumerate-iam, спочатку потрібно завантажити всі API AWS кінцеві точки, з яких скрипт generate_bruteforce_tests.py отримає всі "list_", "describe_", і "get_" кінцеві точки. І, нарешті, він спробує доступитися до них з наданими обліковими даними і вказати, чи спрацювало.
(На моєму досвіді інструмент зависає в деякий момент, перегляньте це виправлення, щоб спробувати це виправити).
На моєму досвіді цей інструмент схожий на попередній, але працює гірше і перевіряє менше дозволів.
Ви також можете використовувати інструмент weirdAAL. Цей інструмент перевірить декілька загальних операцій на декількох загальних сервісах (перевірить деякі дозволи на перерахування, а також деякі дозволи на підвищення привілеїв). Але він перевірить лише закодовані перевірки (єдиний спосіб перевірити більше - це написати більше тестів).
# Installgitclonehttps://github.com/carnal0wnage/weirdAAL.gitcdweirdAALpython3-mvenvweirdAALsourceweirdAAL/bin/activatepip3install-rrequirements.txt# Create a .env file with aws credentials such as[default]aws_access_key_id=<insertkeyid>aws_secret_access_key=<insertsecretkey># Setup DBpython3create_dbs.py# Invoke itpython3weirdAAL.py-mec2_describe_instances-tec2test# Just some ec2 testspython3weirdAAL.py-mrecon_all-tMyTarget# Check all permissions# You will see output such as:# [+] elbv2 Actions allowed are [+]# ['DescribeLoadBalancers', 'DescribeAccountLimits', 'DescribeTargetGroups']
# https://github.com/turbot/steampipe-mod-aws-insightssteampipecheckall--export=json# https://github.com/turbot/steampipe-mod-aws-perimeter# In this case you cannot output to JSON, so heck it in the dashboardsteampipedashboard
<YourTool>
Жоден з попередніх інструментів не здатний перевірити всі дозволи, тому якщо ви знаєте кращий інструмент, надішліть PR!
# Connect with sso via CLI aws configure ssoawsconfiguresso[profile profile_name]sso_start_url=https://subdomain.awsapps.com/start/sso_account_id=<account_numbre>sso_role_name=AdministratorAccesssso_region=us-east-1
Enumeration
Основні елементи Центру ідентичності:
Користувачі та групи
Набори дозволів: Мають прикріплені політики
Облікові записи AWS
Потім створюються відносини, щоб користувачі/групи мали Набори дозволів над Обліковим записом AWS.
Зверніть увагу, що є 3 способи прикріплення політик до Набору дозволів. Прикріплення керованих політик AWS, політик, керованих замовником (ці політики потрібно створити в усіх облікових записах, на які впливають Набори дозволів), та вбудованих політик (визначених там).
# Check if IAM Identity Center is usedawssso-adminlist-instances# Get Permissions sets. These are the policies that can be assignedawssso-adminlist-permission-sets--instance-arn<instance-arn>awssso-admindescribe-permission-set--instance-arn<instance-arn>--permission-set-arn<perm-set-arn>## Get managed policies of a permission setawssso-adminlist-managed-policies-in-permission-set--instance-arn<instance-arn>--permission-set-arn<perm-set-arn>## Get inline policies of a permission setawssso-adminget-inline-policy-for-permission-set--instance-arn<instance-arn>--permission-set-arn<perm-set-arn>## Get customer managed policies of a permission setaws sso-admin list-customer-managed-policy-references-in-permission-set --instance-arn <instance-arn> --permission-set-arn <perm-set-arn>
## Get boundaries of a permission setaws sso-admin get-permissions-boundary-for-permission-set --instance-arn <instance-arn> --permission-set-arn <perm-set-arn>
## List accounts a permission set is affectingaws sso-admin list-accounts-for-provisioned-permission-set --instance-arn <instance-arn> --permission-set-arn <perm-set-arn>
## List principals given a permission set in an accountaws sso-admin list-account-assignments --instance-arn <instance-arn> --permission-set-arn <perm-set-arn> --account-id <account_id>
# Get permissions sets affecting an accountawssso-adminlist-permission-sets-provisioned-to-account--instance-arn<instance-arn>--account-id<account_id># List users & groups from the identity storeawsidentitystorelist-users--identity-store-id<store-id>awsidentitystorelist-groups--identity-store-id<store-id>## Get members of groupsawsidentitystorelist-group-memberships--identity-store-id<store-id>--group-id<group-id>## Get memberships or a user or a groupawsidentitystorelist-group-memberships-for-member--identity-store-id<store-id>--member-id<member-id>
Local Enumeration
Можливо створити всередині папки $HOME/.aws файл config для налаштування профілів, які доступні через SSO, наприклад:
Цю конфігурацію можна використовувати з командами:
# Login in ms-sso-profileawsssologin--profilemy-sso-profile# Use dependent-profileawss3ls--profiledependent-profile
Коли профіль з SSO використовується для доступу до деякої інформації, облікові дані кешуються у файлі всередині папки $HOME/.aws/sso/cache. Тому їх можна читати та використовувати звідти.
Більше того, додаткові облікові дані можуть зберігатися в папці $HOME/.aws/cli/cache. Ця директорія кешу в основному використовується, коли ви працюєте з профілями AWS CLI, які використовують облікові дані користувача IAM або припускають ролі через IAM (без SSO). Приклад конфігурації:
# Create user identitystore:CreateUseraws identitystore create-user --identity-store-id <store-id> --user-name privesc --display-name privesc --emails Value=sdkabflvwsljyclpma@tmmbt.net,Type=Work,Primary=True --name Formatted=privesc,FamilyName=privesc,GivenName=privesc
## After creating it try to login in the console using the selected username, you will receive an email with the code and then you will be able to select a password
Створіть групу, призначте їй дозволи та встановіть контрольованого користувача
Надати додаткові дозволи контрольованому користувачу або групі
За замовчуванням лише користувачі з дозволами з Облікового запису управління зможуть отримати доступ і контролювати IAM Identity Center.
Однак, за допомогою Делегованого адміністратора можна дозволити користувачам з іншого облікового запису керувати ним. Вони не матимуть точно таких же дозволів, але зможуть виконувати управлінські дії.