Translated ['src/pentesting-cloud/azure-security/README.md', 'src/pentes

This commit is contained in:
Translator
2025-01-26 15:10:03 +00:00
parent e94616aa30
commit 0405cda95b
3 changed files with 25 additions and 19 deletions

View File

@@ -14,7 +14,7 @@ az-basic-information/
Para auditar um ambiente AZURE, é muito importante saber: quais **serviços estão sendo usados**, o que está **sendo exposto**, quem tem **acesso** a quê e como os serviços internos do Azure e os **serviços externos** estão conectados.
Do ponto de vista de um Red Team, o **primeiro passo para comprometer um ambiente Azure** é conseguir obter algum **ponto de apoio**.
Do ponto de vista do Red Team, o **primeiro passo para comprometer um ambiente Azure** é conseguir obter algum **ponto de apoio**.
### Enumeração Externa & Acesso Inicial
@@ -34,22 +34,22 @@ Com essas informações, as maneiras mais comuns de tentar obter um ponto de apo
- Comprar credenciais de um funcionário
- [**Phishing Comum**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (credenciais ou aplicativo Oauth)
- [Phishing de Autenticação por Código de Dispositivo](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
- **Vazamentos** de terceiros
- **terceiros comprometidos**
- Vulnerabilidades em Aplicações Hospedadas no Azure
- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) com acesso ao endpoint de metadados
- **Tomadas de Subdomínio** como em [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)
- **Tomadas de subdomínio** como em [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)
- **Outras configurações incorretas de serviços do Azure**
- Se algum laptop de desenvolvedor estiver comprometido ([WinPEAS e LinPEAS](https://github.com/peass-ng/PEASS-ng) podem encontrar essas informações):
- Dentro de **`<HOME>/.Azure`**
- **`azureProfile.json`** contém informações sobre usuários logados no passado
- **`clouds.config` contém** informações sobre assinaturas
- **`service_principal_entries.json`** contém credenciais de aplicativos (ID do inquilino, clientes e segredo). Apenas no Linux e macOS
- **`service_principal_entries.json`** contém credenciais de aplicativos (id do inquilino, clientes e segredo). Apenas no Linux e macOS
- **`msal_token_cache.json`** contém tokens de acesso e tokens de atualização. Apenas no Linux e macOS
- **`service_principal_entries.bin`** e **msal_token_cache.bin** são usados no Windows e são criptografados com DPAPI
- **`msal_http_cache.bin`** é um cache de requisições HTTP
- Carregue-o: `with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)`
- Carregue: `with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)`
- **`AzureRmContext.json`** contém informações sobre logins anteriores usando Az PowerShell (mas sem credenciais)
- Dentro de **`C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*`** estão vários arquivos `.bin` com **tokens de acesso**, tokens de ID e informações de conta criptografadas com o DPAPI do usuário.
- Dentro de **`C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*`** estão vários arquivos `.bin` com **tokens de acesso**, tokens de ID e informações de conta criptografadas com o DPAPI dos usuários.
- É possível encontrar mais **tokens de acesso** nos arquivos `.tbres` dentro de **`C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\`** que contêm um base64 criptografado com DPAPI com tokens de acesso.
- No Linux e macOS, você pode obter **tokens de acesso, tokens de atualização e tokens de ID** do Az PowerShell (se usado) executando `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"`
- No Windows, isso gera apenas tokens de ID.
@@ -72,7 +72,7 @@ As seguintes ferramentas serão super úteis para enumerar tanto inquilinos do E
az-enumeration-tools.md
{{#endref}}
### Bypass de Condições de Login
### Bypass de Políticas de Acesso
<figure><img src="../../images/image (268).png" alt=""><figcaption></figcaption></figure>
@@ -80,11 +80,17 @@ Em casos onde você tem algumas credenciais válidas, mas não consegue fazer lo
- **Whitelist de IP** -- Você precisa comprometer um IP válido
- **Restrições geográficas** -- Descubra onde o usuário mora ou onde estão os escritórios da empresa e obtenha um IP da mesma cidade (ou país, pelo menos)
- **Navegador** -- Talvez apenas um navegador de um determinado SO (Windows, Linux, Mac, Android, iOS) seja permitido. Descubra qual SO a vítima/empresa usa.
- **Navegador** -- Talvez apenas um navegador de certos SO (Windows, Linux, Mac, Android, iOS) seja permitido. Descubra qual SO a vítima/empresa usa.
- Você também pode tentar **comprometer credenciais de Service Principal**, pois geralmente são menos limitadas e seu login é menos revisado
Após contornar isso, você pode ser capaz de voltar à sua configuração inicial e ainda terá acesso.
Verifique:
{{#ref}}
az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
{{#endref}}
### Whoami
> [!CAUTION]
@@ -135,7 +141,7 @@ Get-AzureADTenantDetail
{{#endtabs }}
### Enumeração do Entra ID e Escalação de Privilégios
### Enumeração do Entra ID & Privesc
Por padrão, qualquer usuário deve ter **permissões suficientes para enumerar** coisas como usuários, grupos, funções, principais de serviço... (ver [permissões padrão do AzureAD](az-basic-information/index.html#default-user-permissions)).\
Você pode encontrar aqui um guia:
@@ -151,7 +157,7 @@ az-enumeration-tools.md#automated-post-exploitation-tools
{{#endref}}
### Enumerar Serviços do Azure
### Enumeração do Azure
Uma vez que você saiba quem é, pode começar a enumerar os **serviços do Azure aos quais você tem acesso**.
@@ -167,7 +173,7 @@ Além disso, você pode obter as mesmas informações na **console web** acessan
Observe que você precisa da permissão **`Microsoft.Authorization/roleAssignments/read`** para executar esta ação.
Além disso, com permissões suficientes, a função **`Get-AzRoleAssignment`** pode ser usada para **enumerar todas as funções** na assinatura ou a permissão sobre um recurso específico indicando-o como em: **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**.
Além disso, com permissões suficientes, a função **`Get-AzRoleAssignment`** pode ser usada para **enumerar todas as funções** na assinatura ou a permissão sobre um recurso específico, indicando-o como em: **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**.
Também é possível obter essas informações executando **`az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`** como em:
@@ -180,17 +186,17 @@ Então, para obter a permissão granular, você pode executar **`(Get-AzRoleDefi
Ou chamar a API diretamente com **`az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2020-08-01-preview" | jq ".properties"`**.
Na seção seguinte, você pode encontrar **informações sobre os serviços mais comuns do Azure e como enumerá-los**:
Na seção a seguir, você pode encontrar **informações sobre os serviços mais comuns do Azure e como enumerá-los**:
{{#ref}}
az-services/
{{#endref}}
### Escalação de Privilégios, Pós-Exploração e Persistência em Serviços do Azure
### Escalação de Privilégios, Pós-Exploração & Persistência
Uma vez que você saiba como o ambiente do Azure está estruturado e quais serviços estão sendo usados, pode começar a procurar maneiras de **escalar privilégios, mover-se lateralmente, realizar outros ataques de pós-exploração e manter persistência**.
Na seção seguinte, você pode encontrar informações sobre como escalar privilégios nos serviços mais comuns do Azure:
Na seção a seguir, você pode encontrar informações sobre como escalar privilégios nos serviços mais comuns do Azure:
{{#ref}}
az-privilege-escalation/

View File

@@ -2,9 +2,9 @@
{{#include ../../../banners/hacktricks-training.md}}
### Concessão de Consentimento Ilícito
### Aplicativo OAuth
Por padrão, qualquer usuário pode registrar um aplicativo no Azure AD. Assim, você pode registrar um aplicativo (apenas para o inquilino alvo) que precisa de permissões de alto impacto com consentimento do administrador (e aprová-lo se você for o administrador) - como enviar e-mails em nome de um usuário, gerenciamento de funções, etc. Isso nos permitirá **executar ataques de phishing** que seriam muito **frutíferos** em caso de sucesso.
Por padrão, qualquer usuário pode registrar um aplicativo no Entra ID. Assim, você pode registrar um aplicativo (apenas para o inquilino alvo) que precisa de permissões de alto impacto com consentimento do administrador (e aprová-lo se você for o administrador) - como enviar e-mails em nome de um usuário, gerenciamento de funções, etc. Isso nos permitirá **executar ataques de phishing** que seriam muito **frutíferos** em caso de sucesso.
Além disso, você também poderia aceitar esse aplicativo com seu usuário como uma forma de manter o acesso sobre ele.

View File

@@ -158,7 +158,7 @@ Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token
Quando você **faz login** via **CLI** no Azure com qualquer programa, você está usando uma **Aplicação Azure** de um **inquilino** que pertence à **Microsoft**. Essas Aplicações, como as que você pode criar em sua conta, **têm um id de cliente**. Você **não poderá ver todas elas** nas **listas de aplicações permitidas** que você pode ver no console, **mas elas são permitidas por padrão**.
Por exemplo, um **script powershell** que **autentica** usa um app com id de cliente **`1950a258-227b-4e31-a9cf-717495945fc2`**. Mesmo que o app não apareça no console, um sysadmin poderia **bloquear essa aplicação** para que os usuários não possam acessar usando ferramentas que se conectam via esse App.
Por exemplo, um **script powershell** que **autentica** usa um aplicativo com id de cliente **`1950a258-227b-4e31-a9cf-717495945fc2`**. Mesmo que o aplicativo não apareça no console, um administrador de sistema poderia **bloquear essa aplicação** para que os usuários não possam acessar usando ferramentas que se conectam via esse App.
No entanto, existem **outros ids de cliente** de aplicações que **permitirão que você se conecte ao Azure**:
```bash
@@ -933,7 +933,7 @@ Quando o PIM está habilitado, é possível configurar cada função com certos
- Tempo máximo para expirar as atribuições elegíveis
- Muitas mais configurações sobre quando e quem enviar notificações quando certas ações acontecem com esse papel
### Políticas de Acesso Condicional <a href="#title-text" id="title-text"></a>
### Políticas de Acesso Condicional
Verifique:
@@ -941,7 +941,7 @@ Verifique:
../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
{{#endref}}
### Proteção de Identidade do Entra <a href="#title-text" id="title-text"></a>
### Proteção de Identidade do Entra
A Proteção de Identidade do Entra é um serviço de segurança que permite **detectar quando um usuário ou um login é muito arriscado** para ser aceito, permitindo **bloquear** o usuário ou a tentativa de login.