iam:ListPolicies, iam:GetPolicy i iam:GetPolicyVersion
iam:ListRoles
iam:ListUsers
iam:ListGroups
iam:ListGroupsForUser
iam:ListAttachedUserPolicies
iam:ListAttachedRolePolicies
iam:ListAttachedGroupPolicies
iam:ListUserPolicies i iam:GetUserPolicy
iam:ListGroupPolicies i iam:GetGroupPolicy
iam:ListRolePolicies i 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
Brute Force napadi na dozvole
Ako vas zanimaju vaše sopstvene dozvole, a nemate pristup upitu IAM, uvek možete pokušati da ih otkrijete brute force tehnikom.
bf-aws-dozvole
Alat bf-aws-dozvole je samo bash skripta koja će se pokrenuti koristeći naznačeni profil sve list*, describe*, get* akcije koje može pronaći koristeći pomoć aws cli poruka i vratiti uspešne izvršavanja.
Alatka bf-aws-perms-simulate može pronaći vašu trenutnu dozvolu (ili dozvole drugih principala) ako imate dozvolu iam:SimulatePrincipalPolicy
# Ask for permissionspython3aws_permissions_checker.py--profile<AWS_PROFILE> [--arn <USER_ARN>]
Perms2ManagedPolicies
Ako ste pronašli neka dozvole koje vaš korisnik ima, i mislite da su one dodeljene od strane upravljane AWS uloge (a ne prilagođene). Možete koristiti alat aws-Perms2ManagedRoles da proverite sve AWS upravljane uloge koje dodeljuju dozvole koje ste otkrili da imate.
# Run example with my profilepython3aws-Perms2ManagedPolicies.py--profilemyadmin--permissions-fileexample-permissions.txt
Moguće je "znati" da li su dozvole koje imate dodeljene od strane AWS upravljane uloge ako primetite da imate dozvole nad uslugama koje se ne koriste na primer.
Cloudtrail2IAM
CloudTrail2IAM je Python alat koji analizira AWS CloudTrail zapise kako bi izvukao i sumirao akcije koje su obavljene od strane svih ili samo određenog korisnika ili uloge. Alat će parsirati svaki cloudtrail zapis iz navedene kante.
Ako pronađete .tfstate (Terraform stanje datoteke) ili CloudFormation datoteke (obično su to yaml datoteke smeštene unutar kante sa prefiksom cf-templates), takođe možete ih pročitati da biste pronašli AWS konfiguraciju i saznali koje dozvole su dodeljene kome.
enumerate-iam
Da biste koristili alat https://github.com/andresriancho/enumerate-iam prvo morate preuzeti sve API AWS endpointe, od kojih će skripta generate_bruteforce_tests.py dobiti sve "list_", "describe_" i "get_" endpointe. Na kraju, pokušaće da pristupi njima sa datim akreditivima i ukazati da li je uspelo.
(U mom iskustvu, alat se zakači u nekom trenutku, proverite ovaj popravak da biste pokušali da to popravite).
Po mom iskustvu, ovaj alat je sličan prethodnom, ali radi lošije i proverava manje dozvola.
Takođe možete koristiti alat weirdAAL. Ovaj alat će proveriti nekoliko uobičajenih operacija na nekoliko uobičajenih servisa (proveriće neka dozvole za enumeraciju i neka dozvole za privesc). Međutim, proverava samo kodirane provere (jedini način da se proveri više stvari je kodiranje dodatnih testova).
# 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
<VašAlat>
Ni jedan od prethodnih alata nije sposoban da proveri skoro sve dozvole, pa ako znate bolji alat pošaljite 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
Enumeracija
Glavni elementi Centra identiteta su:
Korisnici i grupe
Setovi dozvola: Imaju pridružene politike
AWS nalozi
Zatim se uspostavljaju odnosi tako da korisnici/grupe imaju Setove dozvola nad AWS nalogom.
Imajte na umu da postoji 3 načina za pridruživanje politika Setu dozvola. Pridruživanje AWS upravljanih politika, Korisnički upravljane politike (ove politike treba kreirati u svim nalozima na koje Set dozvola utiče) i ugrađene politike (definisane unutar njih).
# 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>
Lokalna enumeracija
Moguće je kreirati unutar fascikle $HOME/.aws fajl config kako bi se konfigurisali profili koji su pristupačni putem SSO-a, na primer:
Ova konfiguracija može se koristiti sa sledećim komandama:
# Login in ms-sso-profileawsssologin--profilemy-sso-profile# Use dependent-profileawss3ls--profiledependent-profile
Kada se profil iz SSO-a koristi za pristupanje određenim informacijama, akreditacije se keširaju u datoteci unutar fascikle $HOME/.aws/sso/cache. Stoga se mogu pročitati i koristiti odatle.
Osim toga, više akreditacija može biti sačuvano u fascikli $HOME/.aws/cli/cache. Ova keš fascikla se uglavnom koristi kada radite sa AWS CLI profilima koji koriste IAM korisničke akreditacije ili pretpostavljaju uloge putem IAM-a (bez SSO-a). Primer konfiguracije:
# 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
Napravite grupu i dodelite joj dozvole, zatim postavite kontrolisanog korisnika na nju
Dajte dodatne dozvole kontrolisanom korisniku ili grupi
Podrazumevano, samo korisnici sa dozvolama iz Upravljačkog naloga će moći da pristupe i kontrolišu IAM Identity Center.
Međutim, moguće je putem Delegiranog administratora omogućiti korisnicima iz drugog naloga da ga upravljaju. Neće imati potpuno iste dozvole, ali će moći da obavljaju aktivnosti upravljanja.