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 usersawsiamlist-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
Toestemmings Brute Force
Indien jy belangstel in jou eie toestemmings maar nie toegang het om IAM te ondervra nie, kan jy altyd hulle brute force.
bf-aws-toestemmings
Die instrument bf-aws-toestemmings is net 'n bash-skrip wat sal loop met die aangeduide profiel al die lys*, beskryf*, kry* aksies wat dit kan vind deur aws cli hulpboodskappe en die suksesvolle uitvoerings teruggee.
Die gereedskap bf-aws-perms-simulate kan jou huidige toestemming (of dié van ander hoofde) vind as jy die toestemming iam:SimulatePrincipalPolicy het.
# Ask for permissionspython3aws_permissions_checker.py--profile<AWS_PROFILE> [--arn <USER_ARN>]
Perms2ManagedPolicies
Indien jy sekere toestemmings wat jou gebruiker het gevind het, en jy dink dat hulle verleen word deur 'n bestuurde AWS rol (en nie deur 'n aangepaste een nie). Jy kan die instrument aws-Perms2ManagedRoles gebruik om al die AWS bestuurde rolle wat die toestemmings verleen wat jy ontdek het wat jy het te kontroleer.
# Run example with my profilepython3aws-Perms2ManagedPolicies.py--profilemyadmin--permissions-fileexample-permissions.txt
Dit is moontlik om te "weet" of die toestemmings wat jy het, verleen word deur 'n AWS-bestuurde rol as jy sien dat jy toestemmings het oor dienste wat nie gebruik word nie byvoorbeeld.
Cloudtrail2IAM
CloudTrail2IAM is 'n Python-werktuig wat AWS CloudTrail-logboeke analiseer om aksies te onttrek en saam te vat wat deur almal gedoen is of net 'n spesifieke gebruiker of rol. Die werktuig sal elke cloudtrail-logboek van die aangeduide emmer ontleden.
As jy .tfstate (Terraform staat 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 hulle ook lees om aws konfigurasie te vind en te bepaal watter toestemmings aan wie toegeken is.
enumereer-iam
Om die instrument https://github.com/andresriancho/enumerate-iam te gebruik, moet jy eers al die API AWS eindpunte aflaai, waaruit die skriffie generate_bruteforce_tests.py al die "lys_", "beskryf_", en "kry_" eindpunte sal kry. En uiteindelik sal dit probeer om toegang tot hulle te verkry met die gegewe geloofsbriewe en aandui of dit gewerk het.
(In my ervaring hang die instrument op 'n stadium, kyk na hierdie regstelling om te probeer om dit reg te stel).
In my ervaring is hierdie instrument soos die vorige een, maar werk swakker en kontroleer minder toestemmings.
Jy kan ook die instrument weirdAAL gebruik. Hierdie instrument sal verskeie algemene operasies op verskeie algemene dienste nagaan (sal sekere opsporingstoestemmings en ook sekere privesc-toestemmings nagaan). Maar dit sal slegs die gekodeerde kontroles nagaan (die enigste manier om meer dinge te toets is deur 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
<JouTool>
Geen van die vorige gereedskap is in staat om naby aan alle regte 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
Opsomming
Die hoofelemente van die Identiteitsentrum is:
Gebruikers en groepe
Toestemmingsreeks: Het beleide geheg
AWS-rekeninge
Daarna word verhoudings geskep sodat gebruikers/groepe Toestemmingsreeks oor AWS-rekening het.
Let daarop dat daar 3 maniere is om beleide aan 'n Toestemmingsreeks te heg. Bevestiging van AWS-bestuurde beleide, Kliëntbestuurde beleide (hierdie beleide moet in al die rekeninge geskep word waar die Toestemmingsreeks 'n invloed het), en inline-beleide (daarin gedefinieer).
# 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>
Plaaslike Opsomming
Dit is moontlik om binne die $HOME/.aws-gids die lêer config te skep om profiele te konfigureer wat toeganklik is via SSO, 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 vanaf SSO gebruik word om toegang tot sekere inligting te verkry, word die geloofsbriewe in 'n lêer binne die $HOME/.aws/sso/cache-vouer gekas. Daarom kan hulle van daar gelees en gebruik word.
Verder kan meer geloofsbriewe gestoor word in die $HOME/.aws/cli/cache-vouer. Hierdie kasvouer word hoofsaaklik gebruik wanneer jy werk met AWS CLI-profiels wat IAM-gebruikergeloofsbriewe gebruik of rolle aanneem deur IAM (sonder SSO). Konfigurasievoorbeeld:
# 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
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 kan slegs gebruikers met toestemmings van die Bestuursrekening toegang verkry en die IAM-identiteitsentrum beheer.
Dit is egter moontlik via die Delegeer-administrator om 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.