Translated ['src/README.md', 'src/banners/hacktricks-training.md', 'src/

This commit is contained in:
Translator
2024-12-31 20:42:16 +00:00
parent 4ecda9fe96
commit 92eaf7ce11
245 changed files with 9813 additions and 12533 deletions

View File

@@ -1,20 +1,20 @@
# AWS - IAM, Identity Center & SSO Enum
# AWS - IAM, Центр ідентифікації та SSO Enum
{{#include ../../../banners/hacktricks-training.md}}
## IAM
You can find a **description of IAM** in:
Ви можете знайти **опис IAM** в:
{{#ref}}
../aws-basic-information/
{{#endref}}
### Enumeration
### Перерахування
Main permissions needed:
Основні дозволи, які потрібні:
- `iam:ListPolicies`, `iam:GetPolicy` and `iam:GetPolicyVersion`
- `iam:ListPolicies`, `iam:GetPolicy` та `iam:GetPolicyVersion`
- `iam:ListRoles`
- `iam:ListUsers`
- `iam:ListGroups`
@@ -22,10 +22,9 @@ Main permissions needed:
- `iam:ListAttachedUserPolicies`
- `iam:ListAttachedRolePolicies`
- `iam:ListAttachedGroupPolicies`
- `iam:ListUserPolicies` and `iam:GetUserPolicy`
- `iam:ListGroupPolicies` and `iam:GetGroupPolicy`
- `iam:ListRolePolicies` and `iam:GetRolePolicy`
- `iam:ListUserPolicies` та `iam:GetUserPolicy`
- `iam:ListGroupPolicies` та `iam:GetGroupPolicy`
- `iam:ListRolePolicies` та `iam:GetRolePolicy`
```bash
# All IAMs
## Retrieves information about all IAM users, groups, roles, and policies
@@ -89,64 +88,54 @@ aws iam get-account-password-policy
aws iam list-mfa-devices
aws iam list-virtual-mfa-devices
```
### Permissions Brute Force
If you are interested in your own permissions but you don't have access to query IAM you could always brute-force them.
Якщо вас цікавлять ваші власні дозволи, але у вас немає доступу для запиту IAM, ви завжди можете їх брутфорсити.
#### bf-aws-permissions
The tool [**bf-aws-permissions**](https://github.com/carlospolop/bf-aws-permissions) is just a bash script that will run using the indicated profile all the **`list*`, `describe*`, `get*`** actions it can find using `aws` cli help messages and **return the successful executions**.
Інструмент [**bf-aws-permissions**](https://github.com/carlospolop/bf-aws-permissions) - це просто bash-скрипт, який буде виконувати всі **`list*`, `describe*`, `get*`** дії, які він може знайти, використовуючи повідомлення допомоги `aws` cli, і **повертати успішні виконання**.
```bash
# Bruteforce permissions
bash bf-aws-permissions.sh -p default > /tmp/bf-permissions-verbose.txt
```
#### bf-aws-perms-simulate
The tool [**bf-aws-perms-simulate**](https://github.com/carlospolop/bf-aws-perms-simulate) can find your current permission (or the ones of other principals) if you have the permission **`iam:SimulatePrincipalPolicy`**
Інструмент [**bf-aws-perms-simulate**](https://github.com/carlospolop/bf-aws-perms-simulate) може знайти ваші поточні дозволи (або дозволи інших суб'єктів), якщо у вас є дозвіл **`iam:SimulatePrincipalPolicy`**
```bash
# Ask for permissions
python3 aws_permissions_checker.py --profile <AWS_PROFILE> [--arn <USER_ARN>]
```
#### Perms2ManagedPolicies
If you found **some permissions your user has**, and you think that they are being granted by a **managed AWS role** (and not by a custom one). You can use the tool [**aws-Perms2ManagedRoles**](https://github.com/carlospolop/aws-Perms2ManagedPolicies) to check all the **AWS managed roles that grants the permissions you discovered that you have**.
Якщо ви знайшли **деякі дозволи, які має ваш користувач**, і вважаєте, що вони надаються **керованою роллю AWS** (а не кастомною). Ви можете використовувати інструмент [**aws-Perms2ManagedRoles**](https://github.com/carlospolop/aws-Perms2ManagedPolicies), щоб перевірити всі **керовані ролі AWS, які надають дозволи, які ви виявили, що маєте**.
```bash
# Run example with my profile
python3 aws-Perms2ManagedPolicies.py --profile myadmin --permissions-file example-permissions.txt
```
> [!WARNING]
> It's possible to "know" if the permissions you have are granted by an AWS managed role if you see that **you have permissions over services that aren't used** for example.
> Можливо "знати", чи надані вам дозволи через керовану роль AWS, якщо ви бачите, що **у вас є дозволи на сервіси, які не використовуються**, наприклад.
#### Cloudtrail2IAM
[**CloudTrail2IAM**](https://github.com/carlospolop/Cloudtrail2IAM) is a Python tool that analyses **AWS CloudTrail logs to extract and summarize actions** done by everyone or just an specific user or role. The tool will **parse every cloudtrail log from the indicated bucket**.
[**CloudTrail2IAM**](https://github.com/carlospolop/Cloudtrail2IAM) - це інструмент на Python, який аналізує **журнали AWS CloudTrail для витягування та узагальнення дій**, виконаних усіма або лише конкретним користувачем чи роллю. Інструмент **розпарсить кожен журнал cloudtrail з вказаного бакету**.
```bash
git clone https://github.com/carlospolop/Cloudtrail2IAM
cd Cloudtrail2IAM
pip install -r requirements.txt
python3 cloudtrail2IAM.py --prefix PREFIX --bucket_name BUCKET_NAME --profile PROFILE [--filter-name FILTER_NAME] [--threads THREADS]
```
> [!WARNING]
> If you find .tfstate (Terraform state files) or CloudFormation files (these are usually yaml files located inside a bucket with the prefix cf-templates), you can also read them to find aws configuration and find which permissions have been assigned to who.
> Якщо ви знайдете .tfstate (файли стану Terraform) або файли CloudFormation (це зазвичай файли yaml, розташовані в бакеті з префіксом cf-templates), ви також можете їх прочитати, щоб знайти конфігурацію aws і дізнатися, які дозволи були надані кому.
#### enumerate-iam
To use the tool [**https://github.com/andresriancho/enumerate-iam**](https://github.com/andresriancho/enumerate-iam) you first need to download all the API AWS endpoints, from those the script **`generate_bruteforce_tests.py`** will get all the **"list\_", "describe\_", and "get\_" endpoints.** And finally, it will try to **access them** with the given credentials and **indicate if it worked**.
Щоб використовувати інструмент [**https://github.com/andresriancho/enumerate-iam**](https://github.com/andresriancho/enumerate-iam), спочатку потрібно завантажити всі API AWS кінцеві точки, з яких скрипт **`generate_bruteforce_tests.py`** отримає всі **"list\_", "describe\_", і "get\_" кінцеві точки.** І, нарешті, він спробує **доступитися до них** з наданими обліковими даними і **вказати, чи спрацювало**.
(In my experience the **tool hangs at some point**, [**checkout this fix**](https://github.com/andresriancho/enumerate-iam/pull/15/commits/77ad5b41216e3b5f1511d0c385da8cd5984c2d3c) to try to fix that).
(На моєму досвіді **інструмент зависає в деякий момент**, [**перевірте це виправлення**](https://github.com/andresriancho/enumerate-iam/pull/15/commits/77ad5b41216e3b5f1511d0c385da8cd5984c2d3c), щоб спробувати це виправити).
> [!WARNING]
> In my experience this tool is like the previous one but working worse and checking less permissions
> На моєму досвіді цей інструмент схожий на попередній, але працює гірше і перевіряє менше дозволів.
```bash
# Install tool
git clone git@github.com:andresriancho/enumerate-iam.git
@@ -163,11 +152,9 @@ cd ..
# Enumerate permissions
python3 enumerate-iam.py --access-key ACCESS_KEY --secret-key SECRET_KEY [--session-token SESSION_TOKEN] [--region REGION]
```
#### weirdAAL
You could also use the tool [**weirdAAL**](https://github.com/carnal0wnage/weirdAAL/wiki). This tool will check **several common operations on several common services** (will check some enumeration permissions and also some privesc permissions). But it will only check the coded checks (the only way to check more stuff if coding more tests).
Ви також можете використовувати інструмент [**weirdAAL**](https://github.com/carnal0wnage/weirdAAL/wiki). Цей інструмент перевірить **декілька загальних операцій на декількох загальних сервісах** (перевірить деякі дозволи на перерахування, а також деякі дозволи на підвищення привілеїв). Але він перевірить лише закодовані перевірки (єдиний спосіб перевірити більше - це написати більше тестів).
```bash
# Install
git clone https://github.com/carnal0wnage/weirdAAL.git
@@ -191,12 +178,10 @@ python3 weirdAAL.py -m recon_all -t MyTarget # Check all permissions
# [+] elbv2 Actions allowed are [+]
# ['DescribeLoadBalancers', 'DescribeAccountLimits', 'DescribeTargetGroups']
```
#### Hardening Tools to BF permissions
#### Ускладнення інструментів для BF дозволів
{{#tabs }}
{{#tab name="CloudSploit" }}
```bash
# Export env variables
./index.js --console=text --config ./config.js --json /tmp/out-cloudsploit.json
@@ -207,11 +192,9 @@ jq 'map(select(.status | contains("UNKNOWN") | not))' /tmp/out-cloudsploit.json
# Get services by regions
jq 'group_by(.region) | map({(.[0].region): ([map((.resource | split(":"))[2]) | unique])})' ~/Desktop/pentests/cere/greybox/core-dev-dev-cloudsploit-filtered.json
```
{{#endtab }}
{{#tab name="SteamPipe" }}
```bash
# https://github.com/turbot/steampipe-mod-aws-insights
steampipe check all --export=json
@@ -220,50 +203,48 @@ steampipe check all --export=json
# In this case you cannot output to JSON, so heck it in the dashboard
steampipe dashboard
```
{{#endtab }}
{{#endtabs }}
#### \<YourTool>
Neither of the previous tools is capable of checking close to all permissions, so if you know a better tool send a PR!
Жоден з попередніх інструментів не здатний перевірити майже всі дозволи, тому якщо ви знаєте кращий інструмент, надішліть PR!
### Unauthenticated Access
### Неавтентифікований доступ
{{#ref}}
../aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md
{{#endref}}
### Privilege Escalation
### Підвищення привілеїв
In the following page you can check how to **abuse IAM permissions to escalate privileges**:
На наступній сторінці ви можете перевірити, як **зловживати дозволами IAM для підвищення привілеїв**:
{{#ref}}
../aws-privilege-escalation/aws-iam-privesc.md
{{#endref}}
### IAM Post Exploitation
### IAM Після експлуатації
{{#ref}}
../aws-post-exploitation/aws-iam-post-exploitation.md
{{#endref}}
### IAM Persistence
### IAM Постійність
{{#ref}}
../aws-persistence/aws-iam-persistence.md
{{#endref}}
## IAM Identity Center
## IAM Центр ідентичності
You can find a **description of IAM Identity Center** in:
Ви можете знайти **опис IAM Центру ідентичності** в:
{{#ref}}
../aws-basic-information/
{{#endref}}
### Connect via SSO with CLI
### Підключення через SSO з CLI
```bash
# Connect with sso via CLI aws configure sso
aws configure sso
@@ -274,20 +255,18 @@ sso_account_id = <account_numbre>
sso_role_name = AdministratorAccess
sso_region = us-east-1
```
### Enumeration
The main elements of the Identity Center are:
Основні елементи Центру ідентичності:
- Users and groups
- Permission Sets: Have policies attached
- AWS Accounts
- Користувачі та групи
- Набори дозволів: Мають прикріплені політики
- Облікові записи AWS
Then, relationships are created so users/groups have Permission Sets over AWS Account.
Потім створюються відносини, щоб користувачі/групи мали Набори дозволів над Обліковим записом AWS.
> [!NOTE]
> Note that there are 3 ways to attach policies to a Permission Set. Attaching AWS managed policies, Customer managed policies (these policies needs to be created in all the accounts the Permissions Set is affecting), and inline policies (defined in there).
> Зверніть увагу, що є 3 способи прикріплення політик до Набору дозволів. Прикріплення керованих політик AWS, політик, керованих замовником (ці політики потрібно створити в усіх облікових записах, на які впливають Набори дозволів), і вбудованих політик (визначених там).
```bash
# Check if IAM Identity Center is used
aws sso-admin list-instances
@@ -321,11 +300,9 @@ aws identitystore list-group-memberships --identity-store-id <store-id> --group-
## Get memberships or a user or a group
aws identitystore list-group-memberships-for-member --identity-store-id <store-id> --member-id <member-id>
```
### Local Enumeration
It's possible to create inside the folder `$HOME/.aws` the file config to configure profiles that are accessible via SSO, for example:
Можливо створити всередині папки `$HOME/.aws` файл config для налаштування профілів, які доступні через SSO, наприклад:
```ini
[default]
region = us-west-2
@@ -343,20 +320,16 @@ output = json
role_arn = arn:aws:iam::<acc-id>:role/ReadOnlyRole
source_profile = Hacktricks-Admin
```
This configuration can be used with the commands:
Ця конфігурація може бути використана з командами:
```bash
# Login in ms-sso-profile
aws sso login --profile my-sso-profile
# Use dependent-profile
aws s3 ls --profile dependent-profile
```
Коли **профіль з SSO використовується** для доступу до деякої інформації, облікові дані **кешуються** у файлі всередині папки **`$HOME/.aws/sso/cache`**. Тому їх можна **читати та використовувати звідти**.
When a **profile from SSO is used** to access some information, the credentials are **cached** in a file inside the folder **`$HOME/.aws/sso/cache`**. Therefore they can be **read and used from there**.
Moreover, **more credentials** can be stored in the folder **`$HOME/.aws/cli/cache`**. This cache directory is primarily used when you are **working with AWS CLI profiles** that use IAM user credentials or **assume** roles through IAM (without SSO). Config example:
Більше того, **більше облікових даних** можна зберігати в папці **`$HOME/.aws/cli/cache`**. Ця директорія кешу в основному використовується, коли ви **працюєте з профілями AWS CLI**, які використовують облікові дані користувача IAM або **припускають** ролі через IAM (без SSO). Приклад конфігурації:
```ini
[profile crossaccountrole]
role_arn = arn:aws:iam::234567890123:role/SomeRole
@@ -364,43 +337,36 @@ source_profile = default
mfa_serial = arn:aws:iam::123456789012:mfa/saanvi
external_id = 123456
```
### Unauthenticated Access
### Неавтентифікований доступ
{{#ref}}
../aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md
{{#endref}}
### Privilege Escalation
### Підвищення привілеїв
{{#ref}}
../aws-privilege-escalation/aws-sso-and-identitystore-privesc.md
{{#endref}}
### Post Exploitation
### Після експлуатації
{{#ref}}
../aws-post-exploitation/aws-sso-and-identitystore-post-exploitation.md
{{#endref}}
### Persistence
#### Create a user an assign permissions to it
### Постійність
#### Створити користувача та призначити йому дозволи
```bash
# Create user identitystore:CreateUser
aws 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.
- Create a group and assign it permissions and set on it a controlled user
- Give extra permissions to a controlled user or group
- By default, only users with permissions form the Management Account are going to be able to access and control the IAM Identity Center.
However, it's possible via Delegate Administrator to allow users from a different account to manage it. They won't have exactly the same permission, but they will be able to perform [**management activities**](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html).
Однак, за допомогою Делегованого адміністратора можна дозволити користувачам з іншого облікового запису керувати ним. Вони не матимуть точно таких же дозволів, але зможуть виконувати [**управлінські дії**](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html).
{{#include ../../../banners/hacktricks-training.md}}