
Abusare dei servizi Azure tramite C2
Maestro è uno strumento post-exploitation progettato per interagire con Intune/EntraID da un agente C2 sulla workstation di un utente senza richiedere la conoscenza della password dell'utente o dei flussi di autenticazione di Azure, della manipolazione dei token e della console di amministrazione basata sul web. Maestro rende molto più semplice interagire con Intune ed EntraID (e potenzialmente con altri servizi Azure) da C2, poiché l'operatore non deve ottenere la password in chiaro dell'utente, estrarre i cookie del primary refresh token (PRT) dal sistema, eseguire strumenti aggiuntivi o una sessione del browser attraverso un proxy SOCKS, o gestire flussi di autenticazione di Azure, token o criteri di accesso condizionato per eseguire azioni in Azure per conto dell'utente autenticato.
Maestro è essenzialmente un wrapper per le richieste locali di cookie PRT e per le chiamate all'API Microsoft Graph, con molte funzionalità di qualità della vita aggiunte per i red teamer. Maestro abilita percorsi di attacco tra ambienti on-prem e Azure. Ad esempio, eseguendo Maestro sulla macchina di un amministratore Intune, puoi eseguire script PowerShell su qualsiasi dispositivo iscritto senza mai conoscere le credenziali dell'amministratore, anche se MFA, conformità del dispositivo e dispositivo con join ibrido sono richiesti dai criteri di accesso condizionato.
Le funzioni di movimento laterale di Maestro sono state ispirate da Death from Above: Lateral Movement from Azure to On-Prem AD di Andy Robbins (@_wald0).
Puoi leggere ulteriori informazioni in questo post introduttivo del blog su Maestro: https://specterops.io/blog/2024/10/31/maestro-abusing-intune-for-lateral-movement-over-c2/
In questo repository è presente una release compilata utilizzando la configurazione di build ReleasePlusMSAL. Nota che questa configurazione unisce le dipendenze MSAL nel file .exe ma aumenta significativamente le dimensioni del binario risultante. Se non prevedi di utilizzare il metodo -m 2 per richiedere token di accesso (SharpGetEntraToken tramite MSAL), puoi compilare una build Release e le dimensioni saranno notevolmente ridotte.
A partire da febbraio 2025, Microsoft sta implementando l'applicazione obbligatoria dell'MFA per l'autenticazione al portale di Azure e alle sue estensioni. Il metodo predefinito di richiesta del token di accesso tramite flusso di codice di autorizzazione probabilmente fallirà in questo caso, ma l'utilizzo di SharpGetEntraToken/MSAL (opzione -m 2) e la specifica di un client ID che non richiede MFA come Azure PowerShell (1950a258-227b-4e31-a9cf-717495945fc2) dovrebbe continuare a funzionare.
Maestro.exe <command> [subcommand] [options]
Tutti i comandi e i sottocomandi hanno una pagina di aiuto generata utilizzando un parser della riga di comando personalizzato per mantenere al minimo le dimensioni del binario. È possibile accedere alle pagine di aiuto digitando qualsiasi comando di Maestro seguito da -h o --help.
Fai riferimento all'output dell'opzione --help di ciascun comando per le informazioni sull'utilizzo più aggiornate.
Gli esempi si trovano in fondo a questo file.
Per il debug, condivido una directory su una macchina iscritta a Intune accessibile dal mio host con Visual Studio, eseguo il debugger remoto di Visual Studio, configuro un processo di post-build per copiare i file della soluzione nella condivisione e configuro Visual Studio per il debug remoto sul sistema iscritto.
Il tempo che riesco a dedicare alla ricerca, allo sviluppo e al miglioramento di Maestro non sarebbe possibile senza il patrocinio di SpecterOps al progetto, nell'ambito del loro impegno per la trasparenza e il supporto allo sviluppo open-source. Sono immensamente grato per la loro guida e il loro supporto.
Alcune funzionalità di Maestro sono state ispirate o costruite sulla base del lavoro di altri, tra cui:
Se sei interessato a collaborare, contattami su Twitter (@_Mayyhem) o nello Slack di BloodHoundGang!
Ottieni un token di accesso per MS Graph utilizzando MSAL e il client ID di Azure PowerShell (non ancora bloccato dall'MFA obbligatoria):
.\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