mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['', 'src/pentesting-cloud/azure-security/az-enumeration-tool
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
# Az - Ferramentas de Enumeração
|
||||
# Az - Enumeration Tools
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Instalar PowerShell no Linux
|
||||
## Instalar PowerShell no linux
|
||||
|
||||
> [!TIP]
|
||||
> No Linux você precisará instalar o PowerShell Core:
|
||||
> No linux você precisará instalar PowerShell Core:
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y wget apt-transport-https software-properties-common
|
||||
@@ -26,7 +26,7 @@ curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
|
||||
```
|
||||
## Instalar PowerShell no MacOS
|
||||
|
||||
Instruções da [**documentation**](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.4):
|
||||
Instruções da [**documentação**](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.4):
|
||||
|
||||
1. Instale `brew` se ainda não estiver instalado:
|
||||
```bash
|
||||
@@ -45,15 +45,15 @@ pwsh
|
||||
brew update
|
||||
brew upgrade powershell
|
||||
```
|
||||
## Principais Ferramentas de Enumeração
|
||||
## Ferramentas principais de enumeração
|
||||
|
||||
### az cli
|
||||
|
||||
[**Azure Command-Line Interface (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) é uma ferramenta multiplataforma escrita em Python para gerenciar e administrar (a maioria dos) recursos do Azure e Entra ID. Ela conecta-se ao Azure e executa comandos administrativos via linha de comando ou scripts.
|
||||
[**Azure Command-Line Interface (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) é uma ferramenta multiplataforma escrita em Python para gerenciar e administrar (a maioria dos) recursos do Azure e do Entra ID. Ela se conecta ao Azure e executa comandos administrativos via linha de comando ou scripts.
|
||||
|
||||
Siga este link para as [**installation instructions¡**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli#install).
|
||||
Siga este link para as [**instruções de instalação**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli#install).
|
||||
|
||||
Os comandos no Azure CLI são estruturados seguindo o padrão: `az <service> <action> <parameters>`
|
||||
Os comandos no Azure CLI seguem o padrão: `az <service> <action> <parameters>`
|
||||
|
||||
#### Depuração | MitM az cli
|
||||
|
||||
@@ -61,7 +61,7 @@ Usando o parâmetro **`--debug`** é possível ver todas as requisições que a
|
||||
```bash
|
||||
az account management-group list --output table --debug
|
||||
```
|
||||
Para fazer um **MitM** na ferramenta e **check all the requests** que ela está enviando manualmente, você pode:
|
||||
Para realizar um **MitM** na ferramenta e **verificar todas as requisições** que ela está enviando manualmente, você pode fazer:
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Bash" }}
|
||||
@@ -104,13 +104,175 @@ $env:HTTP_PROXY="http://127.0.0.1:8080"
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
<details>
|
||||
<summary><strong>Fixing “CA cert does not include key usage extension”</strong></summary>
|
||||
|
||||
### Por que o erro acontece
|
||||
|
||||
When Azure CLI authenticates, it makes HTTPS requests (via MSAL → Requests → OpenSSL). If you’re intercepting TLS with Burp, Burp generates “on the fly” certificates for sites like `login.microsoftonline.com` and signs them with Burp’s CA.
|
||||
|
||||
Em stacks mais recentes (Python 3.13 + OpenSSL 3), a validação de CA é mais rígida:
|
||||
|
||||
- Um certificado CA deve incluir **Basic Constraints: `CA:TRUE`** e uma extensão **Key Usage** permitindo assinatura de certificados (**`keyCertSign`**, e tipicamente **`cRLSign`**).
|
||||
|
||||
A CA padrão do Burp (PortSwigger CA) é antiga e tipicamente não contém a extensão Key Usage, então o OpenSSL a rejeita mesmo se você a “trust it”.
|
||||
|
||||
Isso produz erros como:
|
||||
|
||||
- `CA cert does not include key usage extension`
|
||||
- `CERTIFICATE_VERIFY_FAILED`
|
||||
- `self-signed certificate in certificate chain`
|
||||
|
||||
Portanto você deve:
|
||||
|
||||
1. Criar uma CA moderna (com o Key Usage correto).
|
||||
2. Fazer com que o Burp a utilize para assinar os certificados interceptados.
|
||||
3. Confiar nessa CA no macOS.
|
||||
4. Apontar o Azure CLI / Requests para esse CA bundle.
|
||||
|
||||
### Passo a passo: configuração funcional
|
||||
|
||||
#### 0) Pré-requisitos
|
||||
|
||||
- Burp rodando localmente (proxy em `127.0.0.1:8080`)
|
||||
- Azure CLI instalado (Homebrew)
|
||||
- Você pode usar `sudo` (para confiar na CA no keychain do sistema)
|
||||
|
||||
#### 1) Create a standards-compliant Burp CA (PEM + KEY)
|
||||
|
||||
Create an OpenSSL config file that explicitly sets CA extensions:
|
||||
```bash
|
||||
mkdir -p ~/burp-ca && cd ~/burp-ca
|
||||
|
||||
cat > burp-ca.cnf <<'EOF'
|
||||
[ req ]
|
||||
default_bits = 2048
|
||||
prompt = no
|
||||
default_md = sha256
|
||||
distinguished_name = dn
|
||||
x509_extensions = v3_ca
|
||||
|
||||
[ dn ]
|
||||
C = US
|
||||
O = Burp Custom CA
|
||||
CN = Burp Custom Root CA
|
||||
|
||||
[ v3_ca ]
|
||||
basicConstraints = critical,CA:TRUE
|
||||
keyUsage = critical,keyCertSign,cRLSign
|
||||
subjectKeyIdentifier = hash
|
||||
authorityKeyIdentifier = keyid:always,issuer
|
||||
EOF
|
||||
```
|
||||
Gerar o certificado CA + chave privada:
|
||||
```bash
|
||||
openssl req -x509 -new -nodes \
|
||||
-days 3650 \
|
||||
-keyout burp-ca.key \
|
||||
-out burp-ca.pem \
|
||||
-config burp-ca.cnf
|
||||
```
|
||||
Verificação de sanidade (você DEVE ver Key Usage):
|
||||
```bash
|
||||
openssl x509 -in burp-ca.pem -noout -text | egrep -A3 "Basic Constraints|Key Usage"
|
||||
```
|
||||
Espera-se que inclua algo como:
|
||||
|
||||
- `CA:TRUE`
|
||||
- `Key Usage: ... Certificate Sign, CRL Sign`
|
||||
|
||||
#### 2) Converter para PKCS#12 (formato de importação do Burp)
|
||||
|
||||
O Burp precisa de certificado + chave privada; o mais simples é como PKCS#12:
|
||||
```bash
|
||||
openssl pkcs12 -export \
|
||||
-out burp-ca.p12 \
|
||||
-inkey burp-ca.key \
|
||||
-in burp-ca.pem \
|
||||
-name "Burp Custom Root CA"
|
||||
```
|
||||
Você será solicitado a inserir uma senha de exportação (defina uma; o Burp irá solicitá-la).
|
||||
|
||||
#### 3) Importe a CA no Burp e reinicie o Burp
|
||||
|
||||
No Burp:
|
||||
|
||||
- Proxy → Options
|
||||
- Find Import / export CA certificate
|
||||
- Click Import CA certificate
|
||||
- Choose PKCS#12
|
||||
- Select `burp-ca.p12`
|
||||
- Enter the password
|
||||
- Restart Burp completely (important)
|
||||
|
||||
Por que reiniciar? O Burp pode continuar usando a CA antiga até ser reiniciado.
|
||||
|
||||
#### 4) Confie na nova CA no keychain do sistema macOS
|
||||
|
||||
Isso permite que aplicativos do sistema e muitas pilhas TLS confiem na CA.
|
||||
```bash
|
||||
sudo security add-trusted-cert \
|
||||
-d -r trustRoot \
|
||||
-k /Library/Keychains/System.keychain \
|
||||
~/burp-ca/burp-ca.pem
|
||||
```
|
||||
(Se preferir GUI: Keychain Access → System → Certificates → import → set “Always Trust”.)
|
||||
|
||||
#### 5) Configurar variáveis de ambiente do proxy
|
||||
```bash
|
||||
export HTTPS_PROXY="http://127.0.0.1:8080"
|
||||
export HTTP_PROXY="http://127.0.0.1:8080"
|
||||
```
|
||||
#### 6) Configure Requests/Azure CLI para confiar no seu Burp CA
|
||||
|
||||
Azure CLI usa Python Requests internamente; configure ambos:
|
||||
```bash
|
||||
export REQUESTS_CA_BUNDLE="$HOME/burp-ca/burp-ca.pem"
|
||||
export SSL_CERT_FILE="$HOME/burp-ca/burp-ca.pem"
|
||||
```
|
||||
Notas:
|
||||
|
||||
- `REQUESTS_CA_BUNDLE` é usado pelo Requests.
|
||||
- `SSL_CERT_FILE` ajuda com outros consumidores de TLS e casos de borda.
|
||||
- Normalmente você não precisa mais do antigo `ADAL_PYTHON_SSL_NO_VERIFY` / `AZURE_CLI_DISABLE_CONNECTION_VERIFICATION` uma vez que a CA esteja correta.
|
||||
|
||||
#### 7) Verifique se o Burp está realmente assinando com sua nova CA (verificação crítica)
|
||||
|
||||
Isso confirma que sua cadeia de interceptação está correta:
|
||||
```bash
|
||||
openssl s_client -connect login.microsoftonline.com:443 \
|
||||
-proxy 127.0.0.1:8080 </dev/null 2>/dev/null \
|
||||
| openssl x509 -noout -issuer
|
||||
```
|
||||
O emissor esperado contém o nome da sua CA, por exemplo: `O=Burp Custom CA, CN=Burp Custom Root CA`
|
||||
|
||||
Se você ainda vê PortSwigger CA, Burp não está usando sua CA importada → verifique novamente a importação e reinicie.
|
||||
|
||||
#### 8) Verifique se Python Requests funciona através do Burp
|
||||
```bash
|
||||
python3 - <<'EOF'
|
||||
import requests
|
||||
requests.get("https://login.microsoftonline.com")
|
||||
print("OK")
|
||||
EOF
|
||||
```
|
||||
Esperado: `OK`
|
||||
|
||||
#### 9) Teste do Azure CLI
|
||||
```bash
|
||||
az account get-access-token --resource=https://management.azure.com/
|
||||
```
|
||||
Se você já estiver logado, deve retornar JSON com um `accessToken`.
|
||||
|
||||
</details>
|
||||
|
||||
### Az PowerShell
|
||||
|
||||
Azure PowerShell é um módulo com cmdlets para gerenciar recursos do Azure diretamente a partir da linha de comando do PowerShell.
|
||||
Azure PowerShell é um módulo com cmdlets para gerenciar Azure resources diretamente a partir da linha de comando do PowerShell.
|
||||
|
||||
Siga este link para as [**installation instructions**](https://learn.microsoft.com/en-us/powershell/azure/install-azure-powershell).
|
||||
Follow this link for the [**installation instructions**](https://learn.microsoft.com/en-us/powershell/azure/install-azure-powershell).
|
||||
|
||||
Os comandos no Azure PowerShell AZ Module são estruturados assim: `<Action>-Az<Service> <parameters>`
|
||||
Commands in Azure PowerShell AZ Module are structured like: `<Action>-Az<Service> <parameters>`
|
||||
|
||||
#### Debug | MitM Az PowerShell
|
||||
|
||||
@@ -118,37 +280,37 @@ Usando o parâmetro **`-Debug`** é possível ver todas as requisições que a f
|
||||
```bash
|
||||
Get-AzResourceGroup -Debug
|
||||
```
|
||||
Para realizar um **MitM** na ferramenta e **ver manualmente todas as requisições** que ela está enviando, você pode definir as variáveis de ambiente `HTTPS_PROXY` e `HTTP_PROXY` de acordo com a [**docs**](https://learn.microsoft.com/en-us/powershell/azure/az-powershell-proxy).
|
||||
In order to do a **MitM** to the tool and **check all the requests** it's sending manually you can set the env variables `HTTPS_PROXY` and `HTTP_PROXY` according to the [**docs**](https://learn.microsoft.com/en-us/powershell/azure/az-powershell-proxy).
|
||||
|
||||
### Microsoft Graph PowerShell
|
||||
|
||||
Microsoft Graph PowerShell é um SDK multiplataforma que possibilita o acesso a todas as Microsoft Graph APIs, incluindo serviços como SharePoint, Exchange e Outlook, usando um único endpoint. Suporta PowerShell 7+, autenticação moderna via MSAL, identidades externas e consultas avançadas. Com foco no princípio do menor privilégio, assegura operações seguras e recebe atualizações regulares para alinhar-se com os recursos mais recentes da Microsoft Graph API.
|
||||
Microsoft Graph PowerShell é um SDK multiplataforma que permite acesso a todas as Microsoft Graph APIs, incluindo serviços como SharePoint, Exchange e Outlook, usando um único endpoint. Ele suporta PowerShell 7+, autenticação moderna via MSAL, identidades externas e consultas avançadas. Com foco no princípio do menor privilégio, garante operações seguras e recebe atualizações regulares para alinhar-se com as últimas funcionalidades da Microsoft Graph API.
|
||||
|
||||
Follow this link for the [**installation instructions**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation).
|
||||
|
||||
Commands in Microsoft Graph PowerShell are structured like: `<Action>-Mg<Service> <parameters>`
|
||||
|
||||
#### Depuração do Microsoft Graph PowerShell
|
||||
#### Debug Microsoft Graph PowerShell
|
||||
|
||||
Usando o parâmetro **`-Debug`** é possível ver todas as requisições que a ferramenta está enviando:
|
||||
Using the parameter **`-Debug`** it's possible to see all the requests the tool is sending:
|
||||
```bash
|
||||
Get-MgUser -Debug
|
||||
```
|
||||
### ~~**AzureAD Powershell**~~
|
||||
|
||||
O módulo Azure Active Directory (AD), agora **descontinuado**, faz parte do Azure PowerShell para gerenciar recursos do Azure AD. Ele fornece cmdlets para tarefas como gerenciar usuários, grupos e application registrations no Entra ID.
|
||||
O módulo Azure Active Directory (AD), agora **descontinuado**, faz parte do Azure PowerShell para gerenciar recursos do Azure AD. Ele fornece cmdlets para tarefas como gerenciar usuários, grupos e registros de aplicativo no Entra ID.
|
||||
|
||||
> [!TIP]
|
||||
> Isso foi substituído por Microsoft Graph PowerShell
|
||||
> Isso foi substituído pelo Microsoft Graph PowerShell
|
||||
|
||||
Siga este link para as [**installation instructions**](https://www.powershellgallery.com/packages/AzureAD).
|
||||
Siga este link para as [**instruções de instalação**](https://www.powershellgallery.com/packages/AzureAD).
|
||||
|
||||
|
||||
## Automated Recon & Compliance Tools
|
||||
|
||||
### [turbot azure plugins](https://github.com/orgs/turbot/repositories?q=mod-azure)
|
||||
|
||||
Turbot com steampipe e powerpipe permite coletar informações do Azure e Entra ID e executar verificações de conformidade e encontrar misconfigurations. Os módulos Azure atualmente mais recomendados para executar são:
|
||||
Turbot com steampipe e powerpipe permite coletar informações do Azure e Entra ID, executar verificações de conformidade e encontrar configurações incorretas. Os módulos Azure atualmente mais recomendados para executar são:
|
||||
|
||||
- [https://github.com/turbot/steampipe-mod-azure-compliance](https://github.com/turbot/steampipe-mod-azure-compliance)
|
||||
- [https://github.com/turbot/steampipe-mod-azure-insights](https://github.com/turbot/steampipe-mod-azure-insights)
|
||||
@@ -179,9 +341,9 @@ powerpipe server
|
||||
```
|
||||
### [Prowler](https://github.com/prowler-cloud/prowler)
|
||||
|
||||
Prowler é uma ferramenta de segurança Open Source para realizar avaliações de melhores práticas de segurança, auditorias, resposta a incidentes, monitoramento contínuo, hardening e forensics readiness para AWS, Azure, Google Cloud e Kubernetes.
|
||||
Prowler é uma ferramenta de segurança de código aberto para realizar avaliações de melhores práticas de segurança, auditorias, resposta a incidentes, monitoramento contínuo, hardening e preparação para forense em AWS, Azure, Google Cloud e Kubernetes.
|
||||
|
||||
Basicamente permite executar centenas de verificações em um ambiente Azure para encontrar misconfigurações de segurança e coletar os resultados em json (e outros formatos de texto) ou visualizá-los na web.
|
||||
Basicamente permite executar centenas de verificações contra um ambiente Azure para encontrar configurações incorretas de segurança e coletar os resultados em json (e outros formatos de texto) ou consultá-los na web.
|
||||
```bash
|
||||
# Create a application with Reader role and set the tenant ID, client ID and secret in prowler so it access the app
|
||||
|
||||
@@ -203,7 +365,7 @@ docker run --rm -e "AZURE_CLIENT_ID=<client-id>" -e "AZURE_TENANT_ID=<tenant-id>
|
||||
```
|
||||
### [Monkey365](https://github.com/silverhack/monkey365)
|
||||
|
||||
Permite realizar revisões automáticas de configurações de segurança de assinaturas do Azure e do Microsoft Entra ID.
|
||||
Permite realizar automaticamente revisões de configuração de segurança de assinaturas do Azure e do Microsoft Entra ID.
|
||||
|
||||
Os relatórios HTML são armazenados no diretório `./monkey-reports` dentro da pasta do repositório do github.
|
||||
```bash
|
||||
@@ -226,7 +388,7 @@ Invoke-Monkey365 -TenantId <tenant-id> -ClientId <client-id> -ClientSecret $Secu
|
||||
```
|
||||
### [ScoutSuite](https://github.com/nccgroup/ScoutSuite)
|
||||
|
||||
ScoutSuite reúne dados de configuração para inspeção manual e destaca áreas de risco. É uma ferramenta de auditoria de segurança multi-cloud que permite a avaliação da postura de segurança de ambientes na nuvem.
|
||||
Scout Suite coleta dados de configuração para inspeção manual e destaca áreas de risco. É uma ferramenta de auditoria de segurança multi-cloud, que possibilita a avaliação da postura de segurança de ambientes em nuvem.
|
||||
```bash
|
||||
virtualenv -p python3 venv
|
||||
source venv/bin/activate
|
||||
@@ -242,9 +404,9 @@ python scout.py azure --cli
|
||||
```
|
||||
### [Azure-MG-Sub-Governance-Reporting](https://github.com/JulianHayward/Azure-MG-Sub-Governance-Reporting)
|
||||
|
||||
É um powershell script que ajuda a **visualizar todos os recursos e permissões dentro de um Management Group e do Entra ID** tenant e a encontrar misconfigurações de segurança.
|
||||
É um script powershell que ajuda você a **visualizar todos os recursos e permissões dentro de um Management Group e do Entra ID** tenant e a encontrar misconfigurações de segurança.
|
||||
|
||||
Ele funciona usando o Az PowerShell module, então qualquer autenticação suportada por esta ferramenta é suportada pela ferramenta.
|
||||
Ele funciona usando o Az PowerShell module, portanto qualquer autenticação suportada por esse módulo é suportada pela ferramenta.
|
||||
```bash
|
||||
import-module Az
|
||||
.\AzGovVizParallel.ps1 -ManagementGroupId <management-group-id> [-SubscriptionIdWhitelist <subscription-id>]
|
||||
@@ -253,7 +415,7 @@ import-module Az
|
||||
|
||||
### [**ROADRecon**](https://github.com/dirkjanm/ROADtools)
|
||||
|
||||
A enumeração do ROADRecon oferece informações sobre a configuração do Entra ID, como usuários, grupos, funções, políticas de acesso condicional...
|
||||
A enumeração do ROADRecon fornece informações sobre a configuração do Entra ID, como usuários, grupos, funções, políticas de acesso condicional...
|
||||
```bash
|
||||
cd ROADTools
|
||||
pipenv shell
|
||||
@@ -267,22 +429,22 @@ roadrecon gui
|
||||
### [**AzureHound**](https://github.com/BloodHoundAD/AzureHound)
|
||||
|
||||
AzureHound é o coletor do BloodHound para Microsoft Entra ID e Azure. É um único binário Go estático para Windows/Linux/macOS que se comunica diretamente com:
|
||||
- Microsoft Graph (Entra ID directory, M365) e
|
||||
- Microsoft Graph (Entra ID directory, M365) and
|
||||
- Azure Resource Manager (ARM) control plane (subscriptions, resource groups, compute, storage, key vault, app services, AKS, etc.)
|
||||
|
||||
Principais características
|
||||
- Executa de qualquer lugar na internet pública contra as APIs do tenant (não requer acesso à rede interna)
|
||||
- Gera JSON para ingestão pelo BloodHound CE para visualizar caminhos de ataque através de identidades e recursos na nuvem
|
||||
Key traits
|
||||
- Executa de qualquer lugar na internet pública contra as tenant APIs (não requer acesso à rede interna)
|
||||
- Produz JSON para ingestão pelo BloodHound CE para visualizar attack paths entre identidades e recursos em cloud
|
||||
- User-Agent padrão observado: azurehound/v2.x.x
|
||||
|
||||
Opções de autenticação
|
||||
- Nome de usuário + senha: -u <upn> -p <password>
|
||||
Authentication options
|
||||
- Usuário + senha: -u <upn> -p <password>
|
||||
- Refresh token: --refresh-token <rt>
|
||||
- JSON Web Token (token de acesso): --jwt <jwt>
|
||||
- Segredo do service principal: -a <appId> -s <secret>
|
||||
- Certificado do service principal: -a <appId> --cert <cert.pem> --key <key.pem> [--keypass <pass>]
|
||||
- JSON Web Token (access token): --jwt <jwt>
|
||||
- Service principal secret: -a <appId> -s <secret>
|
||||
- Service principal certificate: -a <appId> --cert <cert.pem> --key <key.pem> [--keypass <pass>]
|
||||
|
||||
Exemplos
|
||||
Examples
|
||||
```bash
|
||||
# Full tenant collection to file using different auth flows
|
||||
## User creds
|
||||
@@ -325,23 +487,23 @@ What gets queried
|
||||
- .../Microsoft.KeyVault/vaults, .../Microsoft.Compute/virtualMachines, .../Microsoft.Web/sites, .../Microsoft.ContainerService/managedClusters
|
||||
|
||||
Preflight behavior and endpoints
|
||||
- Cada azurehound list <object> normalmente executa estas chamadas de teste antes da enumeração:
|
||||
1) Plataforma de identidade: login.microsoftonline.com
|
||||
- Each azurehound list <object> typically performs these test calls before enumeration:
|
||||
1) Identity platform: login.microsoftonline.com
|
||||
2) Graph: GET https://graph.microsoft.com/v1.0/organization
|
||||
3) ARM: GET https://management.azure.com/subscriptions?api-version=...
|
||||
- As base URLs do ambiente cloud diferem para Government/China/Germany. Veja constants/environments.go no repositório.
|
||||
- Cloud environment base URLs differ for Government/China/Germany. See constants/environments.go in the repo.
|
||||
|
||||
ARM-heavy objects (less visible in Activity/Resource logs)
|
||||
- A lista abaixo foca predominantemente em leituras do plano de controle ARM: automation-accounts, container-registries, function-apps, key-vaults, logic-apps, managed-clusters, management-groups, resource-groups, storage-accounts, storage-containers, virtual-machines, vm-scale-sets, web-apps.
|
||||
- Essas operações GET/list normalmente não são gravadas em Activity Logs; leituras do data-plane (p.ex., *.blob.core.windows.net, *.vault.azure.net) são cobertas por Diagnostic Settings no nível do recurso.
|
||||
- The following list targets predominantly use ARM control plane reads: automation-accounts, container-registries, function-apps, key-vaults, logic-apps, managed-clusters, management-groups, resource-groups, storage-accounts, storage-containers, virtual-machines, vm-scale-sets, web-apps.
|
||||
- These GET/list operations are typically not written to Activity Logs; data-plane reads (e.g., *.blob.core.windows.net, *.vault.azure.net) are covered by Diagnostic Settings at the resource level.
|
||||
|
||||
OPSEC and logging notes
|
||||
- Microsoft Graph Activity Logs não estão habilitados por padrão; habilite e exporte para um SIEM para obter visibilidade das chamadas Graph. Espere o preflight GET /v1.0/organization do Graph com UA azurehound/v2.x.x.
|
||||
- Os non-interactive sign-in logs do Entra ID registram a autenticação da plataforma de identidade (login.microsoftonline.com) usada pelo AzureHound.
|
||||
- Operações de leitura/list do plano de controle ARM não são registradas em Activity Logs; muitas operações azurehound list contra recursos não aparecerão lá. Somente o logging do data-plane (via Diagnostic Settings) capturará leituras para endpoints de serviço.
|
||||
- Defender XDR GraphApiAuditEvents (preview) pode expor chamadas Graph e identificadores de token, mas pode não incluir UserAgent e ter retenção limitada.
|
||||
- Microsoft Graph Activity Logs are not enabled by default; enable and export to SIEM to gain visibility of Graph calls. Expect the Graph preflight GET /v1.0/organization with UA azurehound/v2.x.x.
|
||||
- Entra ID non-interactive sign-in logs record the identity platform auth (login.microsoftonline.com) used by AzureHound.
|
||||
- ARM control-plane read/list operations are not recorded in Activity Logs; many azurehound list operations against resources won’t appear there. Only data-plane logging (via Diagnostic Settings) will capture reads to service endpoints.
|
||||
- Defender XDR GraphApiAuditEvents (preview) can expose Graph calls and token identifiers but may lack UserAgent and have limited retention.
|
||||
|
||||
Tip: Ao enumerar caminhos de privilégio, exporte users, groups, roles e role assignments, depois importe no BloodHound e use consultas cypher pré-construídas para evidenciar Global Administrator/Privileged Role Administrator e escalonamento transitivo via nested groups e RBAC assignments.
|
||||
Tip: When enumerating for privilege paths, dump users, groups, roles, and role assignments, then ingest in BloodHound and use prebuilt cypher queries to surface Global Administrator/Privileged Role Administrator and transitive escalation via nested groups and RBAC assignments.
|
||||
|
||||
Launch the BloodHound web with `curl -L https://ghst.ly/getbhce | docker compose -f - up` and import the `output.json` file. Then, in the EXPLORE tab, in the CYPHER section you can see a folder icon that contains pre-built queries.
|
||||
|
||||
@@ -355,9 +517,9 @@ Get-AzureDomainInfo -folder MicroBurst -Verbose
|
||||
```
|
||||
### [**PowerZure**](https://github.com/hausec/PowerZure)
|
||||
|
||||
PowerZure foi criado a partir da necessidade de um framework que possa tanto realizar reconhecimento quanto exploração do Azure, EntraID e dos recursos associados.
|
||||
PowerZure foi criado devido à necessidade de um framework capaz de realizar tanto reconnaissance quanto exploitation do Azure, EntraID e dos recursos associados.
|
||||
|
||||
Ele usa o módulo **Az PowerShell**, portanto qualquer autenticação suportada por esse módulo é suportada pela ferramenta.
|
||||
Ele usa o módulo **Az PowerShell**, então qualquer método de autenticação suportado por esse módulo será suportado pela ferramenta.
|
||||
```bash
|
||||
# Login
|
||||
Import-Module Az
|
||||
@@ -388,7 +550,7 @@ Invoke-AzureRunCommand -Command <command> -VMName <vmname>
|
||||
```
|
||||
### [**GraphRunner**](https://github.com/dafthack/GraphRunner/wiki/Invoke%E2%80%90GraphRunner)
|
||||
|
||||
GraphRunner é um conjunto de ferramentas de post-exploitation para interagir com o Microsoft Graph API. Ele fornece várias ferramentas para realizar reconnaissance, persistence e pillaging de dados de uma conta Microsoft Entra ID (Azure AD).
|
||||
GraphRunner é um conjunto de ferramentas de post-exploitation para interagir com o Microsoft Graph API. Fornece várias ferramentas para realizar reconnaissance, persistence e pillaging de dados de uma conta do Microsoft Entra ID (Azure AD).
|
||||
```bash
|
||||
#A good place to start is to authenticate with the Get-GraphTokens module. This module will launch a device-code login, allowing you to authenticate the session from a browser session. Access and refresh tokens will be written to the global $tokens variable. To use them with other GraphRunner modules use the Tokens flag (Example. Invoke-DumpApps -Tokens $tokens)
|
||||
Import-Module .\GraphRunner.ps1
|
||||
@@ -432,7 +594,7 @@ Invoke-GraphRunner -Tokens $tokens
|
||||
```
|
||||
### [Stormspotter](https://github.com/Azure/Stormspotter)
|
||||
|
||||
Stormspotter cria um “attack graph” dos recursos em uma assinatura do Azure. Permite que red teams e pentesters visualizem a attack surface e oportunidades de pivot dentro de um tenant, e impulsiona seus defenders a se orientar e priorizar rapidamente o trabalho de incident response.
|
||||
Stormspotter cria um “attack graph” dos recursos em uma assinatura do Azure. Ele permite que red teams e pentesters visualizem a superfície de ataque e oportunidades de pivot dentro de um tenant, e potencializa seus defenders para orientar-se rapidamente e priorizar o trabalho de incident response.
|
||||
|
||||
**Infelizmente, parece não mantido**.
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user