mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-04 11:07:37 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-basic-information/REA
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
|
||||
### Contas
|
||||
|
||||
No AWS, existe uma **conta root**, que é o **container pai para todas as contas** da sua **organização**. No entanto, você não precisa usar essa conta para implantar recursos, pode criar **outras contas para separar diferentes infraestruturas AWS** entre si.
|
||||
No AWS, existe uma **conta root**, que é o **container pai para todas as contas** da sua **organização**. No entanto, você não precisa usar essa conta para implantar recursos, pode criar **outras contas para separar diferentes infraestruturas AWS** entre elas.
|
||||
|
||||
Isso é muito interessante do ponto de vista de **segurança**, pois **uma conta não poderá acessar recursos de outra conta** (exceto se pontes forem especificamente criadas), assim você pode criar limites entre implantações.
|
||||
|
||||
@@ -26,14 +26,14 @@ Portanto, existem **dois tipos de contas em uma organização** (estamos falando
|
||||
|
||||
A conta de gerenciamento tem as **responsabilidades de uma conta pagadora** e é responsável por pagar todas as cobranças acumuladas pelas contas membros. Você não pode mudar a conta de gerenciamento de uma organização.
|
||||
|
||||
- As **contas membros** compõem todas as outras contas em uma organização. Uma conta pode ser membro de apenas uma organização por vez. Você pode anexar uma política a uma conta para aplicar controles apenas a essa conta.
|
||||
- As contas membros **devem usar um endereço de e-mail válido** e podem ter um **nome**, em geral não poderão gerenciar a cobrança (mas podem receber acesso a ela).
|
||||
- As **contas membros** compõem todas as outras contas em uma organização. Uma conta pode ser membro de apenas uma organização por vez. Você pode anexar uma política a uma conta para aplicar controles apenas a essa conta.
|
||||
- As contas membros **devem usar um endereço de e-mail válido** e podem ter um **nome**, em geral, elas não poderão gerenciar a cobrança (mas podem receber acesso a isso).
|
||||
```
|
||||
aws organizations create-account --account-name testingaccount --email testingaccount@lalala1233fr.com
|
||||
```
|
||||
### **Unidades Organizacionais**
|
||||
|
||||
As contas podem ser agrupadas em **Unidades Organizacionais (OU)**. Dessa forma, você pode criar **políticas** para a Unidade Organizacional que serão **aplicadas a todas as contas filhas**. Observe que uma OU pode ter outras OUs como filhas.
|
||||
Contas podem ser agrupadas em **Unidades Organizacionais (OU)**. Dessa forma, você pode criar **políticas** para a Unidade Organizacional que serão **aplicadas a todas as contas filhas**. Observe que uma OU pode ter outras OUs como filhas.
|
||||
```bash
|
||||
# You can get the root id from aws organizations list-roots
|
||||
aws organizations create-organizational-unit --parent-id r-lalala --name TestOU
|
||||
@@ -46,7 +46,7 @@ Esta é a ÚNICA maneira que **até mesmo o usuário root pode ser impedido** de
|
||||
A única maneira de contornar isso é comprometer também a **conta master** que configura as SCPs (a conta master não pode ser bloqueada).
|
||||
|
||||
> [!WARNING]
|
||||
> Observe que **as SCPs apenas restringem os principais na conta**, portanto, outras contas não são afetadas. Isso significa que ter uma SCP negando `s3:GetObject` não impedirá as pessoas de **acessar um bucket S3 público** na sua conta.
|
||||
> Observe que **as SCPs apenas restringem os principais na conta**, portanto, outras contas não são afetadas. Isso significa que ter uma SCP que nega `s3:GetObject` não impedirá as pessoas de **acessar um bucket S3 público** em sua conta.
|
||||
|
||||
Exemplos de SCP:
|
||||
|
||||
@@ -92,7 +92,7 @@ Note que existem 4 partições na AWS, mas apenas 3 maneiras de chamá-las:
|
||||
- AWS US public Internet (GovCloud): `aws-us-gov`
|
||||
- AWS Secret (US Classified): `aws`
|
||||
|
||||
## IAM - Gerenciamento de Identidade e Acesso
|
||||
## IAM - Identity and Access Management
|
||||
|
||||
IAM é o serviço que permitirá que você gerencie **Autenticação**, **Autorização** e **Controle de Acesso** dentro da sua conta AWS.
|
||||
|
||||
@@ -104,7 +104,7 @@ IAM pode ser definido pela sua capacidade de gerenciar, controlar e governar mec
|
||||
|
||||
### [Usuário root da conta AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) <a href="#id_root" id="id_root"></a>
|
||||
|
||||
Quando você cria uma conta da Amazon Web Services (AWS) pela primeira vez, você começa com uma única identidade de login que tem **acesso completo a todos** os serviços e recursos da AWS na conta. Este é o _**usuário root**_ da conta AWS e é acessado fazendo login com o **endereço de e-mail e a senha que você usou para criar a conta**.
|
||||
Quando você cria uma conta da Amazon Web Services (AWS) pela primeira vez, você começa com uma identidade de login única que tem **acesso completo a todos** os serviços e recursos da AWS na conta. Este é o _**usuário root**_ da conta AWS e é acessado fazendo login com o **endereço de e-mail e a senha que você usou para criar a conta**.
|
||||
|
||||
Note que um novo **usuário admin** terá **menos permissões que o usuário root**.
|
||||
|
||||
@@ -126,15 +126,15 @@ Os usuários podem ter **MFA habilitado para login** através do console. Tokens
|
||||
Sempre que você precisar **mudar a Chave de Acesso**, este é o processo que você deve seguir:\
|
||||
_Criar uma nova chave de acesso -> Aplicar a nova chave ao sistema/aplicação -> marcar a original como inativa -> Testar e verificar se a nova chave de acesso está funcionando -> Deletar a chave de acesso antiga_
|
||||
|
||||
### MFA - Autenticação de Múltiplos Fatores
|
||||
### MFA - Multi Factor Authentication
|
||||
|
||||
É usado para **criar um fator adicional para autenticação** além dos seus métodos existentes, como senha, criando assim um nível de autenticação multifatorial.\
|
||||
Você pode usar um **aplicativo virtual gratuito ou um dispositivo físico**. Você pode usar aplicativos como autenticação do Google gratuitamente para ativar um MFA na AWS.
|
||||
Você pode usar um **aplicativo virtual gratuito ou um dispositivo físico**. Você pode usar aplicativos como o google authentication gratuitamente para ativar um MFA na AWS.
|
||||
|
||||
Políticas com condições de MFA podem ser anexadas aos seguintes:
|
||||
|
||||
- Um usuário ou grupo IAM
|
||||
- Um recurso como um bucket do Amazon S3, fila do Amazon SQS ou tópico do Amazon SNS
|
||||
- Um recurso como um bucket Amazon S3, fila Amazon SQS ou tópico Amazon SNS
|
||||
- A política de confiança de um papel IAM que pode ser assumido por um usuário
|
||||
|
||||
Se você quiser **acessar via CLI** um recurso que **verifica o MFA**, você precisa chamar **`GetSessionToken`**. Isso lhe dará um token com informações sobre o MFA.\
|
||||
@@ -152,20 +152,20 @@ Você pode anexar uma **política baseada em identidade a um grupo de usuários*
|
||||
|
||||
Aqui estão algumas características importantes dos grupos de usuários:
|
||||
|
||||
- Um **grupo** de usuários pode **contém muitos usuários**, e um **usuário** pode **pertencer a vários grupos**.
|
||||
- Um **grupo de usuários** pode **contém muitos usuários**, e um **usuário** pode **pertencer a vários grupos**.
|
||||
- **Grupos de usuários não podem ser aninhados**; eles podem conter apenas usuários, não outros grupos de usuários.
|
||||
- Não há **grupo de usuários padrão que inclua automaticamente todos os usuários na conta AWS**. Se você quiser ter um grupo de usuários assim, deve criá-lo e atribuir cada novo usuário a ele.
|
||||
- O número e o tamanho dos recursos IAM em uma conta AWS, como o número de grupos e o número de grupos dos quais um usuário pode ser membro, são limitados. Para mais informações, consulte [cotas IAM e AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html).
|
||||
- O número e o tamanho dos recursos IAM em uma conta AWS, como o número de grupos e o número de grupos dos quais um usuário pode ser membro, são limitados. Para mais informações, veja [cotas IAM e AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html).
|
||||
|
||||
### [Funções IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) <a href="#id_iam-roles" id="id_iam-roles"></a>
|
||||
|
||||
Uma **função IAM** é muito **semelhante** a um **usuário**, pois é uma **identidade com políticas de permissão que determinam o que** pode e não pode fazer na AWS. No entanto, uma função **não tem credenciais** (senha ou chaves de acesso) associadas a ela. Em vez de estar exclusivamente associada a uma pessoa, uma função é destinada a ser **assumida por qualquer um que precise dela (e tenha permissões suficientes)**. Um **usuário IAM pode assumir uma função para temporariamente** assumir permissões diferentes para uma tarefa específica. Uma função pode ser **atribuída a um** [**usuário federado**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) que faz login usando um provedor de identidade externo em vez de IAM.
|
||||
Uma **função IAM** é muito **semelhante** a um **usuário**, na medida em que é uma **identidade com políticas de permissão que determinam o que** pode e não pode fazer na AWS. No entanto, uma função **não tem credenciais** (senha ou chaves de acesso) associadas a ela. Em vez de estar exclusivamente associada a uma pessoa, uma função é destinada a ser **assumida por qualquer um que precise dela (e tenha permissões suficientes)**. Um **usuário IAM pode assumir uma função para temporariamente** assumir permissões diferentes para uma tarefa específica. Uma função pode ser **atribuída a um** [**usuário federado**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) que faz login usando um provedor de identidade externo em vez de IAM.
|
||||
|
||||
Uma função IAM consiste em **dois tipos de políticas**: uma **política de confiança**, que não pode estar vazia, definindo **quem pode assumir** a função, e uma **política de permissões**, que não pode estar vazia, definindo **o que pode acessar**.
|
||||
|
||||
#### AWS Security Token Service (STS)
|
||||
#### Serviço de Token de Segurança da AWS (STS)
|
||||
|
||||
O AWS Security Token Service (STS) é um serviço web que facilita a **emissão de credenciais temporárias e de privilégio limitado**. É especificamente adaptado para:
|
||||
O Serviço de Token de Segurança da AWS (STS) é um serviço da web que facilita a **emissão de credenciais temporárias de privilégio limitado**. É especificamente adaptado para:
|
||||
|
||||
### [Credenciais temporárias no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) <a href="#id_temp-creds" id="id_temp-creds"></a>
|
||||
|
||||
@@ -178,10 +178,10 @@ O AWS Security Token Service (STS) é um serviço web que facilita a **emissão
|
||||
São usadas para atribuir permissões. Existem 2 tipos:
|
||||
|
||||
- Políticas gerenciadas pela AWS (pré-configuradas pela AWS)
|
||||
- Políticas gerenciadas pelo cliente: configuradas por você. Você pode criar políticas com base em políticas gerenciadas pela AWS (modificando uma delas e criando a sua própria), usando o gerador de políticas (uma visualização GUI que ajuda a conceder e negar permissões) ou escrevendo a sua própria.
|
||||
- Políticas Gerenciadas pelo Cliente: Configuradas por você. Você pode criar políticas com base em políticas gerenciadas pela AWS (modificando uma delas e criando a sua própria), usando o gerador de políticas (uma visualização GUI que ajuda a conceder e negar permissões) ou escrevendo a sua própria.
|
||||
|
||||
Por **padrão, o acesso** é **negado**, o acesso será concedido se um papel explícito tiver sido especificado.\
|
||||
Se **um único "Deny" existir, ele irá sobrepor o "Allow"**, exceto para solicitações que usam as credenciais de segurança raiz da conta AWS (que são permitidas por padrão).
|
||||
Se **uma única "Negar" existir, ela irá sobrepor o "Permitir"**, exceto para solicitações que usam as credenciais de segurança raiz da conta AWS (que são permitidas por padrão).
|
||||
```javascript
|
||||
{
|
||||
"Version": "2012-10-17", //Version of the policy
|
||||
@@ -216,13 +216,13 @@ Políticas inline são úteis se você deseja **manter uma relação estrita um-
|
||||
|
||||
Essas são **políticas** que podem ser definidas em **recursos**. **Nem todos os recursos da AWS as suportam**.
|
||||
|
||||
Se um principal não tiver uma negação explícita sobre elas, e uma política de recurso conceder acesso, então eles são permitidos.
|
||||
Se um principal não tiver uma negação explícita sobre elas, e uma política de recurso conceder acesso, então ele está autorizado.
|
||||
|
||||
### Limites do IAM
|
||||
|
||||
Limites do IAM podem ser usados para **limitar as permissões que um usuário ou função deve ter acesso**. Dessa forma, mesmo que um conjunto diferente de permissões seja concedido ao usuário por uma **política diferente**, a operação **falhará** se ele tentar usá-las.
|
||||
Os limites do IAM podem ser usados para **limitar as permissões que um usuário ou função deve ter acesso**. Dessa forma, mesmo que um conjunto diferente de permissões seja concedido ao usuário por uma **política diferente**, a operação **falhará** se ele tentar usá-las.
|
||||
|
||||
Um limite é apenas uma política anexada a um usuário que **indica o nível máximo de permissões que o usuário ou função pode ter**. Assim, **mesmo que o usuário tenha acesso de Administrador**, se o limite indicar que ele pode apenas ler buckets S·, esse é o máximo que ele pode fazer.
|
||||
Um limite é apenas uma política anexada a um usuário que **indica o nível máximo de permissões que o usuário ou função pode ter**. Portanto, **mesmo que o usuário tenha acesso de Administrador**, se o limite indicar que ele pode apenas ler buckets S·, esse é o máximo que ele pode fazer.
|
||||
|
||||
**Isso**, **SCPs** e **seguir o princípio do menor privilégio** são as maneiras de controlar que os usuários não tenham mais permissões do que as que precisam.
|
||||
|
||||
@@ -343,7 +343,7 @@ Os seguintes privilégios concedem vários acessos de leitura de metadados:
|
||||
### Autenticação CLI
|
||||
|
||||
Para que um usuário regular se autentique na AWS via CLI, você precisa ter **credenciais locais**. Por padrão, você pode configurá-las **manualmente** em `~/.aws/credentials` ou **executando** `aws configure`.\
|
||||
Nesse arquivo, você pode ter mais de um perfil; se **nenhum perfil** for especificado usando o **aws cli**, o chamado **`[default]`** nesse arquivo será usado.\
|
||||
Nesse arquivo, você pode ter mais de um perfil; se **nenhum perfil** for especificado usando a **aws cli**, o chamado **`[default]`** nesse arquivo será usado.\
|
||||
Exemplo de arquivo de credenciais com mais de 1 perfil:
|
||||
```
|
||||
[default]
|
||||
@@ -371,8 +371,25 @@ Com este arquivo de configuração, você pode então usar aws cli como:
|
||||
```
|
||||
aws --profile acc2 ...
|
||||
```
|
||||
Se você está procurando algo **similar** a isso, mas para o **navegador**, você pode conferir a **extensão** [**AWS Extend Switch Roles**](https://chrome.google.com/webstore/detail/aws-extend-switch-roles/jpmkfafbacpgapdghgdpembnojdlgkdl?hl=en).
|
||||
Se você está procurando algo **semelhante** a isso, mas para o **navegador**, você pode conferir a **extensão** [**AWS Extend Switch Roles**](https://chrome.google.com/webstore/detail/aws-extend-switch-roles/jpmkfafbacpgapdghgdpembnojdlgkdl?hl=en).
|
||||
|
||||
#### Automatizando credenciais temporárias
|
||||
|
||||
Se você está explorando uma aplicação que gera credenciais temporárias, pode ser tedioso atualizá-las no seu terminal a cada poucos minutos quando elas expiram. Isso pode ser resolvido usando uma diretiva `credential_process` no arquivo de configuração. Por exemplo, se você tiver algum webapp vulnerável, você poderia fazer:
|
||||
```toml
|
||||
[victim]
|
||||
credential_process = curl -d 'PAYLOAD' https://some-site.com
|
||||
```
|
||||
Observe que as credenciais _devem_ ser retornadas para STDOUT no seguinte formato:
|
||||
```json
|
||||
{
|
||||
"Version": 1,
|
||||
"AccessKeyId": "an AWS access key",
|
||||
"SecretAccessKey": "your AWS secret access key",
|
||||
"SessionToken": "the AWS session token for temporary credentials",
|
||||
"Expiration": "ISO8601 timestamp when the credentials expire"
|
||||
}
|
||||
```
|
||||
## Referências
|
||||
|
||||
- [https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html)
|
||||
|
||||
Reference in New Issue
Block a user