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 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
권한 브루트 포스
만약 IAM을 쿼리할 수 있는 액세스 권한이 없지만 자신의 권한에 관심이 있다면 브루트 포스를 시도할 수 있습니다.
bf-aws-permissions
도구 bf-aws-permissions는 지정된 프로필을 사용하여 실행되는 bash 스크립트로, aws cli 도움말을 사용하여 찾을 수 있는 모든 list*, describe*, get* 액션을 실행하고 성공적인 실행을 반환합니다.
만약 .tfstate (Terraform 상태 파일) 또는 CloudFormation 파일을 찾으면 (일반적으로 버킷 내에 cf-templates 접두사가 있는 yaml 파일들) 이를 읽어 AWS 구성을 찾고 어떤 권한이 누구에게 할당되었는지 확인할 수 있습니다.
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
열거
아이덴티티 센터의 주요 요소는 다음과 같습니다:
사용자 및 그룹
권한 세트: 정책이 첨부됨
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>
로컬 열거
$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을 통해 역할을 가정할 때 사용됩니다. 구성 예시:
```bash # Create user identitystore:CreateUser aws identitystore create-user --identity-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에 액세스하고 제어할 수 있는 사용자는 관리 계정의 권한을 가진 사용자뿐입니다.
그러나 대리자 관리자를 통해 다른 계정의 사용자가 관리할 수 있도록 허용할 수 있습니다. 그들은 정확히 동일한 권한을 갖지는 않겠지만 관리 활동을 수행할 수 있을 것입니다.