
Abusando dos serviços Azure via C2
Maestro é uma ferramenta de pós-exploração projetada para interagir com Intune/EntraID a partir de um agente C2 na estação de trabalho do usuário, sem exigir conhecimento da senha do usuário, fluxos de autenticação do Azure, manipulação de tokens ou console de administração baseado na web. O Maestro torna a interação com Intune e EntraID (e potencialmente outros serviços do Azure) a partir do C2 muito mais fácil, pois o operador não precisa obter a senha em texto claro do usuário, extrair cookies de primary refresh token (PRT) do sistema, executar ferramentas adicionais ou uma sessão de navegador por meio de um proxy SOCKS, nem lidar com fluxos de autenticação do Azure, tokens ou políticas de acesso condicional para executar ações no Azure em nome do usuário conectado.
O Maestro é essencialmente um wrapper para requisições locais de cookies PRT e chamadas à API do Microsoft Graph, com muitos recursos de qualidade de vida adicionados para red teamers. O Maestro possibilita caminhos de ataque entre on-prem e Azure. Por exemplo, ao executar o Maestro na máquina de um administrador do Intune, você pode executar scripts do PowerShell em qualquer dispositivo inscrito sem jamais saber as credenciais do administrador, mesmo que MFA, conformidade do dispositivo e um dispositivo com ingresso híbrido sejam exigidos pelas políticas de acesso condicional.
As funções de movimento lateral do Maestro foram inspiradas em Death from Above: Lateral Movement from Azure to On-Prem AD por Andy Robbins (@_wald0).
Você pode ler mais nesta postagem introdutória do blog sobre o Maestro: https://specterops.io/blog/2024/10/31/maestro-abusing-intune-for-lateral-movement-over-c2/
Há uma versão compilada neste repositório usando a configuração de build ReleasePlusMSAL. Observe que essa configuração mescla as dependências do MSAL no .exe, mas aumenta significativamente o tamanho do binário resultante. Se você não pretende usar o método -m 2 para solicitar tokens de acesso (SharpGetEntraToken via MSAL), você pode compilar um build Release e o tamanho será significativamente reduzido.
A partir de fevereiro de 2025, a Microsoft está implementando a aplicação obrigatória de MFA para autenticação no Portal do Azure e suas extensões. O método padrão de solicitação de token de acesso usando fluxo de código de autenticação provavelmente falhará nesse caso, mas usar SharpGetEntraToken/MSAL (opção -m 2) e especificar um client ID que não exija MFA, como o Azure PowerShell (1950a258-227b-4e31-a9cf-717495945fc2), deve continuar funcionando.
Maestro.exe <command> [subcommand] [options]
Todos os comandos e subcomandos têm uma página de ajuda gerada por um parser de linha de comando personalizado para manter o tamanho do binário no mínimo. As páginas de ajuda podem ser acessadas digitando qualquer comando do Maestro seguido de -h ou --help.
Consulte a saída da opção --help de cada comando para obter as informações de uso mais atualizadas.
Exemplos podem ser encontrados no final deste arquivo.
Para depuração, eu compartilho um diretório em uma máquina inscrita no Intune que é acessível a partir do meu host executando o Visual Studio, executo o Depurador Remoto do Visual Studio, configuro uma tarefa de pós-build para copiar os arquivos da solução para o compartilhamento e configuro o Visual Studio para depuração remota no sistema inscrito.
O tempo que consigo dedicar à pesquisa, ao desenvolvimento e ao aprimoramento do Maestro não seria possível sem o patrocínio da SpecterOps ao projeto, como parte do compromisso deles com a transparência e o apoio ao desenvolvimento de código aberto. Sou imensamente grato pela orientação e pelo apoio deles.
Alguns recursos do Maestro foram inspirados ou construídos com base no trabalho de outras pessoas, incluindo:
Se você tiver interesse em colaborar, me chame no Twitter (@_Mayyhem) ou no BloodHoundGang Slack!
Obtenha um token de acesso para o MS Graph usando MSAL e o client ID do Azure PowerShell (ainda não impedido pela minha MFA obrigatória):
.\Maestro.exe get access-token -m 2 -t mayyhem.onmicrosoft.com -c 1950a258-227b-4e31-a9cf-717495945fc2 -s https://graph.microsoft.com/.default
2025-02-06 21:09:24.701 UTC - [INFO] Execution started
2025-02-06 21:09:24.810 UTC - [INFO] MSAL DLL loaded and ready for use.
2025-02-06 21:09:24.810 UTC - [INFO] SharpGetEntraToken attempting to get an access token
2025-02-06 21:09:25.857 UTC - [INFO] SharpGetEntraToken got an access token:
eyJ0...tDOg
2025-02-06 21:09:25.982 UTC - [INFO] Completed execution in 00:00:01.3203797