# 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:::role/priv-role" }, "Action": "sts:AssumeRole", "Condition": {} } ] } ``` 이 경우 **`priv-role`** 역할은 해당 역할을 맡기 위해 **특별히 허용될 필요가 없습니다** (그 허용만으로 충분합니다). 그러나 역할이 계정이 그것을 맡도록 허용하는 경우, 예를 들어: ```json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam:::root" }, "Action": "sts:AssumeRole", "Condition": {} } ] } ``` 역할을 가정하려면 해당 역할에 대해 **특정 `sts:AssumeRole` 권한**이 필요합니다 **가정하기 위해**. 다른 계정에서 **역할**을 가정하려고 하면, **가정된 역할이 이를 허용해야** 합니다 (역할 **ARN** 또는 **외부 계정**을 지정), 그리고 **다른 역할을 가정하려는 역할은** **가정할 수 있는 권한이 있어야** 합니다 (이 경우 가정된 역할이 ARN을 지정하더라도 선택 사항이 아닙니다). ### Enumeration ```bash # Get basic info of the creds aws sts get-caller-identity aws sts get-access-key-info --access-key-id # 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 --token-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}}