Translated ['src/pentesting-cloud/azure-security/az-basic-information/RE

This commit is contained in:
Translator
2025-02-10 23:31:58 +00:00
parent 0f2ac075ca
commit ee0eaec27d
2 changed files with 38 additions and 31 deletions

View File

@@ -50,7 +50,7 @@ Para uma máquina virtual chamada myVM em um grupo de recursos `myResourceGroup`
### Azure
Azure é a **plataforma de computação em nuvem abrangente da Microsoft, oferecendo uma ampla gama de serviços**, incluindo máquinas virtuais, bancos de dados, inteligência artificial e armazenamento. Ela atua como a base para hospedar e gerenciar aplicativos, construir infraestruturas escaláveis e executar cargas de trabalho modernas na nuvem. O Azure fornece ferramentas para desenvolvedores e profissionais de TI criarem, implantarem e gerenciarem aplicativos e serviços de forma contínua, atendendo a uma variedade de necessidades, desde startups até grandes empresas.
Azure é a **plataforma de computação em nuvem abrangente da Microsoft, oferecendo uma ampla gama de serviços**, incluindo máquinas virtuais, bancos de dados, inteligência artificial e armazenamento. Ele atua como a base para hospedar e gerenciar aplicativos, construir infraestruturas escaláveis e executar cargas de trabalho modernas na nuvem. O Azure fornece ferramentas para desenvolvedores e profissionais de TI criarem, implantarem e gerenciarem aplicativos e serviços de forma contínua, atendendo a uma variedade de necessidades, desde startups até grandes empresas.
### Entra ID (anteriormente Azure Active Directory)
@@ -58,7 +58,7 @@ Entra ID é um serviço de **gerenciamento de identidade e acesso baseado em nuv
### Serviços de Domínio do Entra (anteriormente Azure AD DS)
Os Serviços de Domínio do Entra estendem as capacidades do Entra ID, oferecendo **serviços de domínio gerenciados compatíveis com ambientes tradicionais do Active Directory do Windows**. Ele suporta protocolos legados como LDAP, Kerberos e NTLM, permitindo que as organizações migrem ou executem aplicativos mais antigos na nuvem sem implantar controladores de domínio locais. Este serviço também suporta Política de Grupo para gerenciamento centralizado, tornando-o adequado para cenários onde cargas de trabalho legadas ou baseadas em AD precisam coexistir com ambientes modernos de nuvem.
Os Serviços de Domínio do Entra estendem as capacidades do Entra ID, oferecendo **serviços de domínio gerenciados compatíveis com ambientes tradicionais do Windows Active Directory**. Ele suporta protocolos legados como LDAP, Kerberos e NTLM, permitindo que as organizações migrem ou executem aplicativos mais antigos na nuvem sem implantar controladores de domínio locais. Este serviço também suporta a Política de Grupo para gerenciamento centralizado, tornando-o adequado para cenários onde cargas de trabalho legadas ou baseadas em AD precisam coexistir com ambientes modernos de nuvem.
## Principais do Entra ID
@@ -99,7 +99,7 @@ Você pode verificá-las em [https://learn.microsoft.com/en-us/entra/fundamental
- Restringir acesso ao portal de administração do Microsoft Entra: Padrão **Não**
- Isso não restringe o acesso à API do portal (apenas web)
- Permitir que os usuários conectem contas de trabalho ou escolares com o LinkedIn: Padrão **Sim**
- Mostrar manter usuário conectado: Padrão **Sim**
- Manter o usuário conectado: Padrão **Sim**
- Restringir usuários de recuperar a(s) chave(s) do BitLocker para seus dispositivos de propriedade: Padrão Não (verifique nas Configurações do Dispositivo)
- Ler outros usuários: Padrão **Sim** (via Microsoft Graph)
- **Convidados**
@@ -107,7 +107,7 @@ Você pode verificá-las em [https://learn.microsoft.com/en-us/entra/fundamental
- **Usuários convidados têm o mesmo acesso que membros**.
- **Usuários convidados têm acesso limitado a propriedades e associações de objetos de diretório (padrão)**. Isso restringe o acesso do convidado apenas ao seu próprio perfil de usuário por padrão. O acesso a informações de outros usuários e grupos não é mais permitido.
- **O acesso de usuários convidados é restrito a propriedades e associações de seus próprios objetos de diretório** é o mais restritivo.
- **Opções de convite de convidados**:
- **Opções de convite para convidados**:
- **Qualquer pessoa na organização pode convidar usuários convidados, incluindo convidados e não administradores (mais inclusivo) - Padrão**
- **Usuários membros e usuários atribuídos a funções administrativas específicas podem convidar usuários convidados, incluindo convidados com permissões de membro**
- **Apenas usuários atribuídos a funções administrativas específicas podem convidar usuários convidados**
@@ -142,7 +142,7 @@ Um **Principal de Serviço** é uma **identidade** criada para **uso** com **apl
### Registros de Aplicativos
Um **Registro de Aplicativo** é uma configuração que permite que uma aplicação se integre com o Entra ID e realize ações.
Um **Registro de Aplicativo** é uma configuração que permite que uma aplicação se integre ao Entra ID e realize ações.
#### Componentes Chave:
@@ -161,14 +161,14 @@ Um **Registro de Aplicativo** é uma configuração que permite que uma aplicaç
- **Não permitir consentimento do usuário**
- Um administrador será necessário para todos os aplicativos.
- **Permitir consentimento do usuário para aplicativos de editores verificados, para permissões selecionadas (Recomendado)**
- Todos os usuários podem consentir para permissões classificadas como "baixo impacto", para aplicativos de editores verificados ou aplicativos registrados nesta organização.
- **Permitir consentimento do usuário para aplicativos de editores verificados, aplicativos internos e aplicativos que solicitam apenas permissões selecionadas (Recomendado)**
- Todos os usuários podem consentir aplicativos que solicitam apenas permissões classificadas como "baixo impacto", aplicativos de editores verificados e aplicativos registrados no inquilino.
- **Permissões de baixo impacto padrão** (embora você precise aceitar para adicioná-las como baixo):
- User.Read - fazer login e ler o perfil do usuário
- offline_access - manter acesso aos dados que os usuários deram acesso
- offline_access - manter acesso a dados que os usuários deram acesso
- openid - fazer login dos usuários
- profile - visualizar o perfil básico do usuário
- email - visualizar o endereço de e-mail do usuário
- profile - ver o perfil básico do usuário
- email - ver o endereço de e-mail do usuário
- **Permitir consentimento do usuário para aplicativos (Padrão)**
- Todos os usuários podem consentir para qualquer aplicativo acessar os dados da organização.
@@ -180,20 +180,20 @@ Um **Registro de Aplicativo** é uma configuração que permite que uma aplicaç
### **Identidade Gerenciada (Metadados)**
Identidades gerenciadas no Azure Active Directory oferecem uma solução para **gerenciar automaticamente a identidade** de aplicativos. Essas identidades são usadas por aplicativos para o propósito de **conectar-se** a **recursos** compatíveis com a autenticação do Azure Active Directory (**Azure AD**). Isso permite **remover a necessidade de codificar credenciais de nuvem** no código, pois o aplicativo poderá contatar o serviço de **metadados** para obter um token válido para **realizar ações** como a identidade gerenciada indicada no Azure.
Identidades gerenciadas no Azure Active Directory oferecem uma solução para **gerenciar automaticamente a identidade** de aplicativos. Essas identidades são usadas por aplicativos para o propósito de **conectar-se** a **recursos** compatíveis com autenticação do Azure Active Directory (**Azure AD**). Isso permite **remover a necessidade de codificar credenciais de nuvem** no código, pois o aplicativo poderá contatar o serviço de **metadados** para obter um token válido para **realizar ações** como a identidade gerenciada indicada no Azure.
Existem dois tipos de identidades gerenciadas:
- **Atribuída pelo sistema**. Alguns serviços do Azure permitem que você **ative uma identidade gerenciada diretamente em uma instância de serviço**. Quando você ativa uma identidade gerenciada atribuída pelo sistema, um **principal de serviço** é criado no inquilino do Entra ID confiável pela assinatura onde o recurso está localizado. Quando o **recurso** é **excluído**, o Azure automaticamente **exclui** a **identidade** para você.
- **Atribuída pelo usuário**. Também é possível que os usuários gerem identidades gerenciadas. Essas são criadas dentro de um grupo de recursos dentro de uma assinatura e um principal de serviço será criado no EntraID confiável pela assinatura. Em seguida, você pode atribuir a identidade gerenciada a uma ou **mais instâncias** de um serviço do Azure (múltiplos recursos). Para identidades gerenciadas atribuídas pelo usuário, a **identidade é gerenciada separadamente dos recursos que a utilizam**.
Identidades Gerenciadas **não geram credenciais eternas** (como senhas ou certificados) para acessar como o principal de serviço associado a ela.
Identidades Gerenciadas **não geram credenciais eternas** (como senhas ou certificados) para acessar como o principal de serviço anexado a ela.
### Aplicações Empresariais
É apenas uma **tabela no Azure para filtrar principais de serviço** e verificar as aplicações que foram atribuídas a.
**Não é outro tipo de “aplicação”**, não existe nenhum objeto no Azure que seja uma “Aplicação Empresarial”, é apenas uma abstração para verificar os Principais de Serviço, Registros de Aplicativos e Identidades Gerenciadas.
**Não é outro tipo de “aplicação”**, não nenhum objeto no Azure que seja uma “Aplicação Empresarial”, é apenas uma abstração para verificar os Principais de Serviço, Registros de Aplicativos e Identidades Gerenciadas.
### Unidades Administrativas
@@ -216,7 +216,7 @@ Exemplo:
- Para gerenciar o Entra ID, existem algumas **funções integradas** que podem ser atribuídas a principais do Entra ID para gerenciar o Entra ID
- Verifique as funções em [https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference](https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference)
- Funções marcadas como **`PRIVILEGIADAS`** pelo EntraID devem ser atribuídas com cautela, pois como a Microsoft explica [nos docs](https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference): Atribuições de função privilegiadas podem levar à elevação de privilégios se não forem usadas de maneira segura e intencional.
- Funções marcadas como **`PRIVILEGIADAS`** pelo EntraID devem ser atribuídas com cautela, pois como a Microsoft explica [na documentação](https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference): Atribuições de função privilegiadas podem levar a elevação de privilégios se não forem usadas de maneira segura e intencional.
- A função mais privilegiada é **Administrador Global**
- As funções agrupam **permissões granulares** e podem ser encontradas em suas descrições.
- É possível **criar funções personalizadas** com as permissões desejadas. Embora, por algum motivo, nem todas as permissões granulares estejam disponíveis para os administradores criarem funções personalizadas.
@@ -225,7 +225,7 @@ Exemplo:
## Funções e Permissões do Azure
- **Funções** são **atribuídas** a **principais** em um **escopo**: `principal -[TEM FUNÇÃO]->(escopo)`
- **Funções** são **atribuídas** a **principais** em um **escopo**: `principal -[HAS ROLE]->(scope)`
- **Funções** atribuídas a **grupos** são **herdadas** por todos os **membros** do grupo.
- Dependendo do escopo ao qual a função foi atribuída, a **função** pode ser **herdada** para **outros recursos** dentro do contêiner de escopo. Por exemplo, se um usuário A tem uma **função na assinatura**, ele terá essa **função em todos os grupos de recursos** dentro da assinatura e em **todos os recursos** dentro do grupo de recursos.
@@ -255,7 +255,7 @@ Essas funções também podem **ser atribuídas sobre contêineres lógicos** (c
- O formato utilizado é um JSON
- `actions` refere-se a permissões para operações de gerenciamento em recursos, como criar, atualizar ou excluir definições e configurações de recursos.
- `dataActions` são permissões para operações de dados dentro do recurso, permitindo que você leia, escreva ou exclua os dados reais contidos no recurso.
- `notActions` e `notDataActions` são usados para excluir permissões específicas da função. No entanto, **eles não as negam**, se uma função diferente as conceder, o principal as terá.
- `notActions` e `notDataActions` são usados para excluir permissões específicas da função. No entanto, **elas não as negam**, se uma função diferente as conceder, o principal as terá.
- `assignableScopes` é um array de escopos onde a função pode ser atribuída (como grupos de gerenciamento, assinaturas ou grupos de recursos).
Exemplo de JSON de permissões para uma função personalizada:
@@ -297,7 +297,7 @@ Exemplo de JSON de permissões para uma função personalizada:
### Administrador Global
Administrador Global é um papel do Entra ID que concede **controle total sobre o locatário do Entra ID**. No entanto, ele não concede nenhuma permissão sobre recursos do Azure por padrão.
O Administrador Global é um papel do Entra ID que concede **controle total sobre o locatário do Entra ID**. No entanto, ele não concede nenhuma permissão sobre recursos do Azure por padrão.
Usuários com o papel de Administrador Global têm a capacidade de '**elevar' para o papel de Administrador de Acesso do Usuário no Grupo de Gerenciamento Raiz**. Assim, Administradores Globais podem gerenciar o acesso em **todas as assinaturas e grupos de gerenciamento do Azure.**\
Essa elevação pode ser feita no final da página: [https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/\~/Properties](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/Properties)
@@ -369,7 +369,7 @@ Essa estrutura hierárquica permite uma gestão eficiente e escalável das permi
**RBAC** (controle de acesso baseado em função) é o que já vimos nas seções anteriores: **Atribuir uma função a um principal para conceder acesso** a um recurso.\
No entanto, em alguns casos, você pode querer fornecer **uma gestão de acesso mais detalhada** ou **simplificar** a gestão de **centenas** de atribuições de função.
O **ABAC** do Azure (controle de acesso baseado em atributos) se baseia no Azure RBAC, adicionando **condições de atribuição de função com base em atributos** no contexto de ações específicas. Uma _condição de atribuição de função_ é uma **verificação adicional que você pode opcionalmente adicionar à sua atribuição de função** para fornecer um controle de acesso mais detalhado. Uma condição filtra as permissões concedidas como parte da definição de função e da atribuição de função. Por exemplo, você pode **adicionar uma condição que exige que um objeto tenha uma tag específica para ler o objeto**.\
O **ABAC** do Azure (controle de acesso baseado em atributos) se baseia no Azure RBAC, adicionando **condições de atribuição de função baseadas em atributos** no contexto de ações específicas. Uma _condição de atribuição de função_ é uma **verificação adicional que você pode opcionalmente adicionar à sua atribuição de função** para fornecer um controle de acesso mais detalhado. Uma condição filtra as permissões concedidas como parte da definição de função e da atribuição de função. Por exemplo, você pode **adicionar uma condição que exige que um objeto tenha uma tag específica para ler o objeto**.\
Você **não pode** explicitamente **negar** **acesso** a recursos específicos **usando condições**.
## Referências

View File

@@ -4,37 +4,37 @@
## Phishing de Aplicativos OAuth
**Aplicações Azure** são configuradas com as permissões que poderão usar quando um usuário consente a aplicação (como enumerar o diretório, acessar arquivos ou realizar outras ações). Note que a aplicação estará agindo em nome do usuário, então mesmo que o aplicativo possa estar pedindo permissões de administração, se o **usuário que consente não tiver essa permissão**, o aplicativo **não poderá realizar ações administrativas**.
**Aplicações Azure** são configuradas com as permissões que poderão usar quando um usuário consentir a aplicação (como enumerar o diretório, acessar arquivos ou realizar outras ações). Note que a aplicação estará agindo em nome do usuário, então mesmo que o app possa estar pedindo permissões de administração, se o **usuário que consente não tiver essa permissão**, o app **não poderá realizar ações administrativas**.
### Permissões de consentimento do aplicativo
### Permissões de consentimento do app
Por padrão, qualquer **usuário pode dar consentimento a aplicativos**, embora isso possa ser configurado para que os usuários só possam consentir a **aplicativos de editores verificados para permissões selecionadas** ou até mesmo **remover a permissão** para que os usuários consintam a aplicações.
Por padrão, qualquer **usuário pode dar consentimento a apps**, embora isso possa ser configurado para que os usuários só possam consentir a **apps de editores verificados para permissões selecionadas** ou até mesmo **remover a permissão** para que os usuários consintam a aplicações.
<figure><img src="../../../images/image.png" alt=""><figcaption></figcaption></figure>
Se os usuários não puderem consentir, **administradores** como `GA`, `Application Administrator` ou `Cloud Application` `Administrator` podem **consentir as aplicações** que os usuários poderão usar.
Além disso, se os usuários puderem consentir apenas a aplicativos usando permissões de **baixo risco**, essas permissões são por padrão **openid**, **profile**, **email**, **User.Read** e **offline_access**, embora seja possível **adicionar mais** a essa lista.
Além disso, se os usuários puderem consentir apenas a apps usando permissões de **baixo risco**, essas permissões são por padrão **openid**, **profile**, **email**, **User.Read** e **offline_access**, embora seja possível **adicionar mais** a essa lista.
E se eles puderem consentir a todos os aplicativos, poderão consentir a todos os aplicativos.
E se eles puderem consentir a todos os apps, poderão consentir a todos os apps.
### 2 Tipos de ataques
- **Não autenticado**: A partir de uma conta externa, crie uma aplicação com as **permissões de baixo risco** `User.Read` e `User.ReadBasic.All`, por exemplo, phishing de um usuário, e você poderá acessar informações do diretório.
- Isso requer que o usuário phishing esteja **capaz de aceitar aplicativos OAuth de locatários externos**.
- Se o usuário phishing for um administrador que pode **consentir qualquer aplicativo com quaisquer permissões**, a aplicação também poderá **solicitar permissões privilegiadas**.
- Isso requer que o usuário phishing esteja **capaz de aceitar apps OAuth de inquilinos externos**.
- Se o usuário phishing for um administrador que pode **consentir qualquer app com quaisquer permissões**, a aplicação também poderá **solicitar permissões privilegiadas**.
- **Autenticado**: Tendo comprometido um principal com privilégios suficientes, **crie uma aplicação dentro da conta** e **phishing** de algum **usuário privilegiado** que pode aceitar permissões OAuth privilegiadas.
- Nesse caso, você já pode acessar as informações do diretório, então a permissão `User.ReadBasic.All` não é mais interessante.
- Você provavelmente está interessado em **permissões que requerem um administrador para concedê-las**, porque um usuário comum não pode dar permissões a aplicativos OAuth, por isso você precisa **phishing apenas esses usuários** (mais sobre quais papéis/permissões concedem esse privilégio mais tarde).
- Você provavelmente está interessado em **permissões que requerem um administrador para concedê-las**, porque um usuário comum não pode dar permissões a apps OAuth, por isso você precisa **phishing apenas aqueles usuários** (mais sobre quais papéis/permissões concedem esse privilégio mais tarde).
### Usuários podem consentir
Note que você precisa executar este comando a partir de um usuário dentro do locatário, você não pode encontrar essa configuração de um locatário externo. O seguinte cli pode ajudá-lo a entender as permissões dos usuários:
Note que você precisa executar este comando a partir de um usuário dentro do inquilino, você não pode encontrar essa configuração de um inquilino externo. O seguinte cli pode ajudá-lo a entender as permissões dos usuários:
```bash
az rest --method GET --url "https://graph.microsoft.com/v1.0/policies/authorizationPolicy"
```
- Os usuários podem consentir a todos os aplicativos: Se dentro de **`permissionGrantPoliciesAssigned`** você encontrar: `ManagePermissionGrantsForSelf.microsoft-user-default-legacy` então os usuários podem aceitar qualquer aplicativo.
- Os usuários podem consentir a aplicativos de editores verificados ou da sua organização, mas apenas para permissões que você selecionar: Se dentro de **`permissionGrantPoliciesAssigned`** você encontrar: `ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-team` então os usuários podem aceitar qualquer aplicativo.
- Os usuários podem consentir a todos os aplicativos: Se dentro de **`permissionGrantPoliciesAssigned`** você encontrar: `ManagePermissionGrantsForSelf.microsoft-user-default-legacy` então os usuários podem aceitar todos os aplicativos.
- Os usuários podem consentir a aplicativos de editores verificados ou da sua organização, mas apenas para permissões que você selecionar: Se dentro de **`permissionGrantPoliciesAssigned`** você encontrar: `ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-team` então os usuários podem aceitar todos os aplicativos.
- **Desativar o consentimento do usuário**: Se dentro de **`permissionGrantPoliciesAssigned`** você encontrar apenas: `ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-chat` e `ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-team` então os usuários não podem consentir nada.
É possível encontrar o significado de cada uma das políticas comentadas em:
@@ -123,11 +123,18 @@ https://graph.microsoft.com/v1.0/me/onenote/notebooks \
### Phishing Pós-Exploração
Dependendo das permissões solicitadas, você pode ser capaz de **acessar diferentes dados do inquilino** (listar usuários, grupos... ou até mesmo modificar configurações) e **informações do usuário** (arquivos, notas, e-mails...). Então, você pode usar essas permissões para realizar essas ações.
Dependendo das permissões solicitadas, você pode ser capaz de **acessar diferentes dados do locatário** (listar usuários, grupos... ou até mesmo modificar configurações) e **informações do usuário** (arquivos, notas, e-mails...). Então, você pode usar essas permissões para realizar essas ações.
### Admin de Aplicações do Entra ID
Se você conseguiu comprometer de alguma forma um principal do Entra ID que pode gerenciar Aplicações no Entra ID, e há aplicações que estão sendo usadas por usuários do locatário. Um administrador poderia **modificar as permissões que o aplicativo está solicitando e adicionar um novo endereço de redirecionamento permitido para roubar os tokens**.
- Note que é possível **adicionar URIs de redirecionamento** (não é necessário excluir a real) e então enviar um link HTTP usando a URI de redirecionamento do atacante, para que quando o usuário seguir o link, a autenticação ocorra automaticamente e o atacante receba o token.
- Também é possível alterar as permissões que o aplicativo solicita para obter mais permissões dos usuários, mas nesse caso o usuário precisará **aceitar novamente o prompt** (mesmo que já estivesse logado).
- Para realizar esse ataque, o atacante **NÃO PRECISA** controlar o código do aplicativo, pois ele poderia apenas enviar o link para login no aplicativo para o usuário com a nova URL no parâmetro **`redirect_uri`**.
### Pós Exploração de Aplicações
Confira as seções de Aplicações e Principal de Serviço da página:
Verifique as seções de Aplicações e Principal de Serviço da página:
{{#ref}}
../az-privilege-escalation/az-entraid-privesc/