
Kit de Pesquisa de Ataques BloodHound

BARK significa BloodHound Attack Research Kit. É um script PowerShell criado para auxiliar a equipe do BloodHound Enterprise na pesquisa e validação contínua de primitivas de abuso. Atualmente, o BARK foca no conjunto de produtos e serviços Microsoft Azure.
O BARK não requer dependências de terceiros. As funções do BARK são projetadas para serem o mais simples e fáceis de manter possível. A maioria das funções são wrappers muito simples para fazer requisições a vários endpoints de API REST. As funções básicas do BARK nem dependem umas das outras — você pode extrair quase qualquer função do BARK e ela funcionará perfeitamente como uma função independente em seus próprios scripts.
Autor principal: Andy Robbins @_wald0
Colaboradores:
Existem muitas maneiras de importar um script PowerShell. Aqui está uma delas:
Primeiro, baixe o BARK.ps1 clonando este repositório ou simplesmente copiando/colando seu conteúdo bruto do GitHub.
git clone https://github.com/BloodHoundAD/BARK
Agora, navegue até o diretório onde está o PS1:
cd BARK
Finalmente, você pode importar o PS1 com ponto assim:
. .\BARK.ps1
Pressione Enter, e sua instância do PowerShell agora terá acesso a todas as funções do BARK.
Com poucas exceções, os endpoints da API Azure exigem autenticação para interagir. O BARK vem com algumas funções que ajudarão você a obter os tokens necessários para interagir com as APIs MS Graph e Azure REST. Qualquer função do BARK que interaja com uma API Azure que exija autenticação exigirá que você forneça um token.
Digamos que você queira listar todos os usuários em um locatário do Entra ID. Primeiro, você precisa obter um token com escopo para o MS Graph. Existem muitas maneiras de obter esse token:
Se você tiver uma combinação de nome de usuário/senha para um usuário do Entra naquele locatário, você pode primeiro adquirir um token de atualização para o usuário usando a função Get-EntraRefreshTokenWithUsernamePassword do BARK:
$MyRefreshTokenRequest = Get-EntraRefreshTokenWithUsernamePassword -username "[email protected]" -password "MyVeryCoolPassword" -TenantID "contoso.onmicrosoft.com"
O objeto resultante que você acabou de criar, $MyRefreshTokenRequest, terá como parte dele um token de atualização para seu usuário. Agora você pode solicitar um token com escopo para MS Graph usando este token de atualização:
$MyMSGraphToken = Get-MSGraphTokenWithRefreshToken -RefreshToken $MyRefreshTokenRequest.refresh_token -TenantID "contoso.onmicrosoft.com"
Agora este novo objeto, $MyMSGraphToken, terá como um de seus valores de propriedade um JWT com escopo para MS Graph para seu usuário. Agora você está pronto para usar este token para listar todos os usuários no locatário do Entra:
$MyUsers = Get-AllEntraUsers -Token $MyMSGraphToken.access_token -ShowProgress
Uma vez concluído, a variável $MyEntraUsers será preenchida com objetos representando todos os usuários em seu locatário do Entra.
Get-AzureKeyVaultTokenWithClientCredentials solicita um token do STS com o Azure Vault especificado como recurso/público-alvo usando um ID de cliente e segredo.Get-AzureKeyVaultTokenWithUsernamePassword solicita um token do STS com o Azure Vault especificado como recurso/público-alvo usando um nome de usuário e senha fornecidos pelo usuário.Get-AzurePortalTokenWithRefreshToken solicita um token de atualização de Autenticação do Portal Azure com um token de atualização fornecido pelo usuário.Get-AzureRMTokenWithClientCredentials solicita um JWT com escopo AzureRM usando um ID de cliente e segredo. Útil para autenticação como uma entidade de serviço do Entra.Get-AzureRMTokenWithPortalAuthRefreshToken solicita um JWT com escopo AzureRM usando um token de atualização de Autenticação do Portal Azure fornecido pelo usuário.Get-AzureRMTokenWithRefreshToken solicita um JWT com escopo AzureRM usando um token de atualização fornecido pelo usuário.Get-AzureRMTokenWithUsernamePassword solicita um JWT com escopo AzureRM usando um nome de usuário e senha fornecidos pelo usuário.Get-EntraRefreshTokenWithUsernamePassword solicita uma coleção de tokens, incluindo um token de atualização, de login.microsoftonline.com com um nome de usuário e senha fornecidos pelo usuário. Isso falhará se o usuário tiver requisitos de Autenticação Multifator ou for afetado por uma Política de Acesso Condicional.Get-MSGraphTokenWithClientCredentials solicita um JWT com escopo MS Graph usando um ID de cliente e segredo. Útil para autenticação como uma entidade de serviço do Entra.Get-MSGraphTokenWithPortalAuthRefreshToken solicita um JWT com escopo MS Graph usando um token de atualização de Autenticação do Portal Azure fornecido pelo usuário.Get-MSGraphTokenWithRefreshToken solicita um JWT com escopo MS Graph usando um token de atualização fornecido pelo usuário.Get-MSGraphTokenWithUsernamePassword solicita um JWT com escopo MS Graph usando um nome de usuário e senha fornecidos pelo usuário.Parse-JWTToken receberá um JWT codificado em Base64 como entrada e o analisará para você. Útil para verificar o público-alvo e as declarações corretas do token.As funções baseadas em token de atualização no BARK são baseadas em funções do TokenTactics por Steve Borosh.
Get-AllEntraApps coleta todos os objetos de registro de aplicativo do Entra.Get-AllEntraGroups coleta todos os grupos do Entra.Get-AllEntraRoles coleta todas as funções de administrador do Entra.Get-AllEntraServicePrincipals coleta todos os objetos de entidade de serviço do Entra.Get-AllEntraUsers coleta todos os usuários do Entra.Get-EntraAppOwner coleta proprietários de um registro de aplicativo do Entra.Get-EntraDeviceRegisteredUsers coleta usuários de um dispositivo do Entra.Get-EntraGroupMembers coleta membros de um grupo do Entra.Get-EntraGroupOwner coleta proprietários de um grupo do Entra.Get-EntraRoleTemplates coleta modelos de função de administrador do Entra.Get-EntraServicePrincipal coleta uma entidade de serviço do Entra.Get-EntraServicePrincipalOwner coleta proprietários de uma entidade de serviço do Entra.Get-EntraTierZeroServicePrincipals coleta entidades de serviço do Entra que possuem uma função de administrador do Entra Tier Zero ou uma atribuição de função de aplicativo MS Graph Tier Zero.Get-MGAppRoles coleta as funções de aplicativo disponibilizadas pela entidade de serviço do MS Graph.