diff --git a/src/pentesting-cloud/azure-security/az-enumeration-tools.md b/src/pentesting-cloud/azure-security/az-enumeration-tools.md index 42d0422db..66c2c03eb 100644 --- a/src/pentesting-cloud/azure-security/az-enumeration-tools.md +++ b/src/pentesting-cloud/azure-security/az-enumeration-tools.md @@ -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 ` +Os comandos no Azure CLI seguem o padrão: `az ` #### 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 }} +
+Fixing “CA cert does not include key usage extension” + +### 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 \ +| 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`. + +
+ ### 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: `-Az ` +Commands in Azure PowerShell AZ Module are structured like: `-Az ` #### 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: `-Mg ` -#### 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=" -e "AZURE_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 -ClientId -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 [-SubscriptionIdWhitelist ] @@ -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 -p +Authentication options +- Usuário + senha: -u -p - Refresh token: --refresh-token -- JSON Web Token (token de acesso): --jwt -- Segredo do service principal: -a -s -- Certificado do service principal: -a --cert --key [--keypass ] +- JSON Web Token (access token): --jwt +- Service principal secret: -a -s +- Service principal certificate: -a --cert --key [--keypass ] -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 normalmente executa estas chamadas de teste antes da enumeração: -1) Plataforma de identidade: login.microsoftonline.com +- Each azurehound list 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 -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