# AWS - STS Enum

{{#include ../../../banners/hacktricks-training.md}}

## STS

**AWS Security Token Service (STS)**は、主に**一時的で制限された特権の資格情報**を発行するために設計されています。これらの資格情報は、**AWS Identity and Access Management (IAM)**ユーザーや認証されたユーザー（フェデレーテッドユーザー）のためにリクエストできます。

STSの目的が**アイデンティティのなりすましのための資格情報を発行すること**であるため、このサービスは**特権の昇格と持続性の維持**に非常に価値がありますが、選択肢は多くありません。

### Assume Role Impersonation

AWS STSが提供するアクション[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)は、別のプリンシパルのために資格情報を取得することを許可するため、非常に重要です。これにより、実質的にそのプリンシパルになりすますことができます。呼び出すと、指定されたARNに対応するアクセスキーID、シークレットキー、およびセッショントークンが返されます。

ペネトレーションテスターやレッドチームのメンバーにとって、この技術は特権昇格において重要です（詳細は[**こちら**](../aws-privilege-escalation/aws-sts-privesc.md#sts-assumerole)）。ただし、この技術は非常に目立つため、攻撃者を驚かせることはないかもしれません。

#### Assume Role Logic

同じアカウント内で役割を引き受けるためには、**引き受ける役割が特定の役割ARNを許可している場合**のように:
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<acc_id>:role/priv-role"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}
```
この場合、役割 **`priv-role`** は、その役割を引き受けるために特に許可される必要はありません（その許可があれば十分です）。

ただし、役割がアカウントにそれを引き受けることを許可している場合、次のように：
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<acc_id>:root"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}
```
その役割を引き受けようとするには、その役割に対して**特定の `sts:AssumeRole` 権限**が必要です**。**

異なるアカウントから**役割**を引き受けようとすると、**引き受けられた役割がそれを許可する必要があります**（役割の**ARN**または**外部アカウント**を示す）、そして**他の役割を引き受けようとする役割は**それを引き受けるための権限を**持っている必要があります**（この場合、引き受けられた役割がARNを指定していてもこれはオプションではありません）。

### 列挙
```bash
# Get basic info of the creds
aws sts get-caller-identity
aws sts get-access-key-info --access-key-id <AccessKeyID>

# Get CLI a session token with current creds
## Using CLI creds
## You cannot get session creds using session creds
aws sts get-session-token
## MFA
aws sts get-session-token --serial-number <arn_device> --token-code <otp_code>
```
### Privesc

次のページでは、**STS権限を悪用して特権を昇格させる方法**を確認できます：

{{#ref}}
../aws-privilege-escalation/aws-sts-privesc/README.md
{{#endref}}

### Post Exploitation

{{#ref}}
../aws-post-exploitation/aws-sts-post-exploitation/README.md
{{#endref}}

### Persistence

{{#ref}}
../aws-persistence/aws-sts-persistence/README.md
{{#endref}}

## References

- [https://blog.christophetd.fr/retrieving-aws-security-credentials-from-the-aws-console/?utm_source=pocket_mylist](https://blog.christophetd.fr/retrieving-aws-security-credentials-from-the-aws-console/?utm_source=pocket_mylist)

{{#include ../../../banners/hacktricks-training.md}}
