Policy Access Bypass: Conditional Access Policies (T1556.009)

La manipolazione delle policy di accesso condizionale rappresenta una tecnica sofisticata che permette agli attaccanti di mantenere l'accesso persistente agli account compromessi. Queste policy fungono da ulteriore livello di verifica nei sistemi di identity provider come Entra ID, Okta e JumpCloud, verificando parametri come indirizzo IP, stato di enrollment del dispositivo e uso della multi-factor authentication prima di concedere l'accesso alle risorse.

In ambienti AWS e GCP, le policy IAM possono contenere attributi condition che verificano vincoli arbitrari come IP sorgente, data della richiesta o natura delle risorse richieste. Modificando queste policy - aggiungendo range IP trusted, rimuovendo requisiti MFA o permettendo regioni cloud non utilizzate - gli avversari possono garantirsi accesso persistente e aggirare le misure difensive.

Questa tecnica si manifesta in tre tattiche critiche: TA0003 (Persistence) per mantenere l'accesso attraverso restart e cambio credenziali, TA0005 (Defense Evasion) per evitare detection durante la compromissione, e TA0006 (Credential Access) per rubare e utilizzare credenziali legittime. Attualmente 2 gruppi APT hanno utilizzato attivamente questa tecnica in campagne documentate.

Per testare la resilienza delle conditional access policy nel tuo ambiente, inizia identificando le policy esistenti. In Azure AD, puoi enumerare le policy tramite PowerShell con Get-AzureADMSConditionalAccessPolicy dopo aver ottenuto accesso con credenziali privilegiate. Questo comando restituisce tutte le policy attive con i loro ID e condizioni.

Una volta identificate le policy target, il passo successivo è modificarle per permettere accesso più permissivo. Ad esempio, per aggiungere un range IP trusted:

$policy = Get-AzureADMSConditionalAccessPolicy -PolicyId "policy-guid" $policy.Conditions.Locations.IncludeLocations += "trusted-ip-range" Set-AzureADMSConditionalAccessPolicy -PolicyId "policy-guid" -Conditions $policy.Conditions

Per AWS IAM, la modifica delle condition policies richiede l'update del documento JSON della policy. Prima recupera la policy esistente con aws iam get-policy-version, poi modifica le condizioni per includere il tuo IP:

"Condition": {
  "IpAddress": {
    "aws:SourceIp": ["10.0.0.0/8", "attacker-ip/32"]
  }
}

Applica la modifica con aws iam create-policy-version --policy-arn arn:aws:iam::account:policy/PolicyName --policy-document file://modified-policy.json.

Un approccio alternativo consiste nel registrare un nuovo metodo MFA sotto controllo dell'attaccante. In ambienti hybrid, sfrutta server joined al dominio per bypassare le policy che verificano lo stato del dispositivo. Storm-0501 ha dimostrato questa tecnica registrando il proprio MFA e sfruttando server hybrid per aggirare completamente le verifiche.

Per Okta, utilizza l'API per modificare le policy rules aggiungendo eccezioni per specifici user agent o geolocation. Il comando curl per aggiungere una location exception:

curl -X PUT https://domain.okta.com/api/v1/policies/{policyId}/rules/{ruleId} -H "Authorization: SSWS token" -d '{"conditions":{"network":{"connection":"ANYWHERE"}}}'

Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Scarica la guida gratuita e segui il percorso corretto fin dal primo passo