Translated ['', 'src/pentesting-cloud/azure-security/az-enumeration-tool

This commit is contained in:
Translator
2026-02-05 12:29:38 +00:00
parent 604374ee1b
commit 6f9faf3d63
@@ -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 youre intercepting TLS with Burp, Burp generates “on the fly” certificates for sites like `login.microsoftonline.com` and signs them with Burps 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 wont 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