mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-05 11:26:11 -08:00
Translated ['src/pentesting-cloud/azure-security/README.md', 'src/pentes
This commit is contained in:
@@ -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/
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user