iam:ListPolicies, iam:GetPolicy en iam:GetPolicyVersion
iam:ListRoles
iam:ListUsers
iam:ListGroups
iam:ListGroupsForUser
iam:ListAttachedUserPolicies
iam:ListAttachedRolePolicies
iam:ListAttachedGroupPolicies
iam:ListUserPolicies en iam:GetUserPolicy
iam:ListGroupPolicies en iam:GetGroupPolicy
iam:ListRolePolicies en 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]awsiamlist-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
Toestemmings Brute Force
As jy belangstel in jou eie toestemmings, maar jy het nie toegang om IAM te ondervra nie, kan jy altyd brute-force hulle.
bf-aws-permissions
Die hulpmiddel bf-aws-permissions is net 'n bash-skrip wat sal loop met die aangeduide profiel al die list*, describe*, get* aksies wat dit kan vind met behulp van aws cli hulpboodskappe en teruggee die suksesvolle uitvoerings.
Die hulpmiddel bf-aws-perms-simulate kan jou huidige toestemming (of dié van ander principals) vind as jy die toestemming iam:SimulatePrincipalPolicy het.
# Ask for permissionspython3aws_permissions_checker.py--profile<AWS_PROFILE> [--arn <USER_ARN>]
Perms2ManagedPolicies
As jy sekere toestemmings gevind het wat jou gebruiker het, en jy dink dat dit toegeken word deur 'n bestuurde AWS rol (en nie deur 'n pasgemaakte een nie). Jy kan die hulpmiddel aws-Perms2ManagedRoles gebruik om al die AWS bestuurde rolle te kontroleer wat die toestemmings wat jy ontdek het dat jy het, toeken.
# Run example with my profilepython3aws-Perms2ManagedPolicies.py--profilemyadmin--permissions-fileexample-permissions.txt
Dit is moontlik om te "weet" of die toestemmings wat jy het, toegeken is deur 'n AWS bestuurde rol as jy sien dat jy toestemmings oor dienste het wat nie gebruik word nie byvoorbeeld.
Cloudtrail2IAM
CloudTrail2IAM is 'n Python-gereedskap wat AWS CloudTrail logs analiseer om aksies wat deur almal of net 'n spesifieke gebruiker of rol gedoen is, te onttrek en saam te vat. Die gereedskap sal elke cloudtrail log van die aangeduide emmer parse.
As jy .tfstate (Terraform toestand lêers) of CloudFormation lêers vind (hierdie is gewoonlik yaml lêers wat binne 'n emmer met die voorvoegsel cf-templates geleë is), kan jy dit ook lees om aws konfigurasie te vind en te sien watter toestemmings aan wie toegeken is.
enumerate-iam
Om die hulpmiddel https://github.com/andresriancho/enumerate-iam te gebruik, moet jy eers al die API AWS eindpunte aflaai. Van hierdie eindpunte sal die skrip generate_bruteforce_tests.py al die "list_", "describe_", en "get_" eindpunte kry. En uiteindelik sal dit probeer om toegang tot hulle te verkry met die gegewe akrediteer en aan dui of dit gewerk het.
(Volgens my ervaring hang die hulpmiddel op 'n sekere punt, kyk na hierdie oplossing om te probeer om dit reg te stel).
Volgens my ervaring is hierdie hulpmiddel soos die vorige een, maar werk erger en kontroleer minder toestemmings.
Jy kan ook die hulpmiddel weirdAAL gebruik. Hierdie hulpmiddel sal verskeie algemene operasies op verskeie algemene dienste nagaan (sal 'n paar enumerasie-toestemmings en ook 'n paar privesc-toestemmings nagaan). Maar dit sal slegs die gekodeerde toetse nagaan (die enigste manier om meer goed na te gaan, is om meer toetse te kodeer).
# 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>
Geen van die vorige gereedskap is in staat om naby al die toestemmings te kontroleer nie, so as jy 'n beter gereedskap ken, stuur 'n 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
Enumerasie
Die hoofelemente van die Identiteitsentrum is:
Gebruikers en groepe
Toestemmingsstelle: Het beleide aangeheg
AWS-rekeninge
Dan word verhoudings geskep sodat gebruikers/groepe Toestemmingsstelle oor AWS-rekening het.
Let daarop dat daar 3 maniere is om beleide aan 'n Toestemmingsstel te heg. Om AWS-beheerde beleide, Kliënt-beheerde beleide (hierdie beleide moet in al die rekeninge geskep word wat die Toestemmingsstel beïnvloed), en inline beleide (gedefinieer daar) aan te heg.
# 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 setawssso-adminlist-customer-managed-policy-references-in-permission-set--instance-arn<instance-arn>--permission-set-arn<perm-set-arn>## Get boundaries of a permission setawssso-adminget-permissions-boundary-for-permission-set--instance-arn<instance-arn>--permission-set-arn<perm-set-arn>## List accounts a permission set is affectingawssso-adminlist-accounts-for-provisioned-permission-set--instance-arn<instance-arn>--permission-set-arn<perm-set-arn>## List principals given a permission set in an accountawssso-adminlist-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>
Plaaslike Enumerasie
Dit is moontlik om binne die gids $HOME/.aws die lêer config te skep om profiele te konfigureer wat via SSO toeganklik is, byvoorbeeld:
Hierdie konfigurasie kan gebruik word met die opdragte:
# Login in ms-sso-profileawsssologin--profilemy-sso-profile# Use dependent-profileawss3ls--profiledependent-profile
Wanneer 'n profiel van SSO gebruik word om toegang tot sekere inligting te verkry, word die geloofsbriewe gekas in 'n lêer binne die gids $HOME/.aws/sso/cache. Daarom kan dit gelees en daar gebruik word.
Boonop kan meer geloofsbriewe in die gids $HOME/.aws/cli/cache gestoor word. Hierdie kasgids word hoofsaaklik gebruik wanneer jy met AWS CLI-profiele werk wat IAM-gebruiker geloofsbriewe gebruik of aanneem rolle deur IAM (sonder SSO). Konfigurasie voorbeeld:
# Create user identitystore:CreateUserawsidentitystorecreate-user--identity-store-id<store-id>--user-nameprivesc--display-nameprivesc--emailsValue=sdkabflvwsljyclpma@tmmbt.net,Type=Work,Primary=True--nameFormatted=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
Skep 'n groep en ken dit toestemmings toe en stel 'n beheerde gebruiker daarop in
Gee ekstra toestemmings aan 'n beheerde gebruiker of groep
Standaard sal slegs gebruikers met toestemmings van die Bestuursrekening toegang hê tot en beheer oor die IAM Identiteitsentrum.
Dit is egter moontlik om via 'n Gedelegeerde Administrateur gebruikers van 'n ander rekening toe te laat om dit te bestuur. Hulle sal nie presies dieselfde toestemming hê nie, maar hulle sal in staat wees om bestuursaktiwiteite uit te voer.